デルでネットワークを担当しております井上です、

今回はCumulus Networks社のCumulus Linux OS(以下CL)で、Version 2.5においてリリースされましたCLAGの検証を行いましたので、本記事に内容をまとめさせていただきます。

CLによるデータセンターネットワーク構成というと、これまでL3プロトコルを使ったリーフ・スパイン構成をイメージしていました。しかしCL2.5のリリースに伴いL2機能も拡充されたようで、L2でのリーフ・スパイン構成もとれるようになったようです。

https://support.cumulusnetworks.com/hc/en-us/articles/204439467-Cumulus-Linux-2-5-0-Release-Notes

 

ここで重要となる機能のひとつが、今回検証を行ったCLAG(Multi-Chassis Link Aggregation)です。## 呼び方は"シーラグ”と思っていたのですが”クラッグ”が正解でした、、

http://docs.cumulusnetworks.com/display/DOCS/Multi-Chassis+Link+Aggregation+-+MLAG

また同じくCL2.5でリリースされたVLAN-aware bridgeも重要な機能です。これは新たなbridge driverとなります。traditional Linux bridgeだと多数のVLANを必要とした際に、設定ファイルが尋常ではない行数になってしまいましたが、、このVLAN-aware bridgeだと、一般的なL2スイッチのようにvlanを連続的な記述で扱えるような作りとなっています。現時点ではCLAGを構成する際には必須機能となるようです。

http://docs.cumulusnetworks.com/display/DOCS/VLAN-aware+Bridge+Mode+for+Large-scale+Layer+2+Environments

 

今回の検証では、以下のようなひし形構成でCLAGの正常性確認と障害試験による切り替わり時間を測定してみました。機器は Dell Networking S6000-ON(CL2.5.3) と、配下のスイッチにDell Networkinig S4820T(DNOS9.8)で構成しています。

それではまずCLAGの設定内容を確認してみましょう。

cumulus@S6000-ON1$ cat /etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet
 address 192.168.11.175
 netmask 255.255.255.0
 gateway 192.168.11.1

auto peerlink
iface peerlink
    bond-slaves swp1 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

auto peerlink.4094
iface peerlink.4094
    address 169.254.255.1
    netmask 255.255.255.0
    clagd-priority 4096
    clagd-peer-ip 169.254.255.2
    clagd-backup-ip 192.168.11.176
    clagd-sys-mac 44:38:39:ff:00:01

auto clag-1
iface clag-1
    bond-slaves swp31
    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 clag-2
iface clag-2
    bond-slaves swp32
    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

auto br0
iface br0
   bridge-vlan-aware yes
   bridge-ports peerlink clag-1 clag-2
   bridge-stp on
   bridge-vids 2-3000
   bridge-pvid 1
   bridge-mcsnoop 1
         
cumulus@S6000-ON1$

cumulus@S6000-ON2$ cat /etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet
 address 192.168.11.176
 netmask 255.255.255.0
 gateway 192.168.11.1

auto peerlink
iface peerlink
    bond-slaves swp1 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

auto peerlink.4094
iface peerlink.4094
    address 169.254.255.2
    netmask 255.255.255.0

    clagd-peer-ip 169.254.255.1
    clagd-backup-ip 192.168.11.175
    clagd-sys-mac 44:38:39:ff:00:01

auto clag-1
iface clag-1
    bond-slaves swp31
    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 clag-2
iface clag-2
    bond-slaves swp32
    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

auto br0
iface br0
   bridge-vlan-aware yes
   bridge-ports peerlink clag-1 clag-2
   bridge-stp on
   bridge-vids 2-3000
   bridge-pvid 1
   bridge-mcsnoop 1
 
cumulus@S6000-ON2$

設定は/etc/network/interfacesファイルに記述します。

まず両機器の渡りで使うPeer Linkを作っています。そしてPeer Link上に、使わなさそうなVLANとリンクローカルアドレスを使ってVLAN  iterfaceを作り、配下にCLAGの肝となる設定を行っていきます。

CLAGペアの各機器には、PrimaryとSecondaryのRoleがあります。Lower PriorityがPrimaryとなるので、明示的にRoleを指定したい場合にはPriorityを設定します。Default Priorityは32768です。

Peer Linkを使ったPeer IPと共に、Management Port(eth0)を使ったBackup Ipを指定しています。Backup IPはCLAGペアの死活監視用に使われます。Peer IPがあるからよいのでは?と思ってしまいそうですが、仮にPeer LinkがDownしてしまった際に、Backup Ipをもとにペアが生きていると判断されれば、Secoundary側のCLAG interfaceをDOWNさせて、ネットワークがおかしくなってしまうことを防いでくれます。このように非常に大切な設定となります。

CLAG上のLACPで使われる共通のMACアドレスも設定します。

あとは両機器で共通のCLAG interfaceを設定して、VLAN-aware機能を使ったbridge(untag vlan 1/ tagging vlan 2-3000)に各IFを設定してあげて完了です。

 

設定完了後にsudo service networking restartで反映させて、Statusを確認してみましょう。

cumulus@S6000-ON1$ clagctl
The peer is alive
     Our Priority, ID, and Role: 4096 90:b1:1c:f4:d1:ba primary
    Peer Priority, ID, and Role: 32768 90:b1:1c:f4:cd:31 secondary
          Peer Interface and IP: peerlink.4094 169.254.255.2
                      Backup IP: 192.168.11.176 (active)
                     System MAC: 44:38:39:ff:00:01

       Dual Attached Ports
Our Interface      Peer Interface     CLAG Id
----------------   ----------------   -------
          clag-1   clag-1             1      
          clag-2   clag-2             2      

cumulus@S6000-ON1$
cumulus@S6000-ON2$ clagctl
The peer is alive
    Peer Priority, ID, and Role: 4096 90:b1:1c:f4:d1:ba primary
     Our Priority, ID, and Role: 32768 90:b1:1c:f4:cd:31 secondary
          Peer Interface and IP: peerlink.4094 169.254.255.1
                      Backup IP: 192.168.11.175 (active)
                     System MAC: 44:38:39:ff:00:01

       Dual Attached Ports
Our Interface      Peer Interface     CLAG Id
----------------   ----------------   -------
          clag-1   clag-1             1      
          clag-2   clag-2             2      

cumulus@S6000-ON2$


clagctlコマンドを使うことでstausを確認できます。上記のコマンド結果から、Peerがalive、Backup IPもactiveであることが確認できます。またCLAG interface上で正常に対向と接続できればDual Attached Portsに該当CLAG interface名が表示されますので、今回設定したCLAG interfaceは正常に構成できたようです。


正常性を確認できたところで、今度は以下のようにテスターからトラフィックを流して、障害発生時の切り替わり時間を計測してみましょう。

リンク障害、ボックス障害で試してみましたが、本検証では概ね数秒以内、障害ケースによっては1秒未満での切り替わりを確認しました。またリソース負荷を変動させると少し切り替わり時間に影響があるようでした。*本検証結果は保障された結果ではございません。環境により結果は異なる可能性がございます。

 

最後に、検証した際に気になった点をいくつか、、

現Version(CL2.5.3)ではbondingはLACPのみの対応となるようですので、ホストを接続させるようなケースではbonding modeにご注意ください。あとVLANは3300-3999がdefaultでreservedされており、これらのVLANを含めてbridgeを作ろうとすると怒られてしまいます。

https://support.cumulusnetworks.com/hc/communities/public/questions/202853968-What-are-reserved-VLANs-for-bridge-vlan-aware-functionality-

またVLAN-aware bridgeは1 instanceしか作成できません。ここら辺の仕様はVLAN設計に影響がありますので少々ご注意いただく必要があるかと思います。なおこれらは今後変更される可能性もあるかと思いますので、最新のマニュアルを十分ご確認くただくことをお勧めします。

以上がCLAG検証内容のまとめとなります。DC内のネットワークをL2構成で検討することは多々あるかと思います。現versionではいくつかの気になる仕様がありましたが、ネットワーク設計に幅が広がる嬉しい機能になるかと思います!

<<以下追記(2016/1/22)>>

Cumulus VX上でCLAGを動作させるためには、以下トピックの通り、 clagd-args '--vm' と、 swpで promisc on が必要となるようですのでご注意いただければと思います。

https://community.cumulusnetworks.com/cumulus/topics/cumulus-vx-support-mlag