TeamingとBonding。なんか実装で違いがあるそうな。っで、Teamingで802.adを行ってみます。
ほとんどはCentOS/Bondingと同じでで、初めにすべてのデバイスを削ってTeamingデバイスを作ります。
CentOS/Bonding#k8b1ff61と同じように削除
nmtuiを起動させ、「NetworkManager TUI」画面から「Edit a connection」を選びます。
次に、削除してデバイスがない状態から、<Add>を選択します。
表示された「New Connection」画面で「Team」を選びます。
すると下図の様な「Edit Connection」画面が表示されます。
この入力画面で、Profile nameはそのままの「Team connection 1」として、Deviceを「team0」とします。
次に、この「team0」Deviceに所属するnicを指定します。
「TEAM」欄の<Add>を選択して表示された画面で、「Ethernet」を選択します。
追加するデバイスは「ens33」と「ens34」です。まず「ens33」を入力して<OK>ボタンを押します。
すると、元の画面に戻って、「TEAM」欄に「ens33」のProfile nameが追加されます。
同じようにして、「ens34」も追加させて、下記のようにします。
これでTeamingに参加させるnicの登録は完了しました。
次に、このTeamingの動作を定義します。
同じ画面に「JSON configuration」欄がある。この欄に動作モードを記載します。記載は<Edit...>を選択してviで入力する。
その記載内容は /usr/share/doc/teamd-1.9/example_configs を参照する。
ここでは802.3adとなるLACPを使いたいので lacp_1.conf を参考にする。
[root@c105 ~]# cat /usr/share/doc/teamd-1.9/example_configs/lacp_1.conf
{
"device": "team0",
"runner": {
"name": "lacp",
"active": true,
"fast_rate": true,
"tx_hash": ["eth", "ipv4", "ipv6"]
},
"link_watch": {"name": "ethtool"},
"ports": {"eth1": {}, "eth2": {} }
}
[root@c105 ~]#
ports項目でeth1とeth2はens33とens34にして「JSON configuration」欄に書けばいいのだが、
必要最低限として
{ "runner": { "name": "lacp"} }
と入力してみた。
CentOS/Bonding#y161218eと同じ作業になります。
定義完了後
[root@c105 ~]# systemctl restart NetworkManager
をした方がいいみたい
上記は仮想マシンを使って手順を示しただけで、実際に動くかは微妙。なんか動かない時もある...
っで下記は上記手法をintel の dual port nic が付いているマシンで施して、その結果である。
[root@e ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp3s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
link/ether 74:d4:35:0e:08:fa brd ff:ff:ff:ff:ff:ff
3: enp1s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master team0 state UP qlen 1000
link/ether 00:15:17:35:c4:61 brd ff:ff:ff:ff:ff:ff
4: enp1s0f1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master team0 state UP qlen 1000
link/ether 00:15:17:35:c4:61 brd ff:ff:ff:ff:ff:ff
6: team0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 00:15:17:35:c4:61 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.17/24 brd 192.168.0.255 scope global team0
valid_lft forever preferred_lft forever
[root@e ~]#
[root@e ~]# env LANG=C nmcli d
DEVICE TYPE STATE CONNECTION
enp1s0f0 ethernet connected Ethernet connection 1
enp1s0f1 ethernet connected Ethernet connection 2
team0 team connected Team connection 1
enp3s0 ethernet unavailable --
lo loopback unmanaged --
[root@e ~]#
[root@e ~]# env LANG=C nmcli c
NAME UUID TYPE DEVICE
Team connection 1 6ba346b6-bf7d-4f87-9720-94fb51bc6c79 team team0
Ethernet connection 1 e4b6a0c2-5e3c-41d4-a541-9ab287d5497f 802-3-ethernet enp1s0f0
Ethernet connection 2 e6910f66-a053-43fb-886e-9bf40e58c310 802-3-ethernet enp1s0f1
enp1s0f1 f977aa5b-e6a3-47dc-aed7-381f794acce9 802-3-ethernet --
enp1s0f0 e80f948d-b541-4513-a089-d58b67ac6909 802-3-ethernet --
[root@e ~]#
[root@e ~]# ls /etc/sysconfig/network-scripts/ifcfg-*
/etc/sysconfig/network-scripts/ifcfg-Ethernet_connection_1 /etc/sysconfig/network-scripts/ifcfg-Team_connection_1
/etc/sysconfig/network-scripts/ifcfg-Ethernet_connection_2 /etc/sysconfig/network-scripts/ifcfg-lo
[root@e ~]#
[root@e ~]# teamdctl team0 state
setup:
runner: lacp
ports:
enp1s0f1
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
runner:
aggregator ID: 4, Selected
selected: yes
state: current
enp1s0f0
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
runner:
aggregator ID: 4, Selected
selected: yes
state: current
runner:
active: yes
fast rate: no
[root@e ~]#
こんな感じ
Teamingを施した e サイトから c と s サイトへパケットを投げてみた。
受け手側:
[root@c ~]# nc -l 11111 > /dev/null
[root@s ~]# nc -l 11112 > /dev/null
投げ側:
[root@e ~]# dd if=/dev/zero bs=1073741824 count=4 | nc -v 192.168.0.3 11111
[root@e ~]# dd if=/dev/zero bs=1073741824 count=4 | nc -v 192.168.0.18 11112
と上手くいったみたい。
っで逆方向
あれぇ?....bondingで言う所のxmit_hash_policyを代えればいいのかな