DCCP
DCCP (Datagram Congestion Control Protocol) is designed to give congestion control over unreliable delivery. In a sense it is UDP with sessions and congestion control or TCP without reliability. There is much more to it than this of course.
The official site of DCCP could be considered to be this page - http://www.read.cs.ucla.edu/dccp/
The official page for the DCCP implementation in Linux is - http://linux-net.osdl.org/index.php/DCCP
Waikato Linux Users Group (WLUG) has a useful page on DCCP - http://www.wlug.org.nz/DCCP
To see my commits to the kernel see here,
here
or here.
Tips for use
Download 2.6.20 and if using CCID3 in particular use my set of
working patches below on top (use stgit to help you manage them). These
patches are aiming to get merged in the near future. These patches are
roughly equivalent to Gerrit Renker's set and you can use them if you
prefer. I think his might be needed if you use Linus' git tree as there
has been quite a lot of white space tidyup which will probably break my
patch set.
Here is a script I use when testing with CCID3:
sudo modprobe dccp
sudo modprobe dccp_ccid3
sudo sysctl -w
net.dccp.default.seq_window=10000
sudo sysctl -w
net.dccp.default.send_ackvec=0
sudo sysctl -w
net.dccp.default.rx_ccid=3
sudo sysctl -w
net.dccp.default.tx_ccid=3
Here is a script I use when testing with CCID2:
sudo modprobe dccp
sudo modprobe dccp_ccid2
sudo sysctl -w
net.dccp.default.seq_window=10000
sudo sysctl -w
net.dccp.default.send_ackvec=1
sudo sysctl -w
net.dccp.default.rx_ccid=2
sudo sysctl -w
net.dccp.default.tx_ccid=2
And here is how to alter queue length for CCID3:
sudo sysctl -w
net.dccp.default.tx_qlen=$1
Typically I use a queue length of 5 if emulating UDP performance and
16K/packet size if emulating TCP (this is default buffer size on my
machine using 2.6.20).
Here is how I turn loss with delay on:
/sbin/tc qdisc add dev lan1 root
netem delay $1ms loss $3%
/sbin/tc qdisc add dev lan0 root
netem delay $1ms loss $2%
and off:
/sbin/tc qdisc del dev lan1 root
netem
/sbin/tc qdisc del dev lan0 root
netem
And rate control with delay on:
/sbin/tc qdisc add dev lan0 root
handle 1:0 netem delay $1ms
/sbin/tc qdisc add dev lan1 root
handle 1:0 netem delay $1ms
/sbin/tc qdisc add dev lan0
parent 1:1 handle 10: tbf rate $2kbit buffer 10000 limit 30000
and off:
/sbin/tc qdisc del dev lan0
parent 1:1
/sbin/tc qdisc del dev lan0 root
/sbin/tc qdisc del dev lan1 root
Linux DCCP Patches
Here are my patches for
DCCP for 2.6.20 that I use for my research. Remember not to apply patch
30 in particular as this will make things behave very differently.
Here are my working patches for DCCP for
DaveM's/Acme's 2.6.22 tree.
Here are my working patches for DCCP for
Gerrit's tree as of 2.6.24 or later.
NB. These patches are more for my reference now as the mainline kernel has moved on quite a bit and so has Gerrit's.
Current DCCP
development/testing
Currently Gerrit Renker is leading DCCP development, particularly for
CCID3 but also other areas also. He has a web page here and a git
tree at git://eden-feed.erg.abdn.ac.uk/dccp_exp.git
There is a DCCP
testing page on the official Linux
networking Wiki which explains how to use Gerrit's and general
testing.
Misc software/links
ttcp for DCCP (from Arnaldo)
ttcp for DCCP (that I've altered slightly)
Software page (with iperf for DCCP
and TCP congestion on)
A spreadsheet to calculate TFRC/CCID3
throughput - recommend below though instead.
Perry's
throughput calculator - set MSS to match the parameter s in DCCP
for CCID3.
The file used to create the TFRC lookup
tables in the Linux code base.
Here is some sample code for
DCCP. (ugly but working)
Here
is a list of patches I have been involved in for the Linux kernel.
See also my slides page and my papers page.
Last updated: 2nd December 2007
Back to home page