TCP Flow Control / Congestion Avoidance · TCP Flow Control ist super, weil… TCP Flow Control /...

16
Wenn es eng wird : TCP Flow Control / Congestion Avoidance

Transcript of TCP Flow Control / Congestion Avoidance · TCP Flow Control ist super, weil… TCP Flow Control /...

Wenn es eng wird :

TCP Flow Control / Congestion Avoidance

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)

Congestion Handling

TCP Flow Control / Congestion Avoidance

Danke, das hat Spaß gemacht!!!

TCP Flow Control / Congestion Avoidance