Cumulus Linux - 基本的なL2設定方法
Cumulus Linuxに興味が湧いたので触っています。ここでは頭の整理として基本的な部分をまとめました。
概要
この記事はCumulus Linux 4.2
でテストしています。
Interface Type
次の Type があり、各ベンダがサポートしている内容と同じかと思います。
種類 | 概要 |
---|---|
Access | アクセスポート |
Trunk | トランクポート |
SVI | VLAN 内の Layer3 Interface |
Bond | Port Channel / Link Aggregation |
Bridge | ブリッジドメイン |
Layer2 Mode
Cumulus Linux には 2 種類の設定 Mode がありまます。
- VLAN-aware Bridge
- Traditional Bridge
簡単に比較表を作りました。
手法 | 概念 | ポイント |
---|---|---|
VLAN-aware | 1 ブリッジ内で VLAN グループを作成してポートを所属 | - 2000 VLAN まで利用可能 - シンプルな設定でスケールしやすい |
Traditional | ブリッジ単位が VLAN グループとしてポートを所属 | - 200VLAN まで利用可能 - Cumulus Linux 3.1 以前で VXLAN を利用している - PVSTP+を利用している - VLAN で LAN を指定するというよりブリッジで LAN を決めるイメージ |
上記のことから、そもそもの使い方してVLAN-aware
でどーんっと VLAN を通してあげることが推奨された使い方に感じました。
詳細はココを参照してください。
設定
比較の結果、VLAN-Aware
のみで実施しています。興味のある方はTraditional Bride Modeを参照してください。
Access/Trunk
bridge を作成します。ここで所属させた port が全てTrunk
で動作します。
net add bridge bridge ports swp49,51 net add bridge bridge vids 100,200 net add bridge bridge vlan-aware
swp51
をAccess
に変更する場合は、上記に加えて次のように指定します。
net add interface swp51 bridge access 100
以下のように状態が正しくセットされたことが確認できます。
cumulus@leaf01:mgmt:~$ net show bridge vlan Interface VLAN Flags --------- ---- --------------------- swp49 1 PVID, Egress Untagged 100 200 swp51 100 PVID, Egress Untagged
続いてswp49
でTrunk
の範囲をVLAN100に絞り込みます。
net add interface swp49 bridge vids 100
これによって、先ほどswp49
は VLAN100, 200 でしたが、VLAN100 のみ通るようになりました。
ncumulus@leaf01:mgmt:~$ net show bridge vlan Interface VLAN Flags --------- ---- --------------------- swp49 1 PVID, Egress Untagged 100 swp51 100 PVID, Egress Untagged
また、VLAN の利用にはデフォルトで 3600-3999 が予約済み(変更可能)のようなので注意が必要です。
Native-VLAN
デフォルトで Native VLAN は 1 が利用されるようになっており、自動的に設定されます。明示的に設定する場合は次のようにします。
net add bridge bridge pvid 1
もし通したくない場合は次のようにします。
net add interface swp49 bridge allow-untagged no
次のように swp49
から VLAN 1 が削除されました。
cumulus@leaf01:mgmt:~$ net show bridge vlan Interface VLAN Flags --------- ---- --------------------- swp49 100 swp51 100 PVID, Egress Untagged
SVI
VLAN 上に Interface を設定します。
net add vlan 100 ip add 192.168.0.100/24
route に追加されました。
cumulus@tor01:mgmt:~$ net show route 192.168.0.0/24 RIB entry for 192.168.0.0/24 ============================ Routing entry for 192.168.0.0/24 Known via "connected", distance 0, metric 0, best Last update 00:03:39 ago * directly connected, vlan100 FIB entry for 192.168.0.0/24 ============================ 192.168.0.0/24 dev vlan100 proto kernel scope link src 192.168.0.100
Storm-Control
ループしないように設計を行っても、Storm-Control は念の為入れておくかと思います。
/etc/cumulus/switchd.conf
の設定項目を編集して機能を利用します。
cumulus@leaf01:mgmt:~$ cat /etc/cumulus/switchd.conf | grep storm interface.swp1.storm_control.broadcast = 400 interface.swp1.storm_control.multicast = 3000 interface.swp1.storm_control.unknown_unicast = 2000
編集後はswitchd
の restart を行いますが、通信断が発生するため注意が必要です。
cumulus@leaf01:mgmt:~$ sudo systemctl restart switchd
一応 ping で試してみましたが、loss にはなりませんでしたね。
cumulus@spine01:mgmt:~$ ping 192.168.0.2 vrf-wrapper.sh: switching to vrf "default"; use '--no-vrf-switch' to disable PING 192.168.0.2 (192.168.0.2) 56(84) bytes of data. ... 64 bytes from 192.168.0.2: icmp_seq=8 ttl=64 time=1.35 ms 64 bytes from 192.168.0.2: icmp_seq=9 ttl=64 time=1.75 ms 64 bytes from 192.168.0.2: icmp_seq=10 ttl=64 time=2.14 ms <----- ここ 64 bytes from 192.168.0.2: icmp_seq=11 ttl=64 time=1.34 ms 64 bytes from 192.168.0.2: icmp_seq=12 ttl=64 time=1.49 ms ... ^C --- 192.168.0.2 ping statistics --- 14 packets transmitted, 14 received, 0% packet loss, time 36ms rtt min/avg/max/mdev = 1.341/1.722/2.135/0.222 ms
Bond(LAG)
リンク冗長の定番は LAG かと思います。早速、swp49
とswp50
で設定してみましょう。
net add bond bond0 bond slaves swp49-50
Bond Details
を見ると、Bond で変更できるオプションがわかりますね。
Bond Mode
は LACP に当たるIEEE802.3ad
が基本ですが、対向装置が使えない場合はbalance-xor
で静的接続に変更が必要です。
cumulus@leaf01:mgmt:~$ net show interface | grep bond UP swp49 1G 9216 BondMember leaf02 (swp49) Master: bond0(UP) UP swp50 1G 9216 BondMember leaf02 (swp50) Master: bond0(UP) UP bond0 2G 9216 802.3ad Bond Members: swp49(UP) bond0 Bond Members: swp50(UP) cumulus@leaf01:mgmt:~$ net show interface bond0 Name MAC Speed MTU Mode -- ----- ----------------- ----- ---- ------- UP bond0 76:ed:2a:8a:67:24 2G 9216 802.3ad Bond Details ------------------ -------- Bond Mode: 802.3ad Load Balancing: layer3+4 Minimum Links: 1 LACP Sys Priority: LACP Rate: 1 LACP Bypass: Inactive All VLANs on L2 Port -------------------- 1,100,200 Untagged -------- 1 cl-netstat counters ------------------- RX_OK RX_ERR RX_DRP RX_OVR TX_OK TX_ERR TX_DRP TX_OVR ----- ------ ------ ------ ----- ------ ------ ------ 701 0 20 0 697 0 0 0 LLDP Details ------------ LocalPort RemotePort(RemoteHost) --------- ---------------------- swp49 swp49(leaf02) swp50 swp50(leaf02) Routing ------- Interface bond0 is up, line protocol is up Link ups: 3 last: 2020/12/19 07:23:19.93 Link downs: 6 last: 2020/12/19 07:17:33.85 PTM status: disabled vrf: default index 15 metric 0 mtu 9216 speed 2000 flags: <UP,BROADCAST,RUNNING,MULTICAST> Type: Unknown HWaddr: 76:ed:2a:8a:67:24 Interface Type bond Master interface: bridge PVID: 1 protodown: off (n/a) cumulus@leaf01:mgmt:~$ ip link ... 6: swp49: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 9216 qdisc pfifo_fast master bond0 state UP mode DEFAULT group default qlen 1000 link/ether 76:ed:2a:8a:67:24 brd ff:ff:ff:ff:ff:ff 7: swp50: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 9216 qdisc pfifo_fast master bond0 state UP mode DEFAULT group default qlen 1000 link/ether 76:ed:2a:8a:67:24 brd ff:ff:ff:ff:ff:ff ... 15: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 9216 qdisc noqueue master bridge state UP mode DEFAULT group default qlen 1000 link/ether 76:ed:2a:8a:67:24 brd ff:ff:ff:ff:ff:ff
また、デフォルトで利用できるハッシュは次の通りです。
Meallnox
など利用する HW によってはカスタマイズが可能のようなので、環境に応じてドキュメントの確認が必要です。
LLDP
デフォルトで Linux のlldpd
が起動します。そのため、設定を変えたい場合は/etc/lldpd.conf
を作成します。詳細はマニュアルを参照ください。
net
コマンドでも確認できるように次の内容が用意されています。
cumulus@tor01:mgmt:~$ net show lldp LocalPort Speed Mode RemoteHost RemotePort --------- ----- ---------- --------------- ---------- eth0 1G Mgmt oob-mgmt-switch swp10 swp49 1G BondMember leaf02 swp49 swp50 1G BondMember leaf02 swp50 swp51 1G Access/L2 spine01 swp1 swp52 1G Default spine02 swp1 swp53 1G Default spine03 swp1 swp54 1G Default spine04 swp1
まとめ
ざっと最低限使いそうな機能を整理しました。まだnet
操作に慣れていませんが、全体的にシンプルでいいですね。
そのほかにも以下の機能がありますので、興味ある方はマニュアルを読んでみてください。
- STP
- MLAG
- LACP bypass
- IGMP/MLD snooping