Creating portable and efficient packet processing applications

Network processors are special-purpose programmable units deployed in many modern high-speed network devices, which combine flexibility and high performance. However, software development for these platforms is traditionally cumbersome due both to the lack of adequate programming abstractions and to the impossibility of reusing the same software on different hardware platforms.In this context, the Network Virtual Machine (NetVM) aims at defining an abstraction layer for the development of portable and efficient data-plane packet processing applications. Portability and efficiency are achieved altogether by virtualizing the hardware and by capturing in the programming model the peculiar characteristics of the application domain.This paper validates the NetVM model, demonstrating that the proposed abstraction coupled with a proper implementation of the NetVM Framework is able to provide generality (i.e., capability to support a wide range of applications), software portability across heterogeneous network processor architectures, and efficiency of the generated code, often exceeding the one obtained using state-of-the-art compilers.

[1]  M. Baldi,et al.  A framework for rapid development and portable execution of packet-handling applications , 2005, Proceedings of the Fifth IEEE International Symposium on Signal Processing and Information Technology, 2005..

[2]  Eddie Kohler,et al.  The Click modular router , 1999, SOSP.

[3]  Anton Korobeynikov Improving Switch Lowering for The LLVM Compiler System , 2007 .

[4]  David Gregg,et al.  Virtual machine showdown: stack versus registers , 2005, VEE '05.

[5]  Rainer Leupers,et al.  C Compiler Design for an Industrial Network Processor , 2001, OM '01.

[6]  Jakob Carlström,et al.  Synchronous dataflow architecture for network processors , 2004, IEEE Micro.

[7]  Andrew W. Appel,et al.  Iterated register coalescing , 1996, TOPL.

[8]  Michael K. Chen,et al.  Shangri-La: achieving high performance from compiled network applications while enabling ease of programming , 2005, PLDI '05.

[9]  Kurt Keutzer,et al.  NP-Click: a productive software development approach for network processors , 2004, IEEE Micro.

[10]  Steven S. Muchnick,et al.  Advanced Compiler Design and Implementation , 1997 .

[11]  Erik J. Johnson,et al.  IXP2400/2800 Programming: The Complete Microengine Coding Guide , 2003 .

[12]  Richard Sharp,et al.  Task Partitioning for Multi-core Network Processors , 2005, CC.

[13]  Fulvio Risso,et al.  An intrusion detection sensor for the NetVM virtual processor , 2009, 2009 International Conference on Information Networking.

[14]  Patrick Crowley,et al.  Design of a scalable network programming framework , 2008, ANCS '08.

[15]  Frank Yellin,et al.  The Java Virtual Machine Specification , 1996 .

[16]  David A. Patterson,et al.  Computer Architecture, Fifth Edition: A Quantitative Approach , 2011 .

[17]  David A. Patterson,et al.  Computer Architecture: A Quantitative Approach , 1969 .

[18]  Fulvio Risso,et al.  Towards Effective Portability of Packet Handling Applications across Heterogeneous Hardware Platforms , 2005, IWAN.

[19]  Mark N. Wegman,et al.  Efficiently computing static single assignment form and the control dependence graph , 1991, TOPL.

[20]  Fulvio Risso,et al.  Enabling Flexible Packet Filtering Through Dynamic Code Generation , 2008, 2008 IEEE International Conference on Communications.

[21]  Ju Liu,et al.  A Tunnel-Aware Language for Network Packet Filtering , 2010, 2010 IEEE Global Telecommunications Conference GLOBECOM 2010.

[22]  Christopher W. Fraser,et al.  BURG: fast optimal instruction selection and tree parsing , 1992, SIGP.

[23]  Ron Y. Pinter,et al.  Spill code minimization techniques for optimizing compliers , 1989, PLDI '89.

[24]  Keith D. Cooper,et al.  Improvements to graph coloring register allocation , 1994, TOPL.

[25]  Joseph A. Fisher,et al.  Trace Scheduling: A Technique for Global Microcode Compaction , 1981, IEEE Transactions on Computers.

[26]  Alfred V. Aho,et al.  Efficient string matching , 1975, Commun. ACM.

[27]  Edward A. Lee The problem with threads , 2006, Computer.

[28]  Ken Kennedy,et al.  Fast copy coalescing and live-range identification , 2002, PLDI '02.

[29]  Gokhan Memik,et al.  NEPAL : A Framework for Efficiently Structuring Applications for Network Processors , 2004 .