ClassBench:
A Packet Classification Benchmark |
This set of tools is no longer maintained or supported. |
Packet classification is an enabling
technology for next generation network services and often the primary
bottleneck in high-performance routers.
Due to the importance and complexity of the packet classification
problem, a myriad of algorithms and resulting implementations exist. The
performance and capacity of many algorithms and classification devices,
including TCAMs, depend upon properties of the filter set and query patterns.
Despite the pressing need, no standard performance evaluation tools or
techniques are available. Internet
service providers are reluctant to distribute copies of real filter sets for
security and confidentiality reasons, hence realistic test vectors are a scarce
commodity. The small subset of the research community who obtain real filter
sets either limit performance evaluation to the small sample space or employ ad
hoc methods of modifying those filter sets. In response to this problem, we
present ClassBench, a suite of tools for benchmarking packet
classification algorithms and devices. ClassBench includes a Filter
Set Generator that produces synthetic filter sets that accurately model the
characteristics of real filter sets. Along with varying the size of the filter
sets, we provide high-level control over the composition of the filters in the
resulting filter set. The tools suite also includes a Trace Generator that
produces a sequence of packet headers to exercise the synthetic filter set.
Along with specifying the relative size of the trace, we provide a simple
mechanism for controlling locality of reference in the trace. While we have
already found ClassBench to be very useful in our own research, we seek
to initiate a broader discussion and solicit input from the community to guide
the refinement of the tools and codification of a formal benchmarking
methodology.
15 July 2004 – Fixed bug in Filter Set Generator causing violation of destination address prefix nesting threshold and non-zero length 0.0.0.0 destination address prefixes.