コンテンツにスキップ

アーキテクチャ

仮想 SONiC には用途別に複数の系統があります。「どれが本物の SONiC か」ではなく、「どこを再現したいか」で選びます。

仮想環境の比較

環境 何を再現するか 主な用途 入口
SONiC-VS (libvirt / KVM) 単体 SONiC NOS(SAI VS + 全 docker) HLD 検証、PR 自動テスト、CLI / CONFIG_DB 動作確認 SONiC-VS のビルドと libvirt 起動手順
GNS3 + sonic-vs.img SONiC-VS を GNS3 トポロジ内で配線 評価者・初学者の手元学習、ネットワーク図と組み合わせた構成検証 GNS3 VM 上での SONiC 動作
ALViS / KNE (Alpine 仮想 SONiC) Kubernetes ネイティブな軽量 SONiC CI で多数ノードを並べる、KNE トポロジ統合 Alpine 仮想 SONiC
DASH SONiC KVM DPU / DASH appliance を BMv2 で代替 DASH HLD・ENI ルール検証 DASH SONiC KVM

それぞれ前提が異なります。SONiC-VS と GNS3 は同じ sonic-vs.img を使う関係で、SONiC-VS で動くものは GNS3 でも動きます。ALViS / KNE は Alpine ベースで軽量化されており、機能セットが SONiC-VS と完全には一致しないため、対応する HLD で対象範囲を確認します。

SONiC-VS の構造

SONiC-VS は実機イメージから ASIC・platform 部品を VS 化したもので、内部は実機と同じ docker 群(swss、syncd、bgp、teamd、snmp、telemetry など)が動きます。違いは syncd の SAI backend が SAI VS で、SAI 操作が Linux netdev / bridge に変換される点です。

bring-up 手順、libvirt 定義、image の作成方法は SONiC-VS のビルドと libvirt 起動手順 を読みます。CONFIG_DB の投入、minigraph、CLI 操作は実機と同じ流れになります。

GNS3 / KNE / KVM の位置付け

  • GNS3 は SONiC-VS を「GNS3 のトポロジ」に並べて触るための wrapper です。Qemu テンプレートの作り方が中心の議題で、SONiC 自体の挙動は SONiC-VS と同じです。
  • ALViS / KNE は Kubernetes 上で多数ノードを並べる前提の設計です。KNE 連携・Alpine 化・Pod ごとの SONiC 構成は HLD を読むのが早いです。
  • DASH SONiC KVM は DASH の DPU 検証用で、データプレーンを BMv2 が担います。DASH の HLD と組で読みます。

物理 lab の機材側

物理 lab を組むと、SONiC 本体以外に console / terminal server / udev のような周辺要素が出てきます。

これらは仮想 lab では出てこないため、実機投入や DC への持ち込みフェーズでだけ読み返します。