⚙️

Rust P4 compiler ... oxidecomputer/p4

2022/11/11に公開

P4 を Rust にコンパイルするP4コンパイラが登場!

https://github.com/oxidecomputer/p4

  • P4 Code を x4c コマンドを使用して Rust code にコンパイル
  • P4 code を Rust code に use_p4! マクロを利用して直接インポート

という2つの利用方法を提供する P4 コンパイラ(当然Rustを利用して開発)

Non-Goals: Compilation to Rust code for production purposes.

"プロダクションはゴールではない" と記載されていたので、研究目的の実装かと思い Tweet したところ、なんと中の人が "Oxide Computer では仮想化されたテスト環境のスイッチとして利用しているよ" と返信が。

https://twitter.com/mxshift/status/1590974074381303808

しかもその P4 Code は本番環境と共通で本番環境では Tofino2 ASIC で動かしているとのこと。

https://twitter.com/mxshift/status/1590985838732926976

いままで仮想環境で Tofino ASIC 向けの P4 Code を動作させるには Intel が提供する SDE (Software Development Environment) に含まれるシミュレータ(Tofino Model)を利用するしかなかったので、新たな選択肢が産まれる可能性が見えたのは大きなニュース。

"P4 Runtime Specification support" も "Non-Goals" のため、SONiC等のNOSを使う汎用的なスイッチを動かす事はできませんが、サービスに合わせた P4 Code + Control Plane を書いて動かす際の仮想環境を用いた CI/CD での利用や沢山のインスタンスを起動してのテストなど、夢が広がります。

当然ながら自分で Rust & P4 を(そしてコンパイラの基本も?)理解していないと使いこなせないステータスですが、さらに "Stretch Goals" として "x86 code generation", "RISC-V code generation" と記載されているので期待しながら長い目で発展を見守りたいと思います。

Oxide Computer とは

Oxide Computer はクラウド(IaaS)をラック内で実現可能なソリューションを提供しているスタートアップ。"Made for operators" と標榜する通り、運用者が必要とする機能を実装した Virtual Private Cloud をサービス可能な Web Console や Compute / Storage / Network をテナント提供できる機能を実装しているようです。

P4 (Tofino2 Switch) は Oxide Virtual Private Cloud を実現するラック内ネットワークで活用されているようです。

https://oxide.computer/product/networking


Oxide Computer の創業は2019年。共同創業メンバーは Joyent, Docker, Mesosphere, Google, Microsoft 等の出身で、 "hyperscaler infrastructure for the rest of us" を掲げハイパースケーラーでなくてもクラウド(IaaS)を運用できるソフトウェアを提供する事を目的としているとのこと。

ソフトウェアのかなりの部分を Rust で開発しているようです。

https://www.infoq.com/news/2019/12/oxide-computer-company-launch/

https://www.infoq.com/presentations/oxide-rust/

おまけ

Ryan Goodfellow (Twitter: @rgoodfel) という人がリードして開発しているらしい。

https://twitter.com/arjenroodselaar/status/1590993038620622848

Discussion