📝

Rust P4 Compiler の解説ビデオ(Oxide Computer)

2023/08/15に公開

以前紹介した Rust P4 Compiler を作っている Oxide Computer が "P4 Open Source Dev Days Meeting" にて彼らがハードウェアから作った Tofino 2 ベースのスイッチや Rust P4 コンパイラの解説した際の録画&スライドが公開されました!

https://opennetworking.org/news-and-events/blog/building-a-rack-scale-computer-with-p4-at-the-core/

Oxide Computer や Rust P4 Compiler、 P4 Open Source Dev Days Meeting の紹介は以下記事を参照してください。

https://zenn.dev/ebiken_sdn/articles/b7f8198471fa9c
https://p4users.org/p4-open-source-dev-days-meeting/

以前解説した通り

  • P4 code を x4c コマンドを使用して Rust code にコンパイル
  • P4 code を Rust code に p4_macro::use_p4! マクロを利用してライブラリのようにP4プログラムを提供

という利用ができるコンパイラで、ASICターゲットは Tofino 2 に加え、ハードウェアを用意しなくてもP4開発ができるように ASIC emulator (Rust) も用意されています。

動画中では「どのようにコンパイルされるか?」も解説されていました。

以下のようなコメントを初め他にも1時間ほど様々なトピックについて話していますので、Rust/P4に興味ある人はぜひ録画を見てみてください。動作デモや実際のコードを見ながらの解説があり、スライドは前半の紹介だけをカバーしています。

  • (P4関係無いけど) DDM と呼ばれる独自のBGPライクな Path Vector ルーティングプロトコルを開発。ラックスケールの Layer 3 Routing に利用。delay driven multipath が特徴で、ECMPではなく遅延を元にマルチパスを制御している。
  • Open Source P4 compiler を使わなかった理由は Rust を使いたかったから。開発難易度高いのはコード生成の部分なので、フロントエンドはOSSのC++コードを再利用するより、Rustでスクラッチから書く方がメリットが多かった。
  • SmartNIC等のEdgeに機能が移っているのは理解しているが、だからと言ってスイッチのプログラマビリティが不要になるとは思っていない。

GitHub Repo も更新されており、ドキュメント(The x4c Book)も整備されていました。

https://github.com/oxidecomputer/p4

https://oxidecomputer.github.io/p4/book/

Discussion