Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ホワイトボックス& SONiC アーキテクチャ(全体像) - SONiC Workshop J...

ホワイトボックス& SONiC アーキテクチャ(全体像) - SONiC Workshop Japan 2025

ホワイトボックス& SONiCアーキテクチャ(全体像)

SONiC Workshop Japan 2025
https://sonic.connpass.com/event/345182/

実践 SONiC入門 (技術評論社)
https://gihyo.jp/book/2025/978-4-297-14943-7

Avatar for ebiken

ebiken

May 16, 2025
Tweet

More Decks by ebiken

Other Decks in Technology

Transcript

  1. ホワイトボックス & SONiC アーキテクチャ(全体像) [email protected] 海老澤 健太郎|プリンシパル エンジニア| Arrcus, Inc.

    ホワイトボックス & SONiC アーキテクチャ(全体像)| 2025-05-16 | 海老澤健太郎 Arrcus, Inc SONiC Workshop Japan 2025
  2. ホワイトボックス & SONiC アーキテクチャ(全体像)| 2025-05-16 | 海老澤健太郎 Arrcus, Inc ホワイトボックス

    & SONiC アーキテクチャ(全体像) [email protected] | 海老澤 健太郎|プリンシパル エンジニア| Arrcus, Inc. https://sonic.connpass.com/event/345182/
  3. ホワイトボックス & SONiC アーキテクチャ(全体像)| 2025-05-16 | 海老澤健太郎 Arrcus, Inc エンジニア選書

    シリーズ 実践 SONiC入門 海老澤健太郎 著 定価 3,520円(本体3,200円+税10%) 発売日 2025.5.26 判型 B5変形 頁数 368ページ ISBN 978-4-297-14943-7(紙) 978-4-297-14944-4(電子) 技術評論社 書籍WEB https://gihyo.jp/book/2025/978-4-297-14943-7 レビューご協力 ありがとうございました!
  4. 実践 SONiC入門 (各章の内容) ホワイトボックス & SONiC アーキテクチャ(全体像)| 2025-05-16 | 海老澤健太郎

    Arrcus, Inc 第1章 ホワイトボックススイッチとSONiCアーキテクチャ 第2章 SONiCの機能とユースケース 第3章 コミュニティ運営と開発プロセス 第4章 商用版SONiCと有償サポート 第7章 SONiCの内部構造:アーキテクチャとサブシステム 第8章 SONiCの内部構造:ステートの流れとモジュール連携 第9章 SAI詳細解説 [API・オブジェクト・データプレーンパイプライン] 第10章 高度な設定と利用法 第11章 SONiCのトラブルシューティング Appendix 1 ソースコードからのビルド Appendix 2 SONiCで利用されているオープンソースプロジェクト ハンズオンして感触を掴みたい SONiCを動かしてみる(仮想環境のサンプルあり) 第5章 SONiCの入手とインストール 第6章 SONiCの基本操作と設定方法 SONiCに興味を持ち始めた SONiCやホワイトボックススイッチとは何か? 歴史、ユースケース、コミュニティ、サポート状況を 理解する。 SONiCの内部構造を理解したい バグ修正や機能追加したい SONiCの内部構造やSAIを理解する。 ソースコードを読む入り口となる情報も解説。 ティップスや参考情報 詳細は日々更新されていくので、あくまでも参考とし て参照してください !SONiCを学ぶことで ”スイッチASIC+NOS” の動作を理解できるよう解説しました!
  5. 実践 SONiC入門 (目次) ホワイトボックス & SONiC アーキテクチャ(全体像)| 2025-05-16 | 海老澤健太郎

    Arrcus, Inc 第1章 ホワイトボックススイッチとSONiCアーキテクチャ 1.1 ホワイトボックススイッチの内部構造 1.2 SAI誕生の背景と役割 1.3 SONiCアーキテクチャの全体像 第2章 SONiCの機能とユースケース 2.1 SONiCの機能とユースケース 2.2 ユースケース/事例 2.3 Switch ASIC以外への適用例 第3章 コミュニティ運営と開発プロセス 3.1 組織構成やメンバー 3.2 情報ソースとコミュニケーションチャネル 3.3 リリースプロセス 3.4 不具合報告や修正提案 第4章 商用版SONiCと有償サポート 4.1 コミュニティ版と商用版SONiCの違い 4.2 新機能追加までの流れ 4.3 主な商用版SONiC提供ベンダー 4.4 有償サポート提供ベンダー 4.5 まとめ:商用版SONiCや有償サポートの検討ポイント 第5章 SONiCの入手とインストール 5.1 SONiCが動作する環境の用意 5.2 イメージの入手 5.3 実機での利用方法 5.4 仮想環境での利用方法(sonic-vs on KVM) 第6章 SONiCの基本操作と設定方法 6.1 SONiCの基本操作と設定ファイル 6.2 設定ファイルを用いた設定方法 6.3 2種類のコマンドラインインターフェース 6.4 SONiCの基本的な設定 第7章 SONiCの内部構造:アーキテクチャとサブシステム 7.1 SONiCアーキテクチャの全体像 7.2 主要なサブシステム 7.3 各サブシステムで動作するモジュール 7.4 databaseコンテナ 7.5 swssコンテナ 7.6 syncdコンテナ 7.7 bgpコンテナ(routingコンテナ) 7.8 mgmt-frameworkコンテナとgnmiコンテナ 7.9 pmonコンテナ 7.10 snmpコンテナ 7.11 lldpコンテナ 7.12 teamdコンテナ 7.13 eventdコンテナ 7.14 フロントパネルポートとホストインターフェース 第8章 SONiCの内部構造:ステートの流れとモジュール連携 8.1 SONiCのデータベース 8.2 モジュールからデータベースへのアクセス 8.3 モジュールとホストの通信 8.4 モジュールからモジュールへのアクセス 8.5 コンテナのネットワーク構成 8.6 SONiCのインターフェース管理 8.7 SONiCのルーティング機能 8.8 SONiCの起動とユーザーインターフェース 8.9 SONiC管理フレームワーク 第9章 SAI詳細解説[API・オブジェクト・データプレーンパイプライン] 9.1 SAI概要 9.2 SAIのパケット処理パイプライン [COLUMN]2種類のSAIブリッジタイプ(sai_bridge_type_t) 9.3 SAIの定義ファイル[機能共通] 9.4 SAIの定義ファイル[機能毎] [COLUMN]SAIの初期仕様におけるAPIセット 9.5 SONiCにおけるSAIの実装 第10章 高度な設定と利用法 10.1 SRv6のサポート状況 10.2 SONiCのSRv6設定 10.3 パケット変換動作の確認 第11章 SONiCのトラブルシューティング 11.1 showコマンドによる状態の確認 11.2 ログの参照方法と読み方 11.3 APPL_DB変更/SAI呼び出しのログ 11.4 SONiCのデバッグ Appendix 1 ソースコードからのビルド A.1.1 SONiCビルドシステムの概要 A.1.2 SONiCイメージのビルドの流れ A.1.3 仮想環境でのビルド手順例 A.1.4 ビルドオプションのカスタマイズ(rules/config) A.1.5 特定モジュール(コンテナ)のビルドと入れ替え Appendix 2 SONiCで利用されているオープンソースプロジェクト 368ページ
  6. • スイッチのアーキテクチャ • SONiCのアーキテクチャ • SONiC Deep Dive (する方法) •

    コミュニティ Table of Contents ホワイトボックス & SONiC アーキテクチャ(全体像)| 2025-05-16 | 海老澤健太郎 Arrcus, Inc
  7. スイッチとはサーバーである ホワイトボックス & SONiC アーキテクチャ(全体像)| 2025-05-16 | 海老澤健太郎 Arrcus, Inc

    実践 SONiC入門 | 第1章 ホワイトボックススイッチとSONiCアーキテクチャ スイッチ == CPU + メモリ + NIC Switch ASIC
  8. パケット処理パイプライン on Switch ASIC ホワイトボックス & SONiC アーキテクチャ(全体像)| 2025-05-16 |

    海老澤健太郎 Arrcus, Inc 実践 SONiC入門 | 第1章 ホワイトボックススイッチとSONiCアーキテクチャ NOSの(主な)役割は、このパイプラインをプログラムすること
  9. SAI == デファクト&オープンな Switch ASIC の API ホワイトボックス & SONiC

    アーキテクチャ(全体像)| 2025-05-16 | 海老澤健太郎 Arrcus, Inc 実践 SONiC入門 | 第9章 SAI 詳細解説 [API・オブジェクト・データプレーンパイプライン]
  10. レイヤー3 パイプライン(ルーティング) ホワイトボックス & SONiC アーキテクチャ(全体像)| 2025-05-16 | 海老澤健太郎 Arrcus,

    Inc 実践 SONiC入門 | 第9章 SAI 詳細解説 [API・オブジェクト・データプレーンパイプライン] Ethernet0 Ethernet4 送信元MACアドレス:00-00-5E-00-53-00 宛先MACアドレス :00-00-5E-00-53-10 送信元IPアドレス:X.Y.Z.A 宛先IPアドレス:10.0.1.1 送信元MACアドレス:xx-xx-xx-xx-xx-xx 宛先MACアドレス :<router-mac> 送信元IPアドレス:X.Y.Z.A 宛先IPアドレス:10.0.1.1 送信元MACアドレス:00-00-5E-00-53-00 宛先MACアドレス :00-00-5E-00-53-40 送信元IPアドレス:X.Y.Z.A 宛先IPアドレス:10.0.1.1 実際のテーブル実装は ASIC毎に異なる
  11. SAI による Switch ASIC 実装の抽象化 ホワイトボックス & SONiC アーキテクチャ(全体像)| 2025-05-16

    | 海老澤健太郎 Arrcus, Inc 実践 SONiC入門 | 第9章 SAI 詳細解説 [API・オブジェクト・データプレーンパイプライン] 実際には複数のテーブルに分散保持 • スケーラビリティの向上 • Lookup速度(遅延)とスケールのトレードオフ • ECMPなどの実現 SAI を利用する事により、Switch ASIC が変わっても 同じAPI (SAI) でプログラム可能
  12. SAI API と SAI定義 (スタティックルートの設定) ホワイトボックス & SONiC アーキテクチャ(全体像)| 2025-05-16

    | 海老澤健太郎 Arrcus, Inc 実践 SONiC入門 | 第9章 SAI 詳細解説 [API・オブジェクト・データプレーンパイプライン]
  13. SONiC アーキテクチャ ホワイトボックス & SONiC アーキテクチャ(全体像)| 2025-05-16 | 海老澤健太郎 Arrcus,

    Inc 実践 SONiC入門 | 第7章 SONiC の内部構造:アーキテクチャとサブシステム SAI 機能毎に分かれたサブシステム(コンテナ)内で動作する複数のモジュールが 主にデータベースを介して連携することにより動作
  14. 各モジュールやコンポーネントの連携パターン ホワイトボックス & SONiC アーキテクチャ(全体像)| 2025-05-16 | 海老澤健太郎 Arrcus, Inc

    実践 SONiC入門 | 第7章 SONiC の内部構造:アーキテクチャとサブシステム • モジュール 〜 データベース • モジュール 〜 ホスト • カーネル(Linux Kernel) • ペリフェラル • ホスト経由のパケット通信 • モジュール 〜 モジュール
  15. データベースを理解することで、動作の全体像が理解できる ホワイトボックス & SONiC アーキテクチャ(全体像)| 2025-05-16 | 海老澤健太郎 Arrcus, Inc

    実践 SONiC入門 | 第7章 SONiC の内部構造:アーキテクチャとサブシステム | 第8章 SONiC の内部構造:ステートの流れとモジュール連携 Redis DB にはスキーマは存在しない (自動的なバリデーションは行われない) セパレータでテーブル+エントリを表現 <TABLE_NAME><separator><object_name1>[<separator><object_name2> ...]
  16. データベースの操作 ホワイトボックス & SONiC アーキテクチャ(全体像)| 2025-05-16 | 海老澤健太郎 Arrcus, Inc

    実践 SONiC入門 | 第8章 SONiC の内部構造:ステートの流れとモジュール連携 sonic-db-cli
  17. モジュール毎のレポジトリ(Source Code) ホワイトボックス & SONiC アーキテクチャ(全体像)| 2025-05-16 | 海老澤健太郎 Arrcus,

    Inc 実践 SONiC入門 | 第7章 SONiC の内部構造:アーキテクチャとサブシステム sonic-buildimage:/src/ => パッチだけが配置されているモジュール(lm-sensors)や、sonic-cfggen, eventdのようにソースコードが 直接配置されている事がある。モジュールのレポジトリが見つからない場合、sonic-buildimageレポジトリの src/ フォルダを検索 https://github.com/sonic-net
  18. コンテナ内で動作するモジュール&起動シーケンスを理解する ホワイトボックス & SONiC アーキテクチャ(全体像)| 2025-05-16 | 海老澤健太郎 Arrcus, Inc

    実践 SONiC入門 | 第7章 SONiC の内部構造:アーキテクチャとサブシステム 起動するモジュール、起動オプションなどは supervisord.conf で制御される https://github.com/sonic-net/sonic-buildimage/blob/master/dockers/docker-orchagent/supervisord.conf.j2 [supervisord] logfile_maxbytes=1MB logfile_backups=2 nodaemon=true ... [program:rsyslogd] command=/usr/sbin/rsyslogd -n -iNONE priority=1 autostart=false autorestart=unexpected stdout_logfile=NONE stdout_syslog=true stderr_logfile=NONE stderr_syslog=true dependent_startup=true {% set is_fabric_asic = 0 %} {% set orchagent_dependent_startup_wait_for = "portsyncd:running" %} {% if DEVICE_METADATA.localhost.switch_type %} {% if DEVICE_METADATA.localhost.switch_type == "fabric" %} {% set is_fabric_asic = 1 %} {% set orchagent_dependent_startup_wait_for = "rsyslogd:running" %} {%- endif %} {%- endif %} {% set asan_extra_options = ':print_suppressions=0’ %} ... docker-orchagent % grep "^\[" supervisord.conf.j2 [supervisord] [eventlistener:dependent-startup] [eventlistener:supervisor-proc-exit-listener] [program:rsyslogd] [program:gearsyncd] [program:portsyncd] [program:orchagent] [program:swssconfig] [program:restore_neighbors] [program:coppmgrd] [program:neighsyncd] [program:vlanmgrd] [program:intfmgrd] [program:portmgrd] [program:fabricmgrd] [program:buffermgrd] [program:vrfmgrd] [program:nbrmgrd] [program:vxlanmgrd] [program:tunnelmgrd] [program:enable_counters] [program:fdbsyncd] swss/orchagent で動作するモジュール一覧
  19. SAI全体像を理解 => 必要なAPIを理解 ホワイトボックス & SONiC アーキテクチャ(全体像)| 2025-05-16 | 海老澤健太郎

    Arrcus, Inc 実践 SONiC入門 | 第9章 SAI 詳細解説 [API・オブジェクト・データプレーンパイプライン] • SAI メソッドテーブル • SAI 定義ファイルの構成(アノテーション) • SAI で用いられる型(type) • SAI Object 操作メソッド(関数ポインタ) 詳細は次のセッションで Þ SONiCにて使用されているSAIの実際 by APRESIA Systems株式会社 桑田 斉
  20. 2つのSAI ホワイトボックス & SONiC アーキテクチャ(全体像)| 2025-05-16 | 海老澤健太郎 Arrcus, Inc

    実践 SONiC入門 | 第9章 SAI 詳細解説 [API・オブジェクト・データプレーンパイプライン] orchagent は SAI を利用して ASIC_DB を制御 (実際には redis の操作) syncd が実際に SAI API を用いて ASIC を操作(SDK毎の差異を吸収)
  21. マクロの理解 == SONiCにおけるSAI利用方法を理解する早道 ホワイトボックス & SONiC アーキテクチャ(全体像)| 2025-05-16 | 海老澤健太郎

    Arrcus, Inc 実践 SONiC入門 | 第9章 SAI 詳細解説 [API・オブジェクト・データプレーンパイプライン]
  22. ホワイトボックス & SONiC アーキテクチャ(全体像)| 2025-05-16 | 海老澤健太郎 Arrcus, Inc さらに情報が必要になったら。

    • Slack: SONiC Users Japan • https://sonic-users-jp.slack.com/ • SONiC Workshop Japan 運営メンバーが開設 • 日本語での交流の場 • ! Connpass に参加リンクあります! • SONiC Foundation Web Page • https://sonicfoundation.dev/ • カンファレンスの開催情報やアーカイブ • X (Twitter), LinkedIn, YouTube, 等へのリンク • Google Groups sonicproject • https://groups.google.com/g/sonicproject • 全般的な話題 • SONiC Dev Mailing List • [email protected] • 技術的な話題 https://sonic.connpass.com/event/345182/ 実践 SONiC入門 | 第3章 コミュニティ運営と開発プロセス
  23. 機能や技術トピック毎のグループ ホワイトボックス & SONiC アーキテクチャ(全体像)| 2025-05-16 | 海老澤健太郎 Arrcus, Inc

    実践 SONiC入門 | 第3章 コミュニティ運営と開発プロセス SONiC Working Groups https://lists.sonicfoundation.dev/groups Working Group 動向からHyper Giantsの動きを知る
  24. Projects Page でリリース毎の機能を把握 ホワイトボックス & SONiC アーキテクチャ(全体像)| 2025-05-16 | 海老澤健太郎

    Arrcus, Inc 実践 SONiC入門 | 第3章 コミュニティ運営と開発プロセス https://github.com/orgs/sonic-net/projects 年2回のリリース(SONiC 202505) &一部機能毎のプロジェクト
  25. SONiC 202505 の注目機能 (個人的な趣味に基づく) ホワイトボックス & SONiC アーキテクチャ(全体像)| 2025-05-16 |

    海老澤健太郎 Arrcus, Inc • Lossless Monitoring 関連の拡張 • Internal drop counter monitoring #1542 (HLD PR#1912) ... 閾値ベースの検知 • PFC Historical Statistics #1904 ... Xon/Xoff変化のモニタリング • [doc]: High frequency telemetry HLD #1795 ... ASICからのPush型テレメトリ • Load Balancing • Adaptive Routing and Switching enablement in SONiC #1918 • Local Adaptive Routing #1868 (a.k.a. DLB ~ Dynamic Load Balancing) • UEC (Ultra Ethernet Consortium) • Packet Trimming #1850 (a.k.a. Drop Congestion Notification) 候補機能であり、全てがこのタイミングでマージされるとは限りません
  26. ホワイトボックス & SONiC アーキテクチャ(全体像)| 2025-05-16 | 海老澤健太郎 Arrcus, Inc エンジニア選書

    シリーズ 実践 SONiC入門 海老澤健太郎 著 定価 3,520円(本体3,200円+税10%) 発売日 2025.5.26 判型 B5変形 頁数 368ページ ISBN 978-4-297-14943-7(紙) 978-4-297-14944-4(電子) 技術評論社 書籍WEB https://gihyo.jp/book/2025/978-4-297-14943-7 「第2版」「極める」を書きたい人はご連絡お願いします!