# SONiC-VPP SONiCには標準のソフトウェアデータプレーンとしてsonic-vsが存在するが、これは主にコントロールプレーンのテスト用であり、性能面・機能面で実際のトラフィックを処理することは想定していない。実用に耐えうる機能・性能を持ったSONiCのソフトウェアデータプレーンを実現するため、SONiC-VPPの開発が開始された。[[VPP]](Vector Packet Processor)は、Linuxのユーザースペースで動作する拡張が容易なパケット処理エンジンで、DPDKを利用した高速なパケット処理が可能であり、仮想ルーターだけでなくCalicoを通じたKubernetes CNI、モバイル(5G UPF)など幅広いユースケースのデータプレーンとして利用されている。SONiC-VPPの開発は[[Cisco]]の技術者を中心に進められ、2023年3月にオープンソースとして公開された。2023年6月にはLFNetworkingのイベント「LFN Developer & Testing Forum」のセッションで、アーキテクチャや内部の動作フローなどの詳細が解説された。(Source: [[@2025__Gihyo__実践SONiC入門 - Chapter 2 SONiCの機能とユースケース]] ch.2 §2.3.2) ## アーキテクチャ アーキテクチャとしては、SONiCのAPPL_DB, CONFIG_DB, ASIC_DBなどのデータストア、SWSSやsyncdを拡張することにより、VPPデータプレーンをSONiCに組み込んでいる。主な拡張内容は、VPP対応のSAIドライバ(`libsaivpp.so`)の開発、データモデルの追加、起動スクリプトなどである。 ![[_attachments/jissen-sonic-nyumon-2025/ch02-fig2-9-sonic-vpp-architecture.png]] (図2.9 SONiC-VPPアーキテクチャ。LFN Developer & Testing Forumの資料Slide 6から引用。Source: ch.2 §2.3.2) VPPは非常に機能が多く、また、SAIドライバにおけるSAIとVPP API間の変換は機能によってはインテリジェントな(場合によってはステートフルな)変換ロジックが必要となるため、将来的にフェーズを追って徐々に機能が開発されていく予定である。2023年6月発表時点では通常のNICを搭載したホスト上での動作のみをサポートしている。将来的には、SONiCコントロールプレーンをCPUで動作させVPPをDPUで動作させる、単一のSONiCコントロールプレーンから複数のホストで動作するVPPをコントロールする、などの拡張が検討されている。(Source: [[@2025__Gihyo__実践SONiC入門 - Chapter 2 SONiCの機能とユースケース]] ch.2 §2.3.2) ## 関連 - [[SONiC]] — 組み込み先のネットワークOS - [[VPP]] — 基盤となるパケット処理エンジン(Vector Packet Processing、DPDKベース) - [[Cisco]] — 開発を主導する企業 - [[@2025__Gihyo__実践SONiC入門 - Chapter 2 SONiCの機能とユースケース]] ## 出典 - 海老澤健太郎, 『実践SONiC入門』, 技術評論社, 2025, 第2章 §2.3.2.