メモのページ - チラシの裏メモ 3枚目

通信技術や気になった事を黙々とメモし続ける

SONiC Workshop Japan 2024に参加した

SONiC Workshop Japan 2024とは
2024年5月24日(金)、お台場にあるdocomo R&D OPENLAB ODAIBA(台場フロンティアビル)にて開催された。
オープンソースのNOS(Network Operating System)であるSONiCに関する日本語での交流を目的としたイベントで、SONiCを管理しているLinux Foundationではなく国内コミュニティの主催となる。会場はほぼ満席の100名近く(オンライン参加の約70人前後を除く)が参加した。
 
sonic.connpass.com
 

参加した理由
SONiCをはじめホワイトボックススイッチやオープンソースのNOSに触れる業務に携わった事は無いが、今後それらを扱う案件に携わる可能性を考慮しSONiCの現状のキャッチアップと、2年ほど触れていなかった事に対する復習および振り返りのため。
 

当イベントのターゲット
SONiCを利用するITエンジニアやプログラマーや研究者、学習目的や趣味でSONiCに触れている者など、広義のSONiCのユーザを対象としている。
毎年6月に開催されるINTEROPのようなビジネス色は無く、JANOGやMPLS Japanの雰囲気に近かった。
 

会場について
台場フロンティアビル(東京都港区台場2-3-2)の12階に有る、docomo R&D OPENLAB ODAIBAのBRIDGEエリアで開催された。窓から都心のビルやレインボーブリッジを眺める事が出来る、開放的な場所だった。
来場者用の無線LANと電源が有り、ノートPCを持参する参加者は多かった。
2階に飲食店が数店とコンビニ(ファミマ)が有る為、飲食物はビル内で調達する事が可能である。


プログラム
SONiCの導入、研究、開発等の事例やSONiCの技術解説などが紹介された。
第二部として18:00から懇親会が有ったが自分は参加しなかった。
・オープニング
・SONiCイントロ(歴史と概要、海外事例、商用版、コミュニティ、これから)
・監視網ルータにSONiCを採用して機器更改してみた
・SONiCコミュニティにアップストリームしてみた
・SONiCスイッチを商用サービスに入れてみた
・KDDIにおけるSONiC活用事例
・GNS3上でコミュニティSONiCの仮想マシンを動かす小ネタ集
・SONiCを自前ビルドする話
・ロスレスイーサネットの要素技術の紹介とSONiCの設定方法
・Aviz ONESによるRoCEトラフィックの可視化検証
・SONiCコミュニティ テスト手法あれこれ


1. オープニング
Linux FoundationからGeneral Manager at Networking and Orchestration(ネットワーク部門の統括者)のArpit Joshipuraさんによるビデオレター。
当イベントの開催に対する歓迎のお言葉と、SONiCプロジェクトおよびSONiCの概要に関するお話。


2. SONiCイントロ(歴史と概要、海外事例、商用版、コミュニティ、これから)
登壇者:ebikenさん(進行役)
SONiCを含めホワイトボックスNOSやホワイトボックススイッチの歴史、SONiCのアーキテクチャの概要、SONiCの海外における導入事例や導入による利点の説明。
SONiCとは何か、SONiCはどのような所で利用されているか等、これからSONiCに触れる方々を対象とした内容。

SONiCのサイトやホワイトボックススイッチを扱ったイベント等で言及されている内容のまとめだったが、過去2年ほどSONiCに触れていなかった自分にとって復習やアップデートの為の良い機会となった。


3. 監視網ルータにSONiCを採用して機器更改してみた
登壇者:浅田さん、矢葺さん(NTTPCコミュニケーションズ)
SONiCの導入の経緯と、導入検証の際の困った点に関する説明。
管理用NWの構築の際の機器の選定にてホワイトボックススイッチの導入が検討され、結果として商用版のSONiCが導入された。
SONiCの検証の際に発生した困った点と対処内容は、以下のとおりだった。
・導入したSONiCの物理ポートと論理ポートのポート番号がずれている点。改修パッチ作成し当てる事で対処。
・ポートを閉塞しても光信号出っぱなしな点。光信号を遮断するコマンドを作成し対処。
・Configが複数存在する為に予備機用のConfigの作成が面倒だった点。AnsibleでConfigの作成からConfigを反映させるところまでのテンプレを作成し対処。

スクリプトやコマンドの自作が可能という利点を利用し対処されていたという内容だった。自分の環境ではBGPネイバのステータスがActiveになのにUp時間がカウントし続けるという事象に出くわした事が有った。その当時はSONiCを再起動させる事で事象を解消させたが、今後同じような事象に出くわしたら、コマンドやパッチを作成し対処してみようと思う。


4. SONiCコミュニティにアップストリームしてみた
登壇者:中野さん(NTTネットワークイノベーションセンタ)
OSS版SONiCの定期リリースに向けて実装したい機能を提案し、アップストリームを行う方法およびアップストリーム作業を通して得る事が出来た事の説明。
2022年からOSS版SONiCを扱ってきた中で検討してきた課題として、NETCONFとfpmsyncd拡張の実装を提案。NETCONFはOrange(仏)社の実装が採用され、fpmsyncd拡張は開発者コミュニティから賛同が得られ、現在はコードの修正中。
実装前のデザインの段階から開発者コミュニティと議論を行なっていく事と、仲間作りやコミュニケーションが重要である事を、当件の一連の流れで得る事が出来たという内容。

自分はSONiCを始めOSSのプロジェクトにて機能の実装の提案は行った事は無い。開発寄りの人間ではない為にSONiCコミュニティに対し自らアップストリームを行う機会はゼロに近いと思われるが、そのような機会が発生した際の良い事例となった。


5. SONiCスイッチを商用サービスに入れてみた
登壇者;松本さん、芹田さん(三井情報)
顧客のインフラにSONiCを導入した際に出て来た課題として、設定保存時にfrr.confに設定内容が保存されない、コマンドを打った際にプロンプトが返ってこない等の問題が発生。これまでに触れてきたCisco社や他社のスイッチの扱いに慣れると、SONiCもCisco等と同じような挙動をするという前提で扱ってしまうが、SONiCのアーキテクチャや挙動を理解する事でこれらの事象に対処する事が出来た。
例えば、frr.confに設定内容が反映されない点に関しては別ファイルに設定内容が反映される事や、コマンド実行時にプロンプトが返ってこない点に関してはSONiCの内部で動作している各コンテナが起動完了した後にコマンドを打つといった感じで、SONiCの動作を知る事でこれらの挙動は正常である事がわかる。

ほぼ同じ内容の事象を自分の環境のSONiCで経験済みだった。数週間前に久々にSONiCを立ち上げてコマンドを打ち始めた際、設定内容がconfig_db.jsonに保存される事に気がつかなかったり、sonic-cliコマンドを打ったらコンテナ起動中のようなログが出力されsonic-cliモードに移行出来ないなんて事が有った。今後、SONiCを扱う案件に携わる事が有るか分からないが、もしその機会が有ったら他のメンバに情報共有し、ベンダへのエスカレや実証などの時間を減らす事が出来るだろう。


6. KDDIにおけるSONiC活用事例
登壇者:竹内さん(KDDI)、畔柳さん(KDDI xG Networks)
仮想化基盤に対し全国でPrivate HaaS(Hardware as a Service)を展開する中でSONiC(Edgecore版SONiC)を導入。
初期構築の際に浮かび上がってきた課題は複数有り、特にIPv6、DHCP、EVPN-VxLAN、Anycast Gateway等を組み合わせた際に課題が発生する事が多かったが、機器ベンダやSIer等と一緒に品質向上の取り組みを実施中。
また、SONiCの品質の向上の為のアップストリームへの貢献は課題となっている。

昨年開催されたJANOG52で紹介された内容の共有が多かった印象。
SONiCの起動まではONIE ZTPを使用し、SONiCの起動後はZTPスクリプトで自動で構築という流れで数百台ものスイッチを導入したという。ZTPサーバを立てたりプロビジョニング用のスクリプト等を用意すれば、自宅の環境でもSONiCの自動設定くらいは出来そうな気がするので、SONiCのZTPをいつかは試してみたい。


7. GNS3上でコミュニティSONiCの仮想マシンを動かす小ネタ集
登壇者:桑田さん(APRESIA SYSTEMS)
仮想環境でSONiCをテストする方法を共有する事で、実機が無くてもSONiCのオペレーションの把握が可能な事と、仮想アプライアンス版のSONiCと実機版のSONiCとの違いや、GNS3環境にてSONiCを動かす際のTipsの説明。

仮想版SONiCと実機版SONiCとの大きな違いの一つとして挙げられる点。仮想版SONiCではSAIの配下に隠れているデバイスドライバが丸々無い状態である為、デバイスに強く依存している機能をテストする事が出来ないという。他に仮想版SONiCで動作確認が出来ない事の一例が紹介され、物理ポートの動作帯域やデータプレーン周りの動作確認が出来ない事が紹介された。GNS3環境をはじめVirtualBoxやVMware環境で動作確認する際のTipsとして良い情報が得られた。
また、プレゼンされているSONiCバージョン202311にて初期状態でハードウェアはForce10-S6000で認識され、初期ConfigもForce10-S6000用のものが適用されている内容になっているが、これをAccton AS7726-32X等他のハードウェアに設定変更し再起動させると、初期ConfigはAccton AS7726-32X用のものが適用されるという。この点は全く意識していなかった為、今後は強く意識して仮想版SONiCに触れたい。


8. SONiCを自前ビルドする話
登壇者:沖さん(IIJ)
GNS3やVMwareやVirtualBox環境で動かす仮想版SONiCは仮想マシン版(vs版)をそのまま利用する事が出来るが、ソースからビルドして利用する事も出来る。
当プレゼンではSONiCをソースからビルドする際の様々なTipsが紹介。

当イベントに参加した最大の目的と言っても過言ではない。SONiCのビルドの方法や事例を学ぶ事と、自分がSONiCに興味を持つきっかけとなったQiitaの記事の著者である沖さんを拝見する事。VyOSをソースからビルドしVirtualBox環境で使用しており、SONiCもソースからビルド出来るはずだと思い、情報を収集し始めたタイミングで沖さんが当イベントで登壇する事を知りConnpassで参加登録した。
近日中に、不要な機能を削ぎ落とした軽量なSONiCをソースからビルドしてみたい。


9. ロスレスイーサネットの要素技術の紹介とSONiCの設定方法
登壇者:大渕さん(APRESIA SYSTEMS)
AI/ML基盤のロスレスイーサネットに必要な技術と、SONiCでのロスレスイーサネットの設定方法の紹介。
ロスレスイーサネットを実現する為に、PFC(Pauseフレームを使用しリンクレベルでのQueue単位の輻輳を制御)、ECN(送信側に輻輳を通知し送信レートを抑制)、ETS(優先度のグループ毎にQueueの優先順位を定義)等の機能を活用するという。
他に、マルチテナントが可能なファブリックネットワークを構築する為にIP Clos fabricとEVPN/VxLANを併用する際のTipsと、これらを実現する為のSONiCの設定例の紹介。


10. Aviz ONESによるRoCEトラフィックの可視化検証
登壇者:高山さん(マクニカ)
2022年のOCPにてメタ社は、AI/ML実行時間の約30%がネットワークの待ち時間となっている事を発表。高性能なGPUを多く導入してもネットワークがボトルネックとなっていればGPUが高スペックであっても性能は発揮しきれない。この問題を解決する為のツールとして、データセンタのネットワーク向けのプロトコルRoCEのトラヒックを可視化し、ネットワークの輻輳ポイントやボトルネックを特定しデータセンタのネットワークの問題点の解決に繋げる為のツール Aviz ONESの紹介。

RoCEはパケットの送受信タスクをネットワークカードに転送するためTCP/IPプロトコルとは異なりCPUを介しない。その結果、コピーやカプセル化やデカプセル化等に関連するオーバーヘッドが削減され、イーサネット通信の遅延が大幅に低減される。さらに、通信中のCPUリソースの利用を最小限に抑え、ネットワークの混雑を緩和し、帯域幅の効率的な利用が期待される。


11. SONiCコミュニティ テスト手法あれこれ
登壇者:野田さん(キーサイト)
キーサイト社はSONiCコミュニティに対し、テストツールやテストケースやテストプラン等を提案しアップストリームする活動を行なっている。
具体的なテスト手法としてRDMAテスト手法および実際のテストケースを紹介。また、テストプランやテストケースがsonic-mgmtコミュニティ内で公開され、誰でも利用する事が可能な状態となっている。

上記の「ロスレスイーサネットの要素技術の紹介とSONiCの設定方法(アプレシア大渕さん発表)」と同様に実践的な内容。今までは業務・個人環境共にRDMAに触れた事が無かった為、まずはそこから勉強といった感じか。
 

その他
17〜18年ぶりにIT分野のユーザ会に出席。最後まで集中力が続くか心配だったが、紹介された全てのプログラムは興味が有る内容。集中力は途切れずあっという間の4時間だった。
プログラム中では紹介されていないが、今年中に(?)日本語で書かれたSONiCに関する本が出版されるようである。夏頃からSNSやAmazonをチェックしよう。


帰りのお台場海浜公園駅から撮影。
 

リンク集
https://sonicfoundation.dev/ SONiC
https://docomo-openlab.jp/ docomo R&D OPENLAB ODAIBA
https://www.apresia.jp/products/whitebox/nos-ecsonic.html 【Network OS】SONiC (Software for Open Networking in the Cloud)のご紹介
https://www.nttpc.co.jp/technology/network_construction.html OSSで実現するデータセンターネットワーク
https://mpls.jp/2023/presentations/mpls2023-nakano.pdf オープンNOS SONiCのコミュニティ動向
https://www.janog.gr.jp/meeting/janog52/wp-content/uploads/2023/06/janog52-sonicztp_pre.pdf SONiC ZTPでデータセンターネットワークを作った話
https://www.macnica.co.jp/business/network/manufacturers/aviz_networks/ Aviz Networks
https://www.keysight.com/jp/ja/solutions/cloud/test-solutions-for-open-networking.html SONiCとDENT実装のためのテストソリューション


SONiC関連の記事
https://debslink.hatenadiary.jp/entry/20210131/1612091391 SONiCを少しかじってみた
https://debslink.hatenadiary.jp/entry/20210214/1613279732 SONiCのWarm Bootの動作確認
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/20220122/1642852049 SONiCでL2 MC-LAGを組んでみた
https://debslink.hatenadiary.jp/entry/20210627/1624789102 SONiCの解説動画
https://debslink.hatenadiary.jp/entry/20240421/1713678733 DELL版のSONiCをVMware Fusionで動かす - 導入編