6.1.1. TCP-Initialisierung (TCP Initialization)
Dieser Abschnitt beschreibt, wie TCP-Endpunkte die ECN-Fähigkeit während des Verbindungsaufbaus verhandeln.
6.1.1.1. ECN-Verhandlung während des Drei-Wege-Handshakes
ECN-Fähigkeit wird während des TCP-Drei-Wege-Handshakes verhandelt:
Schritt 1: SYN vom initiierenden Host (Host A)
Der Host, der die Verbindung initiiert (Host A):
- MUSS ECE und CWR beide auf 1 setzen im SYN-Segment
- Dies signalisiert: "Ich bin ECN-fähig"
- Das SYN-Segment selbst MUSS Not-ECT im IP-Header verwenden
Schritt 2: SYN-ACK vom antwortenden Host (Host B)
Der Host, der antwortet (Host B):
- Wenn Host B ECN unterstützt: MUSS ECE=1, CWR=0 im SYN-ACK setzen
- Wenn Host B ECN nicht unterstützt: Setzt ECE=0, CWR=0 im SYN-ACK
- Das SYN-ACK-Segment MUSS Not-ECT im IP-Header verwenden
Schritt 3: ACK vom initiierenden Host (Host A)
Nach Empfang des SYN-ACK:
- Wenn SYN-ACK ECE=1 hatte: ECN ist aktiviert für diese Verbindung
- Wenn SYN-ACK ECE=0 hatte: ECN wird NICHT für diese Verbindung verwendet
- Das ACK-Segment MUSS Not-ECT im IP-Header verwenden
6.1.1.2. Regeln für ECN-Setup
Wenn ECN erfolgreich verhandelt wurde (SYN hatte ECE=1,CWR=1 UND SYN-ACK hatte ECE=1,CWR=0):
- Beide Endpunkte KÖNNEN ECT in Datenpaketen setzen
- Beide Endpunkte MÜSSEN die ECN-Mechanismen implementieren
Wenn ECN-Verhandlung fehlschlägt:
- Die Verbindung funktioniert normal ohne ECN
- Endpunkte MÜSSEN Not-ECT in allen Paketen verwenden
- ECE und CWR werden nach dem Setup nicht verwendet
6.1.1.3. Wichtige Anforderungen für Setup-Pakete
Während des TCP-Setup (SYN, SYN-ACK, und das initiale ACK):
- Alle drei Segmente MÜSSEN Not-ECT im IP-Header haben
- Dies verhindert Probleme mit Middleboxen, die ECN-Bits nicht verstehen
- ECT darf erst nach erfolgreichem Setup verwendet werden
6.1.1.4. Umgang mit verlorenen Setup-Paketen
Wenn das SYN verloren geht:
- Host A sendet das SYN neu mit ECE=1, CWR=1
- Normal TCP-Neuübertragungslogik gilt
Wenn das SYN-ACK verloren geht:
- Host B sendet das SYN-ACK neu
- ECN-Flags sollten konsistent bleiben
Wenn das initiale ACK verloren geht:
- TCP-Neuübertragungsmechanismen behandeln dies
- ECN-Status ist bereits etabliert
6.1.1.5. Rückfall bei Verbindungsproblemen
Wenn eine Verbindung mit ECN-Verhandlung fehlschlägt:
- Host A SOLLTE erneut versuchen OHNE ECN-Flags im SYN zu setzen
- Dies ermöglicht Kompatibilität mit fehlerhaften Middleboxen
- Der Neuversuch sollte nach einem Timeout erfolgen