DCCP Socket Programming

This page provides pointers to currently known DCCP applications. If you know any further applications, please post information to the mailing list  or add to the OSDL Pages.

Note: Some of these test programs require features of the DCCP test tree.

VLC patch

By extending the SVN version (not the stable release) of VLC, it is possible to stream DCCP audio and video via VLC. The patch is small but supports both raw Transport Streams (TS) and TS over RTP/DCCP. To build this,
Further help on building is in the VLC Unix Compile HowTo, here are local build notes. To use the patched client/server,

iperf

The iperf tool is very good, it is threaded (which means you can try e.g. 40 connections in parallel). Select from one of
There is one important difference to other variants of iperf and to ttcp above: the use of a packet-oriented constant-bit-rate mode. DCCP is a datagram-based protocol, the original patches to iperf and ttcp above treat DCCP as if it were TCP, by stuffing as many bytes into the socket as  possible. The result is that DCCP is always trying to running at top (benchmarking) speed. This does not work with all CCIDs (pluggable Congestion Control modules, set via /proc/sys/net/dccp/default/*_ccid): CCID 3 for instance can not control high network speeds. For these cases it is good to run tests with a constant-bit-rate. This works as in UDP, using the `-b' switch, giving the following choice of modes:

Mode
Switch
Client Example
Server Example
Bytestream
-d
ttcp -d       -c server
ttcp -sd
Packet-oriented
-d -b<rate>
ttcp -d -b12m -c server
ttcp -sdb

In the second row, the client has requested a bandwidth of 12 Mbits/sec (needs to run longer than 10sec).
NB: Packet-oriented mode needs to be enabled on both client and server in order to work correctly.

Audio Clients

In the table below are a few patches and tarballs for audio clients. These all work with paraslash or gstreamer. ogg123 and mpg123 use a pseudo-URI of the type dccp://host[:port] for DCCP (support v4/v6). The dccp_pipe is a simple sink which outputs either to a pipe, a file, or stdout. It can be used to stream uncommon formats (e.g. *.wav files).

Type
Patch
Info/Sources
Patched Tarball
ogg123
[v-1.2.0]   [v-1.1.1]
vorbis-tools v-1.2.0
mpg123
[v-1.3.1]  [v-1.2.0]   [v-0.60]
 sources [v-1.2.0]  [v-0.60]
dccp_pipe
not necessary
README
0.1

DCCP Userland library

This is a library to simplify the creation of userland DCCP programs. It resolves several problems with getaddrinfo() (which does not really support DCCP), supports creation of v4-only/v6-only and v4/v6 UDP/UDP-Lite/TCP/DCCP sockets; takes care of parsing, assigning, and decoding partial checksums as well as DCCP service codes; provides wrappers for common DCCP tasks (such as querying the MPS); and comes with a suite of 9 client/server programs (among these ttcp and a DCCP port of Steven's sock program).

ttcp for DCCP

ttcp is a classical network testing tool. This variant has support for DCCP, UDP-Lite. It is now part of the above library (an older alternative is here).


Links to further DCCP applications

Paraslash
is a nice audio-streaming application with built-in DCCP support. 

gstreamer plugin
This plugin is developed by the E-Phone (Embedded-Phone) project, which  aims to develop a VoIP client for the
Maemo platform based on DCCP. Sources are here; more information can be found in this announcement.

SpeexComm
is a Speex based multiplatform voice communication engine meant mainly for gaming. It can communicate over DCCP and has support for ALSA OSS. SVN code: svn co http://tuomas.kulve.fi/svn/speexcomm.

D-ITG
is a powerful new traffic generator with support for several transport protocols, including DCCP.

netsend
is a file transfer and network diagnostic program (supporting e.g. RTT probes), offering a rich choice of transport protocols (including DCCP), congestion control algorithms, and with full support for IPv6.

OSDL pages on DCCP
have further information on socket programming and general implementation issues.
Ian McDonald
provides annotated further information and sample DCCP code.

DCCPv6 Code
A client/server application written by James Morris.
DCCP protocol testing
A framework to test the internal state machine of the DCCP implementation.

Adaptive DCCP-based VoIP Client
A MSc thesis by Marie Camier on porting linphone to DCCP.