P4 Open Source Dev Days Meeting の紹介

2021年11月4日に Andy Fingerhut (LinkedIn) の呼びかけ(※)により「オープンソースのP4に関連したどんな話題でもディスカッション可能な定例ミーティング」が2021年11月23日から2週に1回のペースで開催されています。

(※)アナウンスメントメール:[P4-dev] New meeting series: P4.org open source developer days

P4に関連したプロジェクトで何が話題になっているか、今後の方向性は?、などが見えてくるミーティングのため要チェックです。しかし、2022年2月15日現在、開催時間が日本時間の朝4~5時であるため、リアルタイムで参加する事は難しいかもしれません。

そこで議事録を頼りにどんなトピックが語られているのかまとめてみました。世界のP4コミュニティへの貢献するための興味あるテーマを考えるネタを探している人や、今後の動向について理解したい人などのご参考になればと思います。

議事録は毎回同じ Google Docs に追記されています。最新の情報はこちらをチェックしてください。

議事録 on Google Docs:2021年~現在

概要(P4 Open Source Dev Days Meeting

  • 参加資格:誰でも参加可能。但し現在は日本時間の深夜(早朝)4時~5時に開催。
  • 主催:P4.org。Andy Fingerhut がリード。
  • 内容:オープンソースの P4 プロジェクトに関する、機能の追加、バグ修正、新規プロジェクトの立ち上げ(要は何でもOK。メインはP4.orgや https://github.com/p4lang 掲載のプロジェクトになるが、限定されない)
  • 開催通知&議事録:p4-dev@lists.p4.org過去メールアーカイブ)にてアナウンス&共有

話題となっているプロジェクトやテーマ

  • Editor, IDE のP4対応(Emacs, VScode, etc.)
    • P4 comment/keyword のハイライト、parser, control, table, action, etc. の一覧表示やソースコードへのジャンプ、など。LSP Server?
    • 現状
      • Chris Sommers が Petra を P4 LSP Server として提案。
      • Vlad が p4-dev にメールされた P4_16 LSP Server を試したが、今のところ動作せず。
      • Cscope では jump-to-definition 機能が既に実現できている。が、Outline View も欲しい。
  • P4 include file (header.p4) の共通化提案
    • 2021/12/07 に Alan Lo at NVIDIA が提案
    • ⇒ P4Runtime API を利用したコントロールプレーンの移植性が高まるので、ぜひ推進して欲しい
    • 提案資料:Google Doc: Portable P4 Headers – PPH
  • IPDK project Project Web | GitHub | YouTube Channel
  • Linux kernel 内で動作する P4 Switch プロジェクト化の検討
    • eBPF, DPDK がある。DPDKは User Spaceなので eBPFが良い?
    • bf_knet のオープンソース化も検討する価値あり。Intel/Barefootプロプラな情報はほとんど含まれて無いためハードルは高くないはず。 by Vlad.
  • p4c backend: eBPF
    • 主催:Orange & Warsaw University of Technology
    • 将来的にはオープンソースのP4コンパイラ(p4c)として Contribute したい
    • 2022/03/01 の会議で Tomasz Osiński が解説する予定
  • CI workflows

考察メモ

  • 今後はASIC以外のターゲットをサポートするための、言語仕様およびコンパイラの拡張が進む?
  • 開発の効率化を支援するインフラ(ツールやワークフロー)の取組は継続されそう。(CIやパッケージングなどが得意な人は貢献すると歓迎されそう)
    • Editor, IDE のP4対応(Emacs, VScode, etc.)はぜひ実現して欲しい。Petra が LSP Server 候補に?
    • P4 include file (header.p4) の共通化提案も、P4Runtime API を利用したコントロールプレーンの移植性が高まるので、ぜひ推進して欲しい。提案資料:Google Doc: Portable P4 Headers – PPH
  • 軽量コントロールプレーンへの関心が高い(現状デファクトが無い)が、具体的な取り組みはまだ見えない。Contributionのチャンス?
  • p4c 徹底解説 … Talk on p4c structure and internals by Mihai Budiu は必聴!

参考資料

  • Open Source P4 Compiler (p4c) の内部構造の解説(52分)
    • 2022/02/15: “Understanding open-source P4_16 compiler” by Mihai Budiu
    • Front/Mid End に関連して以下3トピックを解説(Backendは含まない)
      • コンパイラのアーキテクチャ(Compiler Architecture)
      • コンパイラのIR構造(Intermediate Representation Structure)
      • visitor pattern を用いた拡張(compilation using visitors)
  • P4オープンソースツールへのビジョン by Nate Foster
    • (slide) 2021/11/23: Some Thoughts on P4 Futures, Nate Foster
    • Vision for future enhancements to the P4 open source development tools.
    • 今後の注力分野として、p4c/bmv2の継続的な文書追加やサンプル作成、新しいP4アーキテクチャ開発支援(on p4c/bmv2)、バックエンド(eBPF, DPDK, NetFPGA, etc.)、軽量コントローラープラットフォーム(POX for P4)、その他P4開発や動作のためのインフラ整備(Build scripts for Docker, VM. CI環境)を挙げている。

Tags: