Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
WhiteBoxSwitch NOSの変遷
Search
Mabuchin
November 20, 2019
Technology
5
2k
WhiteBoxSwitch NOSの変遷
in CNUGI#2
Mabuchin
November 20, 2019
Tweet
Share
More Decks by Mabuchin
See All by Mabuchin
TIPSTARのライブ・プロダクションシステムの裏側
mabuchin
1
1.3k
ホワイトボックス伝送の動向と商用利用について
mabuchin
3
740
Cassini + Goldstone DCI use case and challenges
mabuchin
1
230
転びながらもネットワーク処理をソフトウェアで自作していく話
mabuchin
8
4.5k
モダンなネットワーク構成管理DBを最小労力で開発する
mabuchin
3
840
Gitでネットワークオペレーションを進める話
mabuchin
0
120
TapAggregationを使ったデータプレーン性能測定
mabuchin
0
220
Github PullRequestで作業半自動化
mabuchin
0
85
お手軽! BGP RIBのリアルタイム経路解析+可視化
mabuchin
0
360
Other Decks in Technology
See All in Technology
Devin&Cursor、それぞれの「本質」から導く最適ユースケース戦略
empitsu
8
2.3k
Data Hubグループ 紹介資料
sansan33
PRO
0
1.7k
KMP導⼊において、マネジャーとして考えた事
sansantech
PRO
1
210
ゴリラ.vim #36 ~ Vim x SNS ~ スポンサーセッション
yasunori0418
1
340
AIとSREの未来 / AI and SRE
ymotongpoo
0
260
Slackひと声でブログ校正!Claudeレビュー自動化編
yusukeshimizu
3
160
Streamline Cloud-Native App Development Using CDEs
saeedzf
0
780
金融システムをモダナイズするためのAmazon Elastic Kubernetes Service(EKS)ノウハウ大全
daitak
0
120
やさしいClaude Code入門
minorun365
PRO
28
22k
S3 Tables を図解でやさしくおさらい~基本から QuickSight 連携まで/s3-tables-illustrated-basics-quicksight
emiki
1
330
AIのための オンボーディングドキュメントを整備する - hirotea
hirotea
9
2.3k
人とAIとの共創を夢見た2か月 #共創AIミートアップ / Co-Creation with Keito-chan
kondoyuko
1
690
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
750
RailsConf 2023
tenderlove
30
1.1k
GraphQLとの向き合い方2022年版
quramy
46
14k
Making Projects Easy
brettharned
116
6.2k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
228
22k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
47
2.8k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Reflections from 52 weeks, 52 projects
jeffersonlam
349
20k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
How to Think Like a Performance Engineer
csswizardry
23
1.6k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
137
34k
Facilitating Awesome Meetings
lara
54
6.4k
Transcript
mixi, Inc. WhiteBoxなNOSの変遷 Cumulus Linux + SONiC Toshiya Mabuchi 2019/11/19
2 おことわり
5年前…
昔Whitebox NOSを検証したことがありました 4 JANOG35.5 パネルセッション:検証してみて感じたホワイトボックススイッチの未来 https://www.janog.gr.jp/meeting/janog35.5/download_file/33/180
5年前のCumulus Linux • Version 2.2.2 • VXLAN/BGP/ISIS/OSPF/VRRP等の基本的なL2/L3サポート • VXLANはfdbの学習未サポート(staticのみ) •
各種ネットワークの設定はFile書き換え • Ansibleのroleは当時からあった • ファイルの置き換え/追記等 • 監視はlinuxと同等 • Zabbix agentやIF-MIB等で情報取得 5 基本的な機能を備えつつ安価なモジュールが使えるL2/L3スイッチ
そのときの課題 •ドキュメント情報がまだ充⾜していなかった • Quick Start Guide + αくらいの情報量 • 出たばかりでフォーラムの蓄積も無し
• 外部API Interfaceがまだなかった
今のCumulus Linux • Version 3.7 • NLCU • Quagga ->
FRR • BGP unnumbered • HTTP API • Netconf / OpenConfigはまだサポート無し • PTP Boundary Clock * • ASIC Monitoring * • Knowledge base docs 7 * Spectrum限定
相当に状況が変化
ちょっと触ってみました
GoodPoint: NLCU • コンフィグ変更CLIの登場 • Commitで反映する⽅式 • Day2 configを持つアーキテクチャの場合は効果⼤ •
Config validation / rollback • ⼿動時には特に効果絶⼤ #vim /etc/network/interfaces auto swp1 iface swp1 address 192.0.2.1/30 address 2001:DB8::1/126 $net add interface swp1 ip address 192.0.2.1/30 $net add interface swp1 ipv6 address 2001:db8:123::1/126 $net pending $net commit
GoodPoint: FRR • BGP unnumbered • プロトコル⾃体で運⽤の負荷軽減を図ることが可能 • Ansibleで設定変更! すらも無くせるメリット
• FRRでServerと共通化 • Spine + Leaf + ToR + Serverが全てFRR config管理 Leaf ToR Server leaf.j2 Tor.j2 Server.j2 DB
GoodPoint: ASIC Monitoring • ASIC Monitoringが可能 • 定期的にASICのパケットキューの状態をSnapShot • パケット⻑をヒストグラムとしてデータ採取可能
• Bufferの滞留具合やロスの原因をを程度深堀り可能に • WhiteBoxだけどSwitchdがBlackboxだから分からない︕が無くなる(?) • 実際運⽤してる⼈で使ってる⼈いますか︖ • Mellanox WJH(What just happened) (Spectrum2) • Cumulus4.x~ • Drop reasonをメタデータとして組み込んでCPUに上げる • 期待!!!
GoodPoint: HTTP API • HTTP API≠REST CONF • 構造化されたAPIではない •
NLCUをHTTP Protocol越し実行 • 動作させることは簡単 • Docsが少なめ • netconf/openconfigはまだ • Automation • HTTP API • 設定ファイルをAnsibleで置換/追記 • 自作API serverを建てる Curl例
⽐較まとめ Cumulus2.2 Cumulus3.7 Config File edit NLCU + File API
なし HTTP API & ⼀部grpc Routing Quaaga FRR Monitoring Snmpd, server agent系 Snmpd, agent, ASIC monitor,
段違いに使いやすくなってた
ホワイトボックススイッチのよくある図 Hardware Network OS Monitoring API Routing CLI • )BSEXBSFґଘແ͠
• ίϯϙʔωϯτຖʹબՄೳ • ಠࣗπʔϧαʔόʔϛυϧΣΞ ؆୯ʹಋೖՄೳ
OSSなNOS SONiCとの使⽤感⽐較
Cumulusアーキテクチャ • NCLU • 統合コマンドライン • Switchdev • Linuxの基本構造に 則った⽅式
• Switchdがnetlinkを 拾ってASICにも伝搬 https://cumulusnetworks.com/blog/cumulus-linux-network-command-line-utlility/linux-nclu-architecture/ Linux-NCLU-Architecture
SONiCアーキテクチャ • Config command • 統合コマンドライン • Json fileをもとにDBに 書き込み
• SAI Interface • DBの変更通知を • 受け取ってsyncdが SAI準拠でASICを叩く https://github.com/Azure/SONiC/wiki/Architecture Azure/SONiC Architecture
SONiCとCumulusのルート挿⼊時の違い Cumulus SONiC FRR BGPd zebra fpmsyncd APPL_DB ASIC_DB swss
zapi syncd ASIC FRR BGPd zebra kernel zapi switchd netlink ASIC ASIC Driver
コンポーネントを換装する試験 Cumulus SONiC GoBGP zebra fpmsyncd APPL_DB ASIC_DB swss zapi
syncd ASIC GoBGP zebra kernel zapi switchd netlink ASIC ASIC Driver ここ変えるだけでOK ※SONiCはzapiの対応バージョンを 有識者に確認しなかったら少しハマってたかも
ハマったことを共有しようと思ったけど ハマらなかった
SONiC / Cumulus Linux • Switchdev(Cumulus Linux) • Kernel is
• アーキテクチャとしてシンプル • 何も気にせず経路をkernelに⼊れればOK • SAI(SONiC) • Redis is • 基本的にRedisの中央DB経由で情報をやり取り • DB情報からsyncdがSAI Interfaceを使いASIC SDKを叩く
SONiCの良いところ • OSのライセンス費⽤がかからない • ⼤量投⼊時のコストメリット • OSSなので拡張が可能 • TAIの導⼊ •
GoldStone • gNMI等はSONiCのほうが 実装が進⾏している https://telecominfraproject.com/oopt/
SONiCのつらい点 • ビルドが超⻑い • ⼿元のビルド⽤マシンで⼤体 8h • 基本はビルド済みイメージで良い • が…SONiCを使うケースは多少のカスタムしたいケースが多い
• トライエラーが結構なコスト • 普通に動かない • Release版のONIE imageを使っても動作しないのは⽇常茶飯事 • ⾃社で検証したStable Versionを1つ上げるだけでも結構きつい
実際のところSONiCはそこそこ⾟い • Syncdは簡単に落ちる • 商用ユーザの大半はDay1 configurationのみの運用 • Day2を想定する作りにはなってない • config
commandのvalidationほぼ無し 2019-09-12.06:37:27.491030|s|SAI_OBJECT_TYPE_PORT:oid:0x1000000000013|SAI_PORT_ATTR_ADMIN_STATE=false 2019-09-12.06:37:27.491149|s|SAI_OBJECT_TYPE_PORT:oid:0x1000000000013|SAI_PORT_ATTR_SPEED=400000 2019-09-12.06:37:27.491252|s|SAI_OBJECT_TYPE_PORT:oid:0x1000000000013|SAI_PORT_ATTR_ADMIN_STATE=true 2019-09-12.06:37:27.493167|n|switch_shutdown_request|| Typo Syncd is down….
Cumulus / SONiCのオペレーションカバー範囲 Defining Day-2 Operations https://dzone.com/articles/defining-day-2-operations SONiC / Cumulus
ver2.2 Cumulus ver3.7
参考: Config Validation
⽐較まとめ Cumulus2.2 Cumulus3.7 SONiC (201904 build) Stably ◦ ◦ △
Cost 要ライセンス 要ライセンス 無し Customize △ △ ◦ Config File + vtysh NLCU + File + vtysh configCLI + file + vtysh API なし HTTP API gNMI Routing Quaaga FRR FRR Monitoring Snmpd, agent系 Snmpd, agent系, ASIC monitor SNMP,gNMI
• CumulusはDay2 Configが運⽤可能になった • NLCUは多くのネットワークエンジニアにとって嬉しい • 設定で詰まることはほぼ無い • Cumulus /
SONiC(OSS NOS)の⽐較 • OSS NOSも徐々に⼒はつけてきている • 安定稼働させるためにCumulusのN倍の労⼒が必要 • そこにリソースを投⼊できるか? 既存運⽤に適⽤させつつ、マイグレーションするプランも可能 Summary 安定性/コスト/カスタマイズの観点から適切な選択を︕
これが欲しいな… •FRR部分以外のgNMIのフルサポート • Interfaceを(可能な限り)統⼀したい • HTTP APIより可⽤性⾼いgNMI等があると嬉しい •MPLSラベルルーティングのサポート • 既存網のマイグレーション選択肢に⼊ると嬉しい
• ASIC冗⻑的な観点からもコアにも⼊れれると良い
32