注意事項
本記事は、個人の見解であり、所属組織や団体を代表するものではありません。
また、本記事の情報の内容について、一切の責任を負いません。ご利用は、自己責任でお願いします。
Introduction
今回は、SONiC Advent Calendar 2022の最終日の記事です。12月25日で、世間はクリスマスであるのにも関わらず、一人で家に籠って、Nintendo Switchでもなく、White Box Switchを触っています。(クリスマスに、クルシミマスというギャグです。
About Software for Open Networking in the Cloud(SONiC)
Software for Open Networking in the Cloud (SONiC)は、2016年に、Microsoftがネットワークベンダーたちと共同してOpen Compute Project (OCP) Summitで発表した、完全なOpen Source Softwareです[1]。そして、SONiCは、データセンタのネットワーキングの必要とする機能を基にしたModular Architectureであり、Frameworkを提供します。また、Switch Abstraction Interface (SAI)は、2015年に、OCP Summitで発表しており、SAIによりSONiCは、様々なSwitching Platformで動作できるようなっています。現在では、Linux Foundationに移動して開発を続けています[2]。主な機能は、BGPやRDMAがあり、Full-suiteで提供します。
Architecture, Configuration, and Command Line in SONiC
SONiCは、集中管理でスケーラブルなアーキテクチャで構成しています。また、各モジュールは、コンテナでデプロイしています[2]。ConfigurationはこちらとCommand Lineはこちらにあります。
White Box Switch
ここからは、実際にHardwareについて述べます。
なぜ、入手できたのか
2021年頃に、32x100GbEのWhite Box Switchが、海外の中古市場では$1500程度で取引されるようになっていました。理由は、Switchに搭載されるIntel Atom C2000というCPUが'AVR54 bug'というブートしなくなるバグ[3]があり、中古市場に多く出品されたからです。この中で、注目されていたのが'Celestica Seastone DX010'というWhite Box Switchです。実際のバグの発生確率は10%以下であるという報告[4]があります。また、このバグは、新しいAtom C2000シリーズでは、修正されています。今回は、Celestica Seastone DX010(DX010)を使います。
Celestica Seastone DX010(DX010)
SONiCがサポートしているプラットフォームはこちらにあります。こちらの中に、DX010があり、Switch ASICは、Tomahawkになります。
S.No | Vendor | Platform | ASIC Vendor | Switch ASIC | Port Configuration | Image |
---|---|---|---|---|---|---|
36 | Celestica | DX010 | Broadcom | Tomahawk | 32x100G | SONiC-ONIE-Broadcom |
DX010の大きさ
DX010の物理サイズは、
- Height: 43.8 mm (1.73”)
- Width: 442 mm (17.3”)
- Depth: 521 mm (20.5”)
ですので、クリスマスプレゼントで欲しい人は、高さが5cmかつ幅が45cmかつ奥行きが55cmの靴下が必要です。
家庭によく置いていあるSwitchやStarlinkのアンテナとの比較画像は以下です。Starlinkのアンテナ大きいです...
また、ピッツァボックスとの比較画像は以下です。大きさも重さも缶ビール箱級です...
(ピッツァはスタッフが美味しく頂きました。クリスマスで一人で寂しくLサイズのピッツァを食べるとは思わなかったです
また、内部は以下です。詳細はこちらを見るとわかりやすいです。
-
CPU、Memory、mSATA部分
Installing SONiC
ここからは、DX010にSONiCをインストールするための内容です。SONiCのユーザマニュアルは、こちらです。
SONiC Image
基本的には、こちらのSupported Devices and Platformsから、プラットフォームにあったLatest master imageを探してダウンロードして用意します。
また、SONiCは、Azureが毎日イメージを作成するPipelinesを提供しており、プラットフォームとブランチを選択すると、ビルドが成功したのか失敗したのか、出力ログがどうなっているのかわかります。
今回は、DX010なので、プラットフォームはBroadcomでmasterを選択します。
Artifactsでは、Nameは'sonic-buildimage.broadcom'を選択します。
Install SONiC ONIE Image
Open Network Install Environment (ONIE)は、White Box Switchに、Network Operating Systemsをインストールするための、Open Source Softwareです。ONIEについてこちらにUser Guideがあります。
今回は、ONIEにより、USBでSONiCをインストールします。ダウンロードした'sonic-broadcom.bin'を'onie-installer'に名前を変更してUSBに保存します。保存が終わりましたら、USBをDX010に繋げます。また、DX010にConsole-USBケーブルを繋げます。Screenコマンドで、ボーレートを115200に設定します。他のWhite Box Switchは、ボーレートが9600もあります。手順は、Quick-Startを参照してください。
初めに、'ONIE'を選択し'ONIE: Uninstall OS'を選択して、古いNOS(SONiC)を削除します。
このような感じで削除が進みます。
リブートします。
'ONIE: Install OS'を選択すると、SONiCのインストールが開始します。
checksumとArchiveがOKになり、インストーラーが進みます。
そして、無事インストールが完了すると、こちらの画面になります。
次に、sonic loginに進みます。
UserとPasswordはこちらを確認してください。
Show version
これで、最新のSONiCが動作しました。
また、セキュリティのためパスワードを変更してください。
気になる消費電力
電力計測計だと、ブートとアイドル状態では200W以下でした。
最後に
今回は、White Box Switchを使ってSONiCを動作するところまで行いました。SONiCの機能がどこまで実装されているのかは、Sonic Roadmap Planningを確認する必要があります。自分で機能を追加して、イメージをビルドをすることもできますが、コンパイルとデバックに時間がかかります。また、SAIがどこまで機能追加しているのかも確認する必要があります。個人で機能を追加しないならPipelinesから、イメージをダウンロードすることをおすすめします。SONiCはvs版(VMで動作するイメージです)もありますので、簡単に試すことができます。私は、2xDX010を$1000で輸入費込みで購入していました。現在は、円安の影響や在庫などの影響でもっと高騰していると思いますが、中古サーバくらいの金額で、SONiCが遊べます。皆さんも、ぜひとお試しくださいと言おうとしましたが、隣人などと騒音問題になる可能性があるので、オススメはしません(笑