はじめに
「SONiC VS 仮想スイッチを使ってみよう」という記事に、Broadcom SONiC の VS の導入方法を紹介しました。
いろんな SONiC がありますが、以下のように分類できると考えられます。
SONiC name | type | license | note | VS download link |
---|---|---|---|---|
Community SONiC | OSS | - | - | https://sonic.software/ |
Broadcom SONiC | Enterprise SONiC Distribution | 必須 | - | https://github.com/Broadcom/sonic-VirtualSwitch/releases/tag/3.1.2 |
Edgecore SONiC | Enterprise SONiC Distribution | - | To download the SONiC image, sign up for an account on the Edgecore support portal | 要相談 - 代理店経由 - Edgecore経由 |
Dell SONiC | Enterprise SONiC Distribution | 必須 | re-branded from Broadcom SONiC | ? |
Nvidia SONiC | proprietary | 必須 | only compatible with Nvidia HW | ? |
Microsoft, Alibaba SONiC ... |
proprietary | N/A | only deployed in their own Datacenter, no plans to sell SONiC to customers | N/A |
日本では、すでに Edgecore SONiC VS 環境で ZTP などの機能を検証したりする事例もありました。(参考: SONiC ZTPでデータセンターネットワークを作った話 )
しかしながら、Edgecore SONiCの正式リリース版はまだなく、Edgecore SONiCの VS 環境を活用したい場合は、Edgecoreの代理店にご連絡いただくことで入手可能です。
さて、Edgecore SONiC と Community SONiC の Virtual Switch を試してみましょう。
今回の目標
- GNS3 に EC SONiC VS をインポート
- GNS3 に Community SONiC VS をインポート
- Version 確認
- EC/Brcm/Community の を相互接続し、ping 疎通を検証
Community SONiC VS と EC SONiC VS をインポート
Community と EC について、両方とも以下の手順でインポートできます。
-
イメージファイルを事前に入手・ダウンロード
- Target
- Community 202311
- EC SONiC 202111.3
- Target
-
Community とEC 両方とも、
1 * mgmt_port
+32 * 100G/40G port
の仮想スイッチのため、adapters
を 33 に設定しておく。また、一個目のポートは mgmt port なので、first port name
を eth0 に設定する
ただし、GNS3 との interface 名称不一致の現象がありますが、実は対策があります
template -> configuration -> configure customer adapters に SONiC の naming に合わせて修正すれば、名称不一致の現象を解消できます。一個ずつ入力して面倒ですが、一度設定すれば、作図する際に間違って違うポートに接続するのを避けますね。
Version 確認
show version
コマンドを叩いてみると、以下の情報を確認できましたね。(立ち上がった docker のバージョンは省略します。)
Vendor | SONiC Version | Platform | Distribution | Kernel | Build Commit | Build Date |
---|---|---|---|---|---|---|
Broadcom | SONiC-OS-3.1.2-Enterprise_Base | x86_64-kvm_x86_64-r0 | Debian 9.13 | 4.9.0-11-2-amd64 | 1759d99d0 | Thu Jul 8 18:48:40 UTC 2021 |
Edgecore | SONiC.Edgecore-SONiC_20221124_131355_ec202111_vs_48 | x86_64-kvm_x86_64-r0 | Debian 11.5 | 5.10.0-8-2-amd64 | ca3fda267 | Thu Nov 24 09:27:45 UTC 2022 |
Community | SONiC.202311.525638-e0f87535b | x86_64-kvm_x86_64-r0 | Debian 11.9 | 5.10.0-23-2-amd64 | e0f87535b | Thu Apr 18 11:44:09 UTC 2024 |
それぞれのビルド情報が見られて、面白いですね。
EC/Brcm/Community SONiCを相互接続しよう!
Community SONiC VSの場合、以下の testbed 環境に合わせる BGP の config はそのままに残っています
本記事は、以下の手順で、初期のコンフィグを削除します。
admin@sonic:~$ sudo jq 'del(.DEVICE_METADATA.localhost.bgp_asn ,.BGP_NEIGHBOR, .INTERFACE, .LOOPBACK_INTERFACE)' \
/etc/sonic/config_db.json > \
/tmp/temp_config_db.json && \
sudo mv /tmp/temp_config_db.json \
/etc/sonic/config_db.json
admin@sonic:~$ sudo config reload -y
Topology
sudo config interface startup ${interface_name}
で link up させて、接続中のポートは up になっているか確認します
Result
お互いに ping させて、show arp
確認してみると、お互いに arp 学習済で、成功しましたね!
最後に
この記事は、これまでに経験した GNS3 の罠にハマらないように考えてメモしました。SONiC VSの環境構築の記事はここまでとなります。
ネット上に、Community SONiCとEC SONiC の仮想スイッチの情報がまだ少なく、より多くの方にSONiC を体験してもらいたいですね。本記事が皆様の参考になれば幸いです。
次回は、どのようにVS 環境で ZTPによる自動デプロイ機能を紹介いたします。GNS3上で、DHCP/TFTP サーバの事前作業はやや面倒で、その情報も共有したいと思います。
参考
Broadcom SONiC VS 仮想スイッチを使ってみよう
SONiC からみる MAC Table と Routing Table
[Enterprise SONiC] FRRouting and config initialization
SONiC Testbed Topology
Edgecore SONiC distributors