P4 API Working Group
The P4 language is designed to specify the dataplane of networking devices by combining a number of core abstractions, such as parsers, tables and externs. These abstractions instantiate pipeline objects, many of which needs to be managed at runtime to configure the desired forwarding behavior in the target device. As an example, the creation and deletion of entries in match-action tables is the most notable use case of P4 object management.
Since the runtime management of P4 objects is out of the scope of the P4 language itself, this Working Group is chartered to define protocol-independent runtime APIs for P4 device management. To complement these P4 runtime APIs, this working group will also specify the relationship between P4 runtime objects and entities that appear in the switch configuration, such as ports and platform-level functions. A practical way to achieve this would be, for example, to define an OpenConfig schema specific to a switch that exposes a P4 runtime API.
A P4 runtime API should support two main pieces of functionality:
We anticipate that the above functionality will require defining at least the following features:
The first item of work for the Working Group will be to define a vendor-independent, protocol-independent way for a control-plane to configure, program and control a P4 switch. To achieve this, the Working Group will deliver at least the followings: