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
1.9k
WhiteBoxSwitch NOSの変遷
in CNUGI#2
Mabuchin
November 20, 2019
Tweet
Share
More Decks by Mabuchin
See All by Mabuchin
TIPSTARのライブ・プロダクションシステムの裏側
mabuchin
1
1.2k
ホワイトボックス伝送の動向と商用利用について
mabuchin
3
710
Cassini + Goldstone DCI use case and challenges
mabuchin
1
210
転びながらもネットワーク処理をソフトウェアで自作していく話
mabuchin
8
4.4k
モダンなネットワーク構成管理DBを最小労力で開発する
mabuchin
3
810
Gitでネットワークオペレーションを進める話
mabuchin
0
110
TapAggregationを使ったデータプレーン性能測定
mabuchin
0
220
Github PullRequestで作業半自動化
mabuchin
0
80
お手軽! BGP RIBのリアルタイム経路解析+可視化
mabuchin
0
340
Other Decks in Technology
See All in Technology
OCI Oracle Database Services新機能アップデート(2024/12-2025/02)
oracle4engineer
PRO
2
180
バクラクでのSystem Risk Records導入による変化と改善の取り組み/Changes and Improvement Initiatives Resulting from the Implementation of System Risk Records
taddy_919
0
130
BCMathを高速化した一部始終をC言語でガチ目に解説する / BCMath performance improvement explanation
sakitakamachi
2
590
Vision Language Modelを活用した メルカリの類似画像レコメンドの性能改善
yadayuki
3
490
Keynote - KCD Brazil - Platform Engineering on K8s (portuguese)
salaboy
0
110
SpannerとAurora DSQLの同時実行制御の違いに想いを馳せる
masakikato5
0
420
バックエンドエンジニアによるフロントエンドテスト拡充の具体的手法
kinosuke01
1
400
SaaSプロダクト開発におけるバグの早期検出のためのAcceptance testの取り組み
kworkdev
PRO
0
110
Async avec Messenger et Mercure
lyrixx
1
130
RubyKaigi で得た課題解決法・美意識・モチベーション
morihirok
0
300
ソフトウェア開発現代史: なぜ日本のソフトウェア開発は「滝」なのか?製造業の成功体験とのギャップ #jassttokyo
takabow
0
220
VISITS_20250311_こねくとあいとりおす.pdf
iotcomjpadmin
0
210
Featured
See All Featured
Unsuck your backbone
ammeep
669
57k
Fontdeck: Realign not Redesign
paulrobertlloyd
83
5.4k
Done Done
chrislema
183
16k
How STYLIGHT went responsive
nonsquared
99
5.4k
Code Review Best Practice
trishagee
67
18k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
12
1.4k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Typedesign – Prime Four
hannesfritz
41
2.6k
A designer walks into a library…
pauljervisheath
205
24k
BBQ
matthewcrist
88
9.5k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
2.9k
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