(Beta Version)
  • CB+ is an toolkit for Performance benchmarking /Correctness check for the Packet Classification Algorithms
  • CB+ targets at benchmarking the end-to-end performance of the PC prototypes and extendable for benchmarking the end-to-end performance of "Route Lookup" + "Packet Classification" +"Deep Packet Inspection"
    • I/O processing and header parsing are included
    • Throughput in terms of both "bps" and "pps" can be estimated
  • CB+ works totally based on ClassBench (by D.E. Taylor)
    • CB+ read the synthetic rules generated by CB
    • CB+ modifies real packet traces according to the header trace db generated by CB:

      > the 5-tuple of the TCP/IP packets are modified according to the header trace
      > the match-results are "logged/tagged" in the L2 header of the packets, so that CB+ can check whether the PC is correct or not

  • Limitation of current CB+
    • I/O Based on libpcap, which is concerned to be with low performance
    • TBD:P

ClassBench Workflow

Fig. Workflow of ClassBench+ and ClassBench


Step #1: Download the package and have it compiled (tested with gcc on Linux 2.6@x86)

Step #2: Generate synthetic rule (e.g. acl1.txt) and the corresponding hdr trace file (acl1_trace.txt) using ClassBench

Step #3: Download/obtain tcpdump format real packet traces (e.g. pkttrace.tcpdump)

Step #4: Run ClassBench+ as a trace modifier. #> ./ClassBenchv2 -t acl1_trace.txt -T pkttrace.tcpdump -w mtrace.tcpdump

Step #5: Integrate the target PC algorithm into ClassBench+ (e.g. add the initiation routine and the search routine to the function pointer list pPCInit[] and pPCSearch[] respectively)

Step #6: Download tcpreplay and setup the load driver (a stand-alone server) , let the load drive "play" the trace mtrace.tcpdump

Setp #7: Run ClassBench+ as a Benchmark. #> ./ClassBenchv2 -f acl1.txt -i ethx -a AlgorthmID -l log -e
-e flag let ClassBench+ to log the error result only
-a option denote the PC algorithm to test
-f option specifies the filter set file
-i option specifies the NIC to listen

Step #7a: You can also run ClassBench+ in the offline mode, e.g. #> ./ClassBenchv2 -f acl1.txt -T mtrace.tcpdump -a AlgorthmID -l log -e
1) make sure that your memory is enough; otherwise, pls modify the macros on in ClassBenchv2.h
2) in this case, the traffic trace is read from local disk rather than from the network interface


ClassBench+: Source code for Classbench+, with two verified Packet Classification Algorithms (Hierarchy Trie and Extended-Grid-of-Trie)
ClassBench: Based on which ClassBench+ works
Tcpreplay: A useful tool to "replay" the tcpdump format traffic trace to the NICs
tcpdump format traces: some real life tcpdump format traffic traces from MIT
pcap-mmap: A libpcap version which supports MMAP mode on linux kernels 2.[46].x.
PF_RING: A new type of network socket that dramatically improves the packet capture speed (vs libpcap)

Apr 30, 2008


| Contact Me | Dept of Computer Science and Technology, Tsinghua Univ. P.R.China, 100084