Datagram Congestion Control Protocol
Encyclopedia
The Datagram Congestion Control Protocol (DCCP) is a message-oriented Transport Layer
protocol. DCCP implements reliable connection setup, teardown, Explicit Congestion Notification
(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 Transmission Control Protocol
(TCP), but does not provide reliable in-order delivery. Sequenced delivery within multiple streams as in the Stream Control Transmission Protocol
(SCTP) is not available in DCCP.
DCCP is useful for applications with timing constraints on the delivery of data. Such applications include streaming media
, Multiplayer online game
s 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 User Datagram Protocol
(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 marked by Explicit Congestion Notification
(ECN). Acks
are transmitted as reliably as the congestion control mechanism in use requires, possibly completely reliably.
DCCP has the option for 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."
Protocol Specifications
Congestion Control IDs
Other Information
Transport layer
In computer networking, the transport layer or layer 4 provides end-to-end communication services for applications within a layered architecture of network components and protocols...
protocol. DCCP implements reliable connection setup, teardown, Explicit Congestion Notification
Explicit Congestion Notification
Explicit Congestion Notification is an extension to the Internet Protocol and to the Transmission Control Protocol and is defined in RFC 3168 . ECN allows end-to-end notification of network congestion without dropping packets. ECN is an optional feature that is only used when both endpoints...
(ECN), congestion control, and feature negotiation. DCCP was published as RFC 4340, a proposed standard
Internet standard
In computer network engineering, an Internet Standard is a normative specification of a technology or methodology applicable to the Internet. Internet Standards are created and published by the Internet Engineering Task Force .-Overview:...
, by the IETF in March, 2006. RFC 4336 provides an introduction. Linux had an implementation of DCCP first released in Linux kernel
Linux kernel
The Linux kernel is an operating system kernel used by the Linux family of Unix-like operating systems. It is one of the most prominent examples of free and open source software....
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
Application layer
The Internet protocol suite and the Open Systems Interconnection model of computer networking each specify a group of protocols and methods identified by the name application layer....
. It allows for flow-based semantics like in Transmission Control Protocol
Transmission Control Protocol
The Transmission Control Protocol is one of the core protocols of the Internet Protocol Suite. TCP is one of the two original components of the suite, complementing the Internet Protocol , and therefore the entire suite is commonly referred to as TCP/IP...
(TCP), but does not provide reliable in-order delivery. Sequenced delivery within multiple streams as in the Stream Control Transmission Protocol
Stream Control Transmission Protocol
In computer networking, the Stream Control Transmission Protocol is a Transport Layer protocol, serving in a similar role to the popular protocols Transmission Control Protocol and User Datagram Protocol...
(SCTP) is not available in DCCP.
DCCP is useful for applications with timing constraints on the delivery of data. Such applications include streaming media
Streaming media
Streaming media is multimedia that is constantly received by and presented to an end-user while being delivered by a streaming provider.The term "presented" is used in this article in a general sense that includes audio or video playback. The name refers to the delivery method of the medium rather...
, Multiplayer online game
Multiplayer online game
A Multiplayer Online Game is a multiplayer video game which can be played via a game server over the internet, with other players around the world...
s 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 User Datagram Protocol
User Datagram Protocol
The User Datagram Protocol is one of the core members of the Internet Protocol Suite, the set of network protocols used for the Internet. With UDP, computer applications can send messages, in this case referred to as datagrams, to other hosts on an Internet Protocol network without requiring...
(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
TCP Friendly Rate Control
TCP-Friendly Rate Control is a congestion control mechanism designed for unicast flows operating in an Internet environment and competing with TCP traffic. The goal is to compete fairly with TCP traffic on medium timescales, but to be much less variable than TCP on short timescales.TCP congestion...
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 marked by Explicit Congestion Notification
Explicit Congestion Notification
Explicit Congestion Notification is an extension to the Internet Protocol and to the Transmission Control Protocol and is defined in RFC 3168 . ECN allows end-to-end notification of network congestion without dropping packets. ECN is an optional feature that is only used when both endpoints...
(ECN). Acks
Acknowledgement (data networks)
In data networking, an acknowledgment is a signal passed between communicating processes or computers to signify acknowledgment, or receipt of response, as part of a communications protocol...
are transmitted as reliably as the congestion control mechanism in use requires, possibly completely reliably.
DCCP has the option for 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."
DCCP implementations
As of June 2008, at least two DCCP implementations are actively maintained. The Linux kernel implementation was first available in Linux release 2.6.14. The dccp-tp implementation is optimized for portability, but has had no changes since June 2008.See also
- Transport protocol comparison table
External links
Protocol Specifications
- RFC 4340 - Datagram Congestion Control Protocol
- RFC 5595 - The Datagram Congestion Control Protocol (DCCP) Service Codes
- RFC 5596 - DCCP Simultaneous-Open Technique to Facilitate NAT/Middlebox Traversal
- RFC 5762 - RTP and the DCCP
- RFC 5238 - Datagram Transport Layer Security (DTLS) over DCCP
- RFC 5634 - Quick-Start for DCCP
Congestion Control IDs
- RFC 4341 - Profile for DCCP Congestion Control ID 2: TCP-like Congestion Control
- RFC 4342 - Profile for DCCP Congestion Control ID 3: TCP-Friendly Rate Control (TFRC)
- RFC 4828 - Profile for DCCP Congestion Control ID 4: TCP-Friendly Rate Control for Small Packets (TFRC-SP)
Other Information
- RFC 4336 - Problem Statement for the Datagram Congestion Control Protocol (DCCP)