washu.gif (2574 bytes)

CommBench - Applications

CAST ] DRR ] FRAG ] JPEG ] REED ] RTR ] TCP ] ZIP ]


CommBench consists of eight applications that we believe are representative of processing that can occur on network routers. Some applications are already common in many of today's routers (e.g., IP header checksum computation and DRR scheduling). Others requires custom-processing abilities in routers, which is something that will become more prevalent as network processors are deployed. Basically, CommBench applications can be classified into two categories:

  • Header-processing applications (HPA), which is the category of applications that process solely the header of a packet. In particular, no read or write operation is ever executed on the payload of the packet. This category of application is inherently quite simple, since typically only few operations are required to process a packet header.
  • Payload-processing applications (PPA), which is the category of applications that read and (possibly) modify the payload of a packet. There is no restriction on which portion of the packet can be read or written to. These applications, typically, require significant amounts of processing, since the whole payload is touched and processed.

There are four applications in the HPA category:

  • DRR, which is a deficit-round robin scheduling algorithm, which is commonly used for fair sharing of link bandwidth between different packet flows. The main computation in this applications is maintenance of queues and resource tokens.
  • FRAG, which is an application that fragments IP packet headers. The main computation in this application is the recomputation of the IP header checksum that is required for each fragmented header.
  • RTR, which is a routing lookup algorithm. It is based on the radix-tree routing algorithm used in many BSD UNIX implementations. The main computation is traversing routing trees and comparing address prefixes.
  • TCP, which is a monitoring program that filters TCP packet headers. Its main computation is pattern matching on packet header fields.

There are four applications in the PPA category. Each application has an encoding and a decoding part:

  • CAST, which is an implementation of the CAST-128 block cipher algorithm. It encrypts and decrypts data using a symmetric key. The main computation consists of encryption arithmetic.
  • JPEG, which is a lossy compression algorithm for image data. Its main computation is an (integer) discrete cosine transform and the Huffman coding of the results. The decoding portion performs the inverse operations.
  • REED, which is an implementation of an Reed-Solomon Forward Error Correction algorithm. It performs redundancy coding of the data. The decoding portion performs the correction of corrupted data that was Reed-Solomon encoded.
  • ZIP, which is an implementation of the Lempel-Ziv (LZ77) compression algorithm. It compresses and decompresses data using entropy encoding.

Each application is fed with data in the format that it requires. Some applications, like CAST, REED, and ZIP can take arbitrary data for encoding. In this case a mixture of HTML documents, image data, and executable files was used (to represent typical network packet content).

Some applications are based on code developed by other contributors, so please make sure to read the copyright notice.

 

© 2000, Washington University, see software copyright notice.
For problems or questions contact Tilman Wolf.
Last updated: October 24, 2000.