Programming language optimizations for modular router configurations

Networking systems such as Ensemble, the x-kernel, Scout, and Click achieve flexibility by building routers and other packet processors from modular components. Unfortunately, component designs are often slower than purpose-built code, and routers in particular have stringent efficiency requirements. This paper addresses the efficiency problems of one component-based router, Click, through optimization tools inspired in part by compiler optimization passes. This pragmatic approach can result in significant performance improvements; for example, the combination of three optimizations reduces the amount of CPU time Click requires to process a packet in a simple IP router by 34%. We present several optimization tools, describe how those tools affected the design of Click itself, and present detailed evaluations of Click's performance with and without optimization.

[1]  Walid Dabbous,et al.  Generating efficient protocol code from an abstract specification , 1996, SIGCOMM '96.

[2]  Dennis M. Ritchie,et al.  A stream input-output system , 1990 .

[3]  K. K. Ramakrishnan,et al.  Eliminating receive livelock in an interrupt-driven kernel , 1996, TOCS.

[4]  EDDIE KOHLER,et al.  The click modular router , 2000, TOCS.

[5]  Walid Dabbous,et al.  Generating efficient protocol code from an abstract specification , 1996, SIGCOMM 1996.

[6]  Dawson R. Engler,et al.  DPF: Fast, Flexible Message Demultiplexing Using Dynamic Code Generation , 1996, SIGCOMM.

[7]  Steven McCanne,et al.  BPF+: exploiting global data-flow optimization in a generalized packet filter architecture , 1999, SIGCOMM '99.

[8]  John H. Hartman,et al.  Optimizing TCP forwarder performance , 2000, TNET.

[9]  Larry L. Peterson,et al.  Analysis of techniques to improve protocol processing latency , 1996, SIGCOMM '96.

[10]  Larry L. Peterson,et al.  OS support for general-purpose routers , 1999, Proceedings of the Seventh Workshop on Hot Topics in Operating Systems.

[11]  Elizabeth D. Zwicky,et al.  Building internet firewalls , 1995 .

[12]  Julian R. Ullmann,et al.  An Algorithm for Subgraph Isomorphism , 1976, J. ACM.

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

[14]  D. M. Ritchie,et al.  The UNIX system: A stream input-output system , 1984, AT&T Bell Laboratories Technical Journal.

[15]  Eric Eide,et al.  Knit: component composition for systems software , 2000, OSDI.

[16]  Christoph Kreitz,et al.  Building reliable, high-performance communication systems from components , 2000, OPSR.

[17]  Larry L. Peterson,et al.  The x-Kernel: An Architecture for Implementing Network Protocols , 1991, IEEE Trans. Software Eng..