P4(プログラマブルデータプレーン)

P4 (Programming Protocol-independent Packet Processors) (P4)

ネットワーク機器のデータプレーンの動作を記述するドメイン特化型プログラミング言語である。スイッチ、NIC、ルータなどがパケットをどう処理するかを、特定のプロトコルに依存せずに規定する。プログラムは対象機器ごとにコンパイルされ、FPGAやプログラマブルASIC、ソフトウェア基盤で実行される。

詳細

概要

P4は、ネットワーク機器のデータプレーンを記述するためのドメイン特化型プログラミング言語である。名称はProgramming Protocol-independent Packet Processorsに由来し、スイッチ、NIC、ルータ、フィルタといったデータプレーン機器がパケットをどのように処理するかを規定する。従来はシリコンベンダが機能追加の時期を握っていたのに対し、利用者側で動作を定義できるようになり、変更を年単位ではなく分単位で反映できる点が変化とされる。

技術的な要点

P4プログラムは、パケットをヘッダによって分類する処理と、分類結果に対して実行する動作を記述する。特定のプロトコルを前提としないため、既存プロトコルに加えて新しいヘッダ形式も扱える。プログラムは対象機器ごとに固有であり、コンパイルによって、FPGAやプログラマブルASICなどのハードウェア、あるいはソフトウェア基盤向けの実行バイナリと、制御プレーンから参照するランタイム用のメタデータが生成される。固定機能のハードウェアに縛られず、必要な機能だけを実装できる一方、機器の資源制約の範囲内に処理を収める設計が求められる。

産業での位置づけ

データセンタのネットワークでは、輻輳制御、テレメトリ、トンネリング、負荷分散などを運用者の要件に合わせて実装する需要がある。オープンなネットワークOSやパケット処理フレームワークと組み合わせ、ベンダ固有の固定機能に依存しない構成を取る事例が増えている。