Extern Objects in P4: an ROHC Header Compression Scheme Case Study

P4 is an emergent packet-processing language with which the user can describe how the packets are to be processed in a switching element. This paper presents a way to implement complex operations that are not natively supported in P4. In this work, we explored two different methods to add extensions to P4: i) using new native primitives and ii) using extern instances. As a case study, an ROHC entity was implemented and invoked in a P4 program. The tests showed similar relative performance in both methods in terms of normalized packet latency. However, extern instances appear to be more suitable for target-specific switching applications, where the manufacturer/vendor can specify its own specific operations without changes in the P4 syntax and semantics. Extern instances only require changes in the target-specific backend compiler while keeping the P4 frontend compiler unchanged. The use of externs also results in a more elegant code solution since they are implemented outside the switch-core, thus reducing side effects risks that can be caused by a modification in a switch pipeline implementation.

[1]  David Walker,et al.  Frenetic: a network programming language , 2011, ICFP.

[2]  Jamie K. Wolff,et al.  P4 , 1987 .

[3]  Fernando Pedone,et al.  Network Hardware-Accelerated Consensus , 2016, ArXiv.

[4]  Ralph Duncan,et al.  packetC Language for High Performance Packet Processing , 2009, 2009 11th IEEE International Conference on High Performance Computing and Communications.

[5]  Huynh Tu Dang,et al.  P4FPGA: A Rapid Prototyping Framework for P4 , 2017, SOSR.

[6]  Stefano Giordano,et al.  A purely functional approach to packet processing , 2014, 2014 ACM/IEEE Symposium on Architectures for Networking and Communications Systems (ANCS).

[7]  Haoyu Song,et al.  Unified POF Programming for Diversified SDN Data Plane , 2014, ArXiv.

[8]  Víctor Manuel Ramos Ramos,et al.  SDN meets SDR in self-organizing networks: fitting the pieces of network management , 2016, IEEE Communications Magazine.

[9]  Haoyu Song,et al.  Protocol-oblivious forwarding: unleash the power of SDN through a future-proof forwarding plane , 2013, HotSDN '13.

[10]  Samar Abdi,et al.  PFPSim: A programmable forwarding plane simulator , 2016, 2016 ACM/IEEE Symposium on Architectures for Networking and Communications Systems (ANCS).

[11]  David Walker,et al.  Languages for software-defined networks , 2013, IEEE Communications Magazine.

[12]  George Varghese,et al.  P4: programming protocol-independent packet processors , 2013, CCRV.

[13]  Martín Casado,et al.  The Design and Implementation of Open vSwitch , 2015, NSDI.

[14]  Lars-Erik Jonsson,et al.  The RObust Header Compression (ROHC) Framework , 2007, RFC.

[15]  Nick McKeown,et al.  PISCES: A Programmable, Protocol-Independent Software Switch , 2016, SIGCOMM.

[16]  Tinku Mohamed Rasheed,et al.  Cellular software defined networking: a framework , 2015, IEEE Communications Magazine.

[17]  Yan Luo,et al.  P4GPU: Accelerate packet processing of a P4 program with a CPU-GPU heterogeneous architecture , 2016, 2016 ACM/IEEE Symposium on Architectures for Networking and Communications Systems (ANCS).