DCCP Application Programming 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, build the required third-party libraries (list) check out the SVN version of VLC from the VLC Subversion repository apply this patch (patch -p1) run ./bootstrap, ./configure (check configure --help), and make Further help on building is in the VLC Unix Compile HowTo, here are local build notes. To use the patched client/server, start the client first (it listens for connections), by using this command-line: ./vlc -vvv dccp:@ then start the server with anything you'd like to stream enter the `Advanced Options', enable `Stream/Save'; and in the `Settings' menu of `Stream/Save', enable `RTP' and here enter the IP address of the client next to the radiobox. if no port is specified, VLC automatically uses the default port number of 1234 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 all-in-one tarball [recommended] all-in-one patch against original source individual patches against original source (README) Arch Linux build script (thanks to Olivier Mehani) git tree: git://eden-feed.erg.abdn.ac.uk/iperf.git 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 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). download library tarball documentation for the library (included in tarball) 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. Menu VLC over DCCP Audio Clients DCCP Library ttcp iperf Further apps This page is evolving.