5. Explicit Congestion Notification in IP
Dieses Kapitel spezifiziert die Verwendung des ECN-Feldes im IP-Header.
5.1. Das ECN-Feld
Das ECN-Feld besteht aus den beiden am wenigsten signifikanten Bits im IPv4-TOS-Byte oder im IPv6-Traffic-Class-Byte.
5.1.1. Feldposition
Für IPv4:
0 1 2 3 4 5 6 7
+---+---+---+---+---+---+---+---+
| DSCP | ECN |
+---+---+---+---+---+---+---+---+
Für IPv6:
0 1 2 3 4 5 6 7
+---+---+---+---+---+---+---+---+
| DSCP | ECN |
+---+---+---+---+---+---+---+---+
Die zwei ECN-Bits sind die Bits 6 und 7 (die beiden rechtesten Bits) des TOS-Bytes (IPv4) oder Traffic-Class-Bytes (IPv6).
5.2. ECN-Codepoints
Die vier möglichen Werte des ECN-Feldes sind:
| Binär | Dezimal | Bezeichnung | Bedeutung |
|---|---|---|---|
| 00 | 0 | Not-ECT | Nicht ECN-fähiger Transport |
| 01 | 1 | ECT(1) | ECN-fähiger Transport(1) |
| 10 | 2 | ECT(0) | ECN-fähiger Transport(0) |
| 11 | 3 | CE | Überlastung erfahren |
5.2.1. Not-ECT (Not ECN-Capable Transport)
Der Not-ECT-Codepoint 00 zeigt an, dass das Paket nicht ECN-fähig ist. Pakete mit diesem Codepoint:
- Verwenden kein ECN
- MÜSSEN durch traditionellen Paketverlust behandelt werden, wenn Überlastung auftritt
- Router SOLLEN NICHT das CE-Codepoint in solchen Paketen setzen
5.2.2. ECT(0) und ECT(1) (ECN-Capable Transport)
Die Codepoints ECT(0) 10 und ECT(1) 01 zeigen an, dass das Paket von einem ECN-fähigen Transport gesendet wird.
Verwendung durch Sender:
- Ein ECN-fähiger Sender MUSS eines der beiden ECT-Codepoints in ausgehenden Paketen setzen
- Der Sender KANN ECT(0) oder ECT(1) verwenden
- Die Wahl zwischen ECT(0) und ECT(1) KANN zur Implementierung der ECN-Nonce verwendet werden (siehe Abschnitt 11.2)
Behandlung durch Router:
- Router MÜSSEN ECT(0) und ECT(1) als gleichwertig behandeln
- Router KÖNNEN das CE-Codepoint in Paketen mit ECT(0) oder ECT(1) setzen
- Router SOLLEN NICHT zwischen ECT(0) und ECT(1) unterscheiden beim Entscheiden, ob Überlastung zu signalisieren ist
5.2.3. CE (Congestion Experienced)
Der CE-Codepoint 11 zeigt an, dass das Paket Überlastung erfahren hat.
Setzen durch Router:
- Ein Router KANN das CE-Codepoint setzen, anstatt ein Paket zu verwerfen, um Überlastung zu signalisieren
- Das CE-Codepoint SOLL NUR in Paketen gesetzt werden, die ein ECT-Codepoint (ECT(0) oder ECT(1)) haben
- Ein Router MUSS NICHT das CE-Codepoint in Paketen mit Not-ECT setzen
Behandlung durch Endpunkte:
- Ein Empfänger, der ein Paket mit dem CE-Codepoint empfängt, MUSS den Sender über die Überlastungserfahrung informieren
- Die Benachrichtigung erfolgt durch das Transportprotokoll (z.B. TCP ECN-Echo)
5.3. Verhaltensregeln für Sender
Ein ECN-fähiger Sender:
- MUSS eines der ECT-Codepoints (ECT(0) oder ECT(1)) in allen ausgehenden Paketen einer ECN-fähigen Verbindung setzen
- MUSS NICHT das CE-Codepoint in ausgehenden Paketen setzen
- MUSS auf Überlastungssignale reagieren, die durch das Transportprotokoll bereitgestellt werden
- SOLLTE Not-ECT in Paketen verwenden, wenn der Transport nicht ECN-fähig ist
5.4. Verhaltensregeln für Router
Ein Router, der ECN unterstützt:
- KANN das CE-Codepoint in Paketen mit ECT(0) oder ECT(1) setzen, um Überlastung zu signalisieren
- MUSS NICHT das CE-Codepoint in Paketen mit Not-ECT setzen
- MUSS NICHT ein ECT-Codepoint in einem Not-ECT-Paket setzen
- SOLLTE einen AQM-Mechanismus verwenden, um zu entscheiden, wann das CE-Codepoint zu setzen ist
- SOLLTE CE mit der gleichen Wahrscheinlichkeit setzen, mit der er ein Paket in Abwesenheit von ECN verwerfen würde
5.4.1. Markierung vs. Verwerfen
Bei Überlastung hat ein Router die folgenden Optionen:
Für ECN-fähige Pakete (ECT(0) oder ECT(1)):
- KANN das CE-Codepoint setzen, wenn noch nicht gesetzt
- KANN das Paket verwerfen (wenn bereits CE gesetzt ist oder aus anderen Gründen)
Für nicht-ECN-fähige Pakete (Not-ECT):
- MUSS das Paket verwerfen (herkömmliche Überlastungssignalisierung)
5.4.2. Wiederholtes Setzen von CE
Wenn ein Router ein Paket empfängt, das bereits das CE-Codepoint gesetzt hat:
- Der Router MUSS das CE-Codepoint gesetzt lassen
- Der Router SOLL NICHT das CE-Codepoint löschen
- Der Router KANN das Paket trotzdem verwerfen, wenn die Überlastung schwerwiegend ist
5.5. Verhaltensregeln für Empfänger
Ein Endpunkt, der ein Paket empfängt:
- MUSS das ECN-Feld im IP-Header überprüfen
- MUSS dem Sender melden, wenn das CE-Codepoint gesetzt ist (über das Transportprotokoll)
- SOLLTE die Anzahl der empfangenen CE-markierten Pakete verfolgen
- MUSS das ECN-Feld beim Weiterleiten von Paketen nicht modifizieren (wenn als Router fungierend)
5.6. Interaktion mit IP-Fragmentierung
Siehe Abschnitt 5.3 für Details zur Handhabung von ECN bei IP-Fragmentierung.
5.7. Interaktion mit IP-TTL/Hop-Limit
Das ECN-Feld ist unabhängig vom TTL-Feld (IPv4) oder Hop-Limit-Feld (IPv6). Änderungen an TTL/Hop-Limit beeinflussen das ECN-Feld nicht.
5.8. ECN und IP-Optionen
Die Verwendung von IP-Optionen (IPv4) oder Extension-Headers (IPv6) beeinflusst das ECN-Feld nicht. ECN-Verarbeitung ist unabhängig von Optionen/Extension-Headers.