P4 Workshop 2022 視聴レポート
P4 Workshop について
ONFが主催するP4関連のカンファレンスは、 “Workshop” 及び “Techinar (webinar)” を中心に、学会や他イベント併設の Meetup や Hands-on Seminar 等があります。カンファレンスは年1回カリフォルニアで実施されるメインの “P4 Workshop” の他に、各地域毎にも開催されており、昨年は以下3つの地域カンファレンスが実施されました。
- 欧州:4th P4 Workshop in Europe (EuroP4) 2021
- 台湾:2021 P4 Workshop Taiwan
- 日本:日本P4ユーザ会2021 | Japan P4 User Group 2021
本記事では今年(2022年)5月にカリフォルニアでオンライン実施された 2022 P4 Workshop On-Demand について著者が興味を持ったセッションを中心に取り上げます。
各セッションのスライド及び動画は現在もオンラインで視聴可能ですので、さらに詳しく知りたいセッションは是非視聴してみてください。
まとめ&雑感
Workshopの全セッションを視聴したところ、昨年から今年にかけての大きな変化として “P4の適用領域のサーバサイドへの拡大、及びそれに伴うターゲットの増加” を感じました。
例えば、OVS(OpenVSwitch)のP4対応とそのオフロード技術(ソフト・ハード)に関する多くのセッションがありました。ハードウェア的には Intel IPU, NVIDIA(Mellanox) DPU, FPGA 等を搭載した SmartNIC 型のアクセラレータのP4対応が進んでいます。
また、今までは少数の研究者による取組であった CPU ベースの実装である P4 on DPDK/eBPF も企業メンバーが参加するようになり、 “P4 の活用には Tofino ASIC を搭載した高性能スイッチが必要” という状況に変化が始まっています。
しかし、サーバサイドのP4活用は、現状では技術者を多く抱えかつハードウェアベンダ(Intel等)の積極的な支援を受けられる(購買力のある) Google などの1部の巨大企業に限られている状況です。また、ネットワーク(パイプライン)をスクラッチからプログラムしたい人は少数であるため、ユーザを増やしマスにプログラマビリティを解放するためにはアプリケーション開発者が利用可能な、オープンなフレームワークが必要となります。そのため、オープンなAPIを策定し、それが動作するプラットフォームを開発するために、OPI (Open Programmable Infrastructure Project) [OPI] というコミュニティが今年(2022年)立ち上がりました。本ワークショップ中で OPI を紹介するセッションはありませんでしたが、セッション中でイノベーションを継続するために必要なオープンなフレームワークの重要性と、OPIのようなオープンコミュニティの重要性が語られています。[INTEL-EDGE]
セッションでは明示的に説明していませんでしたが、これらサーバサイドのP4活用の技術や実装詳細を理解するための前提知識として PNA (Portable NIC Architecture) の理解が有用です。仕様書 [PNA-SPEC] は25ページと短くはありませんが、”C. Appendix: Packet path figures” に記載された図を見てスイッチとは異なるパケット処理の流れを頭に入れるだけでも、サーバサイドのP4に関する技術情報を理解しやすくなると思います。
- [OPI] https://opiproject.org/
- [INTEL-EDGE] PROGRAMMABLE NETWORKING FOR A DISTRIBUTED EDGE
- [PNA-SPEC] https://p4.org/p4-spec/docs/PNA.html
新しいトピックとしてはサーバサイドのP4でしたが、実際にプロダクションに利用されているユースケースとしては、Tofino等の Switch ASIC に関する話題も多く紹介されています。例えば、アリババではロードバランサやテレメトリを活用した輻輳制御等、自社ネットワークに必要な機能を搭載したノードをP4を用いてベンダと共同開発しサービス利用した状況を発表しています。[ALIBABA]
また、新しいユースケースとしてモバイル事業者での活用例として SRv6 MUP (Mobile User Plane) [SOFTBANK] がソフトバンクから発表されています。
- [ALIBABA] THE JOURNEY TOWARDS PREDICTABLE NETWORK IN ALIBABA CLOUD
- [SOFTBANK] NETWORK PROGRAMMABILITY “SQUARED”
当然P4を利用して研究開発する人向けのセッションも多くありました。近年の傾向として、 “P4 を用いてパケット処理パイプラインをどうプログラムするか?” というデータプレーンの話題よりも、”P4 データプレーンをどう制御するか?” というコントロールプレーンの話題が中心となっています。
具体的には、TDI (Table Driven Interface) 、P4Runtime といったAPIのサーバサイドでの利用も考慮した拡張や、SONiC, PINS, IPDK/OPI といったスイッチOSやフレームワークが挙げられます。 [TDI] [SONIC] [SONIC-DASH] [PINS] [IPDK]
なお、これらのニーズに合わせたP4言語やアーキテクチャ、API等の拡張に関する議論状況は “P4 ON THE MOVE!” というセッションでも解説されています。
- [TDI] TABLE DRIVEN INTERFACE (TDI): USAGES AND ADVANTAGES
- [SONIC] SONIC, PROGRAMMABILITY & ACCELERATION
- [SONIC-DASH] P4 AS A SINGLE SOURCE OF TRUTH FOR SONIC DASH USE CASES ON BOTH SOFTSWITCH AND HARDWARE
- [PINS] PINS UPDATE AND ROADMAP, PINS PACKET I/O, PINS GETTING STARTED
- [IPDK] INTRODUCING IPDK
研究の試験実装プラットフォームとしてのP4活用は継続しており、K-melon (Change Detection), M-PolKA (Source Routing), PMNET (In-Network Persistence Memory), TCP-INT (INT using TCP option field) が紹介されています。
テーマ毎のまとめと注目セッション
今回はオンラインという事もあり、合計55個 と非常に多くのセッションが発表されました。
全てを視聴するには(著者の場合)断続的に2ヶ月近くかかりましたので、まずは Keynotes で現在の状況を把握したあとは、テーマやセッションタイトルから興味あるセッションをピックアップして視聴していくことをお勧めします。
セッションは以下6テーマに分類されています。(セッション数)
- Keynotes (9)
- Language (6)
- Target (9)
- Tool Chain (5)
- Control Plane and NOS (8)
- Application (18)
皆さんがそれぞれ興味あるセッションが発見できるように、テーマ毎の概要と、セッションの内容による分類を紹介します。
Keynotes
P4に関連した動きを過去の歴史と現在の活動を踏まえて紹介しているセッションが多く、P4の全体像を掴むのに必聴のセッション。これまで話題の中心だった Switch ASIC ではなく、IPU/DPUを中心としたサーバサイドでのP4活用話題が多く、今後も引き続きこの流れが続くと予想される。個別事例としては、Aribaba が SNA と呼ばれる独自ハードウェア・ソフトウェアの開発をしつつ活用しているのが興味深い。(ユースケースや事例は Application に多くのセッションがあるためそちらを参照)
Language
P4言語の改良を目指し、主に以下2点を中心にセッションで提案されている。
- Modularity, Portability をどう実現するか?
- スイッチではないアプリケーションにどう対応するか?
Modularity, Portability を議論している2つのセッションは、理想的なパイプラインを設計する場合には必要な視点を与えてくれるため、独自パイプラインを設計する際には参照する事がお勧め。
- EXTEND P4 TO SUPPORT RUNTIME PROGRAMMABILITY – IN DEPTH TALK
- APPLETS, A PORTABILITY AND COMPOSABILITY SOLUTION FOR P4 – IN DEPTH TALK
但し、IPSAはFPGAで実装&検証済だが、他はコンセプト提案に近い状況であり、かつ、それぞれ狭く深い前提知識が必要となるため、興味あるテーマがあればピックアップして視聴するだけでも十分。
Target
IPU/DPU/FPGA/CPU(DPDK/eBPF) など、様々なターゲット毎の話題をセッションで解説。Switch ASIC をターゲットとしたセッションは無く、関心がサーバサイドでのP4活用にも拡大している事が実感できる。
興味あるターゲットのセッションを参照するのを推奨。例えば、Pensandoでは、P4言語やコンパイラにどんな拡張が必要だったか? を解説している。なお、IPU/DPUに関しては、オープンなフレームワークをコミュニティベースで開発する OPI: Open Programmable Infrastructure Project の動きにも注目
- NIC型ArchitectureでのP4利用
- (Intel IPU) CONNECTION TRACKING USING P4 – IN DEPTH TALK
- (Pensando) LINE RATE IPSEC ON A PNA-COMPLIANT PACKET PROCESSING PIPELINE – IN DEPTH TALK
- (Pensando) P4 AT THE INTERFACE BETWEEN NIC AND HOST – IN DEPTH TALK
- モバイル
- (FPGA) SPEEDING UP NETWORK FPGA DESIGN USING P4 – IN DEPTH TALK
- P4 on CPU (DPDK, eBPF)
- P4 OVER LINUX TC – IN DEPTH TALK
- DEVELOP YOUR CPU NETWORK STACK IN P4 – IN DEPTH TALK
- P4 IN OPEN VSWITCH WITH OFP4 – TECH BRIEF
- PSA-EBPF: PORTABLE SWITCH ARCHITECTURE FOR EBPF – TECH BRIEF
- DEEP DIVE & GETTING STARTED WITH PSA IMPLEMENTATION FOR EBPF – TUTORIAL
Tool Chain
P4プログラムとコンパイラの開発を推進するツールチェーンの紹介。各ツールチェーンはまだコンセプト紹介~研究開発中で広く実用可能な状況ではないが、今後のP4含めたデータプレーンプログラミングを効率化させるためにどのようなツールチェーンが必要かのイメージが理解できる。なお、IPDKに関するセッションがあるが、広い意味ではツールチェーンであるものの、IPDKに関するチュートリアルとして視聴するのが良い
Control Plane and NOS
データプレーンプログラミング言語としてのP4は、Switch ASICだけでなく IPU/DPU/CPU にも適用範囲が広がりつつある。また、サンプルプログラムやノウハウも広まっており、ユースケースに応じたP4プログラムを記述する事は容易になってきている。半面、それを制御するコントロールプレーンはプログラム規模が大きくなりがちで、研究目的の単機能プログラムを作成する事は容易ではあるものの、スイッチとしての基本機能である設定管理、統計情報取得、L2/L3アプリケーションを実現する各種デーモン(サービス)との連携、等、スクラッチから開発するのはかなり大規模な開発チームが必要となり課題となっており、注目されている分野である。
本Workshopでは、それらを解決するための提案として、デファクトNOSであるSONiCとP4を組み合わせたPINS、テーブル設定の抽象化を進めコントロールプレーンを実装しやすくするTDI(Table Driven Interface)、デファクトSoftware SwitchであるOVSでのP4サポート、サーバサイドでSmartNICやSoftware Switchを制御するNOSとしてのSONIC-DASH、等、各セッションにて取り上げられている。
特に最もアクティブな領域であるNIC型のターゲットに関しては、以下のような課題や取組が紹介されているため要注目
- EVOLVING P4 RUNTIME FROM SWITCH TO DPU – IN DEPTH TALK
- Switch ⇒ Server に Target が移動する事による影響:より高いAPI(P4RT)性能要求(バルクAPIのサポート)、State保持の必要性
セッション分類
- IPU/DPU
- EVOLVING P4 RUNTIME FROM SWITCH TO DPU – IN DEPTH TALK
- PINS
- PINS UPDATE AND ROADMAP – IN DEPTH TALK
- PINS GETTING STARTED – TUTORIAL
- PINS PACKET I/O – IN DEPTH TALK
- その他
- TABLE DRIVEN INTERFACE (TDI): USAGES AND ADVANTAGES – IN DEPTH TALK
- P4 AS A SINGLE SOURCE OF TRUTH FOR SONIC DASH USE CASES ON BOTH SOFTSWITCH AND HARDWARE – IN DEPTH TALK
- P4-OVS SPLIT ARCHITECTURE – IN DEPTH TALK
- ACCELERATING 5G (MOBILE CORE) CONTROL PLANE USING P4 – IN DEPTH TALK
Application
様々なP4活用事例の紹介。「その他アプリケーション事例」に列挙されるように、サービスや製品のプラットフォームとしてP4活用が広がっている事がわかる。また、Switch ASIC だけでなく、IPU/DPUを用いた事例が広がってきている。
- Server Side での活用
- OVS Offload
- Encryption Offload
- Service Mesh (Side Car offload to IPU)
- ネットワークの状態把や輻輳制御 Congestion Control
- In Network Telemetry
- Change Detection
- Anomarly Detection
- その他アプリケーションの事例
- Server Load Balancer
- SRv6 MUP (Mobile User Plane)
- G-SRv6 on P4 + SONiC + ODL
- Service Mesh P4 Data Plane
- Path Tracing using Segment Routing
- P7 (P4 PROGRAMMABLE PATCH PANEL)
- 研究の試験実装
- K-melon (Change Detection)
- M-PolKA (Source Routing)
- PMNET (In-Network Persistence Memory)
- TCP-INT