DPF: fast, flexible packet demultiplexing
DPF: fast, flexible packet demultiplexing
Appeared in
ACM Communication Architectures, Protocols, and Applications (SIGCOMM '96)
.
Abstract
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
engler@lcs.mit.edu