In der Rechnernetzwerktechnik ist das Datagram Congestion Control Protocol ( DCCP ) ein nachrichtenorientiertes Transportprotokoll . DCCP implementiert zuverlässigen Verbindungsaufbau und -abbau, explizite Staubenachrichtigung (ECN), Staukontrolle und Feature-Aushandlung. Die IETF veröffentlichte DCCP im März 2006 als RFC 4340 , einen vorgeschlagenen Standard . RFC 4336 bietet eine Einführung.   

Betrieb

DCCP ermöglicht den Zugriff auf Mechanismen zur Staukontrolle, ohne diese auf der Anwendungsschicht implementieren zu müssen . Es erlaubt flussbasierte Semantik wie das Transmission Control Protocol (TCP), bietet jedoch keine zuverlässige Zustellung in der richtigen Reihenfolge. Sequenzielle Zustellung innerhalb mehrerer Datenströme, wie im Stream Control Transmission Protocol (SCTP), ist in DCCP nicht möglich. Eine DCCP-Verbindung enthält neben Datenverkehr auch Bestätigungsbenachrichtigungen. Bestätigungen informieren den Sender darüber, ob seine Pakete angekommen sind und ob sie durch Explicit Congestion Notification (ECN) markiert wurden. Die Übertragung von Bestätigungen erfolgt so zuverlässig, wie es der verwendete Staukontrollmechanismus erfordert, im Idealfall sogar vollständig zuverlässig.

DCCP bietet die Option für sehr lange (48-Bit) Sequenznummern, die einer Paket-ID entsprechen, anstatt einer Byte-ID wie bei TCP. Die lange Länge der Sequenznummern soll vor „bestimmten Blindangriffen, wie dem Einschleusen von DCCP-Resets in die Verbindung“, schützen. [ 1 ]

Anwendungen

DCCP eignet sich für Anwendungen mit zeitkritischen Datenübertragungen. Dazu gehören Streaming-Medien , Multiplayer-Online-Spiele und Internettelefonie . In solchen Anwendungen verlieren alte Nachrichten schnell an Wert, sodass der Empfang neuer Nachrichten dem erneuten Senden verlorener Nachrichten vorzuziehen ist. Bis 2017 nutzten diese Anwendungen häufig entweder TCP oder das User Datagram Protocol (UDP) mit eigenen Mechanismen zur Staukontrolle oder verzichteten ganz darauf. DCCP ist nicht nur für diese Anwendungen nützlich, sondern kann auch als allgemeiner Staukontrollmechanismus für UDP-basierte Anwendungen dienen, indem es bei Bedarf Mechanismen für eine zuverlässige und sequenzielle Zustellung zusätzlich zu UDP/DCCP bereitstellt. In diesem Kontext ermöglicht DCCP die Verwendung verschiedener, aber im Allgemeinen TCP-kompatibler Staukontrollmechanismen.

Implementierungen

Folgende Betriebssysteme implementieren DCCP:

  • FreeBSD , Version 5.1 [ 2 ] als Patch
  • Linux seit Version 2.6.14, [ 3 ] aber seit Version 6.4 aufgrund mangelnder Wartung als veraltet gekennzeichnet und für 2025 zur Entfernung vorgesehen. [ 4 ] Linux 6.16 verzichtet auf DCCP. [ 5 ]

Benutzerbibliothek:

Paketstruktur

Der generische DCCP-Header hat je nach Wert des Bits X (Erweiterte Sequenznummern) unterschiedliche Formen. Ist X gleich eins, ist das Sequenznummernfeld 48 Bit lang und der generische Header umfasst 16 Byte, wie folgt.

DCCP-Generischer Header (X = 1)
OffsetOktett0 1 2 3
Oktett Bisschen0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
0 0 QuellportZielhafen
4 32 DatenversatzCCValCsCovPrüfsumme
8 64 ResTypXReserviertSequenznummer (höchste Bits)↴
12 96 ↪Sequenznummer

Wenn X gleich Null ist, werden nur die unteren 24 Bits der Sequenznummer übertragen, und der generische Header ist 12 Byte lang.

DCCP-Generischer Header (X = 0)
OffsetOktett0 1 2 3
Oktett Bisschen0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
0 0 QuellportZielhafen
4 32 DatenversatzCCValCsCovPrüfsumme
8 64 ResTypXSequenznummer
Quellport: 16 Bit
Identifiziert den sendenden Port.
Zielport: 16 Bit
Identifiziert den Empfangsport.
Datenoffset: 8 Bit
Der Versatz vom Beginn des DCCP-Headers des Pakets bis zum Beginn seines Anwendungsdatenbereichs, in 32-Bit-Wörtern.
CCVal: 4 Bit
Wird von der HC-Sender CCID verwendet.
Prüfsummenabdeckung  (CsCov): 4 Bit
Die Prüfsummenabdeckung bestimmt die Teile des Pakets, die durch das Prüfsummenfeld abgedeckt werden.
Prüfsumme: 16 Bit
Die Internet-Prüfsumme des DCCP-Headers des Pakets (einschließlich Optionen), eines Pseudo-Headers der Netzwerkschicht und, abhängig von der Prüfsummenabdeckung, aller, einiger oder keiner der Anwendungsdaten.
Reserviert  (Res): 3 Bits; Res == 0
Absender MÜSSEN dieses Feld in generierten Paketen auf Nullen setzen, und Empfänger MÜSSEN seinen Wert ignorieren.
Typ: 4 Bit
Das Feld „Typ“ gibt den Typ des Pakets an.
Erweiterte Sequenznummern  (X): 1 Bit
Auf eins setzen, um die Verwendung eines erweiterten generischen Headers mit 48-Bit-Sequenz- und Bestätigungsnummern anzuzeigen.
Sequenznummer: 48 oder 24 Bit
Identifiziert das Paket eindeutig in der Sequenz aller Pakete, die die Quelle über diese Verbindung gesendet hat.

Aktuelle Entwicklung

Ähnlich wie die Erweiterung des TCP- Protokolls um Mehrwegeempfang ( MPTCP ) wird derzeit bei der IETF eine Mehrwege-Erweiterung von DCCP diskutiert [ 9 ] , die entsprechend als MP-DCCP bezeichnet wird . Erste Implementierungen wurden bereits in Zusammenarbeit zwischen Netzbetreibern und Forschungseinrichtungen entwickelt, getestet und vorgestellt [ 10 ] und sind als Open-Source-Lösung verfügbar.

Siehe auch

Referenzen

  1. ^ RFC 4340 Abschnitt 7.6
  2. ^ "[dccp] FreeBSD implementation" . www.ietf.org . Abgerufen am 18. April 2018 .
  3. ^ „Linux erhält DCCP [LWN.net]“ . lwn.net . Abgerufen am 18. April 2018 .
  4. ^ "dccp: Print deprecation notice" . kernel.org .
  5. ^ „Linux 6.16 soll das Datagram Congestion Control Protocol „DCCP“ entfernen“ . www.phoronix.com . Abgerufen am 15. April 2025 .
  6. ^ „Linux 6.16 soll das Datagram Congestion Control Protocol „DCCP“ entfernen“ . www.phoronix.com . Abgerufen am 29. Mai 2025 .
  7. ^ "Merge branch 'net-retire-dccp-socket'" . git.kernel.org .
  8. ^ „Änderungsprotokoll für das dccp-tp-Wiki, abgerufen am 13. Juni 2011“ . Archiviert vom Original am 4. Oktober 2011. Abgerufen am 13. Juni 2011 .
  9. ^ Amend, Markus; Brunstrom, Anna; Kassler, Aneas; Rakocevic, Veselin; Johnson, Stephen (9. November 2021). "DCCP-Erweiterungen für den Mehrwegebetrieb mit mehreren Adressen" .
  10. ^ "Multipath-Erweiterung für DCCP" .

Protokollspezifikationen

  • RFC  4340 — Datagramm-Staukontrollprotokoll
  • RFC  5595 – Die Dienstcodes des Datagramm-Staukontrollprotokolls (DCCP)
  • RFC  5596 — DCCP Simultaneous-Open-Technik zur Erleichterung der NAT/Middlebox-Traversal
  • RFC  5762 — RTP und DCCP
  • RFC  5238 — Datagram Transport Layer Security (DTLS) over DCCP
  • RFC  5634 — Schnellstart für DCCP
  • RFC  6773 — Ein Datagramm-Staukontrollprotokoll: UDP-Kapselung für NAT-Traversal

Staukontroll-IDs

  • RFC  4341 — Profil für DCCP-Staukontrolle ID 2: TCP-ähnliche Staukontrolle
  • RFC  4342 — Profil für DCCP-Staukontrolle ID 3: TCP-freundliche Ratenkontrolle (TFRC)
  • RFC  5622 — Profil für DCCP-Staukontrolle ID 4: TCP-freundliche Ratenkontrolle für kleine Pakete (TFRC-SP)

Weitere Informationen