The Datagram Congestion Control Protocol (DCCP) is a transport protocol that implements bidirectional, unicast connections of congestion-controlled, unreliable datagrams. Specifically, DCCP provides the following:
-
Unreliable flows of datagrams.
-
Reliable handshakes for connection setup and teardown.
-
Reliable negotiation of options, including negotiation of a suitable congestion control mechanism.
-
Mechanisms allowing servers to avoid holding state for unacknowledged connection attempts and already-finished connections.
-
Congestion control incorporating Explicit Congestion Notification (ECN) [Ram01] and the ECN Nonce [Spr03].
-
Acknowledgement mechanisms communicating packet loss and ECN information. Acks are transmitted as reliably as the relevant congestion control mechanism requires, possibly completely reliably.
-
Optional mechanisms that tell the sending application, with high reliability, which data packets reached the receiver, and whether those packets were ECN marked, corrupted, or dropped in the receive buffer.
-
Path Maximum Transmission Unit (PMTU) discovery [Mog90].
-
A choice of modular congestion control mechanisms. Two mechanisms are currently specified: TCP-like Congestion Control [Flo06] and TCP-Friendly Rate Control (TFRC) [Flo061]. DCCP is easily extensible to further forms of unicast congestion control.
DCCP is intended for applications such as streaming media that can benefit from control over the tradeoffs between delay and reliable in-order delivery. TCP is not well suited for these applications, since reliable in-order delivery and congestion control can cause arbitrarily long delays. UDP avoids long delays, but UDP applications that implement congestion control must do so on their own. DCCP provides built-in congestion control, including ECN support, for unreliable datagram flows, avoiding the arbitrary delays associated with TCP. It also implements reliable connection setup, teardown, and feature negotiation.
References
[Ram01] K. Ramakrishnan, S. Floyd and D. Black, "The Addition of Explicit Congestion Notification (ECN) to IP", RFC 3168, September 2001
[Spr03] N. Spring, D. Wetherall and D. Ely, "Robust Explicit Congestion Notification (ECN) Signaling wit Nonces", RFC 3540, June 2003
[Mog90] J. Mogul and S. Deering, "Path MTU discovery", RFC 1191, November 1990
[Flo06] S. Floyd and E. Kohler, "Profile for Datagram Congestion Control Protocol (DCCP) Congestion Control ID 2: TCP-like Congestion Control", RFC 4341, March 2006
[Flo061] S. Floyd, E. Kohler and J. Padhye, "Profile for Datagram Congestion Control Protocol (DCCP) Congestion Control ID 3: TCP-Friendly Rate Control (TFRC)", RFC 4342, March 2006 |