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 管理章 とどう接続するか。
読み進め方¶
- 概念: PINS が何を opt-in で足すのか、SAI pipeline を P4 で表す意味。
- アーキテクチャ: P4RT App、P4Orch、APPL_DB / APPL_STATE_DB の流れ。
- 設定: P4RT サービス、controller 接続、
SEND_TO_INGRESS_PORTの最小構成。 - 運用: PacketIO 経路の確認、Read cache の挙動、Send to Ingress の使い分け。
- 内部実装: P4Orch の Manager 群、
P4OidMapper、同期書き込みと APPL_STATE_DB。 - 発展トピック: gNMI / OpenConfig との接続、HashOrch HLD と実装の乖離。
関連ページ¶
- PINS(P4 Integrated Network Stack / SDN 制御 SONiC)
- P4RT アプリケーション(gRPC port 9559)
- P4Orch(PINS の P4Runtime 用 orchagent / 同期書き込み)
- P4RT App の Read キャッシュ
- P4Runtime PacketIO(generic netlink + send_to_ingress)
- Send to Ingress(CPU から ingress pipeline へパケット注入する hostif)
章構成と進捗¶
| ページ | 状態 | verification |
|---|---|---|
| concept | ✅ 完成 (142 行) | meta |
| setup | ✅ 完成 (288 行) | meta |
| operations | ✅ 完成 (180 行) | meta |
| internals | ✅ 完成 (134 行) | meta |
| advanced | ✅ 完成 (105 行) | meta |
次に読むべき記事¶
この章を読み進める順
関連する HLD 7 件
- Trap Flow Counter(Host I/F Trap 単位の Generic Counter 集計)
- Alpine 仮想 SONiC(ALViS / KNE デプロイ)
- Error Handling Framework 概念(ERROR_DB / SWSS_RC / 報告のみの責務)
- Error Handling Framework 制限事項と HLD との乖離(コア機構未実装 / CRM 代替)
- GNS3 VM 上での SONiC 動作(sonic-vs.img と Qemu テンプレート)
- SONiC-VS のビルドと libvirt 起動手順
- Error Handling Framework 内部実装(OrchAgent producer / ErrorListener / ASIC_DB notification)
関連トラブルシュート 5 件
- APP_DB → ASIC_DB の反映が遅延・停止する
- orchagent が CPU 100% で詰まる
- Warm Reboot が失敗 / 通信断が長引く
- 経路は RIB にあるが FIB / ASIC に降りない
- BGP セッションが UP しない
関連する章¶
前提として読むべき章
派生で読むべき章
補完的に読む章