Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

P4 allows programming of many devices in an target-independent manner, using high-level constructs. In principle, P4 programs should be portable. The same program, when compiled for different targets, should produce the same forwarding behavior. Finally, P4 allows for reconfigurability in the field. In other words, once deployed, a P4-enabled device can be reconfigured with a new P4 program to provide support for new forwarding capabilities. 

...

In ONOS we are ultimately interested in device the capabilities of networking devices and ways to ease the configuration and control of such capabilities. P4 is becoming the common language spoken by switch vendors and operators to agree on what the data plane can or should do. Indeed, P4 is meant as both a specification language, e.g. to formally specify how a fixed-function switch ASIC works,  and and a programming language. In its mission to ease the life of operators, and to promote faster innovation in the network, ONOS should be able to understand and potentially speak P4. Understand, i.e. to parse P4 programs to be aware of the capabilities of a given device and to expose higher-level APIs to control them. Speak, to deploy new capabilities, ie.eg. to generate generating or modify modifying existing P4 programs, that can be later controlled to satisfy the application needs of applications.

Runtime control of P4 devices

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). The 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, heterogeneity of control protocol/APIs should be abstracted from applications.

...

The scope of this brigade is to make ONOS aware of this new dimension of programmability, in which support for new forwarding/processing capabilities can be added by writing and deploying P4 programs.

The P4 paradigm is very different from the current fixed-function one derived from OpenFlow and abstracted by ONOS. Today, capabilities are tightly coupled to a specific device vendor and model. Different devices expose different capabilities, e.g. match on different headers and support for different actions. Once the network infrastructure has been deployed, capabilities cannot be changed, ONOS can just control them, e.g. installing flow rules. Instead with P4, the capabilities of a device can change in time. P4 programs can be provided by switch vendors, operators, applications or ONOS itself. Moreover, the type of capabilities that can be described with P4 go well beyond that described by OpenFlow.

ONOS APIs and services should capture this new dimension of flexibility. On how this should be done, this is up to the brigade. Before explaining the roadmap, it is useful to clarify two points.

Roadmap

[work in progress]

Short-term focus in 2017:

  • Design and implement southbound support for P4Runtime (via BMv2)
  • Define and implement use cases to assess P4 southbound

[work in progress]

Short-term focus in 2017:

  • Southbound support for P4Runtime
  • Minimal amendments to northbound APIs to support protocol-independence (e.g. support for non-standard match/actions in flow rules)

Long-term focus:

  • Rethink northbound APIs to capture P4 enhanced capabilities, e.g. more visibility (via inband network telemetry) and stateful processing.
  • Services to support incremental reprogramming, i.e. deploy a new P4 program to devices while traffic in flowing.
  • Possibility to optimize existing P4 programs or auto-generate new ones based on application needs and traffic workload.

How to get involved:

Support for P4 , and protocol-independence in general, will affect the whole ONOS platform, fromt from 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.