MC-LAGと呼ばれる物理リンクの冗長化機能で、VirtualBox内で動作している3台のSONiC間でリンクアグリゲーション構成を組んでみた。
SONiCのバージョン毎に新しく実装される機能の一覧が記載されているSonic Roadmap Planningにて、バージョン202106でL2 MC-LAGが実装された事に気が付き、年末年始期間中に3台のSONiCでMC-LAGの簡単な構成を組んだ。
MC-LAGとは?
Multi-chassis Link Aggregationの略でMLAGと呼ぶ事も有る、物理層の冗長化機能のうちの1つ。
複数のアップリンクを論理的に1本に束ねて通信の帯域を増やすという技術のうちの1つで、複数の物理線を1本にまとめる事により1本のケーブルや1台の接続先機器に障害が発生しても通信への影響を最小限に抑える事が出来る。
今回扱ったMC-LAGは、2台の上位機器を跨いでリンクアグリゲーションを構成する。
2台の上位機器はアクティブ・スタンバイではなく両機器共にアクティブ機として動作する。
SONiCではL2 MC-LAGがバージョン202106にて正式にサポートされたが、Edge-core版やNVIDIA版等の商用版では本家版より早くL2 MC-LAGとL3 MC-LAG共にサポートされたようである。
そもそもSONiCとは何ぞや?に関しては、以下のリンク先をご参照ください。
https://debslink.hatenadiary.jp/entry/20210131/1612091391 SONiCを少しかじってみた
当方の環境
ホストOS:Windows10 64bit版 / RAM: 8GB / CPU: Intel Core i5 M460 2.53GHz
Oracle Virtualbox:6.1.28
ゲストOS:SONiC 202106.65364-c4bc9933f
年末年始に当検証を開始し1月下旬になってようやく記事にまとめられた理由は、つい先日ようやく物理インタフェースとLAG共にリンクアップさせる事が出来た為である。
3台のSONiCを仮想的に接続しMC-LAGの設定を投入しても、なかなかリンクアップしなかった。
諦めて暫くの間放置していたが、MACアドレスが3台共同じ値である事に気が付き、手動でMACアドレスを変更したらようやくMC-LAGを組めるようになった。
構成
SONiCはデプロイ完了の時点でIPアドレスやBGP等の設定が既に入っていた状態だった為、当検証で不要な設定は削除。
構成図内の緑色の文字列(intnet01など)は、VirtualBoxのネットワークアダプタ設定の内部ネットワーク(Internal Network)名である。
接続先と対になる感じで名称を設定すると、仮想的にケーブルが接続されたような状態となる。
SONiCの導入
SONiCは以下のリンク先よりダウンロード可能。
ただし、開発者が個人的に立ち上げたサイトである為、永続的にダウンロードが可能であるかに関しては不明。
https://sonic.software/
ダウンロード後、.imgファイルをNHCというツールで.vhdファイルや.vmdkファイルに変換し、VBoxManage.exeコマンドでUUIDを付与する必要が有る。
SONiCのデプロイに関しては、以下の記事をご参照ください。
https://debslink.hatenadiary.jp/entry/20210131/1612091391
VirtualBox環境にて3台のSONiC間を仮想的なケーブルで接続させるには、ネットワークアダプタの内部ネットワークの設定を変更する必要が有る。
設定変更の方法に関しては以下の記事をご参照ください。
https://debslink.hatenadiary.jp/entry/20201217/1608182777
SONiCの設定
今回は、コマンドで設定可能なものは極力/etc/sonic/config_db.jsonファイルを直接編集せずコマンドで設定した。
最初に、MC-LAG構成の機器3台のうちの1つ、jpmtkvmsw98にて設定作業開始。
まずはデプロイ直後から存在するIPアドレス設定を削除し、一旦保存する。
admin@jpmtkvmsw98:~$ sudo config interface ip remove Ethernet0 10.0.0.0/31 admin@jpmtkvmsw98:~$ sudo config interface ip remove Ethernet4 10.0.0.2/31 admin@jpmtkvmsw98:~$ sudo config interface ip remove Ethernet8 10.0.0.4/31 admin@jpmtkvmsw98:~$ sudo config interface ip remove Loopback0 10.1.0.1/32 admin@jpmtkvmsw98:~$ sudo config interface ip add Loopback0 10.1.1.98/32 admin@jpmtkvmsw98:~$ admin@jpmtkvmsw98:~$ sudo config save Existing files will be overwritten, continue? [y/N]: y Running command: /usr/local/bin/sonic-cfggen -d --print-data > /etc/sonic/config_db.json admin@jpmtkvmsw98:~$
次は、PortChannelインタフェースの作成と物理インタフェースのPortChannelへのアサイン。
MC-LAG構成のネイバ機器に接続するPortChannelインタフェース10と、下位機器に接続するPortChannelインタフェース101を作成し、PortChannelに参加する物理インタフェースをアサイン。
そしてVLAN100、VLAN101、VLAN102それぞれを作成し、各PortChannelインタフェースにVLANをアサイン。
ここまで設定したら、一旦設定内容を保存。
タグ無しでPortChannelインタフェースにVLANをアサインするコマンドsudo config vlan member add -u 100 PortChannel1は何故か弾かれた為、untagオプションは/etc/sonic/config_db.jsonファイルを編集する事で対処した。
admin@jpmtkvmsw98:~$ sudo config portchannel add PortChannel10 admin@jpmtkvmsw98:~$ sudo config portchannel add PortChannel101 admin@jpmtkvmsw98:~$ sudo config portchannel member add PortChannel10 Ethernet0 admin@jpmtkvmsw98:~$ sudo config portchannel member add PortChannel10 Ethernet4 admin@jpmtkvmsw98:~$ sudo config portchannel member add PortChannel101 Ethernet8 admin@jpmtkvmsw98:~$ sudo config vlan add 100 admin@jpmtkvmsw98:~$ sudo config vlan add 101 admin@jpmtkvmsw98:~$ sudo config vlan add 102 admin@jpmtkvmsw98:~$ sudo config vlan member add 100 PortChannel10 admin@jpmtkvmsw98:~$ sudo config vlan member add 101 PortChannel10 admin@jpmtkvmsw98:~$ sudo config vlan member add 102 PortChannel10 admin@jpmtkvmsw98:~$ sudo config vlan member add 101 PortChannel101 admin@jpmtkvmsw98:~$ sudo config save Existing files will be overwritten, continue? [y/N]: y Running command: /usr/local/bin/sonic-cfggen -d --print-data > /etc/sonic/config_db.json admin@jpmtkvmsw98:~$
次はMC-LAGの設定。
MC-LAG構成機器間でIPアドレスの学習同期設定。MC-LAGドメインIDを1に設定し、自側アドレス192.168.100.1とネイバのアドレス192.168.100.2、同期で使用するインタフェースPo10を指定。
そしてMC-LAGに通すVLAN(VLAN100)を指定し、VLAN100のIPアドレス192.168.100.1/24をアサイン。
最後に設定内容を保存し、jpmtkvmsw98の設定は完了。
admin@jpmtkvmsw98:~$ sudo config mclag add 1 192.168.100.1 192.168.100.2 PortChannel10 admin@jpmtkvmsw98:~$ sudo config mclag unique-ip add Vlan100 admin@jpmtkvmsw98:~$ sudo config mclag member add 1 PortChannel101 admin@jpmtkvmsw98:~$ sudo config interface ip add Vlan100 192.168.100.1/24 admin@jpmtkvmsw98:~$ sudo config interface startup Ethernet8 admin@jpmtkvmsw98:~$ sudo config save Existing files will be overwritten, continue? [y/N]: y Running command: /usr/local/bin/sonic-cfggen -d --print-data > /etc/sonic/config_db.json admin@jpmtkvmsw98:~$
次はMC-LAG構成の2台目の機器jpmtkvmsw99の設定。
この機器もデプロイ直後から存在するIPアドレス設定は一旦削除する。
IPアドレス以外の設定内容は1台目と同じである為、設定内容の説明は割愛。
admin@jpmtkvmsw99:~$ sudo config interface ip remove Ethernet0 10.0.0.0/31 admin@jpmtkvmsw99:~$ sudo config interface ip remove Ethernet4 10.0.0.2/31 admin@jpmtkvmsw99:~$ sudo config interface ip remove Ethernet8 10.0.0.4/31 admin@jpmtkvmsw99:~$ sudo config interface ip remove Loopback0 10.1.0.1/32 admin@jpmtkvmsw99:~$ sudo config interface ip add Loopback0 10.1.1.99/32 admin@jpmtkvmsw99:~$ sudo config portchannel add PortChannel10 admin@jpmtkvmsw99:~$ sudo config portchannel add PortChannel101 admin@jpmtkvmsw99:~$ sudo config portchannel member add PortChannel10 Ethernet0 admin@jpmtkvmsw99:~$ sudo config portchannel member add PortChannel10 Ethernet4 admin@jpmtkvmsw99:~$ sudo config portchannel member add PortChannel101 Ethernet8 admin@jpmtkvmsw99:~$ sudo config vlan add 100 admin@jpmtkvmsw99:~$ sudo config vlan add 101 admin@jpmtkvmsw99:~$ sudo config vlan add 102 admin@jpmtkvmsw99:~$ sudo config vlan member add 100 PortChannel10 admin@jpmtkvmsw99:~$ sudo config vlan member add 101 PortChannel10 admin@jpmtkvmsw99:~$ sudo config vlan member add 102 PortChannel10 admin@jpmtkvmsw99:~$ sudo config vlan member add 101 PortChannel101 admin@jpmtkvmsw99:~$ admin@jpmtkvmsw99:~$ sudo config save Existing files will be overwritten, continue? [y/N]: y Running command: /usr/local/bin/sonic-cfggen -d --print-data > /etc/sonic/config_db.json admin@jpmtkvmsw99:~$ sudo config mclag add 1 192.168.100.2 192.168.100.1 PortChannel10 admin@jpmtkvmsw99:~$ admin@jpmtkvmsw99:~$ sudo config mclag unique-ip add Vlan100 admin@jpmtkvmsw99:~$ sudo config mclag member add 1 PortChannel101 admin@jpmtkvmsw99:~$ sudo config interface ip add Vlan100 192.168.100.2/24 admin@jpmtkvmsw99:~$ sudo config interface startup Ethernet8 admin@jpmtkvmsw99:~$ sudo config save Existing files will be overwritten, continue? [y/N]: y Running command: /usr/local/bin/sonic-cfggen -d --print-data > /etc/sonic/config_db.json admin@jpmtkvmsw99:~$
最後に、MC-LAG構成の下位機器jpmtkvmsw101の設定。
この機器もデプロイ直後から存在するIPアドレスを一旦削除する。
当機器の設定はVLAN101の作成と、LANインタフェースへの物理インタフェースのアサイン、VLAN101のアサインで終わりである。
admin@jpmtkvmsw101:~$ sudo config interface ip remove Ethernet0 10.0.0.0/31 admin@jpmtkvmsw101:~$ sudo config interface ip remove Ethernet4 10.0.0.2/31 admin@jpmtkvmsw101:~$ sudo config interface ip remove Ethernet8 10.0.0.4/31 admin@jpmtkvmsw101:~$ sudo config interface ip remove Loopback0 10.1.0.1/32 admin@jpmtkvmsw101:~$ sudo config interface ip add Loopback0 10.1.1.101/32 admin@jpmtkvmsw101:~$ sudo config vlan add 101 admin@jpmtkvmsw101:~$ sudo config portchannel add PortChannel101 admin@jpmtkvmsw101:~$ sudo config portchannel member add PortChannel101 Ethernet0 admin@jpmtkvmsw101:~$ sudo config portchannel member add PortChannel101 Ethernet4 admin@jpmtkvmsw101:~$ sudo config vlan member add 101 PortChannel101 admin@jpmtkvmsw101:~$ sudo config save Existing files will be overwritten, continue? [y/N]: y Running command: /usr/local/bin/sonic-cfggen -d --print-data > /etc/sonic/config_db.json admin@jpmtkvmsw101:~$
コマンドで設定出来なかった箇所(自分がコマンドを分からないだけかも知れないが)は、設定ファイル/etc/sonic/config_db.jsonを直接編集する。
L3インタフェースEthernet0、Ethernet4、Ethernet8の削除。
同様の作業をjpmtkvmsw99とjpmtkvmsw101にも実施する。
}, "INTERFACE": { "Ethernet0": {}, ※この行を削除 "Ethernet4": {}, ※この行を削除 "Ethernet8": {}, ※この行を削除 "Ethernet12": {}, "Ethernet12|10.0.0.6/31": {}, "Ethernet16": {}, "Ethernet16|10.0.0.8/31": {}, : :
VLAN MEMBER欄にて、各VLANに対し"tagging_mode": "untagged"を追記する。
同様の作業をjpmtkvmsw99とjpmtkvmsw101にも実施する。
: : }, "VLAN_MEMBER": { "Vlan100|PortChannel10": { "tagging_mode": "untagged" ※この行を追加 }, "Vlan101|PortChannel10": { "tagging_mode": "untagged" ※この行を追加 }, "Vlan101|PortChannel101": { "tagging_mode": "untagged" ※この行を追加 }, "Vlan102|PortChannel10": { "tagging_mode": "untagged" ※この行を追加 } } }
MACアドレスが3台で同一にならないよう、jpmtkvmsw99とjpmtkvmsw101にてMACアドレスを編集する。
: : "DEVICE_METADATA": { "localhost": { "bgp_asn": "65100", "buffer_model": "traditional", "default_bgp_status": "up", "default_pfcwd_status": "disable", "hostname": "jpmtkvmsw99", "hwsku": "Force10-S6000", "mac": "52:54:00:12:34:99", ※MACアドレスを編集 "platform": "x86_64-kvm_x86_64-r0", "type": "LeafRouter" } }, : :
SONiCの設定内容
以下は、設定後の/etc/sonic/config_db.jsonファイルの内容である。
設定ファイル/etc/sonic/config_db.jsonの内容は長い為、今回の対象となる設定項目を抜粋。
以下はjpmtkvmsw98の設定内容。
admin@jpmtkvmsw98:~$ sudo cat /etc/sonic/config_db.json : : }, "INTERFACE": { "Ethernet12": {}, "Ethernet12|10.0.0.6/31": {}, "Ethernet16": {}, "Ethernet16|10.0.0.8/31": {}, "Ethernet20": {}, "Ethernet20|10.0.0.10/31": {}, : : }, "LOOPBACK_INTERFACE": { "Loopback0": {}, "Loopback0|10.1.1.98/32": {} }, "MCLAG_DOMAIN": { "1": { "peer_ip": "192.168.100.2", "peer_link": "PortChannel10", "source_ip": "192.168.100.1" } }, "MCLAG_INTERFACE": { "1|PortChannel101": { "if_type": "PortChannel" } }, "MCLAG_UNIQUE_IP": { "Vlan100": { "unique_ip": "enable" } }, "MGMT_INTERFACE": { "eth0|192.168.3.237/24": { "gwaddr": "192.168.3.1" } }, : : }, "PORTCHANNEL": { "PortChannel10": { "admin_status": "up", "lacp_key": "auto", "min_links": "1", "mtu": "9100" }, "PortChannel101": { "admin_status": "up", "lacp_key": "auto", "min_links": "1", "mtu": "9100" } }, "PORTCHANNEL_MEMBER": { "PortChannel10|Ethernet0": {}, "PortChannel10|Ethernet4": {}, "PortChannel101|Ethernet8": {} }, : : }, "VLAN": { "Vlan100": { "vlanid": "100" }, "Vlan101": { "vlanid": "101" }, "Vlan102": { "vlanid": "102" } }, "VLAN_INTERFACE": { "Vlan100": {}, "Vlan100|192.168.100.1/24": {} }, "VLAN_MEMBER": { "Vlan100|PortChannel10": { "tagging_mode": "untagged" }, "Vlan101|PortChannel10": { "tagging_mode": "untagged" }, "Vlan101|PortChannel101": { "tagging_mode": "untagged" }, "Vlan102|PortChannel10": { "tagging_mode": "untagged" } } }
以下は、jpmtkvmsw99の設定内容。
admin@jpmtkvmsw99:~$ sudo cat /etc/sonic/config_db.json : : }, "INTERFACE": { "Ethernet12": {}, "Ethernet12|10.0.0.6/31": {}, "Ethernet16": {}, "Ethernet16|10.0.0.8/31": {}, "Ethernet20": {}, "Ethernet20|10.0.0.10/31": {}, : : }, "LOOPBACK_INTERFACE": { "Loopback0": {}, "Loopback0|10.1.1.99/32": {} }, "MCLAG_DOMAIN": { "1": { "peer_ip": "192.168.100.1", "peer_link": "PortChannel10", "source_ip": "192.168.100.2" } }, "MCLAG_INTERFACE": { "1|PortChannel101": { "if_type": "PortChannel" } }, "MCLAG_UNIQUE_IP": { "Vlan100": { "unique_ip": "enable" } }, "MGMT_INTERFACE": { "eth0|192.168.3.238/24": { "gwaddr": "192.168.3.1" } }, : : }, "PORTCHANNEL": { "PortChannel10": { "admin_status": "up", "lacp_key": "auto", "min_links": "1", "mtu": "9100" }, "PortChannel101": { "admin_status": "up", "lacp_key": "auto", "min_links": "1", "mtu": "9100" } }, "PORTCHANNEL_MEMBER": { "PortChannel10|Ethernet0": {}, "PortChannel10|Ethernet4": {}, "PortChannel101|Ethernet8": {} }, : : }, "VLAN": { "Vlan100": { "vlanid": "100" }, "Vlan101": { "vlanid": "101" }, "Vlan102": { "vlanid": "102" } }, "VLAN_INTERFACE": { "Vlan100": {}, "Vlan100|192.168.100.2/24": {} }, "VLAN_MEMBER": { "Vlan100|PortChannel10": { "tagging_mode": "untagged" }, "Vlan101|PortChannel10": { "tagging_mode": "untagged" }, "Vlan101|PortChannel101": { "tagging_mode": "untagged" }, "Vlan102|PortChannel10": { "tagging_mode": "untagged" } } }
以下は、jpmtkvmsw101の設定内容。
admin@jpmtkvmsw101:~$ sudo cat /etc/sonic/config_db.json : : }, "INTERFACE": { "Ethernet12": {}, "Ethernet12|10.0.0.6/31": {}, "Ethernet16": {}, "Ethernet16|10.0.0.8/31": {}, "Ethernet20": {}, "Ethernet20|10.0.0.10/31": {}, : : }, "PORTCHANNEL": { "PortChannel101": { "admin_status": "up", "lacp_key": "auto", "min_links": "1", "mtu": "9100" } }, "PORTCHANNEL_MEMBER": { "PortChannel101|Ethernet0": {}, "PortChannel101|Ethernet4": {} }, : }, "VLAN": { "Vlan101": { "vlanid": "101" } }, "VLAN_MEMBER": { "Vlan101|PortChannel101": { "tagging_mode": "untagged" } } }
設定後のステータス確認
設定および設定内容の保存が終わり次第、3台すべてsudo rebootコマンドで再起動させる。もしくはTermdコンテナを再起動させてもよいだろう。
再起動完了後、show interfaces statusコマンドを叩き、物理インタフェースとPortChannelインタフェースのステータスを確認する。
Operの列とAdminの列がupになっている事を確認する。
再起動完了後は即座にLAG構成が確立されず、自分の環境ではLAG構成が確立されるまで再起動後3~5分程待った。
admin@jpmtkvmsw98:~$ show interfaces status Interface Lanes Speed MTU FEC Alias Vlan Oper Admin Type Asym PFC -------------- --------------- ------- ----- ----- -------------- -------------- ------ ------- ------ ---------- Ethernet0 25,26,27,28 40G 9100 N/A fortyGigE0/0 PortChannel10 up up N/A N/A Ethernet4 29,30,31,32 40G 9100 N/A fortyGigE0/4 PortChannel10 up up N/A N/A Ethernet8 33,34,35,36 40G 9100 N/A fortyGigE0/8 PortChannel101 up up N/A N/A Ethernet12 37,38,39,40 40G 9100 N/A fortyGigE0/12 routed down up N/A N/A Ethernet16 45,46,47,48 40G 9100 N/A fortyGigE0/16 routed down up N/A N/A Ethernet20 41,42,43,44 40G 9100 N/A fortyGigE0/20 routed down up N/A N/A : : Ethernet116 89,90,91,92 40G 9100 N/A fortyGigE0/116 routed down up N/A N/A Ethernet120 101,102,103,104 40G 9100 N/A fortyGigE0/120 routed down up N/A N/A Ethernet124 97,98,99,100 40G 9100 N/A fortyGigE0/124 routed down up N/A N/A PortChannel10 N/A 80G 9100 N/A N/A trunk up up N/A N/A PortChannel101 N/A 40G 9100 N/A N/A trunk up up N/A N/A admin@jpmtkvmsw98:~$
ちなみに、Termdコンテナを再起動させる場合は、systemctl restartコマンドを使用する。
以下の例では、systemctl status termd.serviceコマンドでTermdコンテナの動作状況を確認した後、systemctl restart termd.serviceコマンドを打ちTermdコンテナを再起動させている。
admin@jpmtkvmsw98:~$ systemctl status teamd.service ? teamd.service - TEAMD container Loaded: loaded (/lib/systemd/system/teamd.service; enabled; vendor preset: enabled) Drop-In: /etc/systemd/system/teamd.service.d mqauto_restart.conf Active: active (running) since Sat 2022-01-22 9:29:00 UTC; 6min 58s ago Process: 5209 ExecStartPre=/usr/local/bin/teamd.sh start (code=exited, status=0/SUCCESS) Main PID: 5295 (teamd.sh) Tasks: 3 (limit: 2357) Memory: 17.1M CGroup: /system.slice/teamd.service tq5295 /bin/bash /usr/local/bin/teamd.sh wait tq5297 /bin/bash /usr/bin/teamd.sh wait mq5299 python3 /usr/local/bin/container wait teamd admin@jpmtkvmsw98:~$ admin@jpmtkvmsw98:~$ admin@jpmtkvmsw98:~$ sudo systemctl restart teamd.service admin@jpmtkvmsw98:~$
そしてshow interfaces portchannelコマンドを叩き、PortChannelのステータスを確認する。
今のところLACPしか対応していない為、明示的に設定しなくてもProtocolはLACPとなる。
設定内容が正しければ、ProtocolはA(Active)とUpのステータスになり、PortsはS(selected)のステータスになる。
admin@jpmtkvmsw98:~$ show interfaces portchannel Flags: A - active, I - inactive, Up - up, Dw - Down, N/A - not available, S - selected, D - deselected, * - not synced No. Team Dev Protocol Ports ----- -------------- ----------- ------------------------- 10 PortChannel10 LACP(A)(Up) Ethernet0(S) Ethernet4(S) 101 PortChannel101 LACP(A)(Up) Ethernet8(S) admin@jpmtkvmsw98:~$
同様に、MC-LAGを構成する他の機器でもshow interfaces statusコマンドとshow interfaces portchannelコマンドを叩き、正常にMC-LAGが組めているか確認する。
残念な事に、MC-LAGの確認コマンドshow mclag briefは今のところ商用版のみの対応となっているようで、自分の環境で実行するとそんなコマンド知らないよとエラーを吐いた。
admin@jpmtkvmsw98:~$ show mclag brief Usage: show [OPTIONS] COMMAND [ARGS]... Try "show -h" for help. Error: No such command "mclag". admin@jpmtkvmsw98:~$
今回はここまで。
3台のSONiC間でL2 MC-LAG構成を組む事が出来た。
以前よりはマシになってきたように思えるが、商用版ではないSONiCは動作がまだまだ不安定で、当記事の内容を何度か再現させても毎回L2 MC-LAG構成が正常に組めるというわけではなく、物理リンクはupしていてもLAGはdownしたまま...なんて事が有った。
その際はVirtualBoxのネットワークアダプタ設定を変更する事でLAGもupした。
参考になったサイト
開発者および先達の皆さまに感謝。
https://github.com/Azure/SONiC/wiki/Sonic-Roadmap-Planning Sonic Roadmap Planning
https://qiita.com/masru0714/items/344fa18c52ca9b7b7cca SONiCでVLANを使う
https://support.edge-core.com/hc/en-us/articles/900002380706--Edgecore-SONiC-MC-LAG [Edgecore SONiC] MC-LAG
https://support.edge-core.com/hc/en-us/articles/900000200683--Edgecore-SONiC-LAG-Link-Aggregation- [Edgecore SONiC] LAG (Link Aggregation)
SONiCに関する過去の記事
https://debslink.hatenadiary.jp/entry/20210131/1612091391 SONiCを少しかじってみた
https://debslink.hatenadiary.jp/entry/20210214/1613279732 SONiCのWarm Bootの動作確認
https://debslink.hatenadiary.jp/entry/20210320/1616230057 Cumulus LinuxとSONiCの設定ファイル
https://debslink.hatenadiary.jp/entry/20210627/1624789102 SONiCの解説動画
https://debslink.hatenadiary.jp/entry/20210822/1629600666 SONiCとCumulus LinuxでBGP unnumbered
https://debslink.hatenadiary.jp/entry/20210902/1630584311 SONiCとCumulus LinuxでBGP/EVPN/VXLAN
https://debslink.hatenadiary.jp/entry/20210912/1631418907 SONiCとCumulus Linuxで4byte ASなBGP + IP Clos構成
https://debslink.hatenadiary.jp/entry/20240421/1713678733 DELL版のSONiCをVMware Fusionで動かす - 導入編