Design Automation for Embedded Systems

, Volume 15, Issue 1, pp 51–85 | Cite as

Creating portable and efficient packet processing applications

  • Olivier Morandi
  • Fulvio RissoEmail author
  • Pierluigi Rolando
  • Silvio Valenti
  • Paolo Veglia


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.


Network Virtual Machine Network processors High-speed packet processing Network code portability 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Aho AV, Corasick MJ (1975) Efficient string matching: an aid to bibliographic search. Commun ACM 18(6):333–340 CrossRefzbMATHMathSciNetGoogle Scholar
  2. 2.
    Baldi M, Risso F (2005) A framework for rapid development and portable execution of packet-handling applications. In: Proceedings of the 5th IEEE international symposium on signal processing and information technology, December 2005, pp 233–238 CrossRefGoogle Scholar
  3. 3.
    Baldi M, Risso F (2005) Towards effective portability of packet handling applications across heterogeneous hardware platforms. In: Proceedings of the 7th annual international working conference on active and programmable networks, November 2005 Google Scholar
  4. 4.
    Bernstein D, Golumbic M, Mansour Y, Pinter R, Goldin D, Krawczyk H, Nahshon I (1989) Spill code minimization techniques for optimizing compliers. In: PLDI ’89: proceedings of the ACM SIGPLAN 1989 conference on programming language design and implementation. ACM, New York, pp 258–263 CrossRefGoogle Scholar
  5. 5.
    Briggs P, Cooper KD, Torczon L (1994) Improvements to graph coloring register allocation. ACM Trans Program Lang Syst 16(3):428–455 CrossRefGoogle Scholar
  6. 6.
    Budimlic Z, Cooper KD, Harvey TJ, Kennedy K, Oberg TS, Reeves SW (2002) Fast copy coalescing and live-range identification. In: PLDI ’02: proceedings of the ACM SIGPLAN 2002 conference on programming language design and implementation. ACM, New York, pp 25–32 CrossRefGoogle Scholar
  7. 7.
    Carlstrom J, Boden T (2004) Synchronous dataflow architecture for network processors. IEEE MICRO 24(5):10–18 CrossRefGoogle Scholar
  8. 8.
    Chen MK, Li XF, Lian R, Lin JH, Liu L, Liu T, Ju R (2005) Shangri-la: achieving high performance from compiled network applications while enabling ease of programming. In: Proceedings of the 2005 ACM SIGPLAN conference on programming language design and implementation Google Scholar
  9. 9.
    Ciminiera L, Leogrande M, Liu J, Morandi O, Risso F (2010) A tunnel-aware language for network packet filtering. In: IEEE Globecom 2010—next generation networking symposium, Miami, FL (USA), December 2010 Google Scholar
  10. 10.
    Cytron R, Ferrante J, Rosen BK, Wegman MN, Zadeck FK (1991) Efficiently computing static single assignment form and the control dependence graph. ACM Trans Program Lang Syst 13(4):451–490 CrossRefGoogle Scholar
  11. 11.
    Ennals R, Sharp R, Mycroft A (2005) Task partitioning for multi-core network processors. In: Proceedings of the international conference on compiler construction (CC) Google Scholar
  12. 12.
    European Computer Manufacturers Association. Common language infrastructure (CLI)—Partitions I to VI. International standard; ECMA-335 ISO 9660: 1988 (E), ECMA International, Geneva, June 2006 Google Scholar
  13. 13.
    Fisher JA (1995) Trace scheduling: a technique for global microcode compaction. IEEE Computer Society Press, Los Alamitos, pp 186–198 Google Scholar
  14. 14.
    Fraser CW, Henry RR, Proebsting TA (1992) Burg: fast optimal instruction selection and tree parsing. ACM SIGPLAN Not 27(4):68–76 CrossRefGoogle Scholar
  15. 15.
    George L, Appel AW (1996) Iterated register coalescing. ACM Trans Program Lang Syst 18(3):300–324 CrossRefGoogle Scholar
  16. 16.
    Hennessy JL, Patterson DA (2006) Computer architecture: a quantitative approach. Morgan Kaufmann, San Francisco zbMATHGoogle Scholar
  17. 17.
    Johnson EJ, Kunze AR (2003) Ixp2400-2800 Programming: the complete microengine coding guide. Intel Press Google Scholar
  18. 18.
    Korobeynikov A (2007) Improving switch lowering for the LLVM compiler system. In: Proceedings of the 2007 spring young researchers colloquium on software engineering (SYRCoSE’2007). Moscow, Russia, May 2007 Google Scholar
  19. 19.
    Lee EA (2006) The problem with threads. Computer 39(5):33–42 CrossRefGoogle Scholar
  20. 20.
    Lindholm T, Yellin F (1999) Java virtual machine specification. Addison-Wesley Longman Publishing Co, Inc, Boston Google Scholar
  21. 21.
    Memik G, Mangione-Smith WH (2003) Nepal: a framework for efficiently structuring applications for network processors. In: Proc of second workshop on network processors (NP), held in conjunction with HPCA, Anaheim, CA, Feb 2003 Google Scholar
  22. 22.
    B. Microsystems (2007) Chesapeake network processor (see the press release:
  23. 23.
    Morandi O, Moscardi G, Risso F (2009) An intrusion detection sensor for the netvm virtual processor. In: International conference on information networking, 2009. ICOIN 2009, pp 1–5, Jan 2009 Google Scholar
  24. 24.
    Morandi O, Risso F, Baldi M, Baldini A (2008) Enabling flexible packet filtering through dynamic code generation. In: IEEE international conference on communications, 2008. ICC ’08, pp 5849–5856, May 2008 Google Scholar
  25. 25.
    Morris R, Kohler E, Jannotti J, Kaashoek MF (1999) The click modular router. SIGOPS Oper Syst Rev 33(5):217–231 CrossRefGoogle Scholar
  26. 26.
    Muchnick SS (1997) Advanced compiler design and implementation. Morgan Kaufmann, San Francisco Google Scholar
  27. 27.
    Myers G. Overview of IP fabrics’ PPL language and virtual machine, white paper Google Scholar
  28. 28.
    C. Networks (2004) Octeon network processors (see the press release:
  29. 29.
    Shah N, Plishker W, Ravindran K, Keutzer K (2004) Np-click: a productive software development approach for network processors. IEEE MICRO 24(5):45–54 CrossRefGoogle Scholar
  30. 30.
    Shi Y, Casey K, Ertl MA, Gregg D (2008) Virtual machine showdown: stack versus registers. ACM Trans Archit Code Optim 4(4). doi: 10.1145/1328195.1328197
  31. 31.
    Wagner J, Leupers R (2001) C compiler design for an industrial network processor. In: LCTES ’01: Proceedings of the ACM SIGPLAN workshop on languages, compilers and tools for embedded systems. ACM, New York, pp 155–164 CrossRefGoogle Scholar
  32. 32.
    Wun B, Crowley P, Raghunath A (2008) Design of a scalable network programming framework. In: ANCS ’08: proceedings of the 4th ACM/IEEE symposium on architectures for networking and communications systems. ACM, New York, pp 10–18 CrossRefGoogle Scholar
  33. 33.
    Xelerated (2003) Xelerator X11 network processor (see the press release:
  34. 34.
    The Netgroup at Politecnico di Torino (2004) The NetBee library. Available online at

Copyright information

© Springer Science+Business Media, LLC 2011

Authors and Affiliations

  • Olivier Morandi
    • 1
  • Fulvio Risso
    • 1
    Email author
  • Pierluigi Rolando
    • 1
  • Silvio Valenti
    • 2
  • Paolo Veglia
    • 2
  1. 1.Department of Computer and Control EngineeringPolitecnico di TorinoTorinoItaly
  2. 2.TELECOM ParisTechParisFrance

Personalised recommendations