DCCP and CCID Testing

This page contains additional information. For information on DCCP/CCID testing in general, refer to the DCCP Testing pages at OSDL.

The experimental test tree

Mainline kernel development takes a long time, even if changes are small, and DCCP is in some respects not a finished and fully tested protocol. To promote continued development and testing under these circumstances, the DCCP test tree has been set up.

We encourage using this tree for tests and report suggestions and comments to the DCCP mailing list.

Here is a description of how to clone it - please use it and comment / contribute towards the DCCP development.

Further information is also contained in this posting.

Note: The test tree tracks the experimental netdev tree, which can mean occasional instability. To use the DCCP test tree code with other kernel versions, check this directory which has patches for older kernel versions which were known to work.

DCCP Probe

The dccp_probe module is a nice tool for diagnosing both the implementation as well as application performance.


The OSDL pages have some instructions on how to use this. The principle is to

Here is a script which automates the process with some more bells and whistles. Here is a list of scripts which can be used to analyse the output (the above pictures were generated that way, you may need to install gnuplot):

Using a separate box for traffic manipulation

To emulate network conditions, a separate box running NetEm is normally useful. By far the easiest way is to configure such a box (which will have at least two interfaces) as a layer-2 bridge. Here is a script to set this up. However, under Debian there is an even simpler way: install bridge-utils package and read the accompanying documentation. The simplest bridge configuration is to use an /etc/network/interfaces such as
auto br0
iface br0 inet manual
bridge_ports eth1 eth2
bridge_maxwait 0
When done setting up a bridge, use tc(8) to set up queueing disciplines - see the instructions on the DCCP testing page. For CCID3 testing, you can find a useful script for loss/delay (which computes the expected TFRC rate) here.

Implementing new CCIDs

Adding a new CCID requires a few steps apart from the obvious ones of adding Kconfig/Makefile entries:
As an example, we have a fully working CCID NULL "(UDP-like)" which is a self-contained CCID module sans congestion-control internals. The UDP-like CCID can be downloaded here, and a more detailed description of the steps involved in registering appeared in this posting.