# 実践SONiC入門 ## 概要 オープンソースのネットワーク OS である [[SONiC]] を、背景・コミュニティ運営・導入・内部構造・運用まで一冊で扱う日本語の技術書である。単著者は [[海老澤健太郎]]。 本書の特色は、内部構造の解説が概念図にとどまらず、**ソースコードとコミュニティのデザイン文書(HLD)を根拠として提示する**点にある。第 7〜9 章では、コンテナとプロセスの対応、Redis データベース群を介したステートの流れ、[[SAI (Switch Abstraction Interface)|SAI]] のオブジェクトモデルと ASIC への反映経路が、実際のモジュール名・テーブル名・API 名のレベルまで追える形で書かれている。SONiC を「使う」ためだけでなく「読む・直す」ために書かれた書籍である。 同書は「SONiC についてまったく知らない読者でも第 1 章から順に読み進めれば理解を深められる」構成を意図しており、既に背景を知る読者は第 5・6 章のハンズオンから、内部構造に関心がある読者は第 7・8・9 章から読み始めてよいと案内している。(Source: 同書「本書の構成」) ## 書誌情報 - 著者: [[海老澤健太郎]]([[Arrcus]] プリンシパルエンジニア) - 出版社: 技術評論社 - 発行日: 2025 年 6 月 6 日(初版第 1 刷) - ISBN: 978-4-297-14943-7 - 構成: 全 11 章 + Appendix(2 節)、369 ページ - URL: https://gihyo.jp/book/2025/978-4-297-14943-7 ## 構成と主要テーマ ### 第 1〜2 章: 前提知識とユースケース 一般的なスイッチの内部構造から始め、SONiC が何であり誰がどう使っているかを示す導入部。 → [[@2025__Gihyo__実践SONiC入門 - Chapter 1 ホワイトボックススイッチとSONiCアーキテクチャ]] — スイッチの 3 プレーン(マネジメント・コントロール・データ)と物理構成を整理したうえで、Switch ASIC ベンダー間の差異を吸収する SAI 誕生の背景と、SONiC アーキテクチャの全体像を導入する → [[@2025__Gihyo__実践SONiC入門 - Chapter 2 SONiCの機能とユースケース]] — Microsoft・Alibaba・Target・eBay・Google・Orange S.A.・LINE・KDDI の 8 事例と、Switch ASIC 以外への適用例(SONiC-DASH・SONiC-VPP)から採用の広がりを示す ### 第 3〜4 章: コミュニティ運営と商用サポート 学習と本番導入に必要な情報源・支援体制がどこにあるかを扱う。 → [[@2025__Gihyo__実践SONiC入門 - Chapter 3 コミュニティ運営と開発プロセス]] — [[SONiC Foundation]] は理事会・TSC・ワーキンググループの三層構造で運営され、デザイン文書(HLD)のレビューを起点とする年 2 回のリリースプロセスで開発が進む → [[@2025__Gihyo__実践SONiC入門 - Chapter 4 商用版SONiCと有償サポート]] — 商用版は必ずしも有償ライセンスを意味せず、対応プラットフォーム・機能・テスト・ドキュメントの 4 軸でコミュニティ版と異なる。ベンダー選定と技術支援調達の検討ポイントを示す ### 第 5〜6 章: 入手・インストールと基本操作 手を動かして SONiC を起動し設定するためのハンズオン部。 → [[@2025__Gihyo__実践SONiC入門 - Chapter 5 SONiCの入手とインストール]] — 対応ハードウェアの見分け方、イメージの入手経路、ONIE による実機インストール、KVM 上の sonic-vs による仮想環境構築を一貫して解説する → [[@2025__Gihyo__実践SONiC入門 - Chapter 6 SONiCの基本操作と設定方法]] — CONFIG_DB を唯一の信頼できる情報源とする宣言的な設定モデルと、Click ベース CLI・Klish ベース CLI の併存を軸に、VLAN とスタティックルートの設定を体験する ### 第 7〜9 章: 内部構造と SAI(本書の中核) ソースコードとデザイン文書を根拠に、SONiC の設計を層ごとに解体する。 → [[@2025__Gihyo__実践SONiC入門 - Chapter 7 SONiCの内部構造:アーキテクチャとサブシステム]] — サブシステム(コンテナ)とモジュール(プロセス)という 2 階層構造の原理を示し、各コンテナの役割・モジュール構成・supervisord による起動制御を解説する → [[@2025__Gihyo__実践SONiC入門 - Chapter 8 SONiCの内部構造:ステートの流れとモジュール連携]] — APPL_DB / CONFIG_DB / STATE_DB / ASIC_DB / COUNTERS_DB を介してステートを読み出し・変換・書き込みし、Pub/Sub 通知でモジュールを疎結合に連携させる仕組みを、ポート管理・ルーティング・FRR・管理フレームワークの実例で示す → [[@2025__Gihyo__実践SONiC入門 - Chapter 9 SAI詳細解説[API・オブジェクト・データプレーンパイプライン]]] — SAI は Switch ASIC の機能を CRUD 操作可能な API として抽象化し、SONiC では orchagent が sairedis 経由で ASIC_DB への読み書きとして実装する一方、vendor SAI ライブラリに実リンクするのは syncd だけという非対称性を明らかにする ### 第 10〜11 章: 実践的な設定と運用 → [[@2025__Gihyo__実践SONiC入門 - Chapter 10 高度な設定と利用法]] — 章題に反し実態はほぼ全編が SRv6 であり、CLI 未実装機能を APPL_DB へ直接投入して先行利用する経路と、End.DT46(デカプセル化)・H.Encaps.Red(カプセル化)という対をなす Behavior を SAI オブジェクトのレベルまで検証する → [[@2025__Gihyo__実践SONiC入門 - Chapter 11 SONiCのトラブルシューティング]] — show コマンドによる非侵襲的な確認から syslog・`swss.rec` / `sairedis.rec`、さらに GDB や ASIC ベンダーのデバッグシェルへと、侵襲度の順にエスカレーションする層別の切り分け手順 ### Appendix → [[@2025__Gihyo__実践SONiC入門 - Appendix 1 ソースコードからのビルド]] — `.deb` パッケージ生成 → Docker イメージ生成 → `sonic-$(PLATFORM).bin` への統合という多段ビルドを、sonic-slave コンテナ内で実行する手順と、外部依存の変化に起因するビルド失敗という課題 Appendix 2「SONiC で利用されているオープンソースプロジェクト」はサブシステムごとの資料リストであり、本 wiki には取り込んでいない。 ## 影響と位置づけ 同書は、2013 年の OCP ネットワーキングプロジェクト発足、2014 年の FBOSS 公開、2015 年の SAI 公開、2016 年の SONiC オープンソース化という流れを「オープンネットワーキング」の系譜として整理し、2019 年頃からのネットワーク OS 淘汰(NVIDIA による Cumulus Networks・Mellanox 買収など)と半導体不足による納期長期化を経て、ベンダー中立なネットワーク OS の重要性が再認識されたと位置づけている。(Source: 同書「はじめに」) wiki 内では、[[SONiC]] に関する単発のスライド・論文ソースが断片的に扱ってきた内部構造を、初めて章単位の厚みで裏づける基盤ソースとなっている。特に [[SONiCのモジュール責務分離]]、[[データベースを介した疎結合なモジュール連携]]、[[パケット処理パイプラインのテーブル分割]] の 3 つの concept は本書から立ち上がった。 ## 関連 - 中心概念: [[SONiC]] / [[SAI (Switch Abstraction Interface)]] / [[ホワイトボックススイッチ]] / [[ネットワークオペレーティングシステム]] - 本書から立ち上がった概念: [[SONiCのモジュール責務分離]] / [[データベースを介した疎結合なモジュール連携]] / [[パケット処理パイプラインのテーブル分割]] / [[宣言的設定管理]] / [[ネットワーク機器のブートストラップとイメージ配布]] - 組織: [[SONiC Foundation]] / [[Open Compute Project]] / [[Linux Foundation]] - 著者: [[海老澤健太郎]] ## 出典 - 海老澤健太郎, 『実践SONiC入門』, 技術評論社, 2025 年 6 月 6 日, ISBN 978-4-297-14943-7.