Datagram Congestion Control Protocol
   HOME

TheInfoList



OR:

In
computer networking A computer network is a set of computers sharing resources located on or provided by network nodes. The computers use common communication protocols over digital interconnections to communicate with each other. These interconnections are ...
, the Datagram Congestion Control Protocol (DCCP) is a message-oriented
transport layer In computer networking, the transport layer is a conceptual division of methods in the layered architecture of protocols in the network stack in the Internet protocol suite and the OSI model. The protocols of this layer provide end-to-e ...
protocol Protocol may refer to: Sociology and politics * Protocol (politics), a formal agreement between nation states * Protocol (diplomacy), the etiquette of diplomacy and affairs of state * Etiquette, a code of personal behavior Science and technology ...
. DCCP implements reliable connection setup, teardown,
Explicit Congestion Notification Explicit Congestion Notification (ECN) is an extension to the Internet Protocol and to the Transmission Control Protocol and is defined in RFC 3168 (2001). ECN allows end-to-end notification of network congestion without dropping packets. ECN ...
(ECN),
congestion control Network congestion in data networking and queueing theory is the reduced quality of service that occurs when a network node or link is carrying more data than it can handle. Typical effects include queueing delay, packet loss or the blocking of ...
, and feature negotiation. The
IETF The Internet Engineering Task Force (IETF) is a standards organization for the Internet and is responsible for the technical standards that make up the Internet protocol suite (TCP/IP). It has no formal membership roster or requirements an ...
published DCCP as , a
proposed standard In computer network A computer network is a set of computers sharing resources located on or provided by network nodes. The computers use common communication protocols over digital interconnections to communicate with each other. The ...
, in March 2006. provides an introduction.


Operation

DCCP provides a way to gain access to congestion-control mechanisms without having to implement them at the
application layer An application layer is an abstraction layer that specifies the shared communications protocols and interface methods used by hosts in a communications network. An ''application layer'' abstraction is specified in both the Internet Protocol Su ...
. It allows for flow-based semantics like in
Transmission Control Protocol The Transmission Control Protocol (TCP) is one of the main protocols of the Internet protocol suite. It originated in the initial network implementation in which it complemented the Internet Protocol (IP). Therefore, the entire suite is commonl ...
(TCP), but does not provide reliable in-order delivery. Sequenced delivery within multiple streams as in the
Stream Control Transmission Protocol The Stream Control Transmission Protocol (SCTP) is a computer networking communications protocol in the transport layer of the Internet protocol suite. Originally intended for Signaling System 7 (SS7) message transport in telecommunication, the p ...
(SCTP) is not available in DCCP. A DCCP connection contains acknowledgment traffic as well as data traffic. Acknowledgments inform a sender whether its packets have arrived, and whether they were marked by
Explicit Congestion Notification Explicit Congestion Notification (ECN) is an extension to the Internet Protocol and to the Transmission Control Protocol and is defined in RFC 3168 (2001). ECN allows end-to-end notification of network congestion without dropping packets. ECN ...
(ECN). Acknowledgements 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 aims to guard against "some blind attacks, such as the injection of DCCP-Resets into the connection".


Applications

DCCP is useful for applications with timing constraints on the delivery of data. Such applications include
streaming media Streaming media is multimedia that is delivered and consumed in a continuous manner from a source, with little or no intermediate storage in network elements. ''Streaming'' refers to the delivery method of content, rather than the content i ...
,
multiplayer online game A multiplayer video game is a video game in which more than one person can play in the same game environment at the same time, either locally on the same computing system ( couch co-op), on different computing systems via a local area network, or ...
s and
Internet telephony Voice over Internet Protocol (VoIP), also called IP telephony, is a method and group of technologies for the delivery of voice communications and multimedia sessions over Internet Protocol (IP) networks, such as the Internet. The terms Internet ...
. In such applications, old messages quickly become useless, so that getting new messages is preferred to resending lost messages. such applications have often either settled for TCP or used
User Datagram Protocol In computer networking, the User Datagram Protocol (UDP) is one of the core communication protocols of the Internet protocol suite used to send messages (transported as datagrams in packets) to other hosts on an Internet Protocol (IP) netwo ...
(UDP) and implemented their own congestion-control mechanisms, or have no congestion control at all. While being useful for these applications, DCCP can also serve as a general congestion-control mechanism for UDP-based applications, by adding, as needed, mechanisms for reliable or in-order delivery on top of UDP/DCCP. In this context, DCCP allows the use of different, but generally TCP-friendly congestion-control mechanisms.


Implementations

The following operating systems implement DCCP: *
FreeBSD FreeBSD is a free and open-source Unix-like operating system descended from the Berkeley Software Distribution (BSD), which was based on Research Unix. The first version of FreeBSD was released in 1993. In 2005, FreeBSD was the most popular ...
, version 5.1 as patch *
Linux Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, whi ...
since version 2.6.14 Userspace library:
DCCP-TP
implementation is optimized for portability, but has had no changes since June 2008.
GoDCCP
purpose of this implementation is to provide a standardized, portable NAT-friendly framework for peer-to-peer communications with flexible congestion control, depending on application.


Packet Structure

The DCCP generic header takes different forms depending on the value of X, the Extended Sequence Numbers bit. If X is one, the Sequence Number field is 48 bits long, and the generic header takes 16 bytes, as follows. If X is zero, only the low 24 bits of the Sequence Number are transmitted, and the generic header is 12 bytes long. ;Source port (16 bits):Identifies the sending port ;Destination port (16 bits):Identifies the receiving port ;Data Offset: (8 bits): The offset from the start of the packet's DCCP header to the start of its application data area, in 32-bit words. ;CCVal (4 bits):Used by the HC-Sender CCID ;Checksum Coverage (CsCov) (4 bits): Checksum Coverage determines the parts of the packet that are covered by the Checksum field. ;Checksum (16 bits): The Internet checksum of the packet's DCCP header (including options), a network-layer pseudoheader, and, depending on Checksum Coverage, all, some, or none of the application data ;Reserved (Res) (3 bits): Senders MUST set this field to all zeroes on generated packets, and receivers MUST ignore its value ;Type (4 bits): The Type field specifies the type of the packet ;Extended Sequence Numbers (X) (1 bit): Set to one to indicate the use of an extended generic header with 48-bit Sequence and Acknowledgement Numbers ;Sequence Number (48 or 24 bits): Identifies the packet uniquely in the sequence of all packets the source sent on this connection


Current development

Similarly to the extension of TCP protocol by multipath capability (
MPTCP Multipath TCP (MPTCP) is an ongoing effort of the Internet Engineering Task Force's (IETF) Multipath TCP working group, that aims at allowing a Transmission Control Protocol (TCP) connection to use multiple paths to maximize throughput and inc ...
) also for DCCP the multipath feature is under discussion at IETF correspondingly denoted as MP-DCCP. First implementations have already been developed, tested, and presented in a collaborative approach between operators and academia and are available as an open source solution.


See also

*
Stream Control Transmission Protocol The Stream Control Transmission Protocol (SCTP) is a computer networking communications protocol in the transport layer of the Internet protocol suite. Originally intended for Signaling System 7 (SS7) message transport in telecommunication, the p ...
(SCTP) *


References


External links


IETF Datagram Congestion Control Protocol (dccp) Charter


Protocol Specifications

* — Datagram Congestion Control Protocol * — The Datagram Congestion Control Protocol (DCCP) Service Codes * — DCCP Simultaneous-Open Technique to Facilitate NAT/Middlebox Traversal * — RTP and the DCCP * — Datagram Transport Layer Security (DTLS) over DCCP * — Quick-Start for DCCP * — A Datagram Congestion Control Protocol UDP Encapsulation for NAT Traversal


Congestion Control IDs

* — Profile for DCCP Congestion Control ID 2: TCP-like Congestion Control * — Profile for DCCP Congestion Control ID 3: TCP-Friendly Rate Control (TFRC) * — Profile for DCCP Congestion Control ID 4: TCP-Friendly Rate Control for Small Packets (TFRC-SP)


Other Information

* {{IETF RFC, 4336, link=no — Problem Statement for the Datagram Congestion Control Protocol (DCCP)
DCCP page from one of DCCP authors

DCCP support in Linux

Datagram Congestion Control Protocol (DCCP)
Transport layer protocols