Selektywne powtarzanie (SP)
odbiorca selektywnie potwierdza poprawnie
odebrane pakiety
buforuje pakiety, gdy potrzeba, w celu uporzÄ…dkowania
przed przekazaniem warstwie wyższej
nadawca retransmituje tylko pakiety, dla których
nie odebrał ACK
nadawca ma zegar dla każdego niepotwierdzonego,
wysłanego pakietu.
okno nadawcy
N kolejnych numerów sekwencyjnych
określa, jakie pakiety mogą być wysłane bez
potwierdzenia
3-1
SP: okna nadawcy i odbiorcy
poczÄ…tek okna
nadawca
(pocz_okna)
następny numer
sekwencyjny
(nast_num) już
gotowy, nie
potwierdzony
wysłany
wysłany, nie
nie używany
potwierdzony
rozmiar okna: N
potwierdzony,
gotowy do
w buforze
odebrania
oczekiwany, nie
nie używany
otrzymany
rozmiar okna: N
odbiorca
3-2
SP: nadawca i odbiorca
odbiorca
nadawca
pakiet n z okna
dane od wyższej warstwy:
wyślij ACK(n)
jeśli w oknie jest wolny
nie w kolejności: do bufora
numer sekwencyjny, wyślij
w kolejności: przekaż (także
pakiet
przekaż uporządkowane
timeout(n):
pakiety z bufora), przesuń
retransmituj pakiet n, ustaw
okno do następnego
ponownie zegar
nieodebranego pakietu
ACK(n) pakietu w oknie:
pakiet n z N pakietów
zaznacz pakiet jako odebrany
przed oknem
i wyłącz zegar
potwierdz ACK(n)
jeśli n jest początkiem okna,
wszystkie inne pakiety:
przesuń okno do następnego
ignoruj
niepotwierdzonego pakietu
3-3
SP w działaniu
wysłany pkt0
odebr. pkt0, przekazany,
0 1 2 3 4 5 6 7 8 9 wysł. ACK0
wysłany pkt1
0 1 2 3 4 5 6 7 8 9
odebr. pkt1, przekazany,
0 1 2 3 4 5 6 7 8 9
wysł. ACK1
wysłany pkt2
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
(strata)
wysłany pkt3, pełne okno
odebr. pkt3, buforowany,
0 1 2 3 4 5 6 7 8 9
wysł. ACK3
0 1 2 3 4 5 6 7 8 9
odebr. ACK0, wysł. pkt4
odebr. pkt4, buforowany,
wysł. ACK4
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
odebr. ACK1, wysł. pkt5
odebr. pkt5, buforowany,
0 1 2 3 4 5 6 7 8 9
wysł. ACK5
timeout, retransmisja pkt2
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
odebr. pkt2, przekazane
odebr. ACK3, nic nie wysłane pkt2, pkt3, pkt4, pkt5,
wysł. ACK3
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
3-4
SP: dylemat
Przykład:
numery: 0, 1, 2, 3
rozmiar okna = 3
odbiorca nie odróżni obu
scenariuszy!
niepoprawnie przekaże
podwójnie dane w (a)
Pytanie: jaki jest zwiÄ…zek
pomiędzy ilością numerów
sekwencyjnych a
rozmiarem okna?
3-5
Mapa wykładu
Usługi warstwy Transport połączeniowy:
transportu TCP
struktura segmentu
Multipleksacja i
niezawodna komunikacja
demultipleksacja
kontrola przepływu
Transport
zarządzanie połączeniem
bezpołączeniowy: UDP
Mechanizmy kontroli
Zasady niezawodnej
przeciążenia
komunikacji danych
Kontrola przeciążenia w
TCP
3-6
TCP: PrzeglÄ…d RFC: 793, 1122, 1323, 2018, 2581
komunikacja "full duplex":
koniec-koniec:
dwukierunkowy przepływ
jeden nadawca,
danych na tym samym
jeden odbiorca
połączeniu
niezawodny, uporzÄ…dkowany
MRS: maksymalny rozmiar
strumień bajtów:
segmentu
nie ma granic komunikatów
połączeniowe:
wysyłający grupowo:
inicjalizacja (wymiana
kontrola przeciążeń i przepływu
komunikatów kontrolnych)
TCP określają rozmiar okna
połączenia przed
komunikacjÄ… danych
bufory u nadawcy i odbiorcy
kontrola przepływu:
aplikacja nadawca nie "zaleje"
aplikacja
pisze dane
czyta dane
gniazdo odbiorcy
gniazdo
TCP TCP
bufor nadawcy bufor odbiorcy
segment
3-7
Struktura segmentu TCP
32 bity
URG: pilne dane
licząc według
port nadawcy # port odbiorcy #
(zwykle nie używane)
bajtów danych
numer sekwencyjny
(nie segmentów!)
ACK: numer ACK
numer potwierdzenia
używane
dług. nie
UAP R S Okno odbiorcy
F
nagł. używ.
ilość bajtów,
PSH: wypchnij dane
suma kontrolna
Wsk. na pilne dane
jakie przyjmie
odbiorca
RST, SYN, FIN:
Opcje (zmienna długość)
zarzÄ…dzanie
połączeniem
(polecenia nawiÄ…zania
dane
i zamknięcia)
aplikacji
Internetowa
(zmienna długość)
suma kontrolna
(jak w UDP)
3-8
TCP: numery sekwencyjne i
potwierdzenia
Numery sekwencyjne:
Host B
Host A
numer w "strumieniu
Użytkownik
bajtów" pierwszego bajtu
wpisuje
C
danych segmentu
Host B
Potwierdzenia:
potwierdza
numer sekwencyjny
C , wysyła
z powrotem
następnego bajtu
C
oczekiwanego od drugiej
strony
host A
potwierdza
kumulatywny ACK
odbiór
Pytanie: jak odbiorca traktuje
C
segmenty nie w kolejności otrzymanego
O: specyfikacja TCP tego od hosta B
czas
nie określa: decyduje
prosty scenariusz telnet
implementacja
3-9
N
u
m
e
r
=
4
2
,
A
C
K
=
7
9
,
d
a
n
e
=
C
C
=
e
n
a
d
,
3
4
=
K
C
A
,
9
7
=
r
e
m
u
N
N
u
m
e
r
=
4
3
,
A
C
K
=
8
0
TCP: czas powrotu (RTT) i timeout
Pytanie: jak estymować RTT?
Pytanie: jak ustalić
MierzoneRTT: czas zmierzony
timeout dla TCP?
od wysłania segmentu do odbioru
dłuższe niż RTT
ACK
ale RTT jest
ignorujemy retransmisje
zmienne
MierzoneRTT będzie zmienne,
za krótki: za
chcemy mieć "gładsze"
wczesny timeout
estymowane RTT
niepotrzebne
średnia z wielu ostatnich
retransmisje
pomiarów, nie tylko
aktualnego MierzoneRTT
za długi: wolna
reakcja na stratÄ™
segmentu
3-10
TCP: czas powrotu (RTT) i timeout
EstymowaneRTT = (1- Ä…)*EstymowaneRTT + Ä…*MierzoneRTT
Wykładnicza średnia ruchoma
wpływ starych pomiarów maleje wykładniczo
typowa wartość parametru: ą = 0.125
3-11
Przykład estymacji RTT:
RTT: gaia.cs.umass.edu to fantasia.eurecom.fr
350
300
250
200
150
100
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
SampleRTT Estimated RTT
3-12
RTT (milliseconds)
TCP: czas powrotu (RTT) i timeout
Ustawianie timeout
EstymowaneRTT dodać margines błędu
im większa zmienność MierzoneRTT,
tym większy margines błędu
najpierw ocenić, o ile MierzoneRTT jest oddalone od
EstymowaneRTT:
BÅ‚Ä…dRTT = (1-²)*BÅ‚Ä…dRTT +
²*|MierzoneRTT - EstymowaneRTT|
(zwykle, ² = 0.25)
Ustalanie wielkości timeout:
Timeout = EstymowaneRTT + 4*BÅ‚Ä…dRTT
3-13
Mapa wykładu
Usługi warstwy Transport połączeniowy:
transportu TCP
struktura segmentu
Multipleksacja i
niezawodna komunikacja
demultipleksacja
kontrola przepływu
Transport
zarządzanie połączeniem
bezpołączeniowy: UDP
Mechanizmy kontroli
Zasady niezawodnej
przeciążenia
komunikacji danych
Kontrola przeciążenia w
TCP
3-14
Niezawodna komunikacja TCP
TCP tworzy usługę NPK Retransmisje są
na zawodnej powodowane przez:
komunikacji IP
zdarzenia timeout
duplikaty ACK
Wysyłanie grupowe
segmentów Na razie rozważymy
prostszego nadawcÄ™ TCP:
Kumulowane
ignoruje duplikaty ACK
potwierdzenia
ignoruje kontrolÄ™
TCP używa
przeciążenia i przepływu
pojedynczego zegara
do retransmisji
3-15
Zdarzenia nadawcy TCP:
Dane od aplikacji:
Timeout:
Utwórz segment z numerem
retransmituj segment,
sekwencyjnym
który spowodował timeout
numer sekwencyjny to numer w
ponownie włącz zegar
strumieniu bajtów pierwszego
bajtu danych segmentu
Odbiór ACK:
włącz zegar, jeśli jest wyłączony
Jeśli potwierdza
(zegar działa dla najstarszego
niepotwierdzone
niepotwierdzonego segmentu)
segmenty:
oblicz czas oczekiwania:
potwierdz odpowiednie
Timeout
segmenty
włącz zegar, jeśli są
brakujÄ…ce segmenty
3-16
Nast_Num = 1
Pocz_Okna = 1
loop (forever)
Nadawca TCP
{
switch( zdarzenie )
(uproszczony)
{
zdarzenie: Dane od aplikacji
stwórz segment z numerem Nast_Num;
if ( zegar wyłączony )
włącz zegar;
przekaż segment do warstwy IP;
Komentarz:
Nast_Num = Nast_Num + length( dane );
" Pocz_Okna - 1: ostatni
potwierdzony bajt
zdarzenie: Timeout
Przykład:
retransmituje niepotwierdzony segment
" Pocz_Okna - 1 = 71;
o najniższym numerze sekwencyjnym;
włącz zegar;
y= 73, więc odbiorca chce
bajty powyżej 73;
zdarzenie: Odbiór ACK potwierdzającego pakiet y
y > Pocz_Okna, więc nowe
if ( y > Pocz_Okna )
dane zostały potwierdzone
{
Pocz_Okna = y;
if ( sÄ… niepotwierdzone segmenty w oknie )
włącz zegar;
}
}
3-17
} /* end of loop forever */
TCP: scenariusze retransmisji
Host A
Host B
Host A
Host B
X
strata
Pocz_Okna
= 100
Pocz_Okna
= 120
Pocz_Okna
Pocz_Okna
= 100
= 120
czas
czas
za wczesny timeout
scenariusz ze stratÄ… ACK
3-18
timeout
timeout numeru 92
timeout numeru 92
N
u
N
m
u
e
m
r
=
e
9
r
=
2
9
,
2
8
,
b
8
a
b
j
t
ó
a
j
w
t
ó
d
w
N
a
d
n
u
a
y
m
c
n
h
y
e
c
r
h
=
1
0
0
,
2
0
b
a
j
t
ó
w
d
a
n
y
0
c
h
0
1
=
K
C
A
0
0
1
0
=
2
K
1
=
C
K
A
C
A
N
u
m
N
e
u
r
m
=
9
e
2
r
=
,
9
8
2
b
,
a
8
j
t
b
ó
a
w
j
t
d
ó
a
w
n
d
y
a
c
h
n
y
c
h
0
2
1
=
K
0
C
0
1
A
=
K
C
A
TCP: scenariusze retransmisji (c.d.)
Host A Host B
X
strata
Pocz_Okna
= 120
czas
Skumulowany ACK
3-19
timeout
N
u
m
e
r
=
9
2
,
8
b
a
j
t
ó
w
d
a
n
y
c
h
0
0
1
N
=
u
m
K
e
C
r
=
A
1
0
0
,
2
0
b
a
j
t
ó
w
d
a
n
y
c
h
0
2
1
=
K
C
A
Wysyłanie ACK w TCP [RFC 1122, RFC 2581]
Akcja odbiorcy TCP
Zdarzenie u odbiorcy TCP
Opóznione ACK. Czekaj do 500 ms
Odbiór segmentu o oczekiwanym
na następny segment. Jeśli go nie ma,
numerze w kolejności. Wszystkie
wyślij ACK.
poprzednie dane już potwierdzone
Wyślij natychmiast skumulowane ACK,
Odbiór segmentu o oczekiwanym
potwierdzajÄ…ce oba segmenty.
numerze w kolejności. Jeden inny
segment nie był potwierdzony
Wyślij natychmiast duplikat ACK, w którym
Odbiór segmentu nie w kolejności
podany jest numer oczekiwanego bajtu
o za wysokim numerze. Wykrycie
luki w danych
Jeśli segment leży na początku luki,
Odbiór segmentu, który całkiem
wyślij natychmiast ACK.
lub częściowo wypełnia lukę.
3-20
Szybkie retransmisje
Okres oczekiwania na Jeśli nadawca otrzyma
timeout jest długi: 3 duplikaty ACK dla
tych samych danych,
długie czekanie na
retransmisje
zakłada, że następny
segment po
Rozpoznaj stracone
potwierdzonych danych
segmenty przez
zginÄ…Å‚:
duplikaty ACK.
szybkie retransmisje:
Nadawca często wysyła
wyślij segment zanim
segmenty jeden tuż po
nastÄ…pi timeout
drugim
Jeśli segment zginie,
może być wiele
duplikatów ACK.
3-21
Algorytm szybkich retransmisji:
zdarzenie: Odbiór ACK potwierdzającego pakiet y
if ( y > Pocz_Okna )
{
Pocz_Okna = y;
if ( sÄ… niepotwierdzone segmenty w oknie )
włącz zegar;
}
else
{
zwiększ licznik duplikatów ACK dla y;
if ( licznik duplikatów ACK dla y == 3 )
retransmituj segment y;
}
duplikat ACK dla już
szybka retransmisja
potwierdzonego segmentu
3-22
Mapa wykładu
Usługi warstwy Transport połączeniowy:
transportu TCP
struktura segmentu
Multipleksacja i
niezawodna komunikacja
demultipleksacja
kontrola przepływu
Transport
zarządzanie połączeniem
bezpołączeniowy: UDP
Mechanizmy kontroli
Zasady niezawodnej
przeciążenia
komunikacji danych
Kontrola przeciążenia w
TCP
3-23
Kontrola przepływu TCP
kontrola przepływu
odbiorca TCP ma bufor
nadawca nie "zaleje"
odbiorcy:
bufora odbiorcy
Okno
przesyłając za dużo i
odbiorcy TCP
za szybko
Dane
Dane do
Dane od
Wolne
TCP w
warstwy
warstwy IP
miejsce
buforze
aplikacji
Bufor TCP
usługa dopasowania
Proces aplikacji może
prędkości: dopasuje
za wolno czytać z
prędkość wysyłania do
bufora
prędkości odbioru danych
przez aplikacjÄ™
3-24
Jak działa kontrola przepływu TCP
Okno odbiorcy TCP
Dane
Dane do
Dane od
Wolne
TCP w
warstwy
warstwy IP
miejsce
buforze
aplikacji
Bufor TCP
Załóżmy, że odbiorca wyrzuca segmenty nie w kolejności.
Odbiorca ogłasza wolne miejsce umieszczając jego
wielkość w segmentach ACK
Odbiorca ogranicza rozmiar okna do wolnego
miejsca
gwarantuje, że bufor nie zostanie przepełniony
3-25
Mapa wykładu
Usługi warstwy Transport połączeniowy:
transportu TCP
struktura segmentu
Multipleksacja i
niezawodna komunikacja
demultipleksacja
kontrola przepływu
Transport
zarządzanie połączeniem
bezpołączeniowy: UDP
Mechanizmy kontroli
Zasady niezawodnej
przeciążenia
komunikacji danych
Kontrola przeciążenia w
TCP
3-26
Zarządzanie połączeniem TCP
Trzykrotny uścisk dłoni:
Przypomnienie: Nadawca i
odbiorca TCP, tworzÄ…
Krok 1: host klienta wysyła
połączenie zanim wymienią
segment SYN do serwera
dane
podaje poczÄ…tkowy numer
inicjalizacja zmiennych
sekwencyjny
TCP:
bez danych
numery sekwencyjne
Krok 2: host serwera odbiera
bufory, informacja
SYN, odpowiada segmentem
kontroli przepływu
SYNACK
(rozmiar bufora)
klient: nawiązuje połączenie
serwer alokuje bufory
Socket clientSocket = new
określa początkowy numer
Socket("hostname","port
Krok 3: klient odbiera SYNACK,
number");
odpowiada segmentem ACK,
serwer: odbiera połączenie
który może zawierać dane
Socket connectionSocket =
welcomeSocket.accept();
3-27
Zarządzanie połączeniem TCP (c.d..)
Zamykanie połączenia:
klient
serwer
klient zamyka gniazdo:
zamnknij
clientSocket.close();
gniazdo
Krok 1: Host klienta wysyła
segment TCP FIN do
zamknij
serwera
gniazdo
Krok 2: serwer odbiera FIN,
odpowiada segmentem
ACK. Zamyka połączenie,
wysyła FIN.
połączenie
zamknięte
połączenie
zamknięte
3-28
timeout
F
I
N
K
C
A
N
I
F
A
C
K
Zarządzanie połączeniem TCP (c.d.)
klient
serwer
Krok 3: klient odbiera FIN,
odpowiada segmentem ACK.
zamknij
gniazdo
Rozpoczyna oczekiwanie-
będzie odpowiadał ACK na
otrzymane FIN.
zamknij
gniazdo
Krok 4: serwer odbiera ACK.
Połączenie zamknięte.
Uwaga: z małymi zmianami,
połączenie
obsługuje jednoczesne FIN.
zamknięte
połączenie
zamknięte
3-29
timeout
F
I
N
K
C
A
N
I
F
A
C
K
Zarządzanie połączeniem TCP (c.d..)
aplikacja klienta
ZAMKNITE
otwiera połączenie
minęło 30s
wyślij SYN
CZEKAJ WYSAANY SYN
odebrano SYN-ACK
odebrano FIN
wyślij ACK
wyślij ACK
FIN-CZEKAJ 2 POACZONY
Cykl życia
aplikacja klienta
odebrano ACK
zamyka połączenie
serwera TCP
wyślij FIN
FIN-CZEKAJ 1
aplikacja serwera
tworzy gniazdo
ZAMKNITE
odebrano ACK czekajÄ…ce
Cykl życia
klienta TCP
OSTATNI ACK SAUCHANIE
odebrano SYN
wyślij SYN-ACK
wyślij FIN
ZAMKNIJ ODEBRANY SYN
CZEKAJ
odebrano ACK
Odebrano FIN
3-30
POACZONY
wyślij ACK
Mapa wykładu
Usługi warstwy Transport połączeniowy:
transportu TCP
struktura segmentu
Multipleksacja i
niezawodna komunikacja
demultipleksacja
kontrola przepływu
Transport
zarządzanie połączeniem
bezpołączeniowy: UDP
Mechanizmy kontroli
Zasady niezawodnej
przeciążenia
komunikacji danych
Kontrola przeciążenia w
TCP
3-31
Zasady kontroli przeciążenia
Przeciążenie:
nieformalnie: za wiele zródeł wysyła za wiele
danych za szybko, żeby sieć mogła je obsłużyć
różni się od kontroli przepływu!
objawy przeciążenia:
zgubione pakiety (przepełnienie buforów w
ruterach)
duże (i zmienne) opóznienia (kolejkowanie w
buforach ruterów)
jeden z głównych problemów sieci!
konsekwencja braku kontroli dostępu do sieci
3-32
Przyczyny/koszty przeciążenia: scenariusz 1
Host A
out
: orginalne dane
in
dwóch nadawców,
dwóch odbiorców
nieskończony bufor
Host B
jeden ruter,
łącza wyjściowego
nieskończone bufory
bez retransmisji
duże opóznienia
przy przeciążeniu
maksymalna
dostępna
przepustowość
3-33
opóznienie
Przyczyny/koszty przeciążenia: scenariusz 2
jeden ruter, skończone bufory
retransmisje straconych pakietów
Host A
out
in : oryginalne dane
'in : oryginalne dane plus
retransmisje
skończone,
Host B
współdzielone bufory
łącza wyjściowego
3-34
Przyczyny/koszty przeciążenia: scenariusz 2
=
in out
zawsze: (goodput)
>
in out
doskonałe retransmisje tylko po stracie:
retransmisje opóznionych (nie straconych) pakietów zwiększa
in (w porównaniu z doskonałymi) dla tego samego out
koszty przeciążenia:
więcej pracy (retransmisje) na określony goodput
niepotrzebne retransmisje: łącze przesyła wiele kopii pakietu
3-35
Przyczyny/koszty przeciążenia: scenariusz 3
czterech nadawców
Pytanie: co nastÄ…pi,
dłuższe ścieżki
in in
gdy oraz
timeout/retransmisje
wzrosnÄ…?
Host A
out
in : oryginalne dane
'in : oryginalne dane plus
retransmisje
skończone,
współdzielone bufory
łącza wyjściowego
Host B
3-36
Przyczyny/koszty przeciążenia: scenariusz 3
H
o
o
s
t
u
A
t
H
o
s
t
B
Jeszcze jeden koszt przeciążenia:
gdy pakiet ginie, przepustowość w górę ścieżki"
zużyta na ten pakiet została zmarnowana!
3-37
Metody kontroli przeciążenia
Dwa rodzaje metod kontroli przeciążenia:
Kontrola przeciążenia typu Kontrola przeciążenia z
koniec-koniec: pomocÄ… sieci:
brak bezpośredniej rutery udostępniają informację
informacji zwrotnej od zwrotną systemom końcowym
warstwy sieci
pojedynczy bit wskazuje na
przeciążenie jest przeciążenie (SNA, DECbit,
obserwowane na podstawie TCP/IP ECN, ATM)
strat i opóznień w systemach
podawana jest dokładna
końcowych
prędkość, z jaką system
tą metodą posługuje się TCP końcowy powinien wysyłać
3-38
Studium przypadku: kontrola przeciążeń w
usłudze ABR sieci ATM
Komórki RM (resource
ABR: available bit rate:
management):
usługa elastyczna
wysyłane przez nadawcę,
jeśli ścieżka nadawcy jest
przeplatane z komórkami
niedociążona :
danych
nadawca powinien używać
bity w komórce RM ustawiane
dostępną przepustowość
przez przełączniki sieci ( z
jeśli ścieżka nadawcy jest
pomocÄ… sieci )
przeciążona:
bit NI: nie zwiększaj
nadawca jest ograniczany
szybkości (lekkie
do minimalnej
przeciążenie)
gwarantowanej
bit CI: wskazuje na
przepustowości
przeciążenie
komórki RM zwracane są do
nadawcy przez odbiorcÄ™ bez
zmian
3-39
Studium przypadku: kontrola przeciążeń
w usłudze ABR sieci ATM
komórki RM
odbiorca
nadawca
komórki danych
dwubajtowe pole ER (explicit rate) w komórce RM
przeciążony switch może zmniejszyć wartość ER w komórce
z tego powodu, nadawca ma minimalną dostępną przepustowość na
ścieżce
bit EFCI w komórkach danych: ustawiany na 1 przez
przeciążony switch
jeśli komórka danych poprzedzająca komórkę RM ma ustawiony bit
EFCI, odbiorca ustawia bit CI w zwróconej komórce RM
3-40
Mapa wykładu
Usługi warstwy Transport połączeniowy:
transportu TCP
struktura segmentu
Multipleksacja i
niezawodna komunikacja
demultipleksacja
kontrola przepływu
Transport
zarządzanie połączeniem
bezpołączeniowy: UDP
Mechanizmy kontroli
Zasady niezawodnej
przeciążenia
komunikacji danych
Kontrola przeciążenia w
TCP
3-41
Kontrola przeciążenia w TCP
metoda koniec-koniec (bez
Jak nadawca obserwuje
pomocy sieci)
przeciążenie?
nadawca ogranicza prędkość
strata = timeout lub
transmisji: 3 zduplikowane ACK
OstatniWysłanyBajt-
nadawca TCP
OstatniPotwierdzonyBajt
zmniejsza prędkość
d" RozmiarOkna
(RozmiarOkna) po
stracie
Z grubsza,
trzy mechanizmy:
RozmiarOkna
prędkość =
[Bajt/s]
AIMD
RTT
powolny start
RozmiarOkna jest zmienny,
konserwatywne po
zdarzeniu timeout
funkcja obserwowanego
przeciążenia sieci
3-42
Mechanizm AIMD w TCP
multiplikatywne
addytywne zwiększanie:
zmniejszanie: dziel
zwiększ RozmiarOkna
RozmiarOkna przez
o 1 rozmiar segmentu
dwa po stracie
po każdym RTT bez
straty: badanie sieci
rozmiar okna
przeciazenia
24 Kb
16 Kb
8 Kb
czas
Długotrwałe połączenie TCP
3-43
Powolny start TCP
Na początku połączenia,
Po nawiązaniu połączenia,
rozmiar okna jest
RozmiarOkna = 1 segment
mnożony przez dwa aż
Przykład: Segment = 500 b
do wystÄ…pienia
oraz RTT = 200 ms
pierwszej straty
początkowa prędkość = 2.5
kb/s
Potem zaczyna działać
dostępna przepustowość >>
mechanizm AIMD
rozmiarSegmentu/RTT
pożądane jest szybkie
przyśpieszenie komunikacji
3-44
Powolny start TCP (c.d.)
Po nawiązaniu połączenia,
Host A
Host B
zwiększaj prędkość
wykładniczo do pierwszej
straty:
podwajaj RozmiarOkna co
RTT
osiągane przez zwiększanie
RozmiarOkna po otrzymaniu
ACK
Podsumowanie: poczÄ…tkowo,
prędkość jest mała, ale
szybko przyśpiesza
czas
3-45
RTT
j
e
d
e
n
s
e
g
m
e
n
t
d
w
a
s
e
g
m
e
n
t
y
c
z
t
e
r
y
s
e
g
m
e
n
t
y
Udoskonalenie powolnego startu
Uzasadnienie:
Po 3 zduplikowanych ACK:
" 3 zduplikowane ACK
RozmiarOkna dzielimy wskazują, że sieć
przez dwa dostarcza niektóre
segmenty
okno zwiększane liniowo
" timeout przed 3
Ale: po zdarzeniu timeout:
zduplikowanymi ACK jest
RozmiarOkna ustawiany
bardziej alarmujÄ…cy
na 1 segment;
okno z poczÄ…tku
zwiększane wykładniczo
do pewnej wielkości,
potem zwiększane liniowo
3-46
Udoskonalenia (c.d.)
Pytanie: Kiedy przestać
zwiększać okno
Próg
wykładniczo, a zacząć
zwiększać liniowo?
Próg
Odpowiedz: Gdy
RozmiarOkna osiÄ…gnie
połowę swojej wartości z
Czas mierzony w RTT
przed zdarzenia timeout.
Implementacja:
Zmienny Próg
Po stracie, Próg jest ustalany
na 1/2 wartości RozmiarOkna
tuż przed stratą
3-47
RozmiarOkna
Podsumowanie: kontrola przeciążenia TCP
Gdy RozmiarOkna poniżej wartości Próg, nadawca w
stanie powolnego startu, okno rośnie wykładniczo.
Gdy RozmiarOkna powyżej wartości Próg, nadawca w
stanie unikania przeciążenia, okno rośnie liniowo.
Po trzech zduplikowanych ACK, Próg = RozmiarOkna/2
oraz RozmiarOkna = Próg.
Po zdarzeniu timeout, Próg = RozmiarOkna/2 oraz
RozmiarOkna = 1 segment.
3-48
Podsumowanie: kontrola przeciążenia TCP
Zdarzenie Stan Akcja nadawcy TCP Komentarz
Odebranie ACK Powolny RozmiarOkna = Po upływie RTT,
za niepotwier- Start (PS) RozmiarOkna + 1 segment, RozmiarOkna siÄ™ podwaja
dzone dane If (RozmiarOkna > Próg)
stan = Unikanie
Przeciążenia
Odebranie ACK Unikanie RozmiarOkna = Liniowy wzrost
za niepotwier- Przeciążenia RozmiarOkna + RozmiarOkna o 1 segment
dzone dane (UP) (1 segment / RozmiarOkna) po upływie RTT
Strata PS lub UP Próg = RozmiarOkna / 2, Szybka poprawa przez
zaobserwowana RozmiarOkna = Próg, multiplikatywne
przez 3 Stan = Unikanie zmniejszanie. RozmiarOkna
zduplikowane Przeciążenia nie będzie mniejszy niż 1
ACK segment.
Timeout PS lub UP Próg = RozmiarOkna/2, Wchodzimy w Powolny Start
RozmiarOkna = 1 segment,
Stan = Powolny Start
Zduplikowany PS lub UP Zwiększ licznik ACK dla RozmiarOkna ani Próg nie
ACK potwierdzonego segmentu zmieniajÄ… siÄ™.
3-49
Przepustowość TCP
Jaka jest średnia przepustowość TCP jako
funkcja rozmiaru okna oraz RTT?
Ignorujemy powolny start
Niech W będzie rozmiarem okna w chwili
straty.
Gdy okno ma rozmiar W, przepustowość
jest W/RTT
Zaraz po stracie, okno zmniejszane do
W/2, przepustowość jest W/2RTT.
Åšrednia przepustowość: ¾ W/RTT
3-50
Przyszłość TCP
Przykład: segment 1500 bajtów, RTT 100ms,
chcemy przepustowość 10 Gb/s
Potrzeba rozmiaru okna W = 83 333 segmentów
Przepustowość jako funkcja częstości strat L:
1.22Å" segment
RTT L
Å›' L = 2‡10-10 Bardzo wyÅ›rubowana!
Potrzeba nowych wersji TCP dla bardzo szybkich
sieci!
3-51
Sprawiedliwość TCP
Sprawiedliwy cel: jeśli K połączeń TCP dzieli to samo
łącze o przepustowości R będące wąskim gardłem,
każde połączenie powinno mieć średnią
przepustowość R/K
Połączenie TCP 1
ruter będący
wąskim gardłem:
Połączenie
przepustowość R
TCP 2
3-52
Dlaczego TCP jest sprawiedliwe?
Dwa konkurujące połączenia:
addytywne zwiększanie daje nachylenie 1, gdy rośnie
przepustowość
multiplikatywne zmniejszanie zmniejsza przepustowość
proporcjonalnie
równe udziały przepustowości
R
strata: zmniejsz okno dwukrotnie
unikanie przeciążenia: liniowy wzrost
Pełne
wykorzystanie
R
Å‚Ä…cza
Przepustowość połączenia 1
3-53
Przepustowość połączenia 2
Więcej o sprawiedliwości
Sprawiedliwość i równoległe
Sprawiedliwość i UDP
połączenia TCP
Komunikacja strumieniowa nie
nic nie powstrzyma aplikacji przed
używa TCP
nawiązaniem równoległych połączeń
nie chce zmieniać prędkości
pomiędzy 2 hostami.
nadawania zgodnie z kontrolÄ…
przeciążeń
RobiÄ… tak przeglÄ…darki WWW
W zamian używa UDP:
Przykład: łącze o przepustowości R
obsługuje 9 połączeń;
śle audio/wideo ze stałą
prędkością, toleruje straty
nowa aplikacja prosi o 1 połączenie
pakietów
TCP, dostaje przepustowość R/10
Obszar badań: Komunikacja
nowa aplikacja prosi o 11 połączeń
TCP, dostaje przepustowość R/2 !
strumieniowa "TCP friendly"
3-54
Podsumowanie warstwy transportu
mechanizmy usług warstwy
transportu:
multipleksacja,
demultipleksacja
niezawodna komunikacja
Co dalej:
kontrola przepływu
opuszczamy brzeg
kontrola przeciążenia
sieci (warstwy
w Internecie:
aplikacji i transportu)
UDP
wchodzimy w
szkielet sieci
TCP
3-55
Wyszukiwarka
Podobne podstrony:
ch7 pl p2ch2 pl p2ch3 pl p1ch4 pl p2PL kreator pdfp28SKO2 ch3 p2 v3 2TI 99 08 19 B M pl(1)bootdisk howto pl 8BORODO STRESZCZENIE antastic plnotatek pl sily wewnetrzne i odksztalcenia w stanie granicznymWSM 10 52 pl(1)amd102 io pl09PPP HOWTO pl 6 (2)bridge firewall pl 3NIS HOWTO pl 1 (2)31994L0033 PL (2)więcej podobnych podstron