1 Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
Informations- und Kommunikationssysteme
Kapitel 2.3 Transportschicht
Acknowledgement: Folien angelehnt an J.F. Kurose and K.W. Ross
2
Kapitel 2.3: Transportschicht
Unsere Ziele: • Prinzipien der Dienste der
Transportschicht: • Multiplexing /
Demultiplexing • Verlässlicher Daten-
transfer • Flusskontrolle • Staukontrolle
• Anwendung auf Protokolle der im Internet:
• UDP: verbindungsloser Transport
• TCP: verbindungsorientierter Transport
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
3
Kapitel 2.3 Roadmap
• 3.1 Dienste der Transportschicht • 3.2 Multiplexing und
Demultiplexing • 3.3 Verbindungsloser Transport:
UDP • 3.4 Prinzipien des verlässlichen
Datentransfers
• 3.5 Verbindungsorientierter Transport: TCP
• Segmentstruktur • Verlässlicher Datentransfer • Flusskontrolle • Verbindungs-Management • TCP-Staukontrolle
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
4
Transportdienste und -protokolle
• Ziel: Bereitstellen einer logischen Kommunikation zwischen Anwendungen auf verschiedenen Hosts
• Transportschichtprotokolle laufen in Endsystemen
• Senderseite: Zerlegen von Nachrichten in Segmente, Weitergabe an Netzwerk
• Empfängerseite: Zusammensetzen der Segmente, Weiterleitung an Anwendung
• Mehrere Transportnetzprotokolle • Internet: i.d.R. TCP und UDP
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
application transport network data link physical
application transport network data link physical
network data link physical
network data link physical
network data link physical
network data link physical
network data link physical
5
Transport vs. Netzwerkschicht
• Netzwerkschicht: logische Kommunikation zwischen Hosts
• Transportschicht: logische Kommunikation zwischen Prozessen
• basiert auf und erweitert Dienste der Netzwerkschicht
Analogie zu Haushalten: Kinder einer Familie senden Briefe
an andere Familie • Prozesse = Kinder • Nachrichten= Briefe in
Umschlägen • Hosts = Häuser • Adressen des Transportprotokolls
= Annika und Thomas • Protokoll der Netzwerkschicht =
Postdienst
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
6
Internet Protokolle der Transportschicht
• Verlässliche Auslieferung in Reihenfolge: TCP
• Staukontrolle • Flusskontrolle • Verbindungsaufbau
• Unverlässliche Auslieferung: UDP • Einfache Erweiterung des
“best-effort” IP
• Nicht verfügbare Dienste: • Latenzgarantien • Bandbreitengarantien
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
application transport network data link physical
application transport network data link physical
network data link physical
network data link physical
network data link physical
network data link physical
network data link physical
7
Kapitel 2.3 Roadmap
• 3.1 Dienste der Transportschicht • 3.2 Multiplexing und
Demultiplexing • 3.3 Verbindungsloser Transport:
UDP • 3.4 Prinzipien des verlässlichen
Datentransfers
• 3.5 Verbindungsorientierter Transport: TCP
• Segmentstruktur • Verlässlicher Datentransfer • Flusskontrolle • Verbindungs-Management • TCP-Staukontrolle
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
8
Multiplexing/Demultiplexing
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
application
transport
network
link
physical
P1 application
transport
network
link
physical
application
transport
network
link
physical
P2 P3 P4 P1
Host 1 Host 2 Host 3
= Prozess = Socket
Ausliefern empfangener Seg- mente zum richtigen Socket
Demultiplexing im Empfänger: Datenempfang von mehren Sockets, Verpacken mit Header (später genutzt für Demultiplexing)
Multiplexing im Sender:
9
Funktionsweise des Demultiplexing
• Host empfängt IP-Pakete • Jedes Paket besitzt Quell-IP-
Adresse und Ziel-IP-Adresse • Jedes Paket enthält 1 Segment
für Transportschicht • Jedes Segment enthält Quell-
und Ziel-Port (Port-Nummer sind i.d.R. für Anwendungen festgeschrieben)
• Host nutzt IP-Adresse & Port-Nummern um Segment an korrekten Socket auszuliefern
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
Quell-Port # Ziel-Port # 32 bits
Anwendungsdaten (Nachricht)
Andere Header-Felder
TCP/UDP Segmentformat
10
Verbindungsloses Demultiplexing
• UDP-Sockets werden durch Zweitupel identifiziert:
(Ziel-IP-Adresse, Ziel-Port-Nummer) • Erstellen von Sockets mit bestimmten
Port-Nummern: DatagramSocket mySocket1 = new DatagramSocket(9111); DatagramSocket mySocket2 = new DatagramSocket(9222);
• Host beim Empfang eines UDP-Segmentes:
• Überprüft Ziel-Port in Segment • Leitet weiter an Socket mit der
gleichen Nummer • Quell-IP-Adresse und Quell-
Port-Nummer sind irrelevant für Entscheidung!
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
11
Verbindungsloses Demultiplexing (II)
DatagramSocket serverSocket = new DatagramSocket(6428);
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
Client IP:B
P2
Client IP: A
P1 P1 P3
Server IP: C
QP: 6428 ZP: 9157
QP: 9157 ZP: 6428
QP: 6428 ZP: 5775
QP: 5775 ZP: 6428
Quell-Port (QP) nur als Teil der Antwortadresse nötig!
12
Verbindungsorientiertes Demultiplexing
• TCP-Socket identifiziert durch 4-Tupel:
• Quell-IP-Adresse • Quell-Port-Nummer • Ziel-IP-Adresse • Ziel-Port-Nummer
• Empfänger nutzt alle vier Werte um Socket zu bestimmen!
• Server kann mehrere TCP-Sockets simultan verwenden:
• Jeder Socket verwendet eigenes 4-Tupel
• Webserver haben Sockets für jeden verbundenen Client
• Bei nicht-persistentem HTTP sogar für jede Anfrage einen Socket
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
13
Verbindungsorientiertes Demultiplexing (II)
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
Client IP:B
P1
Client IP: A
P1 P2 P4
Server IP: C
QP: 9157 ZP: 80
QP: 9157 ZP: 80
P5 P6 P3
Z-IP: C Q-IP: A Z-IP: C
Q-IP: B
QP: 5775 ZP: 80
Z-IP:C Q-IP: B
14
Kapitel 2.3 Roadmap
• 3.1 Dienste der Transportschicht • 3.2 Multiplexing und
Demultiplexing • 3.3 Verbindungsloser Transport:
UDP • 3.4 Prinzipien des verlässlichen
Datentransfers
• 3.5 Verbindungsorientierter Transport: TCP
• Segmentstruktur • Verlässlicher Datentransfer • Flusskontrolle • Verbindungs-Management • TCP-Staukontrolle
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
15
UDP: User Datagram Protocol [RFC 768]
• Internet Protokoll “ohne Extras”
• “Best Effort” Dienst, UDP-Segmente können:
• verloren gehen • in falscher Reihenfolge
ankommen • Verbindungslos:
• kein Handshake • jedes UDP-Segment wird
unabhängig von anderen behandelt
Wozu gibt es UDP? • Kein Verbindungsaufbau (der
verzögern kann) • Einfach: kein Verbindungs-
zustand in Sender oder Empfänger
• Kleiner Header • Keine Staukontrolle: UDP kann
immer beliebig schnell senden • Keine Verzögerung durch
Neuanfordern verlorener Pakete
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
16
User Datagram Protocol (II)
• Oft genutzt für Multimedia-Anwendungen
• Tolerant gegen Verlust • Sensitiv gegen
Ratenänderungen
• Weitere Anwendungen: • DNS • SNMP
• Verlässlicher Verkehr über UDP muss auf Anwendungs-schicht realisiert werden
• Erlaubt app.-spezifische Korrektur!
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
Quell-Port # Ziel-Port #
32 bits
Anwendungsdaten (Nachricht)
UDP Segmentformat
Länge Prüfsumme Länge des
UDP-Segments in Bytes
(incl. Header)
17
UDP-Prüfsumme
Sender: • Behandelt Segment als Sequenz
von 16-Bit Ganzzahlen • Prüfsumme: Addition (sog. 1’s
complement sum) der Ganzzahlen • Sender vermerkt Prüfsumme im
UDP Header
Empfänger: • Berechnet Prüfsumme des
empfangenen Segmentes • Prüft ob berechnete Prüfsumme
der übertragenen entspricht: • NEIN – Fehler erkannt • JA – Kein Fehler erkannt.
Aber vielleicht trotzdem Fehler?
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
Ziel: “Fehlererkennung” (e.g., Bitkipper) im Datensegment
18
Internet Prüfsumme - Beispiel
• Notiz • Wenn Ganzzahlen addiert werden, wird der Übertrag dem Ergebnis
hinzugefügt!
• Beispiel: Addition zweier 16-Bit Ganzzahlen
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
Übertrag
Summe Prüfsumme
19
Kapitel 2.3 Roadmap
• 3.1 Dienste der Transportschicht • 3.2 Multiplexing und
Demultiplexing • 3.3 Verbindungsloser Transport:
UDP • 3.4 Prinzipien des verlässlichen
Datentransfers
• 3.5 Verbindungsorientierter Transport: TCP
• Segmentstruktur • Verlässlicher Datentransfer • Flusskontrolle • Verbindungs-Management • TCP-Staukontrolle
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
20
Prinzipien des verlässlichen Datentransports • Wichtig auf Anwendungs-, Transport- & Datensicherungs-
schicht • Immer wieder auch Forschungsthema!
• Charakteristik des unverlässlichen Kanals bestimmt Komplexität des Protokolls für den verlässlichen Datentransfers (reliable data transfer protocol, rdt)
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
21
Verlässlicher Datentransport
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
Sender- seite
Empfänger- seite
rdt_send(): Aufgerufen von Anwendungsschicht, soll Daten an
Anwendung des Empfängers übergeben
udt_send(): Aufgerufen von rdt, um Daten über unverläss-
lichen Kanal zusenden
rdt_rcv(): Aufgerufen wenn Paket auf Senderseite ankommt
deliver_data(): Aufgerufen von rdt um Daten an
Applikation auszuliefern
22
RDT 1: Verlässlicher Transport über verlässlichen Kanal
• Annahme: Zugrunde liegender Kanal vollständig verlässlich • Keine Bitfehler • Keine Paketverluste • Kein Überholen von Paketen
• Sender übergibt Daten ohne weitere Maßnahmen an Kanal • Empfänger liest Daten vom Kanal
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
Sender Empfänger
rdt_send(data)
rdt_rcv(packet)
23
RDT 2: Kanal mit Bitfehlern
• Annahme: Zugrunde liegender Kanal kann Bits in Paket kippen und Prüfsumme detektiert alle Fehler
• Frage: Wie werden Fehler behoben? • Acknowledgements (ACKs): Empfänger quittiert den Empfang jedes
korrekten Paketes explizit mit OK • Negative acknowledgements (NAKs): Empfänger meldet fehlerhaft
empfangene Pakete • Sender übermittelt Paket bei Empfang eines NAK erneut
• Neue Mechanismen in RDT2 (im Vergleich zu RDT1): • Fehlererkennung • Rückmeldung beim Empfänger durch Kontrollnachrichten
(ACK, NAK)
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
24
RDT 2: Beispiel
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
Sender Empfänger
rdt_send(data1)
rdt_rcv(data1) udt_send(data1)
rdt_rcv(ACK)
rdt_send(data1)
rdt_rcv(data1*)
udt_send(data1)
udt_send(NACK) rdt_rcv(NACK)
rdt_send(data1) udt_send(data1)
udt_send(ACK) rdt_rcv(ACK)
udt_send(ACK) rdt_rcv(ACK) udt_send(ACK) rdt_rcv(ACK)
Sender Empfänger
ohne Bitfehler mit Bitfehlern
25
RDT 2: Probleme bei Verlust von Kontrollnachrichten
• F: Was passiert wenn ACK/NAK fehlerhaft sind?
• Sender weiß nicht ob der Empfänger das Paket korrekt erhalten hat!
• Erneute Übermittlung würde zu Duplikaten führen
• Umgang mit Duplikaten: • Sender fügt eine Sequenz-
nummer zu jedem Paket hinzu • Sender übermittelt aktuelles
Paket wenn ACK/NAK fehlerhaft ist
• Empfänger verwirft duplizierte Pakete (i.e. übergibt sie nicht erneut an Anwendung)
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
26
RDT 3: Kanäle mit Fehlern und Verlusten
Neue Annahme: Kanal kann auch Pakete verlieren (Daten und ACKs)
• Prüfsummen, Seq. #, ACKs, Neuübermittlung hilft, reicht aber nicht
Ansatz: Sender wartet “angemessene” Zeit auf ein ACK
• Erneute Übermittlung falls kein ACK erhalten wurde
• Falls Daten (oder ACK) nur verzögert wurden:
• Erneute Übertragung führt zu Duplikaten, aber Seq. # verwerfen Daten
• Empfänger muss Seq # des Paketes für das ACK mit angeben
• Erfordert Countdown Timer
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
Sender sendet genau ein Paket und wartet dann auf Antwort des Empfängers
Stop-and-Wait
27
RDT 3: Beispiele
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
28
RDT 3: Beispiele
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
29
Performanz von RDT 3
• RDT 3 funktioniert, aber schlechte Nutzung der Ressourcen • Beispiel: 1 Gbps Link, 15 ms Ausbreitungsverzögerung, 1KB Paket:
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
d Übertragung = 8 kbit 109 bit/s = 8 µs
! USender: Utilization – Auslastung, Anteil der Zeit die für das Senden verwendet wird
! 1KB Paket alle 30 ms -> 33KB/s Durchsatz über den 1 Gbps Link ! Das Netzwerkprotokoll limitiert Nutzung der Ressourcen!
U Sender = .008
30.008 = 0.00027 L / R
RTT + L / R =
L (Paketlänge in Bits) R (Übertragungsrate, bps) =
30
RDT 3: Stop-And-Wait im Einsatz
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
Erstes Paket Bit übermittelt, t = 0
Sender Empfänger
RTT
Letztes Bit übermittelt, t = L / R
Erstes Paket Bit kommt an Letztes Bit kommt an, ACK wird gesendet
ACK kommt an, nächstes Paket wird gesendet,
t = RTT + L / R
U Sender = .008
30.008 = 0.00027
L / R RTT + L / R
=
31
Lösung: Pipelining Pipelining:
Sender erlaubt mehrere Pakete ohne Acknowledgement • Zahlenbereich der Sequenznummern muss erhöht werden • Puffern von Paketen im Sender und/oder Empfänger notwendig!
• Zwei verschiedene Unterarten von Protokollen mit Pipelining: • Go-Back-N, • Selective Repeat
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
32
Pipelining führt zu besserer Auslastung
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
Erstes Paket Bit übermittelt, t = 0
Sender Empfänger
RTT
Letztes Bit übermittelt, t = L / R
Erstes Paket Bit kommt an Letztes Bit kommt an, sende ACK
ACK kommt an, nächstes Paket wird gesendet,
t = RTT + L / R
2. Paket vollständig, sende ACK 3. Paket vollständig, sende ACK
U Sender = .024
30.008 = 0.0008
3 * L / R RTT + L / R
=
Auslastung um Faktor 3 gesteigert!
33
Go-Back-N
Sender: • k-Bit Sequenznummer im Paket-Header • “Window” von bis zu N, aufeinanderfolgenden Paketen ohne ACK
erlaubt
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
! ACK(n): ACK für alle Pakete bis Seq # n (inklusive) – “cumulative ACK” ! u.U. führt dies zu ACK-Duplikaten (siehe Empfänger)
! Timer für jedes Paket im Transfer ! Timeout(n): Erneute Übermittlung von Paket n und aller Pakete mit
höheren Seq # im Fenster
34
Beispiel für Go-Back-N (Window: 4)
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
35
Selective Repeat
• Empfänger sendet individuelle ACKs für alle korrekt erhaltenen Pakete
• Puffern von Paketen nach Bedarf bis zur korrekten Auslieferung an höhere Schicht
• Sender überträgt nur Pakete ohne ACK erneut • Timer für jedes Paket ohne ACK
• Window des Senders • N aufeinanderfolgende Seq # • (Auch hier) Zahlenraum der Seq # limitiert die Anzahl der zu
sendenden Pakete ohne ACK
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
36
Selective Repeat: Windows von Sender & Empfänger
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
37
Beispiel für Selective Repeat
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
38
Kapitel 2.3 Roadmap
• 3.1 Dienste der Transportschicht • 3.2 Multiplexing und
Demultiplexing • 3.3 Verbindungsloser Transport:
UDP • 3.4 Prinzipien des verlässlichen
Datentransfers
• 3.5 Verbindungsorientierter Transport: TCP
• Segmentstruktur • Verlässlicher Datentransfer • Flusskontrolle • Verbindungs-Management • TCP-Staukontrolle
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
39
TCP: Überblick (RFCs: 793, 1122, 1323, 2018, 2581)
• Vollduplex-Übertragung: • Bidirektionaler Datenfluss
über gleiche Verbindung • MSS: Maximum Segment
Size • Verbindungsorientiert:
• Handshaking initialisiert vom Sender, erzeugt Zustand im Empfänger vor Datenaustausch
• Flusskontrolle: • Sender überlastet
Empfänger nicht
• Punkt-zu-Punkt: • ein Sender, ein Empfänger
• Verlässlicher, geordneter Byte-Strom:
• keine “Nachrichtengrenzen” • Pipelined:
• TCP-Stau- und Flusskontrolle bestimmen Window-Größe
• Sende- & Empfangspuffer
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
socketdoor
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
40
TCP: Segmentstruktur
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
Quell-Port # Ziel-Port #
32 bits
Anwendungsdaten (variable Länge)
Sequenznummer ACK-Nummer
Window
Urg data pointer Prüfsumme F S R P A U head
len res.
Optionen (variable Länge)
URG: eilige Daten (kaum benutzt)
ACK: ACK # gültig
PSH: „pushed“ Auslieferung
(kaum benutzt)
RST, SYN, FIN: Kontrollpakete
(Verb.-aufbau, Abbau Kommandos)
# Bytes die Empfänger akzeptiert
Zähler in Bytes (nicht Segmente!)
Internet Prüfsumme
(wie in UDP)
41
TCP: Sequenznummern und ACKs
Seq. #’s: • Byte-Strom “Zähler”
des ersten Bytes im Segment
ACKs: • Seq # des nächsten
Bytes das erwartet wird
• „Cumulative-ACKs“ F: Wie soll Empfänger mit Paketen in falscher Reihenfolge umgehen? A: In TCP nicht standardisiert – Freie Entscheidung des Implementierers
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
Host A Host B
Seq=42, ACK=79, data = ‘C’
Seq=79, ACK=43, data = ‘C’
Seq=43, ACK=80
User tippt ‘C’
Host sendet ACK für ‘C’-Echo
Host sendet ACK für ‘C’, und
gibt ‘C’-Echo im Fenster
aus
Zeit
Ein einfaches Telnet-Szenario
42
Kapitel 2.3 Roadmap
• 3.1 Dienste der Transportschicht • 3.2 Multiplexing und
Demultiplexing • 3.3 Verbindungsloser Transport:
UDP • 3.4 Prinzipien des verlässlichen
Datentransfers
• 3.5 Verbindungsorientierter Transport: TCP
• Segmentstruktur • Verlässlicher Datentransfer • Flusskontrolle • Verbindungs-Management • TCP-Staukontrolle
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
43
TCP: Verlässlicher Datentransfer
• TCP stellt rdt auf Basis vom unverlässlichen IP-Dienst bereit
• Pipelining von Segmenten • „Cumulative ACKs“ • TCP nutzt einzelnen Timer zur
Neuübermittlung
• Neuübermittlung durch: • Timeout-Ereignisse • Duplizierte ACKs
• Beispiel an einem vereinfachten TCP-Sender:
• Ignoriert ACK-Duplikate • Ignoriert Fluss- und
Staukontrolle
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
44
TCP: Round Trip Time und Timeout
F: Wie setzt TCP den Timeout-Wert?
• Etwas länger als RTT • Aber: RTT variiert
• Zu kurz: vorzeitiger Timeout • Unnötige
Neuübertragungen • Zu lang: Langsame
Reaktion auf Verluste
F: Wie kann RTT geschätzt werden? • SampleRTT: gemessene Zeit von der
Segmentübermittlung bis zum Empfang des korrespondierenden ACK
• Neuübertragungen werden ignoriert!
• SampleRTT variiert, geschätzte RTT muss “geglättet” werden
• Durchschnitt über mehrere Messungen, nicht nur aktuelle SampleRTT
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
45
TCP: Round Trip Time und Timeout
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
EstimatedRTT = (1-α) * EstimatedRTT + α * SampleRTT
! “Exponential Weighted Moving Average” ! Einfluss alter Messungen nimmt exponentiell ab ! Typischer Wert: α = 0.125
46
TCP: Beispiel einer RTT-Schätzung
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
RTT: gaia.cs.umass.edu to fantasia.eurecom.fr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RTT
(mill
isec
onds
)
SampleRTT Estimated RTT
47
TCP: Round Trip Time und Timeout
Setzen des Timeouts
• EstimtedRTT plus “Sicherheit” • Große Variation der EstimatedRTT -> Größerer Sicherheitswert
• Erste Schätzung: Abweichung der SampleRTT von der EstimatedRTT:
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
TimeoutInterval = EstimatedRTT + 4*DevRTT
DevRTT = (1-β)*DevRTT + β*|SampleRTT-EstimatedRTT| (typischerweise, β = 0.25)
Setzen des Timeout-Intervalls:
48
TCP: Ereignisse auf Senderseite
Daten von Anwendung empfangen:
• Erstellen eines Segmentes mit aktueller Seq #
• Ausliefern des Segmentes an untere Schicht
• Starten des Timers, falls dieser nicht bereits läuft
• Timer verantwortlich für das jeweils älteste Segment ohne ACK
• Ablaufinterval: TimeOutInterval
Timeout: • Erneute Übermittlung des
Segments das für Timeout verantwortlich war
• Timer neustarten ACK empfangen: • Falls neues
Acknowledgement • Aktualisieren der bekannten
korrekt empfangenen Pakete
• Starten des Timers falls weitere ACKs ausstehen
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
49
TCP: Szenarien der Neuübermittlung
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
Host A
Seq=100, 20 bytes data
Zeit
Zu kurzes Timeout
Host B
Seq=92, 8 bytes data
Seq=92, 8 bytes data
Seq
=92
Tim
eout
Host A
Seq=92, 8 bytes data
ACK=100
Verlust
Tim
eout
Verlorenes ACK
Host B
X
Seq=92, 8 bytes data
ACK=100
Zeit S
eq=9
2 Ti
meo
ut
SendBase = 100
SendBase = 120
SendBase = 120
Sendbase = 100
50
TCP: Szenarien der Neuübermittlung (II)
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
Host A
Seq=92, 8 bytes data
ACK=100
Verlust
Tim
eout
“Kumulatives ACK”
Host B
X
Seq=100, 20 bytes data
ACK=120
Zeit
SendBase = 120
51
TCP: Fast Retransmit
• Timeout-Intervall oft vergleichsweise lang:
• Große Verzögerung bevor verlorene Pakete erneut übertragen werden
• Detektion verlorener Segmente über
duplizierte ACKs: • Sender schickt oft viele
Segmente direkt hintereinander • Falls Segmente verloren gehen
werden sehr wahrscheinlich duplizierte ACKs auftreten
• Falls Sender drei ACKs für die selben Daten erhalten, wird angenommen, dass das folgende Segment verloren gegangen ist
• Fast Retransmit: Erneute Übertragung von Segmente bevor Timer abläuft
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
52
Kapitel 2.3 Roadmap
• 3.1 Dienste der Transportschicht • 3.2 Multiplexing und
Demultiplexing • 3.3 Verbindungsloser Transport:
UDP • 3.4 Prinzipien des verlässlichen
Datentransfers
• 3.5 Verbindungsorientierter Transport: TCP
• Segmentstruktur • Verlässlicher Datentransfer • Flusskontrolle • Verbindungs-Management • TCP-Staukontrolle
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
53
TCP: Flusskontrolle
• Empfängerseite von TCP besitzt Datenpuffer
• Aber: Anwendungsprozess liest u.U. Daten nur langsam ein
• Im Prinzip Geschwindigkeitsabgleich: Senderate wird automatisch an Empfangsbereitschaft angepasst
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
Sender überlastet Puffer des Empfängers
nicht durch zu schnelles Senden
Flusskontrolle
54
TCP: Arbeitsweise der Flusskontrolle
• (Annahme TCP-Empfänger verwirft Segmente in falscher Reihenfolge)
• Freier Platz im Puffer = RcvWindow = RcvBuffer -[LastByteRcvd -
LastByteRead]
• Empfänger übermittelt freien Platz indem RcvWindow in Segmenten übertragen wird
• Sender limitiert # der Pakete ohne ACK auf RcvWindow
• Garantiert Einhalten der Puffergröße
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
55
Kapitel 2.3 Roadmap
• 3.1 Dienste der Transportschicht • 3.2 Multiplexing und
Demultiplexing • 3.3 Verbindungsloser Transport:
UDP • 3.4 Prinzipien des verlässlichen
Datentransfers
• 3.5 Verbindungsorientierter Transport: TCP
• Segmentstruktur • Verlässlicher Datentransfer • Flusskontrolle • Verbindungs-Management • TCP-Staukontrolle
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
56
TCP: Verbindungs-Management Erinnerung: • TCP-Sender & Empfänger
bauen vor Datenaustausch eine “Verbindung” auf
• Initialisiert TCP-Variablen: • Sequenznummern • Puffer, Flusskontroll-
informationen (e.g. RcvWindow)
Three-Way-Handshake: Schritt 1:
• Client sendet TCP-SYN-Segment an Server
• legt initiale Sequenz-# fest • keine Daten
Schritt 2: • Server empfängt SYN, antwortet
mit SYNACK-Segment
• Server reserviert Puffer • Enthält Sequenz-# des Servers
Schritt 3: • Client empfängt SYNACK,
antwortet mit ACK, welches Daten enthalten darf
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
57
TCP: Verbindungs-Management (II)
Schließen einer Verbindung
Client schließt Socket:
Step 1:
Client Host sendet TCP FIN Kontrollsegment an Server
Step 2:
Server empfängt FIN, antwortet mit ACK. Schließt Verbindung und sendet ebenfalls FIN.
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
Client
FIN
Server
ACK
ACK
FIN
schließen
schließen
geschlossen tim
ed w
ait
58
TCP: Verbindungs-Management (III)
Schritt 3:
Client empfängt FIN, antwortet mit ACK.
• Beginnt mit “Timed Wait”-Zustand und antwortet mit ACK auf empfangene FINs
Schritt 4:
Server empfängt ACK. Verbindung geschlossen.
Anmerkung:
Kleine Änderungen nötig um auf gleichzeitige FINs zu reagieren.
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
Client
FIN
Server
ACK
ACK
FIN
schließen
schließen
geschlossen
„Tim
ed W
ait“
ge- schlossen
59
TCP: Verbindungs-Management (IV)
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
TCP-Client Lebenszyklus
60
TCP: Verbindungs-Management (V)
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
TCP-Server Lebenszyklus
61
Kapitel 2.3 Roadmap
• 3.1 Dienste der Transportschicht • 3.2 Multiplexing und
Demultiplexing • 3.3 Verbindungsloser Transport:
UDP • 3.4 Prinzipien des verlässlichen
Datentransfers
• 3.5 Verbindungsorientierter Transport: TCP
• Segmentstruktur • Verlässlicher Datentransfer • Flusskontrolle • Verbindungs-Management • TCP-Staukontrolle
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
62
TCP: Prinzipien der Staukontrolle
Überlast, Stau: • Informell: “zu viele Quellen senden für das Netzwerk zu viele Daten in
zu kurzer Zeit” • Unterscheidet sich signifikant von Flusskontrolle!
• Erscheinungen in diesem Kontext: • Verlorene Pakete (Pufferüberläufe in Routern) • Lange Verzögerungen (Warteschlangen in Routern)
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
63
TCP: Staukontrolle
• Ende-zu-Ende-Mechanismus (keine Netzwerkunterstützung)
• Sender limitiert gesendete Pakete: LastByteSent - LastByteAcked
≤ CongWin
• Es gilt in etwa,
• CongWin ist dynamisch
• hängt von angenommener Netzauslastung ab
Wie beobachtet ein Sender Stau?
• Paketverlust = Timeout oder 3 duplizierte ACKs
• TCP-Sender reduziert Rate (CongWin) nach jedem Verlust
Drei Mechanismen: • AIMD • Slow-Start • „Konservativ“ nach Timeout
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
Rate = CongWin
RTT Bytes/s
64
TCP: Staukontrolle - AIMD
Multiplicative Decrease: halbiere CongWin bei jedem Verlust
8 Kbytes
16 Kbytes
24 Kbytes
time
congestionwindow
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
Additive Increase: Erhöhen des CongWin um 1 MSS pro RTT ohne Verlust: probing
AIMD in langlebiger TCP-Verbindung
65
TCP: Staukontrolle – Slow Start
• Nach Verbindungsaufbar CongWin = 1 MSS • Beispiel: MSS = 500 Bytes & RTT = 200 ms • Initiale Senderate = 20 kbps
• Verfügbare Bandbreite kann sehr viel größer als MSS/RTT sein • Gewünscht: Schnelles Hochregeln zu geeigneter Rate
• Nach Verbindungsaufbau: Exponentielles Erhöhen der Rate bis zum ersten Verlust
• F: Wie passt der Name Slow Start zum exponentiellen Wachstum?
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
66
TCP: Staukontrolle – Slow Start (II)
• Nach Verbindungsaufbau: Exponentielles Erhöhen der Rate bis zum ersten Verlust:
• Verdoppeln des CongWin nach jeder RTT
• CongWin wird bei jedem empfangenen ACK um 1 erhöht
• Zusammenfassung: Initiale Rate ist langsam, aber wächst sehr schnell
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
Host A
ein Segment
RTT
Host B
Zeit
zwei Segmente
vier Segmente
67
TCP: Staukontrolle – Mehr Details
• Nach 3 duplizierten ACKs: • CongWin wird halbiert • Window wächst dann linear
• Aber nach Timeout: • CongWin wird auf 1 MSS
gesetzt • Window wächst exponentiell • nach Schwellwert lineares
Wachstum
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
! 3 duplizierte ACKs zeigen, dass das Netz wenigstens einige Nachrichten korrekt transportiert
! Timeout ist wesentlich “alarmierender”
Grundannahme:
68
TCP: Staukontrolle – Mehr Details (II)
F: Wann wird zwischen exponentiellem und linearen Wachstum umgeschaltet?
A: Wenn CongWin bei der Hälfte des vorherigen Wertes ist
Implementierung:
• Variabler Schwellwert • Bei Verlust wird Schwellwert, auf
1/2 des CongWin gesetzt, bevor dessen Wert reduziert wird
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
69
TCP: Fairness, Gerechtigkeit
Fairness : Wenn k TCP-Verbindungen über den gleichen Engpass (Flaschenhals, bottleneck) mit Bandbreite R geleitet werden, sollte jede eine durchschnittliche Rate von R/k haben
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
TCP Verbindung 1
Flaschenhals Router mit Kapazität R
TCP Verbindung 2
70
Zusammenfassung: TCP Staukontrolle
• Wenn CongWin kleiner als ist Threshold, befindet sich der Sender in der Slow-Start-Phase
• Window wächst exponentiell.
• Wenn CongWin größer als Threshold, befindet sich der Sender in der Congestion-Avoidance-Phase
• Window wächst linear.
• Wenn 3 duplizierte ACKs auftreten: Threshold wird auf CongWin/2 gesetzt und CongWin auf Threshold.
• Wenn ein Timeout auftritt: Threshold wird auf CongWin/2 gesetzt und CongWin auf 1 MSS.
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
71
TCP: Durchsatz
• Wie hoch ist der durchschnittliche Durchsatz von TCP in Bezug auf Window-Größe und RTT?
• Annahme: kein Slow-Start, Flusskontrolle nicht limitierend
• W = Window-Größe wenn Verlust auftritt. • Durchsatz ist dann W / RTT • Nach jedem Verlust: Window sinkt auf W/2, Durchsatz W / 2 / RTT. • Durchschnittlicher Durchsatz: 0.75 W/RTT (da linearer Anstieg)
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
72
TCP – Modellierung von Verzögerungszeiten
F: • Wie lang dauert die Übertragung
eines Objektes von einem Webserver nach Absenden der Anfrage?
• Annahme kein Stau • Verzögerung beeinflusst durch:
• TCP-Verbindungsaufbau • Datenübertragungsverzögerung • Slow-Start
Notation, Annahmen: • Zwischen Client und Server ein
Link mit Rate R • S: MSS (max. segment size, Bits) • O: Objektgröße (Bits) • keine Neuübertragung (kein
Verlust, keine Bitfehler) Window-Größe: • Zunächst: festes Congestion
Window mit W Segmenten • Anschließend: Dynamisches
Window & Slow Start
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
73
TCP – Latenz bei festem Congestion Window (I)
Erster Fall: WS/R >= RTT + S/R: ACKs erreichen Server bevor durch Window vorgegebener Kredit erschöpft ist
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
Verzögerung = 2 RTT + O/R
74
TCP – Latenz bei festem Congestion Window (II)
Zweiter Fall: • WS/R < RTT + S/R: Warten auf
ACKs nach Nutzen des vollen Kontingents
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
Verzögerung = 2 RTT + O/R + (K-1)[S/R + RTT - WS/R]
75
TCP Latenz: Slow Start (I) Neue Annahme: Latenz wächst wie bei Slow-Start-Algorithmus
Wir zeigen, dass die Latenz für ein Objekt den folgenden Wert hat:
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
Latenz = 2RTT +OR+P RTT + S
R!
"#$
%&− (2P −1) S
R
wobei P die Anzahl der Zyklen ist, die TCP im Server wartet:
}1,{min −= KQP
- wobei Q die Anzahl der Wartezyklen ist, wenn das Objekt unendliche Größe hätte.
- K ist Anzahl der Windows die für das Objekt gebraucht
werden.
76
TCP Latenz: Slow Start (II)
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
RTT
initiate TCPconnection
requestobject
first window= S/R
second window= 2S/R
third window= 4S/R
fourth window= 8S/R
completetransmissionobject
delivered
time atclient
time atserver
Beispiel: ! O/S = 15 Segmente ! K = 4 Windows ! Q = 2 ! P = min{K-1,Q} = 2
! Server wartet P=2 mal
Komponenten Latenz: ! 2 RTT für Verb.-
aufbau und Request ! O/R zum Senden des
Objektes ! Wartezeit durch Slow-
Start ! Server wartet:
P = min{K-1,Q} mal
77
Modellierung der HTTP-Antwortzeit
• Annahme Webseite besteht aus: • einer HTML-Seite (der Größe O Bits) • M Bildern (jeweils O Bits)
• Nicht-persistentes HTTP: • M+1 aufeinander folgende TCP-Verbindungen • Antwortzeit = (M+1)O/R + (M+1)2RTT + Summe der Wartezeiten
• Persistentes HTTP (mit Pipelining): • 2 RTT um eine HTML-Datei anzufragen und zu erhalten • 1 RTT um M Bilder anzufragen und zu erhalten • Antwortzeit = (M+1)O/R + 3RTT + Summe der Wartezeiten
• Nicht-persistentes HTTP mit x Parallelverbindungen • Annahme: M/x ganzzahlig. • 1 TCP Verbindung für HTML-Datei • M/x Folgen von x parallelen Verbindungen für die Bilder. • Antwortzeit = (M+1)O/R + (M/x+1)2RTT + Summe der Wartezeiten
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht
78
Kapitel 2.3: Zusammenfassung
• Grundlegende Prinzipien von Diensten der Transportschicht:
• Multiplexing, Demultiplexing • Verlässlicher Datentransfer • Flusskontrolle • Staukontrolle
• Verwendung und Implementierung im Internet:
• UDP • TCP
Anschließend: • Verlassen der Network
“Edge” (Anwendungs- & Transportschicht)
• Behandlung des Network “Core”
Informations- und Kommunikationssysteme (SS 2014): 02 - Transportschicht