DCCP protocol
============


Contents
========

- Introduction
- Missing features
- Socket options
- Notes

Introduction
============

Datagram Congestion Control Protocol (DCCP) is an unreliable, connection
based protocol designed to solve issues present in UDP and TCP particularly
for real time and multimedia traffic.

It has a base protocol and pluggable congestion control IDs (CCIDs).

It is at draft RFC status and the homepage for DCCP as a protocol is at:
	http://www.icir.org/kohler/dcp/

Missing features
================

The DCCP implementation does not currently have all the features that are in
the draft RFC.

In particular the following are missing:
- CCID2 support
- feature negotiation

When testing against other implementations it appears that elapsed time
options are not coded compliant to the specification.

Socket options
==============

DCCP_SOCKOPT_PACKET_SIZE is used for CCID3 to set default packet size for
calculations.

DCCP_SOCKOPT_SERVICE sets the service. The specification mandates use of
service codes (RFC 4340, sec. 8.1.2); if this socket option is not set,
the socket will fall back to 0 (which means that no meaningful service code
is present). Connecting sockets set at most one service option; for
listening sockets, multiple service codes can be specified.

Notes
=====

SELinux does not yet have support for DCCP. You will need to turn it off or
else you will get EACCES.

DCCP does not travel through NAT successfully at present. This is because
the checksum covers the psuedo-header as per TCP and UDP. It should be
relatively trivial to add Linux NAT support for DCCP.
