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