ネットワーク デバイスのプログラマビリティをサポートするために、P4 (www.p4.org) は、汎用 CPU から NPU、FPGA、およびカスタム ASIC に至るまでのさまざまなターゲット デバイスでネットワーク パケットが処理される方法を記述するための新しいプログラミング言語として開発されました 。P4 は、次の 3 つの項目を念頭に置いて設計されました。
- プロトコルに依存しない: デバイスは特定のプロトコルでベイク処理されるべきではない
- フィールドで再構成可能: デプロイ後でもデバイスの動作を変更可能にする
- ポータビリティ: プログラムは特定のハードウェア ターゲットに限定されるべきではない
P4 は、パケット処理用として広く採用されている業界初のドメイン特定言語です。ザイリンクスは、SDNet 開発環境の標準プログラミング言語として P4 を採用しています。SDNet では、2017 年 5 月にリリースされた最新の P4_16 言語仕様を使用しています。また、将来的な標準化を見越して、この言語の一般化プログラムへの早期アクセスを提供しているため、パケット処理の効率化やパケット処理アーキテクチャの定義が可能です。P4-SDNet の初期のユース ケースには、INT (Inband Network Telemetry) やライン レートで動作する NFV サービス ファンクション チェイニング (SFC) において高速化されたデータセンター SmartNIC アプリケーションなどがあります。
この言語仕様を開発した P4 コミュニティは、今後も管理および開発を続けています。P4 には、一連のオープンソース ツール (コンパイラ、デバッガ、コード アナライザー、ライブラリ、ソフトウェア P4 スイッチなど) とサンプル P4 プログラムが含まれるため、ユーザーは新しいデータ プレーンの動作をすばやく正確に作成して、ネットワーキング アプリケーションの新しいアイデアをプロトタイプ化できます。ザイリンクスは、このコミュニティの創設メンバーで、P4 言語仕様の開発で主導的役割を果たし、P4 プログラムの高性能な実装を早い段階で実証し、SDNet 開発環境で P4 を利用できるようにしました。