TCP Flow Control / Congestion Avoidance · TCP Flow Control ist super, weil… TCP Flow Control /...
Transcript of TCP Flow Control / Congestion Avoidance · TCP Flow Control ist super, weil… TCP Flow Control /...
TCP Flow Control ist super, weil…
TCP Flow Control / Congestion Avoidance
Datenstau verhindert wird
>> nicht mehr Daten senden, als Verarbeitet werden können
Ja!
Macht Congestion Avoidance auch so was?
Was ist Flow Control?
TCP Flow Control / Congestion Avoidance
Flow Control – Flusssteuerung
TCP Flow Control Protokoll >> Sliding Window
Und was ist jetzt das Sliding-Window-Prinzip?
- Der Sender kann mehrere Datenpakete ohne
Verzögerung senden.
- Der Empfänger bestimmt Anzahl der Pakete
Das Sliding Window
TCP Flow Control / Congestion Avoidance
Sliden ist super, weil ohne Sliden…
- Der Empfänger gibt Anzahl der Pakete (10)
- Der Sender sendet 1-10
- Paket 5 geht verloren
- Der Sender kriegt keine Bestätigung
- Der Sender will Paket 5 senden, darf er aber nicht,
weil er schon 10 gesendet hat
…STAU
Das Sliding Window
TCP Flow Control / Congestion Avoidance
1 und 2
3 – 4 gesendet, aber nicht bestätigt
6 – 7 werden unverzüglich gesendet
9 – 10 außerhalb des Fensters > muss warten
- Das Fenster enthält nur unbestätigte Pakete
- Fenstergröße: 16-bit Integer > 65,535 Bytes
1 2 3 4 5 6 7 8 9 10
Aktuelles Fenster
Das Sliding Window
TCP Flow Control / Congestion Avoidance
Größenanpassungen:
Nötig, da die
empfangenen Daten
nicht gleich verarbeitet
werden.
Das Sliding Window
TCP Flow Control / Congestion Avoidance
Silly Window Syndrom:
Der Puffer des Empfängers ist voll
Er fordert nur noch kleine Paketmengen an
Die eintreffenden Pakete füllen den Speicher
Es werden immer nur kleine Pakete verschickt
>> ineffizient und silly >> Die Lösung >>
Das Sliding Window
TCP Flow Control / Congestion Avoidance
Das Zero Window + Clarks Lösung(Empfänger)
- Der Empfänger sendet ein Zero Window
- Der Sender muss warten bis er ein Window Update
vom Empfänger erhält
-Der Sender schickt Testpaket und startet Timer
- Der Empfänger sendet erst ein Window Update, wenn
Puffer halbleer ist
Das Sliding Window
TCP Flow Control / Congestion Avoidance
Der Nagle-Algorithmus (Sender)
verhindert das Verschicken kleinerer Pakete
Prinzip:
a) Ist ein Paket voll, sende es.
b) Ist ein Paket nicht voll, dann sende es nur, wenn keine
unbestätigten Pakete mehr unterwegs sind.
Congestion - Stau
TCP Flow Control / Congestion Avoidance
Flow Control – verhindert die Überlastung des Empfängers
durch den Empfänger
Congestion Handling – reguliert den Datenverkehr nach
Überwachung der Rate an nicht bestätigten Segmenten
Erinnerung : Stau ist doof!
>> Wie entsteht ein Stau?
Congestion Handling
TCP Flow Control / Congestion Avoidance
RFC 2001, TCP Slow Start, Congestion Avoidance, Fast
Retransmit, Fast Recovery
Congestion Handling
TCP Flow Control / Congestion Avoidance
Start Slow
Senderbasiertes Flow Control
Ziel : langsamer Start + Congestion Window bestimmen
Vorgehen:
Sender startet mit Fenster von 1xMSS
(Erinnerung: MSS - Maximum Segment Size
wird beim Verbindungsaufbau ausgetauscht)
Für jedes empfangene ACK wird ein MSS hinzugefügt
Congestion Handling
TCP Flow Control / Congestion Avoidance
Start Slow
Also: 1 MSS
1 ACK |x2 2 MSS
2 ACK |x2 4 MSS
4 ACK |x2 8 MSS usw.
RTT
Congestions Window
Bis a) min [Congestion Window , Empfänger Window]
b) Datenstau!!! >>>>>>>>>> Congestion Avoidance
Congestion Handling
TCP Flow Control / Congestion Avoidance
Congestion Avoidance:
- Slow Start threshold size (ssthresh) hat halbe Anzahl
der Pakete gespeichert
- Congestion Window = 1
- Slow Start wird angeschmissen
- Bis sstresh erreicht ist
- Dann : pro RTT > Congestion Window + 1xMSS
(also lineares Wachstum)