コンテンツにスキップ

P4 / PINS / Programmable Pipeline

この章は、SONiC を P4Runtime ベースの SDN コントローラから直接プログラムする ための仕組み(PINS: P4 Integrated Network Stack)をまとめて読むための入口です。PINS は SONiC の従来パス(BGP / FRR / orchagent 群)を残したまま、opt-in の外部チャネルで forwarding を書き換える設計のため、関連コンポーネントが管理面、orchagent、CPU パケット注入と複数章にまたがります。ここでは読み手の質問順に並べ直し、既存ページへリンクで誘導します。

PINS の中心は 4 点です。コントローラと話す P4RT App(gRPC port 9559)、それを SAI に翻訳する P4Orch(orchagent 内の同期 manager 群)、Read を高速化する table_entry_cache_(entity_cache_)、CPU と ASIC の間でパケットを流す PacketIO + send_to_ingress。これらは APPL_DB / APPL_STATE_DB / SAI hostif / generic netlink といった既存の SONiC 部品の上に乗っています。

この章で答える質問

  • PINS、P4Runtime App、P4Orch、PacketIO はどの関係か。
  • P4Runtime の Read cache は何を最適化しているか。
  • Send to Ingress と PacketIO は CPU packet injection としてどう違うか。
  • P4 系ページは gNMI / SDN 管理章 とどう接続するか。

読み進め方

  1. 概念: PINS が何を opt-in で足すのか、SAI pipeline を P4 で表す意味。
  2. アーキテクチャ: P4RT App、P4Orch、APPL_DB / APPL_STATE_DB の流れ。
  3. 設定: P4RT サービス、controller 接続、SEND_TO_INGRESS_PORT の最小構成。
  4. 運用: PacketIO 経路の確認、Read cache の挙動、Send to Ingress の使い分け。
  5. 内部実装: P4Orch の Manager 群、P4OidMapper、同期書き込みと APPL_STATE_DB。
  6. 発展トピック: gNMI / OpenConfig との接続、HashOrch HLD と実装の乖離。

関連ページ

章構成と進捗

ページ 状態 verification
concept ✅ 完成 (142 行) meta
setup ✅ 完成 (288 行) meta
operations ✅ 完成 (180 行) meta
internals ✅ 完成 (134 行) meta
advanced ✅ 完成 (105 行) meta

次に読むべき記事

この章を読み進める順

関連する HLD 7 件

関連トラブルシュート 5 件

関連する章

前提として読むべき章

派生で読むべき章

補完的に読む章