Cumulus Linux
MLAGとvSphere vDSのLACP接続検証
検証の目的
Cumulus Linuxでリンクアグリゲーションを構成する場合、その形成方
法としてLACPを使用する。
比較的簡易な仕様のスタティックリンクアグリゲーションや、その他のプロト
コル(たとえばCisco社のPAgP等)は、現在のバージョンでは使用でき
ない。
そのため、主要な製品のリンクアグリゲーションとの相互接続性をあらかじ
め確認しておく。
検証機材
ここでは、対向機器としてQuantaサーバーにインストールしたvSphereを使用して、LACPでCumulus
LinuxのMLAGに接続する検証を行う。
2 x ベアメタルスイッチ: QuantaMesh T1048-LB9-BMS-F(PowerPC)
※1
2 x ネットワークOS: Cumulus Linux 2.5.4
※2
※1 1000Base-Tポートを使用
※2 検証時点の最新にアップデート済み /etc/apt/sources.list
deb http://repo.cumulusnetworks.com CumulusLinux-2.5 main addons updates deb http://repo.cumulusnetworks.com CumulusLinux-2.5 security-updates
2 x サーバーコンピューター: STRATOS S210-X12RS(x86)
※3
2 x 拡張NIC: HHHL 1Gb RJ45 4 port Intel i350-T4 Intel-I350 PCI-E X 4 Gen 2
I350T4G1P20
2 x ハイパーバイザー: vSphere ESXi 6.0 Enterprise Plus
1 x 仮想化管理サーバー: vCenter Server 6.0 Standard
※3 拡張NICを使用
1 x マネジメントスイッチ: QuantaMesh T1048-LY4B-F(PowerPC)
1 x ネットワークOS: QuantaOS 1.4.06.03
検証方法
Cumulus LinuxでLACPのMLAGを構成する
vSphereの分散スイッチでLACPを構成する
Cumulus LinuxのMLAGピアリンク、MLAGポート、MLAGバックアップリンク、およびvSphereの分散スイッチの
LAGポートがリンクアップしていること、およびMLAGトポロジーが形成されていることを確認する
一方のvSphere上の仮想マシンから他方のvSphere上の仮想マシンにPingが通ることを確認する
MLAGポート1のリンク(送信元側)を切断し、Pingの実行結果の統計情報を確認する
MLAGポート1のリンク(送信元側)を復旧し、Pingの実行結果の統計情報を確認する
MLAGポート2のリンク(宛先側)を切断し、Pingの実行結果の統計情報を確認する
MLAGポート2のリンク(宛先側)を復旧し、Pingの実行結果の統計情報を確認する
MLAGスイッチ1を停止し、Pingの実行結果の統計情報を確認する
MLAGスイッチ1を起動し、Pingの実行結果の統計情報を確認する
MLAGピアリンクを切断(全断)し、Pingの実行結果の統計情報を確認する
MLAGセカンダリースイッチのMLAGポートがシャットダウンされることを確認する
MLAGピアリンクを復旧し、Pingの実行結果の統計情報を確認する
ネットワーク構成
swp2 swp4 swp2 swp4 swp47 swp48 swp47 swp48 vnic3 vnic5 vnic3 vnic5 VLAN3030 VLAN3030 / VLAN4094 MLAG Peer-link MLAG Port LAG Port Ping LACP(MLAG ID1) LACP VM1:172.16.0.1/24 VM2:172.16.0.10/24(Flow1) 172.16.0.20/24(Flow2) ESX2 bond1.3030 br3030 bond2 bond3 bond1 swp47 swp48 swp2 swp4 bond1.4094 LACP(MLAG ID2) VM1 dvPortGroup1 dvSwitch1: vmk3 lag0 lag1 vnic3 vnic5 VM2 dvSwitch1: vmk3 lag2 lag3 vnic3 vnic5 dvPortGroup1 Mgmt SW VLAN1092 MLAG Backup-link 0/7 0/9 eth0 eth0 Cumulus2 MLAG Secondary Cumulus1 MLAG Primary ESX1CUMULUS LINUXの設定(1)
Cumulus1 $sudo vi /etc/network/interfaces !-- 物理インターフェースの設定 auto eth0 iface eth0 address 10.12.92.141/24 gateway 10.12.92.254 auto swp2 iface swp2 auto swp4 iface swp4 auto swp47 iface swp47 auto swp48 iface swp48 !-- ブリッジインターフェースの設定 auto br3030 iface br3030bridge-ports bond1.3030 bond2 bond3 !-- ボンディングインターフェースの設定 auto bond1 iface bond1 bond-slaves swp47 swp48 bond-mode 802.3ad bond-miimon 100 bond-use-carrier 1 bond-lacp-rate 1 bond-min-links 1 bond-xmit-hash-policy layer3+4 !-- MLAGピアリンクの設定 auto bond1.4094 iface bond1.4094 address 169.254.255.253/30 clagd-enable yes clagd-priority 4096 clagd-peer-ip 169.254.255.254 clagd-backup-ip 10.12.92.142 clagd-sys-mac 44:38:39:ff:00:00 !-- MLAGポートの設定 auto bond2 iface bond2 bond-slaves swp2 bond-mode 802.3ad bond-miimon 100 bond-use-carrier 1 bond-lacp-rate 1 bond-min-links 1 bond-xmit-hash-policy layer3+4 clag-id 1 auto bond3 iface bond3 bond-slaves swp4 bond-mode 802.3ad bond-miimon 100 bond-use-carrier 1 bond-lacp-rate 1 bond-min-links 1 bond-xmit-hash-policy layer3+4 clag-id 2
CUMULUS LINUXの設定(2)
Cumulus2 $sudo vi /etc/network/interfaces !-- 物理インターフェースの設定 auto eth0 iface eth0 address 10.12.92.142/24 gateway 10.12.92.254 auto swp2 iface swp2 auto swp4 iface swp4 auto swp47 iface swp47 auto swp48 iface swp48 !-- ブリッジインターフェースの設定 auto br3030 iface br3030bridge-ports bond1.3030 bond2 bond3 !-- ボンディングインターフェースの設定 auto bond1 iface bond1 bond-slaves swp47 swp48 bond-mode 802.3ad bond-miimon 100 bond-use-carrier 1 bond-lacp-rate 1 bond-min-links 1 bond-xmit-hash-policy layer3+4 !-- MLAGピアリンクの設定 auto bond1.4094 iface bond1.4094 address 169.254.255.254/30 clagd-enable yes clagd-priority 9192 clagd-peer-ip 169.254.255.253 clagd-backup-ip 10.12.92.141 clagd-sys-mac 44:38:39:ff:00:00 !-- MLAGポートの設定 auto bond2 iface bond2 bond-slaves swp2 bond-mode 802.3ad bond-miimon 100 bond-use-carrier 1 bond-lacp-rate 1 bond-min-links 1 bond-xmit-hash-policy layer3+4 clag-id 1 auto bond3 iface bond3 bond-slaves swp4 bond-mode 802.3ad bond-miimon 100 bond-use-carrier 1 bond-lacp-rate 1 bond-min-links 1 bond-xmit-hash-policy layer3+4 clag-id 2
CUMULUS LINUXの設定の解説
bridge-ports bond1.3030 bond2 bond3 ブリッジにbond1.3030、bond2、bond3インターフェースを接続する
bond-slaves swp47 swp48
swp47とswp48をボンディングする
bond-mode 802.3ad
リンクアグリゲーションにLACPを使用する
bond-miimon 100
リンク状態の確認間隔を設定する(ミリ秒)
bond-use-carrier 1
リンクの検出方法を設定する
bond-lacp-rate 1
LACPパケットの送信間隔を設定する(0の場合は1秒のFastモード、1の場合は30秒のSlow
モード)
bond-min-links 1
リンクアグリゲーションがリンクアップするために必要な最小アクティブポート数を設定する
bond-xmit-hash-policy layer3+4
リンクアグリゲーションのロードバランスアルゴリズムをL3/4ヘッダーのハッシュ値に設定する
clagd-priority 4096
MLAGスイッチのプライオリティを設定する(プライオリティの小さいスイッチがMLAGプライマリース
イッチとしてコントロールプレーンの制御権を得る)
clagd-peer-ip 169.254.255.254
対向MLAGスイッチのピアリンクインターフェースのIPアドレスを設定する
clagd-backup-ip 10.12.92.142
対向MLAGスイッチのバックアップリンクインターフェースのIPアドレスを設定する(ポート番号の既
定値はUDP5342)
clagd-sys-mac 44:38:39:ff:00:00
MLAGスイッチのシステムMACアドレスを設定する(LACPとSTPで使用される)(対向MLAG
スイッチと同じ値)
VSPHEREの設定(1)
1 リンク集約グループの名前
lag
2 リンク集約グループのポート数
4
3 リンク集約グループのモード
有効
Active LACP
4 リンク集約グループのロードバランシングモード ソースとターゲットIPアドレスおよびTCP/UDPポート
VSPHEREの設定(2)
1
分散スイッチのバージョン
6.0.0
2
分散スイッチの名前
dvSwitch1
3
分散スイッチの接続タイプ
VMkernel
4
分散スイッチのアップリンク
lag0, lag1, lag2, lag3
5
分散ポートグループの名前
dvPortGroup1
6
VMkernel(ESX1)のIPアドレス
10.0.0.188
7
VMkernel(ESX1)のサブネットマスク
255.255.255.192
8
VMkernel(ESX2)のIPアドレス
10.0.0.189
9
VMkernel(ESX2)のサブネットマスク
255.255.255.192
10 リンク集約グループ lag0のアップリンク
ESX1 - vmnic3
11 リンク集約グループ lag1のアップリンク
ESX1 - vmnic5
12 リンク集約グループ lag2のアップリンク
ESX2 - vmnic3
13 リンク集約グループ lag3のアップリンク
ESX2 - vmnic5
正常系試験(リンク)
Cumulus1cumulus@cumulus1$ clagctl The peer is alive
Our Priority, ID, and Role: 4096 2c:60:0c:xx:xx:xx primary Peer Priority, ID, and Role: 9192 2c:60:0c:yy:yy:yy secondary Peer Interface and IP: bond1.4094 169.254.255.254 Backup IP: 10.12.92.142 (active) System MAC: 44:38:39:ff:00:00 CLAG Interfaces
Our Interface Peer Interface CLAG Id Conflicts Proto-Down Reason --- --- --- --- --- bond2 bond2 1 - - bond3 bond3 2 - - cumulus@cumulus1$ Cumulus2 cumulus@cumulus2$ clagctl The peer is alive
Peer Priority, ID, and Role: 4096 2c:60:0c:xx:xx:xx primary Our Priority, ID, and Role: 9192 2c:60:0c:yy:yy:yy secondary Peer Interface and IP: bond1.4094 169.254.255.253 Backup IP: 10.12.92.141 (active) System MAC: 44:38:39:ff:00:00 CLAG Interfaces
Our Interface Peer Interface CLAG Id Conflicts Proto-Down Reason --- --- --- --- --- bond2 bond2 1 - -
bond3 bond3 2 - - cumulus@cumulus2$
正常系試験(PING)
Flow1 Flow2
$ping –c 10 –i 0.2 –s 1392 172.16.0.10
PING 172.16.0.10 (172.16.0.10) 1392(1420) bytes of data. 1400 bytes from 172.16.0.10: icmp_seq=1 ttl=64 time=0.472 ms 1400 bytes from 172.16.0.10: icmp_seq=2 ttl=64 time=0.531 ms 1400 bytes from 172.16.0.10: icmp_seq=3 ttl=64 time=0.520 ms 1400 bytes from 172.16.0.10: icmp_seq=4 ttl=64 time=0.552 ms 1400 bytes from 172.16.0.10: icmp_seq=5 ttl=64 time=0.601 ms 1400 bytes from 172.16.0.10: icmp_seq=6 ttl=64 time=0.594 ms 1400 bytes from 172.16.0.10: icmp_seq=7 ttl=64 time=0.666 ms 1400 bytes from 172.16.0.10: icmp_seq=8 ttl=64 time=0.531 ms 1400 bytes from 172.16.0.10: icmp_seq=9 ttl=64 time=0.534 ms 1400 bytes from 172.16.0.10: icmp_seq=10 ttl=64 time=0.605 ms
--- 172.16.0.10 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 1799ms
rtt min/avg/max/mdev = 0.472/0.560/0.666/0.058 ms
$ping –c 10 –i 0.2 –s 1392 172.16.0.20
PING 172.16.0.20 (172.16.0.20) 1392(1420) bytes of data. 1400 bytes from 172.16.0.20: icmp_seq=1 ttl=64 time=0.556 ms 1400 bytes from 172.16.0.20: icmp_seq=2 ttl=64 time=0.589 ms 1400 bytes from 172.16.0.20: icmp_seq=3 ttl=64 time=0.559 ms 1400 bytes from 172.16.0.20: icmp_seq=4 ttl=64 time=0.543 ms 1400 bytes from 172.16.0.20: icmp_seq=5 ttl=64 time=0.554 ms 1400 bytes from 172.16.0.20: icmp_seq=6 ttl=64 time=0.655 ms 1400 bytes from 172.16.0.20: icmp_seq=7 ttl=64 time=0.538 ms 1400 bytes from 172.16.0.20: icmp_seq=8 ttl=64 time=0.581 ms 1400 bytes from 172.16.0.20: icmp_seq=9 ttl=64 time=0.451 ms 1400 bytes from 172.16.0.20: icmp_seq=10 ttl=64 time=0.540 ms
--- 172.16.0.20 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 1799ms
rtt min/avg/max/mdev = 0.451/0.556/0.655/0.054 ms
異常系試験(PING)(1)
Flow1 Flow2
$ping –i 0.2 –s 1392 172.16.0.10
PING 172.16.0.10 (172.16.0.10) 1392(1420) bytes of data. 1400 bytes from 172.16.0.10: icmp_seq=1 ttl=64 time=0.472 ms 1400 bytes from 172.16.0.10: icmp_seq=2 ttl=64 time=0.531 ms 1400 bytes from 172.16.0.10: icmp_seq=3 ttl=64 time=0.520 ms ...
$ping –i 0.2 –s 1392 172.16.0.20
PING 172.16.0.20 (172.16.0.20) 1392(1420) bytes of data. 1400 bytes from 172.16.0.20: icmp_seq=1 ttl=64 time=0.556 ms 1400 bytes from 172.16.0.20: icmp_seq=2 ttl=64 time=0.589 ms 1400 bytes from 172.16.0.20: icmp_seq=3 ttl=64 time=0.559 ms ...
異常系試験(PING)(2)
通信断時間(Flow1/2共通) 備考 MLAGリンク1障害 2秒未満 MLAGリンク1復旧 1秒未満 MLAGリンク2障害 2秒未満 MLAGリンク2復旧 1秒未満 スイッチ筐体障害 2秒未満 スイッチ筐体復旧 3秒未満 ピアリンク障害(全断) なし ピアリンク復旧 なし Pingデータサイズ: 1392 byte Ping実行間隔: 200msec×
×
×
×
MLAGリンク1障害 MLAGリンク2障害 スイッチ筐体障害 ピアリンク障害結果: 障害または復旧時のサービスへの影響は小さいといえる
異常系試験(リンク)(1)
Cumulus1cumulus@cumulus1$ clagctl The peer is not alive
Our Priority, ID, and Role: 4096 2c:60:0c:xx:xx:xx primary Peer Interface and IP: bond1.4094 169.254.255.254 Backup IP: 10.12.92.142 (active) System MAC: 44:38:39:ff:00:00 CLAG Interfaces
Our Interface Peer Interface CLAG Id Conflicts Proto-Down Reason --- --- --- --- --- bond2 - 1 - -
bond3 - 2 - - cumulus@cumulus1$ ip link show bond2
136: bond2: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue master br3030 state UP mode DORMANT link/ether 2c:60:0c:xx:xx:aa brd ff:ff:ff:ff:ff:ff
cumulus@cumulus1$ ip link show bond3
137: bond3: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue master br3030 state UP mode DORMANT link/ether 2c:60:0c:xx:xx:bb brd ff:ff:ff:ff:ff:ff
異常系試験(リンク)(2)
Cumulus2cumulus@cumulus2$ clagctl The peer is not alive
Our Priority, ID, and Role: 9192 2c:60:0c:yy:yy:yy secondary Peer Interface and IP: bond1.4094 169.254.255.253 Backup IP: 10.12.92.141 (active) System MAC: 44:38:39:ff:00:00 CLAG Interfaces
Our Interface Peer Interface CLAG Id Conflicts Proto-Down Reason --- --- --- --- --- bond2 - 1 - isl-down
bond3 - 2 - isl-down cumulus@cumulus2$ ip link show bond2
194: bond2: <NO-CARRIER,BROADCAST,MULTICAST,MASTER,UP> mtu 1500 qdisc noqueue master br3030 state DOWN mode DORMANT link/ether 2c:60:0c:yy:yy:aa brd ff:ff:ff:ff:ff:ff
cumulus@cumulus2$ ip link show bond3
195: bond3: <NO-CARRIER,BROADCAST,MULTICAST,MASTER,UP> mtu 1500 qdisc noqueue master br3030 state DOWN mode DORMANT link/ether 2c:60:0c:yy:yy:bb brd ff:ff:ff:ff:ff:ff
cumulus@cumulus2$