This talk presents daPIPE, a DAta Plane Incremental Programming Environment, that supports a developer in adding data plane features to a network device running a data plane program and a corresponding network operating system, such as ONOS, NXOS, or Cumulus Linux. Adding features to the data plane of a closed network device or an open network software stack (i.e., the data plane program associated to a network operating system developed for an open platform) leads to a number of challenges, mostly stemming from the fact that P4 was not designed for modular or incremental programming. Although an effort in this direction has started within the Language Design Working Group, the currently available version of the language and the related software development tools assume that a program is written by a single programmer or a group of programmers working together. This is problematic as the user might not want to have to familiarize with a P4 program shipped with a turn-key box or downloaded from an open-source repository, having to deal with its extent and complexity, for the sake of just adding a few lines of code. Moreover, modifying the native P4 program can compromise the associated network operating system ability to properly control the native data plane functions, which would make them ineffective.
We discuss how daPIPE addresses the above challenges and demonstrate how it can be used to add custom features to a switching system featuring a pre-existing data plane and network operating system. As a concrete example, we deploy daPIPE with a Cisco Nexus 34180YC, based on Barefoot Networks’ Tofino P4-programmable forwarding engine, to address a well-known use case published by Fox Advanced Technology on Github (
https://github.com/FOXNEOAdvancedTechnology/ts_switching_P4): switching media flows based on the RTP timestamp.