Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

Datagram Congestion Control Protocol

From Wikipedia, the free encyclopedia
Message-oriented transport layer protocol
Datagram Congestion Control Protocol
Communication protocol
AbbreviationDCCP
Introduction ()
OSI layerTransport layer (4)
RFC(s)4340,4336
Internet protocol suite
Application layer
Transport layer
Internet layer
Link layer

Incomputer networking, theDatagram Congestion Control Protocol (DCCP) is a message-orientedtransport layerprotocol. DCCP implements reliable connection setup, teardown,Explicit Congestion Notification (ECN),congestion control, and feature negotiation. TheIETF published DCCP asRFC 4340, aproposed standard, in March 2006.RFC 4336 provides an introduction.

Operation

[edit]

DCCP provides a way to gain access to congestion-control mechanisms without having to implement them at theapplication layer. It allows for flow-based semantics like inTransmission Control Protocol (TCP) but does not provide reliable in-order delivery. Sequenced delivery within multiple streams, as in theStream Control Transmission Protocol (SCTP), is not available in DCCP. A DCCP connection containsacknowledgment traffic as well as data traffic. Acknowledgments inform a sender whether its packets have arrived, and whether they were marked byExplicit 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

[edit]

DCCP is useful for applications with timing constraints on the delivery of data. Such applications includestreaming media,multiplayer online games andInternet telephony. In such applications, old messages quickly become useless, so that getting new messages is preferred to resending lost messages. As of 2017[update] such applications have often either settled for TCP or usedUser 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 generallyTCP-friendly, congestion-control mechanisms.

Implementations

[edit]

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]

Userspace library:

  • DCCP-TPArchived 2008-07-23 at theWayback Machine implementation is optimized for portability, but has had no changes since June 2008.[7]
  • 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

[edit]

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.

DCCP generic header (X = 1)
OffsetOctet0123
OctetBit012345678910111213141516171819202122232425262728293031
00Source PortDestination Port
432Data OffsetCCValCsCovChecksum
864ResTypeXReservedSequence Number (high bits)
1296Sequence Number

If X is zero, only the low 24 bits of the Sequence Number are transmitted, and the generic header is 12 bytes long.

DCCP generic header (X = 0)
OffsetOctet0123
OctetBit012345678910111213141516171819202122232425262728293031
00Source PortDestination Port
432Data OffsetCCValCsCovChecksum
864ResTypeXSequence Number
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
TheInternet 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; Res == 0
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

[edit]

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

See also

[edit]

References

[edit]
  1. ^RFC 4340 section 7.6
  2. ^"[dccp] FreeBSD implementation".www.ietf.org. Retrieved18 April 2018.
  3. ^"Linux gets DCCP [LWN.net]".lwn.net. Retrieved18 April 2018.
  4. ^"dccp: Print deprecation notice".kernel.org.
  5. ^"Linux 6.16 Expected To Remove Datagram Congestion Control Protocol "DCCP" Networking".www.phoronix.com. Retrieved15 April 2025.
  6. ^"Linux 6.16 Expected To Remove Datagram Congestion Control Protocol "DCCP" Networking".www.phoronix.com. Retrieved29 May 2025.
  7. ^"Change log for the dccp-tp wiki, retrieved June 13, 2011". Archived fromthe original on October 4, 2011. RetrievedJune 13, 2011.
  8. ^Amend, Markus; Brunstrom, Anna; Kassler, Aneas; Rakocevic, Veselin; Johnson, Stephen (9 November 2021)."DCCP Extensions for Multipath Operation with Multiple Addresses".
  9. ^"Multipath extension for DCCP".

External links

[edit]

Protocol specifications

[edit]
  • 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
  • RFC 6773 — A Datagram Congestion Control Protocol UDP Encapsulation for NAT Traversal

Congestion control IDs

[edit]
  • 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 5622 — Profile for DCCP Congestion Control ID 4: TCP-Friendly Rate Control for Small Packets (TFRC-SP)

Other information

[edit]
Retrieved from "https://en.wikipedia.org/w/index.php?title=Datagram_Congestion_Control_Protocol&oldid=1307879922"
Category:
Hidden categories:

[8]ページ先頭

©2009-2026 Movatter.jp