6.1.1.2. Robuste TCP-Initialisierung (Robust TCP Initialization)
Dieser Abschnitt beschreibt Best Practices für robuste ECN-Verhandlung in Gegenwart möglicher Netzwerkprobleme.
6.1.1.2.1. Grundprinzipien
Eine robuste TCP-ECN-Implementierung SOLLTE:
- Versuchen, ECN zu verwenden wenn möglich
- Nicht fehlschlagen, wenn ECN nicht funktioniert
- Lernen aus Erfahrung über problematische Pfade
- Benutzerfreundlich sein ohne manuelle Intervention
6.1.1.2.2. Empfohlener Verbindungsaufbau-Algorithmus
Funktion: TCP_Connect(Ziel)
Wenn (Cache sagt "Ziel blockiert ECN"):
Sende SYN ohne ECN-Flags (ECE=0, CWR=0)
Sonst:
Sende SYN mit ECN-Flags (ECE=1, CWR=1)
Wenn (keine SYN-ACK-Antwort nach N Versuchen):
// Mögliches ECN-Blockierungsproblem
Markiere Ziel in Cache als "blockiert ECN"
Sende SYN ohne ECN-Flags (ECE=0, CWR=0)
Wenn (SYN-ACK empfangen):
Wenn (SYN-ACK hat ECE=1):
ECN ist aktiviert für diese Verbindung
Sonst:
ECN ist nicht aktiviert
6.1.1.2.3. Timeout-Werte
Für ECN-Fallback-Entscheidung:
- SOLLTE nach 3-6 SYN-Neuübertragungen erfolgen
- Dies entspricht typischerweise 3-12 Sekunden
- Sollte Standard-TCP-SYN-Neuübertragungsverhalten nicht übermäßig verzögern
6.1.1.2.4. Cache-Management
Cache-Einträge SOLLTEN enthalten:
- Ziel-IP-Adresse oder Präfix
- Zeitstempel der letzten Überprüfung
- Status: "ECN funktioniert" / "ECN blockiert" / "unbekannt"
Cache-Ablauf:
- Einträge SOLLTEN nach einigen Stunden ablaufen (z.B. 1-24 Stunden)
- Erlaubt Wiederprüfung, falls Netzwerkprobleme behoben wurden
- KANN konfigurierbarer Ablaufzeitraum sein
Cache-Größe:
- SOLLTE vernünftig begrenzt sein (z.B. 1000-10000 Einträge)
- KANN LRU (Least Recently Used) Ersatzstrategie verwenden
6.1.1.2.5. Umgang mit gemischten Ergebnissen
Wenn Verbindungen zum gleichen Ziel manchmal mit ECN gelingen und manchmal fehlschlagen:
- KANN Wahrscheinlichkeitsansatz verwenden
- KANN auf pfadspezifische Probleme hinweisen (Multi-Path)
- SOLLTE konservativ sein und ECN für dieses Ziel deaktivieren
6.1.1.2.6. Interaktion mit Happy Eyeballs
Bei gleichzeitigen IPv4/IPv6-Verbindungsversuchen:
- Jede IP-Version SOLLTE unabhängig ECN verhandeln
- IPv4- und IPv6-Cache-Einträge SOLLTEN getrennt sein
- Ein Pfad kann ECN unterstützen, während der andere es nicht tut
6.1.1.2.7. Logging und Diagnose
Implementierungen SOLLTEN optional loggen:
- Erfolgreiche ECN-Verhandlungen
- Fehlgeschlagene ECN-Verhandlungen
- Fallback auf Nicht-ECN
- Cache-Hit-/Miss-Statistiken
Diese Informationen helfen bei:
- Netzwerk-Debugging
- Identifizierung problematischer Middleboxen
- Messung der ECN-Bereitstellungsrate
6.1.1.2.8. Sicherheitsüberlegungen
Timing-Angriffe:
- Ein Angreifer könnte SYN-Pakete mit ECN selektiv verwerfen
- Dies führt zu Fallback, aber bricht Verbindungen nicht
- Ist normalerweise kein ernsthaftes Sicherheitsproblem
Cache-Vergiftung:
- Ein Angreifer könnte versuchen, Cache mit falschen Informationen zu füllen
- Cache-Ablauf und Größenbegrenzungen mindern dies
- Konservatives Verhalten (Deaktivieren von ECN) ist sicher
6.1.1.2.9. Empfehlungen für Netzwerkadministratoren
Netzwerkadministratoren, die ECN bereitstellen möchten, SOLLTEN:
- Middleboxen konfigurieren, um ECN-Pakete durchzulassen
- Firewalls aktualisieren, um ECN-Flags zu erlauben
- Überwachung einrichten für ECN-bezogene Verwerfungen
- Stufenweise Bereitstellung für einfacheres Debugging