IPDK Networking Recipe (P4 Control Plane)
The initial implementation of P4-OVS was both physically and logically monolithic.
-
Two foreign components (Stratum and the Kernel Monitor) were added to a fork of the Open vSwitch repository.
-
OvS was modified to build these components and include them in
ovs-vswitchd. -
Stratum initialization was adapted to allow OvS to start the P4 Runtime and gNMI services.
-
Extensive changes were made to Stratum to support P4-enabled IPDK hardware and software switches.
The P4 Control Plane (formerly known as the Split Architecture) modularizes P4-OVS, making the code easier to maintain and more suitable for upstreaming.
-
Removed foreign components from the OvS repository, together with most of the changes to OvS itself.
-
Reengineered the Stratum modifications to be non-breaking and suitable for upstreaming to the parent project. Made
tdia distinct platform type, withtofinoanddpdkvariants (targets). -
Extracted the Kernel Monitor and make it a separate component. Removed OvS dependencies, and refactored for modularity and to support unit testing.
-
Created a new component (
infrap4d) that combines Stratum, the Kernel Monitor, TDI, and a P4 target driver into a separate process (daemon). -
Created a superproject (
networking-recipe) to integrate the components and orchestrate the overall build. -
Updated OvS to a more recent version.
-
Integrate the Kernel Monitor into
infrap4d. Merge changes that were made in P4-OVS after the original split was done. -
Create a component (
ovs-p4rt) that can be linked withovs-vswitchdto allow OvS to communicate withinfrap4d. -
Update to the current version of Stratum.
-
Upstream the OvS and Stratum changes to the parent projects.
-
The
external,p4runtime,stratum, andunit_testdirectories have been removed from theovsrepository. -
The
p4protodirectory has been removed. Locally-modified Stratum files were merged back into Stratum or discarded. Target-specific changes were made part of thedpdkandtofinovariants of thetdiplatform. -
OvS no longer manages Stratum or the Kernel Monitor. It also no longer makes direct calls to the Kernel Monitor or switch driver. All communication with Stratum will be by means of calls to the OvS client API (
ovs-p4rt), which sends gRPC requests toinfrap4d. -
The
barefootStratum code has been restored to its original state.
Implementation is being done incrementally through ipdk-io repositories.
-
OvS development takes place on the
split-archbranch of theipdk-io/ovsrepository. -
Stratum development takes place on the
split-archbranch of theipdk-io/stratum-devrepository. -
Kernel Monitor development takes place on the
mainbranch of theipdk-io/krnlmonrepository. -
Superproject development takes place on the
mainbranch of theipdk-io/networking-reciperepository.