TCP

Transcription

TCP
Vorlesung: Netzwerke (TK) WS 2011/12
Kapitel 5 Ende-zu-Ende-Protokolle
Session 17
Prof. Dr. Michael Massoth
[Stand: 17.01.2012]
Copyright: © Michael Massoth
17 - 1
Netzwerke, WS 2011/12
17 - 2
ACHTUNG:
Testat_4
am Dienstag, den 17.01.2012
‡
‡
‡
‡
‡
‡
‡
Referenzmodelle (OSI, Hybrid, TCP/IP)
Hardware-Bausteine bzw. Kopplungselemente
Strukturierte Verkabelung
Ethernet (inkl. CSMA/CD) und WLAN
Paketvermittlung (Bridging, Switching, Netzwerkdesign, VLAN)
Internetworking (inkl. IPv4-Adressierung und Subnetting)
Ende-zu-Ende-Protokolle (UDP + TCP)
Copyright: © Michael Massoth
17 - 2
Netzwerke, WS 2011/12
17 - 3
ACHTUNG:
Testat_5
am Dienstag, den 24.01.2012
‡
‡
‡
‡
‡
‡
‡
Referenzmodelle (OSI, Hybrid, TCP/IP)
Hardware-Bausteine bzw. Kopplungselemente
Strukturierte Verkabelung
Ethernet (inkl. CSMA/CD) und WLAN
Paketvermittlung (Bridging, Switching, Netzwerkdesign, VLAN)
Internetworking (inkl. IPv4-Adressierung und Subnetting)
Ende-zu-Ende-Protokolle (UDP + TCP)
Copyright: © Michael Massoth
17 - 3
Netzwerke, WS 2011/12
17 - 4
Lernziele heute :
Zuverlässige Zustellung: Stop-and-Wait-Algorithmus und
Sliding Window (Grundlagen)
‰ Lernziele im Detail:
ƒ Zuverlässige Zustellung verstehen und anwenden können
ƒ Sliding-Window-Algorithmus für Sender und Empfänger mit
Variablenverwaltung verstehen und anwenden können
Copyright: © Michael Massoth
17 - 4
Netzwerke, WS 2011/12
17 - 5
TCP
[Transmission Control Protocol ]
‡
‡
‡
‡
‡
TCP Sequenz- und Bestätigungsnummern
Zuverlässiger Datentransfer
TCP-Flusskontrolle
Pipelining und Sliding-Window
TCP-Überlastkontrolle
Copyright: © Michael Massoth
17 - 5
Netzwerke, WS 2011/12
17 - 6
Lernziele heute:
Transmission Control Protocol (TCP)
‰ Lernziele im Detail:
ƒ TCP als zuverlässiges Byte-Strom-Protokoll mit integrierter
Flusskontrolle verstehen, erklären und anwenden können
ƒ TCP mit variablem Sliding-Window-Algorithmus und integrierter
Flusskontrolle verstehen, erklären und anwenden können
Copyright: © Michael Massoth
17 - 6
Netzwerke, WS 2011/12
Zuverlässiger Datenaustausch
17 - 7
ƒ Ein Paket wird versendet und
ein Timer gesetzt
ƒ Kommt es beim Empfänger
an wird eine Bestätigung
gesendet
ƒ Läuft der Timer ab bevor
Bestätigung ankommt wird
erneut gesendet
ƒ Nachteil: Ineffiziente Nutzung
der Bandbreite
Copyright: © Michael Massoth
17 - 7
Netzwerke, WS 2011/12
Zuverlässiger Datentransfer mit Pipelining (1)
17 - 8
Gegenüberstellung von Stop-and-Wait und Pipelining:
„ Zuverlässiger Datentransfer mit Pipelining:
Da die vielen zwischen Sender und Empfänger im Transit
befindlichen Pakete als das „Füllen einer Pipeline“ betrachtet
werden können, wird diese Technik Pipelining genannt.
Copyright: © Michael Massoth
17 - 8
Netzwerke, WS 2011/12
Zuverlässiger Datentransfer mit Pipelining (2)
17 - 9
„ Zuverlässiger Datentransfer mit Pipelining Î Konsequenzen:
ƒ
ƒ
Die Sender- und Empfängerseite benötigen einen Puffer für mehr
als ein Segment. Als Minimum muss der Sender die bereits
übertragenen, aber noch nicht bestätigten Segmente
zwischenspeichern.
Bereich der Sequenz- und Bestätigungsnummern muss
entsprechend vergrößert werden.
Copyright: © Michael Massoth
17 - 9
Netzwerke, WS 2011/12
TCP Sliding Window (1)
17 - 10
ƒ Fenstergröße = Anzahl von
Bytes, die ein Host übertragen
kann, während er auf eine
Bestätigung wartet
ƒ Größeres Fenster ermöglicht
dem Host, mehr Daten zu
übertragen, während eine
Bestätigung noch aussteht
ƒ Sliding bezieht sich darauf, dass
die Fenstergröße während der
TCP-Session dynamisch
ausgehandelt wird Î
effizientere Ausnutzung der
Bandbreite
Copyright: © Michael Massoth
17 - 10
Netzwerke, WS 2011/12
Sliding-Window-Algorithmus allgemein
Sender
17 - 11
Receiver
ƒ Sender weist jedem Paket (hier: TCP-Segment) eine Sequenznummer
(Engl. Sequence Number) zu mit der Beschriftung Seq
ƒ Für jedes übertragene Paket setzt der Sender auch einen Timer und
überträgt dieses Paket (TCP-Segment) erneut, wenn der Timer vor dem
Eingang eines ACK abläuft
Copyright: © Michael Massoth
17 - 11
Netzwerke, WS 2011/12
Sender and Receiver State
Sender
Sender
Max ACK received
Receiver
Receiver
Next expected
Next seqnum
…
…
Sent Not Acked
OK to Send
Not Usable
Copyright: © Michael Massoth
Max acceptable
…
…
Sender window
Sent & Acked
17 - 12
Receiver window
Received & Acked
Acceptable Packet
Not Usable
17 - 12
Netzwerke, WS 2011/12
TCP Flusskontrolle und Sliding Window
17 - 13
„ Merke: Die TCP Variante des Sliding Window Algorithmus
gewährleistet:
1. Die zuverlässige Übertragung von Daten in einem Byte-Strom
2. Die Übertragung der Daten in der richtigen Reihenfolge
3. Eine Flusskontrolle zwischen Sender und Empfänger
„ Integrierte Flusskontrolle: Bei TCP wird keine feste SlidingWindow Größe benutzt, sondern dem Sender vom Empfänger
advertised (bekannt gemacht).
Î Dies geschieht durch das Feld AdvertisedWindow im TCPHeader
Î Empfänger wählt einen geeigneten Wert für AdvertisedWindow
auf der Grundlage des Speicherplatzes aus, der der Verbindung
für die Zwischenspeicherung von Daten zugewiesen ist
Copyright: © Michael Massoth
17 - 13
Netzwerke, WS 2011/12
TCP Sliding-Window (1)
Receiving application
Sending application
LastByteWritten
LastByteAcked
TCP
LastByteSent
17 - 14
LastByteRead
NextByteExpected
(a)
TCP
LastByteRcvd
(b)
„ Sending side (a):
ƒ LastByteAcked ≤ LastByteSent
ƒ LastByteSent ≤ LastByteWritten
ƒ Buffer bytes between LastByteAcked and LastByteWritten
Copyright: © Michael Massoth
17 - 14
Netzwerke, WS 2011/12
TCP Sliding-Window (2)
Receiving application
Sending application
LastByteWritten
LastByteAcked
TCP
LastByteSent
17 - 15
LastByteRead
NextByteExpected
(a)
TCP
LastByteRcvd
(b)
„ Receiving side (b):
ƒ LastByteRead ≤ NextByteExpected
ƒ NextByteExpected ≤ LastByteRcvd +1
ƒ Buffer bytes between NextByteRead and LastByteRcvd
Copyright: © Michael Massoth
17 - 15
Netzwerke, WS 2011/12
TCP Flow Control Window
Sender
Receiver
Application
Application
TCP
TCP
Sender's Window
Receiver's Window
IP
lastByteFromApplication
IP
lastByteToApplication
lastByteSent
nextByteExpected
lastByteAcknowledged
Copyright: © Michael Massoth
17 - 16
lastByteReceived
17 - 16
Netzwerke, WS 2011/12
TCP Timer im Überblick
17 - 17
„ TCP Timer im Überblick:
ƒ Retransmission Timer (Timeout => RTO) Î Nach Ablauf des
Timers werden unbestätigte Datenpakete erneut gesendet
ƒ Reconnection Timer Î Minimale Zeit, die gewartet werden
muss, um eine Verbindung abzubauen und sie erneut zur
gleichen Zieladresse wieder aufzubauen
ƒ Window Timer Î Maximale Zeit, die verstreichen darf, um nach
einer Bestätigung von Datenpaketen die Fenstergröße auf einen
neuen Wert umzustellen
ƒ Retransmit Syn Timer Î Maximale Zeit, die verstreichen muss,
um nach einem erfolglosen Verbindungsaufbauversuch einen
erneuten Connection Request zu starten
ƒ Give Up Timer Î Nach Ablauf dieses Timers wird die
Verbindung abgebaut, wenn keine Datenpakete vom Zielknoten
bestätigt werden
Copyright: © Michael Massoth
17 - 17
Netzwerke, WS 2011/12
TCP Fehlerbehandlung
17 - 18
„ TCP Fehlerbehandlung:
ƒ Die Fehlerbehandlung erfolgt durch Go-Back-N
ƒ TCP arbeitet mit positiven Quittungen, die Summenquittungen
darstellen (für die Menge erfolgreich übertragener Bytes)
ƒ Dies bedeutet, dass ab dem ersten, nicht quittierten Paket alle
Pakete wiederholt werden
Copyright: © Michael Massoth
17 - 18
Netzwerke, WS 2011/12
Datenfluss
Buffer
Buffer
TCP Modul
Copyright: © Michael Massoth
17 - 19
TCP Modul
17 - 19
Netzwerke, WS 2011/12
Datenfluss
17 - 20
„ Korrekte und fehlerfreie Übertragung:
ƒ Sender erhält für jedes gesendete Paket ein ACK (Quittung),
besteht aus ACK-Flag=1 und ACK-Nummer
ƒ ACK-Nummer = Seq-Nummer + Größe Payload in Byte
ƒ Folgende Seq-Nummer = ACK
Copyright: © Michael Massoth
17 - 20
Netzwerke, WS 2011/12
Datenfluss: Fehlerfreie Übertragung
Empfänger
Sender
Buffer
1
1
2
Copyright: © Michael Massoth
17 - 21
Buffer
SEQ=1 Daten: 1460 Byte
SEQ=1, ACK=1461, Daten: 0 Byte
1
2
3
4
5
SEQ=1461 Daten: 1460 Byte
SEQ=2, ACK=2921, Daten: 0 Byte
1
2
3
4
5
17 - 21
Netzwerke, WS 2011/12
Datenfluss: Fehler bei Übertragung
Empfänger
Sender
Buffer
Buffer
1
SEQ=1 Daten: 1460 Byte
SEQ=1, ACK=1461, Daten: 0 Byte
1
2
3
4
5
1
2
3
4
5
1
2
3
4
5
SEQ=4381 Daten: 1460 Byte
SEQ=3, ACK=2921, Daten: 0 Byte
1
2
3
4
5
5
SEQ=5841 Daten: 1460 Byte
SEQ=4, ACK=2921, Daten: 0 Byte
1
2
3
4
5
5
SEQ=2921 Daten: 1460 Byte
SEQ=5, ACK=7301, Daten: 0 Byte
1
SEQ=1461 Daten: 1460 Byte
SEQ=2, ACK=2921, Daten: 0 Byte
1
2
1
2
1
2
4
1
2
4
1
2
17 - 22
SEQ=2921 Daten: 1460 Byte
3
4
Copyright: © Michael Massoth
17 - 22
Timer abgelaufen
Retransmission
Paket 3
Netzwerke, WS 2011/12
Datenfluss
17 - 23
Einigung im Vorfeld (Windowsize): Z. B. 5 * 1.460 Bytes
ACK
Buffer
=> Datenverlust
Copyright: © Michael Massoth
17 - 23
Netzwerke, WS 2011/12
Datenfluss
17 - 24
Abhilfe: Windowfeld auf 0 (Zero Window)
Window=0
ACK, SEQ=1, ACK 7301, Window = 7300
ACK, SEQ=1, ACK 10220
Buffer
Copyright: © Michael Massoth
17 - 24
Netzwerke, WS 2011/12
Sequenz/Acknowlegde Verlauf
Sender
17 - 25
Empfänger
500 Byte
s, S
eq=x
k=x+500
c
A
,
1
=
K
C
Seq=y, A
500 Bytes,
Seq=x+500
=x+1000
K
C
A
,
1
=
, ACK
Seq=y+1
Copyright: © Michael Massoth
17 - 25
Netzwerke, WS 2011/12
Acknowledge / positive Quittungen
17 - 26
„ Solange ACK nicht eingegangen ist, darf kein neues Paket
gesendet werden
„ Kommt kein ACK-Paket, so ist
– entweder das Paket verloren gegangen oder
– das ACK-Paket verloren
In beiden Fällen wird das Paket wiederholt nach einem
RetransmissionTimeOut (RTO)
Es gilt: RTO < SRTT + 4 * RTTVAR
„
„
SRTT: gemittelte Roundtrip-Time
RTTVAR: Mittlere Abweichung der Roundtrip-Time
Startwerte für RTO zwischen 2,5 und 3 sec (RFC 2988)
Copyright: © Michael Massoth
17 - 26
Netzwerke, WS 2011/12
Window-Feld
17 - 27
„ Datendurchsatz ist bei Quittierung jedes Pakets relativ niedrig
„ Zuverlässige Verbindung bedeutet, dass der Empfänger bei
Überlast den Sender drosseln können muss
Window-Size durch Empfänger im ACK-Paket
legt die neue Anzahl der sendbaren Bytes fest
Copyright: © Michael Massoth
17 - 27
Netzwerke, WS 2011/12
Windowsize
HOST 1
100ms Übertragungsdauer
17 - 28
HOST 2
H1 sendet 1000 Bytes an H2
Dauer = 100ms
H2 sendet ACK zurück
Dauer = 100ms
H1 sendet 1000 Bytes an H2
Dauer = 100ms
H2 sendet ACK zurück
Dauer = 100ms
Datendurchsatz = 2.000 Bytes in 400ms,
damit also 5.000 Bytes/s, egal, wie schnell die Leitung ist!
Copyright: © Michael Massoth
17 - 28
Netzwerke, WS 2011/12
Windowsize
HOST 1
100ms Übertragungsdauer
17 - 29
HOST 2
H1 sendet 65.535 Bytes an H2
Dauer = 100ms
H2 sendet ACK zurück
Dauer = 100ms
H1 sendet 65.535 Bytes an H2
Dauer = 100ms
H2 sendet ACK zurück
Dauer = 100ms
Datendurchsatz = 131.070 Bytes in 400ms,
damit also 327.675 Bytes/s, egal, wie schnell die Leitung ist!
Copyright: © Michael Massoth
17 - 29
Netzwerke, WS 2011/12
Windowsize
HOST 1
100ms Übertragungsdauer
17 - 30
HOST 2
H1 sendet 1000 Bytes an H2
Dauer = 100ms
H1 sendet 1000 Bytes an H2
Dauer = 100ms
H1 sendet 1000 Bytes an H2
Dauer = 100ms
H2 sendet ACK zurück
Dauer = 100ms
Datendurchsatz = 3.000 Bytes in 400ms,
damit also 7.500 Bytes/s
Copyright: © Michael Massoth
17 - 30
Netzwerke, WS 2011/12
17 - 31
TCP
[Transmission Control Protocol ]
‡
‡
‡
‡
‡
TCP Sequenz- und Bestätigungsnummern
Zuverlässiger Datentransfer
TCP-Flusskontrolle
Pipelining und Sliding-Window
TCP-Überlastkontrolle
Copyright: © Michael Massoth
17 - 31
Netzwerke, WS 2011/12
17 - 32
Lernziele heute:
Transmission Control Protocol (TCP)
‰ Lernziele im Detail:
ƒ TCP Slow Start und Congestion Avoidance verstehen, erklären und
anwenden können
ƒ Unterschied zwischen Flusskontrolle und Congestion Control (dt.
Stau- bzw. Überlastkontrolle) verstehen und erklären können
Copyright: © Michael Massoth
17 - 32
Netzwerke, WS 2011/12
TCP-Überlastungsüberwachung
17 - 33
(a) Ein schnelles Netz, das an einen Empfänger mit geringer Kapazität weiterleitet.
(b) Ein langsames Netz, das an einen Empfänger mit hoher Kapazität weiterleitet.
Copyright: © Michael Massoth
17 - 33
Netzwerke, WS 2011/12
TCP Slow Start and Congestion Avoidance
17 - 34
window size
congestion
avoidance
13
12
11
10
9
8
slow
start
threshold
7
new threshold
6
5
4
3
2
1
time
1
2
3
4
5
6
7
8
9
10 11
12
timeout occurs
Copyright: © Michael Massoth
17 - 34
Netzwerke, WS 2011/12
TCP Slow Start
17 - 35
window size
congestion
avoidance
13
12
11
10
9
8
slow
start
threshold
7
new threshold
6
5
4
3
2
1
time
1
2
3
4
5
6
7
8
9
10 11
12
timeout occurs
Copyright: © Michael Massoth
17 - 35
Netzwerke, WS 2011/12
TCP Slow Start (1)
17 - 36
„ Problem:
ƒ Sliding-Window funktioniert nur im selben LAN sehr gut
ƒ Probleme bei Kommunikation über Zwischensysteme (Router), mit
langsameren Verbindungen
„ Ansatz:
ƒ TCP Slow Start
Copyright: © Michael Massoth
17 - 36
Netzwerke, WS 2011/12
TCP Slow Start (2)
17 - 37
„ TCP Slow Start Prinzip:
ƒ Algorithmus überwacht Kommunikation
ƒ Sender erweitert TCP-Modul um ein Congestion Window (cwnd) und
eine Slow Start Threshold Size (ssthresh)
ƒ CWND wird bei jedem ACK erhöht Î (20, 21, 22, …)
ƒ Sender kann maximal das Minimum von CWND und Windowsize an
Daten senden
ƒ Wird ein Paketverlust festgestellt, wird CWND auf letztbekannte
funktionierende Größe zurückgesetzt
Copyright: © Michael Massoth
17 - 37
Netzwerke, WS 2011/12
TCP Slow Start (3)
17 - 38
„ TCP Slow Start:
ƒ Start with Congestion Window cwnd = 1 (segment size announced
by other side)
ƒ On each successful ACK increment cwnd with cwnd ← cnwd + 1
ƒ Exponential growth of cwnd size, if all former segements are
acknowledged successfully. Each RTT: cwnd ← 2 x cwnd
ƒ Enter Congestion Avoidance (CA) when cwnd ≥ ssthresh (slow start
threshold size)
Merke: Für jeder erfolgreiche Quittung (ACK) wird das Congestion
Window um eine Segmentgröße erhöht. Dadurch ergibt sich eine
Verdopplung der Congestion Window Größe pro RTT. Limit ist das
vom Empfänger festgelegte Empfangsfenster!
Copyright: © Michael Massoth
17 - 38
Netzwerke, WS 2011/12
TCP Slow Start (4)
sender
17 - 39
receiver
cwnd
1
1 RTT
2
data
packet
ACK
3
4
5
6
7
8
cwnd ← cwnd + 1 (for each ACK)
Copyright: © Michael Massoth
17 - 39
Netzwerke, WS 2011/12
TCP Congestion Avoidance
17 - 40
window size
congestion
avoidance
13
12
11
10
9
8
slow
start
threshold
7
new threshold
6
5
4
3
2
1
time
1
2
3
4
5
6
7
8
9
10 11
12
timeout occurs
Copyright: © Michael Massoth
17 - 40
Netzwerke, WS 2011/12
Congestion Avoidance (1)
17 - 41
„ Congestion Avoidance (dt. Vermeidung von Überlast):
ƒ Annahme: TCP geht davon aus, dass Pakete durch Überlast im
Netz verloren gehen. Paketverlust durch Transmissionsfehler < 1%
ƒ Ein Verlust beruht also auf Verlust in Zwischensystemen
(Paketdrop / Bufferoverflow)
ƒ Verlust wird durch RetransmissionTimeout (RTO) und Empfang von
doppelten ACKs (=duplizierte Quittungen) festgestellt
ƒ Congestion Avoidance und Slow Start eigentlich separate
Funktionen, werden aber zusammen implementiert
Copyright: © Michael Massoth
17 - 41
Netzwerke, WS 2011/12
Congestion Avoidance (2)
17 - 42
„ Congestion Avoidance:
ƒ Starts when cwnd ≥ ssthresh
ƒ On each successful ACK: cwnd ← cwnd + 1/cwnd
ƒ Linear growth of cwnd. Each RTT: cwnd ← cwnd + 1
Copyright: © Michael Massoth
17 - 42
Netzwerke, WS 2011/12
Congestion Avoidance (3)
sender
receiver
cwnd
1
2
17 - 43
data
packet
ACK
1 RTT
3
4
cwnd ← cwnd + 1 (for each cwnd ACKS)
Copyright: © Michael Massoth
17 - 43
Netzwerke, WS 2011/12
Congestion Avoidance (4)
SSTHRESH
SSTHRESH =
=
min(window,
min(window, CWND)
CWND) // 22
(mindestens
(mindestens aber
aber 22
Segmente)
Segmente)
SSTHRESH
SSTHRESH == 65535
65535
CWND
CWND == 11
Paketverlust
Paketverlust
durch
durch Timeout
Timeout
Sende
Sende
min(WINDOW,
min(WINDOW,
CWND)
CWND) Daten
Daten
Nein
Nein
Inc(CWND)
Inc(CWND)
(Slow
(Slow Start)
Start)
Paketverlust
Paketverlust
17 - 44
CWND
CWND <=
<=
SSTHRESH
SSTHRESH
Ja
Ja
CWND
CWND == 11
Ja
Ja
Nein
Nein
Ja
Ja
Nein
Nein
Conguesten
Conguesten
Avoidance
Avoidance
Slow
Slow Start
Start
Bis
Bis CWND
CWND ==
SSTHRESH
SSTHRESH
CWND
CWND == CWND
CWND ++
1/CWND
1/CWND
(max.
(max. 11 pro
pro RTT)
RTT)
Copyright: © Michael Massoth
17 - 44
Netzwerke, WS 2011/12
TCP-Überlastungsüberwachung
Copyright: © Michael Massoth
17 - 45
17 - 45
Netzwerke, WS 2011/12
Slow Start and Congestion Avoidance (5)
17 - 46
„ Slow Start und Congestion Avoidance: [Siehe dazu Abb.]
ƒ Die maximale Segmentgröße ist 1.024 Byte (= 1 MSS)
ƒ Anfangs umfasst das Überlastungsfenster (Cwnd) 64 KByte, dann
findet ein Timeout statt, so dass der Schwellenwert auf 32 KByte
gesetzt wird. [Soweit die Vorbedingungen !!!]
ƒ Das Überlastungsfenster startet bei 1 MSS (= 1 KByte) und wächst
nach dem TCP Slow Start Algorithmus exponentiell bis es den
Schwellenwert (= Threshold hier bei 32 KByte) erreicht.
ƒ Ab dem Schwellenwert übernimmt der TCP Congestion Avoidance
Algorithmus und das Überlastungsfenster steigt nur noch linear.
ƒ Segment 13 hat kein Glück und geht verloren. Es kommt zu einem
Timeout.
ƒ Der Schwellenwert wird auf die Hälfte der aktuellen Fenstergröße
gesetzt (inzwischen 40 KByte, d. h. die Hälfte ist 20 KByte).
ƒ TCP Slow Start beginnt wieder von neuem (bei 1 ).
Copyright: © Michael Massoth
17 - 46
Netzwerke, WS 2011/12
Slow Start and Congestion Avoidance (6)
17 - 47
„ Slow Start und Congestion Avoidance:
ƒ Slow Start Threshold Size (ssthresh):
ssthresh = minimum(window,cwnd)/2, mindestens aber 2 Segmente
Copyright: © Michael Massoth
17 - 47
Netzwerke, WS 2011/12
Flow Control and Congestion Control
17 - 48
„ Flow Control (Flusskontrolle):
ƒ Soll verhindern, dass ein Sender zeitiger, schneller oder mehr
Daten schickt als der Empfänger verarbeiten kann
ƒ Begrenzung der Datenmenge
„ Congestion Control (Überlastkontrolle):
ƒ Funktion der Netzwerkschicht zur Regelung des Datenflusses
zwischen zwei Netzteilnehmern
ƒ Begrenzung der Übertragungsrate
ƒ Verhindert, dass zu viele Daten in das Netz eingespeist werden
und dadurch Vermittler oder Verbindungen überlastet werden
Merke: Flusskontrolle ist ein Ende-zu-Ende-Problem, während
Überlastkontrolle die Interaktion zwischen Hosts und Netzwerken
betrifft.
Copyright: © Michael Massoth
17 - 48
Netzwerke, WS 2011/12
17 - 49
Lernziele heute:
Transmission Control Protocol (TCP)
‰ Lernziele im Detail:
ƒ
ƒ
ƒ
ƒ
TCP Silly Window Syndrom verstehen und erklären können
TCP Nagle-Algorithmus verstehen, erklären und anwenden können
TCP Karn/Partridge-Algorithmus verstehen und erklären können
TCP Jacobson/Karels-Algorithmus verstehen und erklären können
Copyright: © Michael Massoth
17 - 49
Netzwerke, WS 2011/12
17 - 50
TCP
[Transmission Control Protocol ]
‡
‡
‡
‡
Das Silly-Window-Syndrom
Nagle-Algorithmus
Karn/Partridge-Algorithmus
Jacobson/Karels-Algorithmus
Copyright: © Michael Massoth
17 - 50
Netzwerke, WS 2011/12
Das Silly-Window-Syndrom
17 - 51
Silly-Window-Syndrom (dt. Dummes-Fenster-Syndrom): Tritt auf,
wenn große Datenmengen an die sendende TCP-Instanz übergeben
werden, während eine interaktive Anwendung am empfangenden Ende
die Daten nur Byte für Byte einlesen kann.
Copyright: © Michael Massoth
17 - 51
Netzwerke, WS 2011/12
Silly-Window-Syndrom (1)
Sender
17 - 52
Receiver
„ Problem:
ƒ Aggressive Ausnutzung jedes beliebig verfügbaren Fensters
ƒ Sender verschickt sehr kleine Segmente (z. B. 1 Byte), Empfänger
bestätigt Î Sender schickt wieder sehr kleines Segment, usw. Î
kleine Segmente mit viel Overhead verbleiben (für lange Zeit) im
System
ƒ Tritt nur auf, wenn entweder der Sender ein kleines Segment
überträgt, oder der Empfänger das Fenster nur wenig öffnet
Copyright: © Michael Massoth
17 - 52
Netzwerke, WS 2011/12
Silly-Window-Syndrom (2)
17 - 53
„ Das Silly-Window-Syndrom (Problembeschreibung):
ƒ Der Empfänger sendet ein Zero Window an den Sender, da sein
Buffer voll ist. Die Anwendung beim Empfänger liest allerdings nur
zwei Byte aus dem Buffer. Der Empfänger schickt ein TCP-Header
mit Window=2 (Window Update) an den Sender und fordert
gleichzeitig die zwei Byte an.
ƒ Der Sender kommt der Aufforderung nach und schickt die zwei Byte
in einem 42 Byte großen Paket (mit IP-Header und TCP-Header) an
den Empfänger.
ƒ Damit ist der Buffer des Empfängers wieder voll und er schickt
wieder ein Zero Window an den Sender. Die Anwendung liest jetzt
zum Beispiel hundert Byte aus dem Buffer.
ƒ Der Empfänger schickt wieder ein TCP-Header mit einem kleinen
Window-Wert an den Sender. Dieses Spiel setzt sich immer wieder
fort und verschwendet Bandbreite, da nur sehr kleine Pakete
versandt werden.
Copyright: © Michael Massoth
17 - 53
Netzwerke, WS 2011/12
Abhilfe auf Empfängerseite
17 - 54
„ Abhilfe gegen Silly-Window-Syndrom auf Empfängerseite
von Dave Clark (1982):
ƒ Empfänger darf nur Window = 0 senden, oder
ƒ wartet mit Window-Update bis mind. ein MSS im Puffer frei ist
„ Also die Regel lautet:
ƒ Nachdem ein Fenster mit Größe = 0 bekannt gegeben wurde,
muss der Empfänger solange warten, bis Platz im Umfang von
einer Maximum Segment Size (MSS) vorhanden ist, bevor er
wieder ein offenes Fenster bekannt gibt
ƒ MSS von TCP: Maximal 65.515 Byte Payload
ƒ MSS von TCP über Ethernet: 1.460 Byte Payload
Copyright: © Michael Massoth
17 - 54
Netzwerke, WS 2011/12
Nagle-Algorithmus (1)
17 - 55
„ Abhilfe gegen Silly-Window-Syndrom auf Senderseite von
Nagle (1984):
ƒ Ist ein Segment voll, dann schicke es
ƒ Ist ein Segment nicht voll, dann schicke es erst, wenn du genug
Daten hast, oder keine unbestätigten Pakete mehr unterwegs sind
„ Anmerkung:
ƒ Nagle-Algorithmus ist eine einfache, selbst-taktende Lösung
Copyright: © Michael Massoth
17 - 55
Netzwerke, WS 2011/12
Nagle-Algorithmus (2)
17 - 56
„ Nagle-Algorithmus im Detail:
ƒ Anwendung hat sendebereite Daten produziert
ƒ Einfache, einheitliche Regel für die Entscheidung, wann übertragen
werden soll:
Falls sowohl die verfügbaren Daten als auch das Fenster ≥ MSS, dann
Sende ein volles Segment
Andernfalls
Falls unbestätigte Daten anstehen, dann puffere die neuen Daten,
bis ein ACK ankommt
Andernfalls
Sende alle neuen Daten sofort
„ Anmerkung:
ƒ Nagle-Algorithmus kann durch setzen der TCP_NODELAY-Option
ausgeschaltet werden
Copyright: © Michael Massoth
17 - 56
Netzwerke, WS 2011/12
Verwaltung von Timern in TCP
17 - 57
(a) Wahrscheinlichkeitsdichte der Ankunftszeiten von Bestätigungen (ACKs) auf der
Sicherungsschicht (Layer 2, MAC-Schicht).
(b) Wahrscheinlichkeitsdichte der Ankunftszeiten von Bestätigungen (ACKs) für TCP
Copyright: © Michael Massoth
17 - 57
Netzwerke, WS 2011/12
Abschätzung von Round-Trip-Times
17 - 58
RTT-Muster (Samples) und RTT-Durchschnitt (Average)
[Quelle: Kurose & Ross, Computernetze, Aufl. 2002, Abb. 3.36]
Copyright: © Michael Massoth
17 - 58
Netzwerke, WS 2011/12
Adaptive Neuübertragung
17 - 59
„ Adaptive Neuübertragung (Original-Algorithmus):
ƒ Konzept: Ermittele ständig den gleitenden Durchschnitt der RTT
und berechne daraus den (Retransmission) Timeout-Wert
„ Vorgehen im Detail:
ƒ Messe SampleRTT für jedes Segment/ACK-Paar
ƒ Berechne den gleitenden (gewichteten) Durchschnitt von RTT
ƒ EstimatedRTT ← a x EstimatedRTT + (1 - a) x SampleRTT
- wobei a zwischen 0.8 und 0.9
- Parameter a wird gewählt, um EstimatedRTT zu glätten
ƒ TCP benutz EstimatedRTT, um den Timeout relative konservativ zu
berechnen:
ƒ TimeOut := 2 x EstimatedRTT
Copyright: © Michael Massoth
17 - 59
Netzwerke, WS 2011/12
Karn/Partridge-Algorithmus (1)
17 - 60
„ Problem bei Berechnung von EstimatedRTT:
ƒ Ein ACK bestätigt in Wirklichkeit keine Übertragung, sondern nur
den Empfang von Daten
ƒ Mit anderen Worten: Wenn ein Segment erneut übertragen wird
und anschließend ein ACK beim Sender ankommt, lässt sich
nicht feststellen, ob das ACK mit der ersten oder zweiten
Übertragung des Segments in Verbindung gebracht werden soll
„ Ansatz:
ƒ Überlast ist die wahrscheinlichste Ursache für verlorene
Segmente, was bedeutet, dass die TCP-Quelle nicht zu aggressiv
auf einen Timeout (Retransmission Timer) reagieren sollte
Copyright: © Michael Massoth
17 - 60
Netzwerke, WS 2011/12
Karn/Partridge-Algorithmus (2)
Sender
Receiver
Orig
inal
Retr
trans
miss
io
ansm
issio
17 - 61
Sender
Orig
n
Receiver
inal
trans
miss
ion
ACK
Retr
ansm
issio
n
n
ACK
(a)
(b)
„ Karn/Partridge-Algorithmus:
a) Zusammenhang des ACK mit der ursprünglichen Übertragung
b) Zusammenhang des ACK mit der Neuübertragung
Copyright: © Michael Massoth
17 - 61
Netzwerke, WS 2011/12
Karn/Partridge-Algorithmus (3)
17 - 62
„ Lösung:
ƒ Wann immer TCP ein Segment erneut überträgt, setzt die
Messung der RTT aus
ƒ SampleRTT wird nur für Segmente gemessen, die einmal
gesendet (und bestätigt) wurden
„ Lösung im Detail:
ƒ Jedes Mal, wenn TCP erneut überträgt, dann setzt es den
nächsten Timeout auf das Doppelte des letzten, statt auf die letzte
Estimated RTT
Copyright: © Michael Massoth
17 - 62
Netzwerke, WS 2011/12
Jacobson/Karels-Algorithmus (1)
17 - 63
„ Problem:
ƒ Starke Netzüberlast im Internet
„ Ansatz: Zusammenhang zwischen Timeout und Überlast
ƒ Wenn der Timeout zu früh abläuft, wird ein Segment
möglicherweise unnötig erneut übertragen, wodurch das Netzwerk
noch stärker belastet wird
„ Hauptproblem der ursprünglichen RTT-Berechnung:
ƒ Varianz der SampleRTT wurde nicht in Betracht gezogen
ƒ Weichen die Messwerte (samples) nur wenig voneinander ab, dann
dürfte die EstimatedRTT (geschätzte RTT) zuverlässig sein damit
kein Grund vorliegen RTT mit 2 zu multiplizieren
ƒ Bei großen Schwankungen der SampleRTT ist
Copyright: © Michael Massoth
17 - 63
Netzwerke, WS 2011/12
Jacobson/Karels-Algorithmus (2)
17 - 64
„ Berechnung von mittlerer RTT (Mittelwert) und Schwankungen:
ƒ Differenz = SampleRTT - EstimatedRTT
ƒ EstimatedRTT = EstimatedRTT + (d x Differenz)
ƒ Abweichung ← Abweichung + d x ( |Differenz| - Abweichung)
- wobei d eine Zahl zwischen 0 und 1 ist
ƒ TCP berechnet den Timeout-Wert als Funktion von EstimatedRTT
und Abweichung:
ƒ TimeOut = m x EstimatedRTT + f x Abweichung
- wobei m = 1 und f = 4
TimeOut = EstimatedRTT + 4 x Abweichung
Copyright: © Michael Massoth
17 - 64
Netzwerke, WS 2011/12
Jacobson/Karels-Algorithmus (2)
17 - 65
„ Ergebnis:
ƒ Bei geringen Schwankungen der RTT liegt Timeout nahe bei der
EstimatedRTT
ƒ Bei großen Schwankungen dominiert der Term Abweichungen
ƒ Bemerkung:
ƒ Algorithmus nur so gut wie die Granularität (Genauigkeit) der
rechnerinternen Uhr (z. B. bei Unix 500 ms)
ƒ Genauer Timeout-Mechanismus ist wichtig für Congestion Control
Copyright: © Michael Massoth
17 - 65
Netzwerke, WS 2011/12
17 - 66
Vielen Dank für Ihre
Aufmerksamkeit!
Noch Fragen?
‡ Fragen und Diskussion
Copyright: © Michael Massoth
17 - 66
Netzwerke, WS 2011/12

Documents pareils