DPF: fast, flexible packet demultiplexing

DPF: fast, flexible packet demultiplexing

Appeared in ACM Communication Architectures, Protocols, and Applications (SIGCOMM '96) .


The two goals of fast demultiplexing and flexible demultiplexing are well-established in the networking community [Bailey, Mogul, Thekkath ]. Currently, however, network architects have had to sacrifice one for the other. We present a new packet-filter system, DPF (Dynamic Packet Filter), that provides both the traditional flexibility of packet filters~\cite{mogul:packet-filter} and the speed of hand-crafted demultiplexing routines~\cite{clark:analysis}. DPF filters run 10--50 times faster than the fastest packet-filter numbers reported in the literature. DPF's performance is either equivalent to or, when it can exploit runtime information, superior to hand-coded demultiplexors. DPF achieves high performance by using a carefully-designed declarative packet-filter language that is aggressively optimized using dynamic code generation. The contributions of this work are: (1) a detailed description of the DPF design, (2) discussion of the use of dynamic code generation and quantitative results on its performance impact, (3) quantitative results on how DPF is used in the Aegis kernel to export network devices safely and securely to user space so that UDP and TCP can be implemented efficiently as user-level libraries, and (4), the unrestricted release of the DPF system into the public domain.

Complete Paper (postscript, 7 pages)
Slides from the talk .

Source release

The latest DPF release (for MIPS and Alpha) is here.

vcode: fast, portable dynamic code generation

The vcode system that DPF uses for dynamic code generation is described here.

Other Publications

Dawson Engler