...
P4 is not a protocol or device API for runtime control, i.e. once a P4 program is deployed to a device, P4 doesn’t tell us how that device can be controlled, for example to add or remove entries in match+action tables, or to read the value of a counter. How can ONOS control a P4-enabled device? There is no standard control protocol/API yet specifically targeted for P4, so far it is up to the switch target to expose a suitable API. P4Runtime is an effort in the P4 community to create a standard control-plane API portable across targets, they propose a gRPC-based APIs (p4runtime.proto).
oweverThe brigade will focus on P4Runtime as a southbound control protocol, however, different devices supporting P4 might expose different APIs. Similarly to how ONOS today deals with different flavors of OpenFlow exposed by different device vendors/models, heterogeneity of control protocol/APIs should be abstracted from applicationapplications.
Roadmap
[work in progress]
Short-term focus in 2017:
- support Design and implement southbound support for P4Runtime (via BMv2)
- Define and implement use cases to assess P4 southbound support
How to get involved:
Support for P4, and protocol-independence in general, will affect the whole ONOS platform, fromt the southbound to the northbound. The P4 brigade is looking for members willing to contribute! Contact Carmelo Cascone (carmelo@onalb.us) or David Boswell (david@onlab.us) if you are interested.