Datagram Congestion Control Protocol

From Wikipedia, the free encyclopedia
(Redirected from DCCP)

Template:Short description

Page Module:Infobox/styles.css has no content.

Datagram Congestion Control Protocol
Communication protocol
AbbreviationDCCP
Introduction ()
OSI layerTransport layer (4)
RFC(s)Template:IETF RFC

Template:IPstack In computer networking, 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. The IETF published DCCP as Template:IETF RFC, a proposed standard, in March 2006. Template:IETF RFC provides an introduction.

Operation

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. 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 (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".[1]

Applications

DCCP is useful for applications with timing constraints on the delivery of data. Such applications include streaming media, multiplayer online games and Internet telephony. In such applications, old messages quickly become useless, so that getting new messages is preferred to resending lost messages. As of 2017 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 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, version 5.1 [2] as patch
  • Linux since version 2.6.14,[3] but marked deprecated since version 6.4 due to lack of maintenance and scheduled for removal in 2025.[4] Linux 6.16 drops DCCP.[5]
    • DCCP was removed from Linux 6.16.[6][7]

Userspace library:

  • DCCP-TP Script error: No such module "webarchive". implementation is optimized for portability, but has had no changes since June 2008.[8]
  • 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. Template:APHD Template:APHD Template:APHD Template:APHD Template:APHD Template:APHD If X is zero, only the low 24 bits of the Sequence Number are transmitted, and the generic header is 12 bytes long. Template:APHD Template:APHD Template:APHD Template:APHD Template:APHD

Template:APHD
Template:APHD
Template:APHD
Template:APHD
Template:APHD
Template:APHD
Template:APHD
Template:APHD
Template:APHD
Template:APHD

Current development

Similarly to the extension of TCP protocol adding multipath capability (MPTCP), a multipath extension of DCCP is under discussion at the IETF,[9] correspondingly denoted as MP-DCCP. First implementations have already been developed, tested, and presented in a collaborative approach between operators and academia[10] and are available as an open source solution.

See also

References

Page Template:Reflist/styles.css has no content.

  1. ^ RFC 4340 section 7.6
  2. ^ Page Module:Citation/CS1/styles.css has no content."[dccp] FreeBSD implementation". www.ietf.org. Retrieved 18 April 2018.
  3. ^ Page Module:Citation/CS1/styles.css has no content."Linux gets DCCP [LWN.net]". lwn.net. Retrieved 18 April 2018.
  4. ^ Page Module:Citation/CS1/styles.css has no content."dccp: Print deprecation notice". kernel.org.
  5. ^ Page Module:Citation/CS1/styles.css has no content."Linux 6.16 Expected To Remove Datagram Congestion Control Protocol "DCCP" Networking". www.phoronix.com. Retrieved 15 April 2025.
  6. ^ Page Module:Citation/CS1/styles.css has no content."Linux 6.16 Expected To Remove Datagram Congestion Control Protocol "DCCP" Networking". www.phoronix.com. Retrieved 29 May 2025.
  7. ^ Page Module:Citation/CS1/styles.css has no content."Merge branch 'net-retire-dccp-socket'". git.kernel.org.
  8. ^ Page Module:Citation/CS1/styles.css has no content."Change log for the dccp-tp wiki, retrieved June 13, 2011". Archived from the original on October 4, 2011. Retrieved June 13, 2011.
  9. ^ Page Module:Citation/CS1/styles.css has no content.Amend, Markus; Brunstrom, Anna; Kassler, Aneas; Rakocevic, Veselin; Johnson, Stephen (9 November 2021). "DCCP Extensions for Multipath Operation with Multiple Addresses".
  10. ^ Page Module:Citation/CS1/styles.css has no content."Multipath extension for DCCP".

Protocol specifications

Congestion control IDs

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

Other information