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
39
Embed
Informations- und Kommunikationssysteme · data link physical application transport network data link physical network data link physical network data link physical network data link
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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
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
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
• 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
• 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:
• 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: