Folien

Transcription

Folien
TCP - Kollisionsvermeidung
und verwandtes
Marcus Blomenkamp
Januar 2003
TCP abstrakt (Rückblick)
• verlässlicher Transportweg - realisiert durch
– Zerteilung und Versand des Datenstromes in Paketen
– wiederholtes Senden verlorengegangener Pakete
– Quittierungverfahren
∗ nicht Empfangsbestätigung werden gesendet
∗ sondern Mitteilungen über noch fehlende Segmente
• effektive Nutzung der gegebenen Bandbreite - realisiert durch
– Anwendung eines Sliding-Window Verfahrens
TCP - Kollisionsvermeidung und verwandtes
Januar 2003
<
u
>
Systembeschreibung
• TCP-Verbindung ist bidirektional
– Verfahren und Heuristiken fuer beide Richtungen identisch
– nachfolgende Beschreibungen daher nur unidirektional
• relevante Objekte
–
–
–
–
Sliding-Window beim Sender
Empfangspuffer beim Empfänger
Puffer in Zwischenstationen (zB Router)
Übertragungsmedien mit begrenzter Bandbreite
TCP - Kollisionsvermeidung und verwandtes
Januar 2003
<
u
>
Das Sliding-Window (versendeseitig)
1 2 3 4 5 6 7 8 9
A
X
B
• Bedeutung der Bereiche
– Daten bis Punkt A sind bestätigt übertragen
– Empfang der Daten zwischen A und X noch nicht bestätigt
– Daten zwischen X und B sind noch nicht gesendet.
• Definition der Trennpunkte
– Punkt A ergibt sich aus höchstem bestätigten Oktett
– Offset von Punkt B bzgl A ergibt sich aus der Grösse des Zielfensters
– Punkt X markiert den aktuellen Sendezeiger
TCP - Kollisionsvermeidung und verwandtes
Januar 2003
<
u
>
Fluss-Probleme abstrakt
• Systemgegebenheiten bedingen Flusskontrolle
– Übertragungs- und Verarbeitungs-Geschwindigkeit ist begrenzt
∗ konkrete Werte nicht vorher bekannt
∗ Konstanz der Werte nicht gegeben
– Sender-Charakteristik ist unbekannt/variiert
• Aufteilung in konkrete Fluss-Probleme
– End-To-End Flow (zwischen zwei kommunizierenden Partnern)
∗ direkt kontrollierbar
– Intermediate Flow (Routing-Probleme, Überlastung etc)
∗ nicht direkt steuerbar
TCP - Kollisionsvermeidung und verwandtes
Januar 2003
<
u
>
Endpunkt Flusskontrolle
• Prinzip:
– Empfänger informiert Sender über verbliebenen Pufferplatz bei jeder
Bestätigung (window advertisement)
– Empfänger informiert Sender über verbliebenen Pufferplatz bei Abarbeitung
– Sender kann explizit das Abarbeiten des Empfangspuffers veranlassen
(PUSH flag)
TCP - Kollisionsvermeidung und verwandtes
Januar 2003
<
u
>
Endpunkt Flusskontrolle
• Basis-Optimierung:
– Delayed Acknowledgements - Versenden der ACKs kurzeitig (<200ms)
verzögern um
∗ mehrere Bestätigungen zu einer zusammen zu fassen
∗ Bestätigung mit einem anderen Datenpaket mitzuschicken (piggyback)
– Nagle Algorithm - verzögertes Versenden von kleinen Datenmengen
∗ solange bis Menge eines Segmentes erreicht ist
∗ solange bis alle bisherigen Daten bestätigt sind
TCP - Kollisionsvermeidung und verwandtes
Januar 2003
<
u
>
Endpunkt Fluss-Probleme
• Silly-Window Syndrom, Ablauf:
–
–
–
–
–
1.
2.
3.
4.
5.
Empfangspuffer ist voll
Empfangsseite verarbeitet sehr wenig Daten (zB ein Oktett)
Empfangsseite kündigt ein freies Oktett an
Sender schickt genau ein Oktett
usw... -> Banbreitenverschwendung
• Lösung des Silly-Window Problems:
– empfängerseitig: Platzankündigung erst verschicken wenn
∗ mehr als die Hälfte des Puffers leer sind
∗ mindestens ein maximales Segment hineinpasst
– senderseitig: Nagle Algorithm
TCP - Kollisionsvermeidung und verwandtes
Januar 2003
<
u
>
Fluss-Probleme konkret
• mögliche Ereignisse und daraus folgende Probleme
– beim Empfänger
∗ Puffer läuft über -> Paketverlust
– an Zwischenstationen
∗ Puffer läuft über -> Paketverlust
∗ bei Belastung -> Paketverzögerung
∗ Datenfehler (selten) -> Paketverlust
• daraus folgen behandelbare Symptome
– variierende Paketlaufzeiten
– Paketverlust
TCP - Kollisionsvermeidung und verwandtes
Januar 2003
<
u
>
Problemfeld variiende Laufzeiten vs Paketverlust
• Entscheidung zwischen ’Paket verloren’ und ’Paket verzögert’ nicht trivial, da
– durchschnittliche Paketlaufzeit nicht bekaannt
– -> statische Vergleichswerte ungeeignet
• Lösungsansätze muessen adaptiv sein
– -> Messung bzw Bestimmung der Werte muss real erfolgen
TCP - Kollisionsvermeidung und verwandtes
Januar 2003
<
u
>
Bestimmung der Rundlaufzeitgrenzen
• In Theorie simpel: Pakete die länger als Tmax brauchen, gelten als verloren
T dif f = T (ACK RECEIV ED) − T (SEN T )
(1)
T mean = α ∗ (T mean) + (α − 1) ∗ (T dif f )
(2)
T max = γ ∗ T mean
(3)
• In Praxis nicht
– Retransmissions sind bitidentisch, dh Bezugszeitpunkt nicht eindeutig
(acknowledgement ambiguity)
– pessimistische Schätzung -> Tmean wächst bei Paketverlust stark
– optimistische Schätzung -> Stabilisierung auf zu niedrigem Wert
– -> andere Lösung muss her
TCP - Kollisionsvermeidung und verwandtes
Januar 2003
<
u
>
RTT-Bestimmung mit Karns Algorithmus
• Strategie:
– wiederholt gesendete Pakete bei der Durchschnittsberechnung ignorieren
• Problem:
– scharfer Anstieg der Verzögerung wird ignoriert
– -> Bandbreitenverschwendung folgt
• Lösung:
– Timeout bei Wiederholungen stark erhöhen (zB exponentiell)
– Timeout nach nach gültigen Samples zurücksetzen
• Ergebnis (empirisch)
– Gute Durchsatzraten auch bei hohen Verlustraten
TCP - Kollisionsvermeidung und verwandtes
Januar 2003
<
u
>
weitere Verbesserung der RTT-Abschaetzung
• Ausgangspunkt und Problem
– fixes Verhältnis zwischen RTT und Retransmission-Timeout
– Varianz der Verzögerungen steigt mit der Medienauslastung
∗ Formel:
σ = 1/(1 − L)
∗ Beispiel: 80% Auslastung -> Faktor 10
– Rückschluss: sinnvoll anwendbar bis max 30% Last
TCP - Kollisionsvermeidung und verwandtes
Januar 2003
<
u
>
weitere Verbesserung der RTT-Abschaetzung
• Lösung
– reale Varianz als Verhältnisfaktor miteinbeziehen
– Formel:
DIF F = SAM P LE − Old RT T
(4)
Smooth RT T = Old RT T + a ∗ DIF F
(5)
DEV = Old DEV + b ∗ (|DIF F | − Old DEV )
(6)
T imeout = Smooth RT T + n ∗ DEV
(7)
TCP - Kollisionsvermeidung und verwandtes
Januar 2003
<
u
>
Paketverlust und Vermeidung dessen
• Ursache:
– Paketverluste sind meist Folgen von Überlastung
• Schlussfolgerung:
– Überlastungen sind möglichst zu vermeiden -> langsam an Lastgrenze
herantasten
– vorhandene Überlastungen sind rasch abzubauen
• Implementationsmittel:
– Definition eines neuen Fensters (congestion window) als zusätzliche obere
Schranke des Datenversandes.
TCP - Kollisionsvermeidung und verwandtes
Januar 2003
<
u
>
Slow Start - Prinzip
• Initialisiere C-Window auf ein maximales Segment
• iteriere über
– Sende soviele Segment wie maximal erlaubt
– erhöhe pro ankommenendem ACK das C-Window um ein weiteres Segment
– obere Gerenze ergibt sich automatisch aus
∗ geschrumpftem Empfängerfenster
∗ Paketverlust
TCP - Kollisionsvermeidung und verwandtes
Januar 2003
<
u
>
Erkennung und Behandlung von Überlast
• Paketverlust ist erkennbar am
– Überschreiten von Bestätigungs-Timeouts
– Empfang von duplizierten Bestätigungen
• direkte Reaktion
– vermerke das Minimum von ’halbes aktuelles Fenster’ und 2 Segmenten in
neuer Slow-Start-Threshold Variable
– falls Timeout Ursache -> setze C-Window auf Minimum zurück
– danach
∗ erhöhe weiterhin C-Window nach Erhalt von ACKs
∗ Wert abhängig von C-Window <-> SST
· falls < SST dann gewöhnliche exponentielle Erhöhung
· falls >= SST dann lineare Erhöhung
TCP - Kollisionsvermeidung und verwandtes
Januar 2003
<
u
>
verbesserte Kollisionsbehandlung
Fast Retransmission/Recovery
• Beobachtungen:
– eine geringe Zahl von duplicate ACKs weist oft nur Paket-Reordering und
nicht auf Paketverlust hin
– eine grössere Zahl (> 3) ist wahrscheinlicher ein Zeichen für Paketverlust
• Nutzung:
– spekulativ das vermeintlich fehlende Paket senden
– kein Rückgriff auf Slow Start Zyklus nötig
– stattdessen direkt nachfolgend Einsatz der linearen Strategie
TCP - Kollisionsvermeidung und verwandtes
Januar 2003
<
u
>
Zusammenfassung
• TCP bietet
– einen zuverlässigen Mechanismus zur Erkennung von Paketverlusten
– eine schnelle Erholung von abnormalen Zuständen
– zügiges Erreichen einer hohen und effektiven Bandbreiten-Nutzung
• ungünstig wirkt sich aus
– Verlust von direkt aufeinander folgenden Paketen, da Wechsel zu Low Start
getriggert wird
• daher Konfigurationshinweis für Router
– nicht Tail-Drop Queueing verwenden
– besser Random-Early-Discard
TCP - Kollisionsvermeidung und verwandtes
Januar 2003
<
u
>

Documents pareils