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.
|