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
730
Cassini + Goldstone DCI use case and challenges
mabuchin
1
220
転びながらもネットワーク処理をソフトウェアで自作していく話
mabuchin
8
4.4k
モダンなネットワーク構成管理DBを最小労力で開発する
mabuchin
3
830
Gitでネットワークオペレーションを進める話
mabuchin
0
110
TapAggregationを使ったデータプレーン性能測定
mabuchin
0
220
Github PullRequestで作業半自動化
mabuchin
0
81
お手軽! BGP RIBのリアルタイム経路解析+可視化
mabuchin
0
350
Other Decks in Technology
See All in Technology
グループ ポリシー再確認 (2)
murachiakira
0
210
SnowflakeとDatabricks両方でRAGを構築してみた
kameitomohiro
1
570
品質文化を支える小さいクロスファンクショナルなチーム / Cross-functional teams fostering quality culture
toma_sm
0
180
Azure Maps Visual in PowerBIで分析しよう
nakasho
0
190
GraphQLを活用したリアーキテクチャに対応するSLI/Oの再設計
coconala_engineer
0
200
30代からでも遅くない! 内製開発の世界に飛び込み、最前線で戦うLLMアプリ開発エンジニアになろう
minorun365
PRO
16
5.1k
本当に必要なのは「QAという技術」だった!試行錯誤から生まれた、品質とデリバリーの両取りアプローチ / Turns Out, "QA as a Discipline" Was the Key!
ar_tama
7
1.4k
Computer Use〜OpenAIとAnthropicの比較と将来の展望〜
pharma_x_tech
6
970
もう難しくない!誰でもカンタンDocker入門 〜30分であなたのPCにアプリを立ち上げる〜
devops_vtj
0
190
2025-04-14 Data & Analytics 井戸端会議 Multi tenant log platform with Iceberg
kamijin_fanta
1
180
持続可能なドキュメント運用のリアル: 1年間の成果とこれから
akitok_
1
270
意思決定を支える検索体験を目指してやってきたこと
hinatades
PRO
0
390
Featured
See All Featured
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
5
590
Why You Should Never Use an ORM
jnunemaker
PRO
56
9.3k
The Cult of Friendly URLs
andyhume
78
6.3k
Practical Orchestrator
shlominoach
187
11k
Visualization
eitanlees
146
16k
KATA
mclloyd
29
14k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
690
A Modern Web Designer's Workflow
chriscoyier
693
190k
The World Runs on Bad Software
bkeepers
PRO
68
11k
Fontdeck: Realign not Redesign
paulrobertlloyd
84
5.5k
Become a Pro
speakerdeck
PRO
28
5.3k
Git: the NoSQL Database
bkeepers
PRO
430
65k
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