Datagram Congestion Control Protocol

From Wikipedia, the free encyclopedia

Jump to: navigation, search
The Internet Protocol Suite
Application Layer
BGP · DHCP · DNS · FTP · GTP · HTTP · IMAP · IRC · Megaco · MGCP · NNTP · NTP · POP · RIP · RPC · RTP · RTSP · SDP · SIP · SMTP · SNMP · SOAP · SSH · Telnet · TLS/SSL · XMPP · (more)
Transport Layer
TCP · UDP · DCCP · SCTP · RSVP · ECN · (more)
Internet Layer
IP (IPv4, IPv6) · ICMP · ICMPv6 · IGMP · IPsec · (more)
Link Layer
ARP · RARP · NDP · OSPF · Tunnels (L2TP) · Media Access Control (Ethernet, MPLS, DSL, ISDN, FDDI) · Device Drivers · (more)

The Datagram Congestion Control Protocol (DCCP) is a message-oriented Transport Layer protocol. DCCP implements reliable connection setup, teardown, ECN, congestion control, and feature negotiation. DCCP was published as RFC 4340, a proposed standard, by the IETF in March, 2006. RFC 4336 provides an introduction. Linux had an implementation of DCCP first released in Linux kernel version 2.6.14 (released October 28, 2005).

DCCP provides a way to gain access to congestion control mechanisms without having to implement them at the Application Layer. It allows for flow-based semantics like in TCP, but does not provide reliable in-order delivery. Sequenced delivery within multiple streams as in SCTP is not available in DCCP.

DCCP is useful for applications with timing constraints on the delivery of data that may become useless to the receiver if reliable in-order delivery combined with congestion avoidance is used. Such applications include streaming media, multiparty online games and Internet telephony. Primary feature of these applications is that old messages quickly become stale so that getting new messages is preferred to resending lost messages. Currently such applications have often either settled for TCP or used UDP and implemented their own congestion control mechanisms (or have no congestion control at all).

While being useful for these applications, DCCP can also be positioned as a general congestion control mechanism for UDP-based applications, by adding, as needed, a mechanism for reliable and/or in-order delivery on the top of UDP/DCCP. In this context, DCCP allows the use of different (but generally TCP-friendly) congestion control mechanisms.

A DCCP connection contains acknowledgment traffic as well as data traffic. Acknowledgments inform a sender whether its packets arrived, and whether they were ECN marked. Acks are transmitted as reliably as the congestion control mechanism in use requires, possibly completely reliably.

DCCP has the option to have very long (48-bit) sequence numbers corresponding to a packet ID (rather than a byte ID as in TCP). The long length of the sequence numbers is intended to guard against "some blind attacks, such as the injection of DCCP-Resets into the connection." [1]

[edit] DCCP implementations

As of June 2008, there are at least two actively maintained DCCP implementations.

The Linux kernel implementation was first available in Linux release 2.6.14. Information is available from the Linux Foundation at http://www.linuxfoundation.org/en/Net:DCCP.

The dccp-tp implementation is optimized for portability. Information is available at http://www.phelan-4.com/dccp-tp/.

[edit] See also

[edit] External links

Personal tools