You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Generation of Rust packet pipeline code from the Sidecar P4 AST.
Execution of the Sidecar Rust packet pipeline code in the SoftNPU pipeline execution harness which provides network I/O through the pipelines.
Implementation of SoftNPU as Propolis device (logistically similar to the current sidemux Propolis device)
Implementation of the necessary Barefoot SDE functions for DPD to run atop SoftNPU running as a Propolis device. Implment AAL interface in dendrite/asic/softnpu.
Note: Not considering full sidecar compilation as a blocker for MVP. Execution of sidecar-lite.p4 is sufficient for RAP purposes. In the fullness of time, we'll want sidecar-lite.p4 to go away. But this is not a blocker for RAP MVP.
Milestones
The Sidecar P4 code is relatively complex. And we'll not start by jumping into that code directly. The following are a series of milestones that build up to running the Sidecar P4 code from x4c (the compiler contained in this repo) compiled code and running that code on a Propolis-based SoftNPU device.
SoftNPU Packet Hub
This is a simple hub, i.e. a switch that broadcasts any packet it receives on all the ports that it has.
AST generation
Rust packet pipeline code generation.
SoftNPU Execution
Automated test coverage.
SoftNPU Packet Router
This is a simple router that has a pair of tables for IPv4 and IPv6 for longest prefix match (LPM) routing. IPv6 is the priority here.
AST generation
Rust packet pipeline code generation.
SoftNPU Execution
Automated test coverage.
SoftNPU Packet Router with Services and CPU Port
This builds on the previous Packet router. In addition to pure LPM routing, a services table is added which contains a combination of ternary and exact packet classifiers that can direct packets to custom service actions, some of which include forwarding to and from a special CPU port. Packets going to/from the CPU port will also carry the Sidecar header like they do in our existing Sidecar P4 code.
AST generation
Rust packet pipeline code generation.
SoftNPU Execution
Automated test coverage.
Packet Encapsulation and NAT
AST generation
Rust packet pipeline code generation.
SoftNPU Execution
TCP/UDP NAT
ICMP NAT
P4 Compiler Internals
The above tasks identify milestones on the path to victory. This section lists tasks that need to be accomplished inside the compiler for the above to work.
Ternary classification support in the HiCuts decision tree.
LPM classification support in the HiCuts decision tree.
Scalable pipeline observability (e.g. not the firehose or nothing approach of the Tofino sim). Leveraging the usdt crate seems like a good place to start here.
Complete Expression parsing, e.g. all the various operations that can happen on packet fields and variables. Not blocker for RAP MVP
Complete Expression code generation. Not blocker for RAP MVP.
The text was updated successfully, but these errors were encountered:
This is a tracking issue for the minimum viable product (MVP) needed for the remote access preview (RAP).
At a high level, the RAP requires
Compilation of the Sidecar P4 code into a complete P4 AST.Compilation of Sidecar-lite P4 codeImplementation of the necessary Barefoot SDE functions for DPD to run atop SoftNPU running as a Propolis device.Implment AAL interface in dendrite/asic/softnpu.Note: Not considering full sidecar compilation as a blocker for MVP. Execution of
sidecar-lite.p4
is sufficient for RAP purposes. In the fullness of time, we'll wantsidecar-lite.p4
to go away. But this is not a blocker for RAP MVP.Milestones
The Sidecar P4 code is relatively complex. And we'll not start by jumping into that code directly. The following are a series of milestones that build up to running the Sidecar P4 code from x4c (the compiler contained in this repo) compiled code and running that code on a Propolis-based SoftNPU device.
SoftNPU Packet Hub
This is a simple hub, i.e. a switch that broadcasts any packet it receives on all the ports that it has.
SoftNPU Packet Router
This is a simple router that has a pair of tables for IPv4 and IPv6 for longest prefix match (LPM) routing. IPv6 is the priority here.
SoftNPU Packet Router with Services and CPU Port
This builds on the previous Packet router. In addition to pure LPM routing, a services table is added which contains a combination of ternary and exact packet classifiers that can direct packets to custom service actions, some of which include forwarding to and from a special CPU port. Packets going to/from the CPU port will also carry the Sidecar header like they do in our existing Sidecar P4 code.
Packet Encapsulation and NAT
P4 Compiler Internals
The above tasks identify milestones on the path to victory. This section lists tasks that need to be accomplished inside the compiler for the above to work.
HiCutsdecision tree.HiCutsdecision tree.CompleteNot blocker for RAP MVPExpression
parsing, e.g. all the various operations that can happen on packet fields and variables.CompleteNot blocker for RAP MVP.Expression
code generation.The text was updated successfully, but these errors were encountered: