Claude が書いた記事
SONiC ってなんやねん ── Cisco の箱なのにログインしたら Debian が立つ
スイッチの話をしてたはずが急に Linux が出てきて意味がわからんくなった。ToR スイッチの中身が『ただの Linux サーバー』だった、と腹落ちするまでの学習ログ。
俺の最初の疑問
Azure のネットワークサービスを仕事で触ってるが、ふと「SONiC ってなんやねん」が気になった。ニュースでも k8s でも DC の文脈でもよく見る。「Azure のデータセンターにあるスイッチで使っている OS」程度の理解。
で、調べ始めて一発で意味がわからんくなった。スイッチの話をしてたはずやのに、急に「Linux」「Redis」「コンテナ」が出てくる。
なんでスイッチの話で Linux が出てくるんや?
ここが今回いちばん引っかかった。順に潰した記録。
まず一言でいうと
SONiC は 「白箱スイッチ (中身が空のスイッチ) に載せる、Debian Linux ベースのネットワーク OS」。
引っかかりの答えはシンプルやった。スイッチという「箱」の中身は 2 つに分かれてる。
- ASIC (スイッチチップ) = 筋肉。パケットを右から左へ爆速で流す。LAN ケーブルが直結してるのはここ。
- CPU = 脳。その筋肉をコントロールする。ここに Linux が載ってる。
SONiC はこの「脳」のほう。だから「スイッチの話で Linux」になる。Azure のデータセンターのスイッチは、外見は普通のネットワーク機器やけど、中身 (脳) はカスタムされた Linux サーバーやった (Microsoft 自身が SONiC でグローバルクラウドを動かしている と公言している)。
何と比べるとわかるか
昔ながらの Cisco / Juniper のスイッチと SONiC を並べると、何が変わったかが一発で見える。
| 従来 (Cisco Catalyst 等) | SONiC | |
|---|---|---|
| OS | 専用 OS (Cisco IOS) が箱に最初から一体 | 白箱に後から Debian Linux を焼く |
| 中身 | ハード + OS + アプリが密結合のブラックボックス | Linux + コンテナで機能ごとに分離 |
| 操作 | メーカー独自コマンド (show ip bgp) | Linux コマンド + 設定ファイル (FRRouting 等) |
| ベンダー | 箱と OS がセット (ロックイン) | 箱 (ハード) と OS を別々に選ぶ |
要するに「ネットワーク専用機」から、「LAN ポートが数十個ぶっ刺さった Linux サーバー」へ見方を切り替えるのが正解やった。uname -a も apt も普通に通る。
なぜこうなったのか ── 答えは「台数」
「わざわざ純正 OS を捨てて Linux 入れるって、面倒なだけちゃうの?」と思う。理由は ToR / Leaf の台数が圧倒的に多いことが根っこにある (SONiC が動くのもこの ToR (T0) と leaf (T1) のレイヤーが中心 → SONiC のティア定義)。
- 1 ラックに ToR が 1〜2 台 × データセンターに数万ラック = 数万台のスイッチ。
- これに Cisco / Arista の純正 OS ライセンスを毎年払うと、ソフト費だけで天文学的。
- メーカー独自コマンドで 1 台ずつ手で管理するのは、台数的に物理的に不可能。
だから 安い白箱 + 無料の Linux (SONiC) で全部統一して、サーバーと同じ仕組みで自動管理する。これがハイパースケーラの答え。台数が一番多い ToR / Leaf こそ、この統一の効果が一番デカい。
図で見る
1. スイッチの箱の中身:脳 (CPU/Linux) と筋肉 (ASIC)
2. SONiC の中身:コンテナ群が Redis 越しに会話する (図 1 の脳をズーム)
SONiC の設計でいちばん天才的なのが、機能ごとに分けたコンテナ (Docker の箱) 同士が直接喋らず、真ん中の Redis 越しに会話するところ。この Redis も外部やなく、スイッチの中で SONiC が抱えるコンテナの 1 つ (メモリ上の DB) や。下の図は、図 1 の「脳 (CPU / SONiC)」の中をズームしたもので、全部 1 台のスイッチの中で動いてる。
混乱しやすいポイント
① SAI (Switch Abstraction Interface) は「OS」やない、「ドライバ」や
ここで一番詰まった。「メーカーが SAI ドライバを提供する」と聞くと、OS の話に聞こえる。けど違う。PC で例えると一発やった。
| PC (自作 PC) | SONiC スイッチ |
|---|---|
| マザーボード (ASUS 等) | Arista / Cisco の筐体 |
| GPU (NVIDIA 等) | Broadcom / NVIDIA の ASIC |
| OS (Windows / Linux) | SONiC (どのチップでも中身は同じ「共通の脳」) |
| グラフィックドライバ | SAI (チップごとの翻訳機) |
SONiC が「ポート 1 に来たパケットをポート 5 から出せ」と命令する → SAI ドライバが「そのチップ専用のレジスタ命令」に翻訳する → ASIC が実行する。SAI があるおかげで、SONiC 開発陣は Broadcom 用 / Mellanox 用と個別に書かんでよくなる。Azure がマルチベンダーで爆速にスケールできる土台がこれ。
② Arista / Cisco の箱は「使ってない」やなくて「OS だけ入れ替えてる」
「じゃあ Cisco や Arista のスイッチは排除されたんか?」── 逆。箱 (筐体・ASIC・光トランシーバー技術) は大量に買う。そのうえで純正 OS (IOS / EOS) を消して SONiC を焼く。Arista 7050 / 7060、Cisco 8000 シリーズは公式に「自社ハードで SONiC が動く」ことを検証し、SAI ドライバを提供してる。とはいえ各社は自社 OS (EOS / IOS / Junos) の商売を捨てたわけやなく、ハイパースケーラ向けには「箱だけ売って SONiC を載せてもらう」選択肢も足した。これがディスアグリゲーション (ハードとソフトの分離) を受け入れる、ということ。
③ 脳 (CPU/Linux) はパケット 1 枚ごとには出てこない
「Linux が捌いてるなら遅いんちゃう?」と思うが、CPU が触るのは経路を計算して ASIC に焼く瞬間だけ。実際のパケット転送は ASIC のハードがやる。脳は方針を決め、筋肉が走る。この分離があるから、中身が Linux でも line rate で捌ける。
たとえ話
- 脳と筋肉:SONiC (CPU/Linux) = 脳が「どう流すか」を決め、ASIC = 筋肉が実際に流す。脳が一瞬気絶しても (BGP 再起動)、筋肉は覚えた動きを続ける (ノンストップ転送)。
- PC のドライバ:SAI = グラボのドライバ。OS (SONiC) は共通で、ドライバ (SAI) がチップごとの翻訳を担う。
- 白箱 + OS:自作 PC に好きな Windows / Linux を入れるのと同じ。スイッチも「箱」と「OS」を別々に選べるようになった。
出てきた言葉の変換表
| 言葉 | つまり何の話? |
|---|---|
| SONiC | 白箱スイッチに載せる Debian Linux ベースの NOS (ネットワーク OS) |
| 白箱 (ホワイトボックス) | OS なしで売られるスイッチの筐体。ODM (Edgecore 等) や Arista / Cisco も供給する |
| ディスアグリゲーション | ハード (箱) とソフト (OS) を分離して別々に調達する流れ |
| ASIC | パケットを転送するスイッチチップ。データプレーン = 筋肉 |
| コントロールプレーン / データプレーン | 経路を決める脳 (Linux) / 実際に流す筋肉 (ASIC) |
| Redis (ConfigDB / AppDB / ASICDB) | SONiC が状態を一元管理する DB。コンテナ間はここ越しに会話する |
| orchagent | AppDB → ASICDB へ変換するオーケストレーション役のプロセス |
| syncd | ASICDB を見て SAI 経由で ASIC に焼くプロセス |
| SAI (Switch Abstraction Interface) | チップの違いを吸収する共通 API。OS でなくドライバ |
| FRRouting | SONiC の BGP 等を担うルーティングソフト |
| gNMI / gRPC | ストリーミングテレメトリ。Redis の統計を秒 / ミリ秒周期で吸い出す |
この記事の続きとして、未来の自分が次に掘るといいトピック。
- クラウド各社のネット戦略 ── AWS Nitro / GCP の OCS / Oracle の RoCE。SONiC は Azure の手で、各社の「キャラ」を相対化すると見通しが効く。
- SONiC の RDMA サポート (PFC / ECN) ── スイッチが「絶対に落とさないロスレスの道路」になる仕掛け。AI バックエンドの前提。
- FRRouting と BGP ── SONiC の経路計算の中身。
show ip bgpの代わりに何を読むか。 - DASH / SmartSwitch ── ToR に DPU を載せて VXLAN / NAT / FW をオフロードする最前線。
- GPU クラスターのレール最適化 ── SONiC (や InfiniBand) が支える AI ネットワークの上物。