Internet Networking TCP Congestion Avoidance and Control Sommersemester 2003
Gliederung 1 Einleitung 2 TCP - Transport Control Protocol 3 Conservation Of Packets 4 Methoden des Congestion Controls Round Trip Time Estimation Slow Start Congestion Avoidance Fast Retransmit 5 Conclusion
1 Einleitung Host Host Host Host Router Congestion!! Congestion collapse!!!!! Host Host Lösung: Congestion Avoidance and Control
2 TCP Transport Control Protocol Beispiel eines Kommunikationssystems aus der Sicht von TCP Host A Appl. TCP IP Net iface Router IP Net iface Host B Appl. TCP IP Net iface Net 1 Net 2 Zuständig für den zuverlässigen Datentransport
2 TCP Transport Control Protocol Eigenschaften des TCP Protokolls Streaming-Schnittstelle verbindungsorientiert Zuverlässigkeit
2 TCP Transport Control Protocol Bestätigtes Senden Sliding Window Sender Empfänger Sender Empfänger Sender Empfänger 1 2 3 1 2 3
3 Conservation Of Packets Self-Clocking Prinzip Equilibrium eines Systems A B Sender E D C Receiver Wie wird dieses Equilibrium sichergestellt?
3 Conservation Of Packets Probleme: 1. Das System kommt nicht in den Zustand des Equilibriums Überführung eines Systems ins Equilibriums: Slow Start 2. Der Sender schickt ein neues Paket, bevor ein altes das Netz verlassen hat Korrektes Schätzen der Round Trip Time und korrekte Einstellung des Retransmit Timers 3. Innerhalb des Systems gibt es Ressourcenknappheiten; das Equilibrium wird nicht erreicht. Mit Multiplicative Decrease auf Überlast reagieren (Congestion Avoidance) Fast Retransmit;
Congestion or not Congestion? Sender Empfänger round trip time retransmit timeout interval Kein ACK!!! Congestion??
Round Trip Time Estimation Was Was ist ist das das richtige richtige Retransmit Timeout Interval (RTO)? zu groß: schlechter Datenübertragungsraten zu klein: unnötige Netzwerkbelastung Congestion Round Trip Time ist Grundlage für die Berechnung Round Trip Time variiert stark bei Belastung des Netzes Diese Variation muss geschätzt werden
Round Trip Time Estimation 1. 1. Bevor Bevor die die erste erste Round-Trip-Time gemessen wurde: wurde: RTO RTO = 3 RTTvar: Round Trip Time variation SRTT: Smoothed Round Trip Time 2. 2. Bei Bei kontinuierlicher Round-Trip-Time Messung: RTTvar = (1 (1--β) β) ** RTTVAR + β ** SRTT SRTT R R SRTT SRTT = (1 (1--α) α) ** SRTT SRTT + α ** R RTO RTO = SRTT SRTT + K ** RTTvar Mittlere Abweichung Da Varianz zu aufwendig zu berechnen
Controlling Congestion Idee: Veränderliche Sende-Fenstergröße Größeres Fenster: mehr Daten im Netz Kleineres Fenster: weniger Daten im Netz Congestion Window (cwnd)
Slow Start Ziel: Die TCP Verbindung möglichst schnell ins Equilibrium zu überführen Schnelles Ermitteln der Maximalen Belastbarkeit der Verbindung Vorgehen: Die gesendete Datenmenge nach und nach Erhöhen Bis eine Überlastungssituation auftritt (oder ein Grenzwert überschritten wird)
Slow Start Slow Start Algorithmus: cwnd: Congestion Window wnd: Sender Window cwnd = 1*SMSS FOR EACH received ACK DO cwnd = cwnd + SMSS wnd = min (cwnd, rwnd) UNTIL (cwnd < ssthresh) OR (Congestion) SMSS: Sender Maximum Segment Size; rwnd: Receiver Window ssthresh: Threshold Zu Beginn: ssthresh = rwnd Bei Überlastsituation: ssthresh = cwnd/2
Slow Start Sender Empfänger
Slow Start Congestion Window Threshold Time out Slow start Threshold Round Trip Rate
Congestion Avoidance Wenn (cwnd >= ssthresh), dann Congestion Avoidance: Langsames Herantasten an an die die maximale Belastbarkeit der der Verbindung Bei Überlastung: cwnd = cwnd / 2 multiplicative decrease Für jedes empfangene ACK: cwnd = cwnd + 1 Paket = cwnd + SMSS*SMSS/ cwnd Sende: Sender Window = ( cwnd, rwnd) additive increase
Congestion Avoidance Congestion Window Threshold Time out Congestion avoidance Slow start Threshold Round Trip Rate
Fast Retransmit und Fast Recovery Problem: Einzelnes Paket geht verloren, nachfolgende Pakete werden aber zugestellt Sender muss auf den den Ablauf des Timers warten alle Pakete nach dem verlorenen werden nochmals gesendet Lösung: Fast Retransmit
Fast Retransmit und Fast Recovery 1. 1. Empfänger erhält erhält ein ein Paket Paket out-oforderorder out-of- 2. 2. Empfänger bestätigt das das letzte letzte empfangene Paket Paket nochmals (= (= duplicate ACK). ACK). Dadurch teilt teilt er er dem dem Sender Sender die die Lücke und und die die Sequenznummer des des fehlenden Pakets Pakets mit mit 3. 3. Nach Nach dem dem 3ten 3ten duplicate ACK ACK schickt schickt der der Sender Sender das das Paket Paket nocheinmal, ohne ohne auf auf das das Ablaufen des des Timers Timers zu zu warten warten Sender Empfänger 1 2 3 1 4 2 5 6 2 2 2
Problem: Paketverlust, aber die anderen Pakete werden zugestellt Wenn Timer abgelaufen ist: Slowstart Alle Pakete im Fenster werden noch eimal zugestellt & slow Start Lösung: Fast Recovery
Fast Retransmit und Fast Recovery Bei Fast Retransmit Fast Recovery statt Slowstart sshthresh = min ( cwnd, wnd) 2 Für die 3 dublicateacks: cwnd = ssthresh + 3 SMSS Für jede weitere Bestätigung: cwnd = cwnd + 1SMSS Trifft eine Bestätigung neuer Daten ein: ssthresh = cwnd congestion avoidance
Congestion Window Threshold Time out Congestion avoidance Slow start Threshold Fast Retransmit + Fast Recovery Round Trip Rate
5 Conclusion Sind die vorhandenen Congestion Avoidance Mechanismen ausreichend? Analyse von Servern unter Belastung zeigte: recovery Mechanismen sind unzureichend Problem der Ack Kompression nicht einbezogen Client mit mehreren parallelen Verbindungen ist aggressiver Problem der Congestion Avoidance noch nicht gelöst