Syn bez nadajnika transmisji

Transkrypt

Syn bez nadajnika transmisji
DR INŻ. ROBERT WÓJCIK
DR INŻ. JERZY DOMŻAŁ
PROTOKÓŁ STEROWANIA
TRANSMISJĄ
WSTĘP DO SIECI INTERNET
Kraków, dn. 19 grudnia 2016 r.
O CZYM JEST TEN WYKŁAD
Protokół Sterowania
Transmisją
Transmission Control
Protocol
PROTOKÓŁ TCP
PYTANIE
▸Ustawiona jest adresacja. Nie ma włączonego rutingu.
▸Które urządzenia się widzą?
PC1
.1
.2
192.168.1.0/24
R1
.1
.2
R2
192.168.2.0/24
.1
.2
PC2
192.168.3.0/24
PLAN
▸Przypomnienie cech TCP
▸Rozpoczęcie i zakończenie transmisji - mechanizm „threeway handshake”
▸Mechanizm okna przesuwnego
▸Potwierdzenia
▸Mechanizm powolnego startu
▸Mechanizmy unikania przeciążeń
▸Podsumowanie
TCP - PRZYPOMNIENIE
▸TCP to protokół:
▹połączeniowy
▹n ieza wodn y
▹za ch owu jący kolejn ość pa kietów
▸Stosowane mechanizmy:
▹n a wiązywa nia i zrywa n ia połączenia
▹kon troli s zybkości tra n s m is ji
▹potwierdzenia / retra n s m is je
▸Numery portów
NIEZAWODNOŚĆ TRANSMISJI
0
15 16
31
Port źródłowy
Port docelowy
Numer sekwencyjny
Numer potwierdzenia
DN
Rez.
Flagi
Suma kontrolna
Szerokość okna
Wskaźnik priorytetu
Opcje (nieobowiązkowe)
▸TCP używa numerów sekwencyjnych do identyfikacji każdego bajtu
danych
▸Odbiorca ustawia numer potwierdzenia na numer bajtu, który chce
otrzymać
▸Otrzymanie potwierdzenia bajtu n oznacza, że wszystkie bajty do numeru
n zostały odebrane poprawnie
ZESTAWIANIE POŁĄCZENIA
▸TCP musi nawiązać połączenie z adresatem przed rozpoczęciem
każdej transmisji
▸TCP używa tzw. three-way handshake:
1. Klient wysyła pakiet SYN (losowy numer sekwencyjny n)
2. Serwer odpowiada pakietem SYN-ACK (losowy numer
sekwencyjny m, potwierdzenie: n + 1)
3. Klient wysyła potwierdzenie: ACK (numer sekwencyjny n
+ 1, potwierdzenie m + 1)
ROZPOCZĘCIE TRANSMISJI
host B
host A
SYN (n, 0)
SYN-ACK (m, n+1)
ACK (n+1, m+1)
wymiana danych
PAKIET (a, b):
a – nr sekwencyjny
b – nr potwierdzenia
m i n są wybierane
losowo dla każdej
transmisji
ZAKOŃCZENIE TRANSMISJI
host A
host B
FIN (m, n)
ACK (n, m+1)
FIN (n+1, m+1)
ACK (m+1, n+2)
PAKIET (a, b):
a – nr sekwencyjny
b – nr potwierdzenia
OPCJE - PRZYKŁADY
[SYN] – TYLKO PODCZAS NAWIĄZYWANIA POŁĄCZENIA
▸Pole Opcje w nagłówku służy do przekazywania dodatkowych
informacji:
▹Maksymalna wielkość segmentu (ang. maximum segment
size, MSS) [SYN]
▹Skalowanie okna (ang. window scale) [SYN]
▹Zgoda na selektywne potwierdzenia (ang. selective
acknowledgement permitted) [SYN]
▹Selektywne potwierdzenia
▹Znacznik czasu (ang. timestamp)
▹Żądanie alternatywnego sprawdzania poprawności (ang. TCP
Alternate Checksum Request) [SYN]
▹Dane alternatywnego sprawdzania poprawności (ang. TCP
Alternate Checksum Data)
MAKSYMALNA WIELKOŚĆ SEGMENTU (MSS)
▸parametr utrzymywany przez TCP
▸powinien zostać ustawiony na taką wartość, by zapobiec
fragmentacji pakietów IP
▸maksymalna wartość powinna być uzależniona od MTU warstwy
drugiej
▸domyślna wartość: 536 B (nie wliczając nagłówków TCP i IP)
▸jeżeli host chce zmienić tę wartość, sugeruje nową wartość w
opcjach. Może zacząć już w pakiecie SYN podczas nawiązywania
połączenia.
MECHANIZM OKNA PRZESUWNEGO
ANG. SLIDING WINDOW MECHANISM
▸Odbiorca może sterować szybkością wysyłania danych przez
nadawcę:
▹Odbiorca ustawia w polu Szerokość Okna wartość mówiącą
ile bajtów może jeszcze otrzymać od nadawcy
▹Nadawca otrzymawszy potwierdzenie, może wysłać tylko tą
wskazaną ilość danych, zanim otrzyma kolejne potwierdzenie
▹Rozmiar okna ustawiony na 0 oznacza zatrzymanie transmisji
▹Nadawca ustawia wtedy tzw. persist timer po czym wysyła
zapytanie o aktualizację
MECHANIZM OKNA PRZESUWNEGO
ANG. SLIDING WINDOW MECHANISM
▸Szerokość okna jest ustawiona na 4000 [B]
▸Wielkość wysyłanych pakietów: 1000 B
1
2
ACK (n, 1001)
3
4
5
6
ACK (n+1, 5001)
7
8
9
10
11
12
SYNDROM GŁUPIEGO OKNA
ANG. SILLY WINDOW SYNDROME
▸Nadajnik (lub odbiornik) nie jest w stanie przetwarzać danych z
dużą szybkością
▸Zmniejsza szerokość okna, by transmisja była powolna
▸Gdy szerokość okna jest ustawiona na wartość 1:
▹nagłówek TCP: 20 B
▹nagłówek IP: 20 B
▹dane do przesłania: 1 B
▸Przesyłamy przez sieć 41 bajtów, by przesłać 1 bajt
wartościowych danych
SKALOWANIE SZEROKOŚCI OKNA
▸Szerokość okna: 16-bitowe pole
▸Jaka jest największa wartość ?
▸Kalkulacja
▹ 16 bitów  64 KB
▹ 1 s RTT  64 KB/s = 0,52 Mbit/s
▹ 100 ms RTT  5,2 Mbit/s
▹ 10 ms RTT  52 Mbit/s
▸Parametr skalowania okna może być przesłany w opcjach
podczas nawiązywania połączenia
▸Jest to 14-bitowa wartość przez którą jest mnożona szerokość
okna przenoszona w pakietach
▸Jaka jest maksymalna szerokość okna po skalowaniu?
POTWIERDZENIA
▸Numer potwierdzenia w nagłówku TCP jest używany do
sygnalizowania poprawnego odebrania danych
▸Numer potwierdzenia n wskazuje na to, że wszystkie bajty do n
zostały odebrane poprawnie
1
2
3
4
5
6
7
8
9
▸W tej sytuacji, nadawca nie dowie się, który pakiet z serii nie
dotarł
▸ang. Cumulative Acknowledgement
▸ang. Selective Acknowledgement
10
MECHANIZM POWOLNEGO STARTU
ANG. SLOW START MECHANISM
▸Nadawca utrzymuje licznik, tzw. okno przeciążeń (Congestion
Window, CWD)
▸CWD oznacza liczbę pakietów które można wysłać bez
potwierdzenia
▸Mechanizm Slow-Start:
1. Początkowo CWD = 1
2. Każdy pakiet ACK zwiększa CWD o 1
3. Gdy pojawi sie przeciążenie: CWD wraca do 1
▸Jak szybko rośnie CWD: liniowo, logarytmicznie, wykładniczo?
MECHANIZM POWOLNEGO STARTU
ANG. SLOW START
▸Każde odebrane potwierdzenie zwiększa congestion window o 1
1
2
3
4
5
6
7
8
9
10
11
12
ACK
ACK
ACK
ACK
ACK
ACK
ACK
ACK
ACK
ACK
ACK
ACK
▸Jeśli potwierdzany jest każdy pakiet, szybkość transmisji rośnie
wykładniczo!
MECHANIZM UNIKANIA PRZECIĄŻEŃ
▸Mechanizm: ‘Additive Increase Multiplicative Decrease’ (AIMD):
1.
2.
3.
4.
Gdy pojawi sie przeciążenie, zapamiętaj połowę wartości
CWD
Ustaw CWD na 1
Do połowy poprzedniego CWD: mechanizm Slow-Start
Od połowy: CWD rośnie liniowo
Często nie ma kroku 2 i 3.
Szybkość transmisji
ADDITIVE INCREASE MULTIPLICATIVE
DECREASE
Czas
UNIKANIE PRZECIĄŻEŃ
WPROWADZONE PRZEZ TCP RENO
▸Gdy 4 kolejne ACK są identyczne, TCP zmniejsza CWD o połowę
▸Przeprowadza Szybka Retransmisje (Fast Retransmit)
▸Następnie wchodzi w fazę Fast Recovery
▹Po Szybkiej Retransmisji, TCP czeka na potwierdzenie
wszystkich wysłanych pakietów (całe okno przesuwne)
▹Jeśli wszystkie potwierdzenia przyjdą - TCP wraca do
standardowego unikania przeciążeń
▹Jeśli jakieś potwierdzenie nie przyjdzie - zaczyna sie Slow
Start od nowa
WERSJE PROTOKOŁU TCP
▸TCP Tahoe: RFC 793 TCP + problem Silly Window Syndrome +
algorytmy Jackobson’a
▸TCP Reno: Tahoe + Reno Fast Recovery
▸TCP NewReno: Reno + NewReno Fast Recovery
▸TCP SACK: Reno + Selective Acknowledgements
▸TCP Vegas: używa opóźnień zamiast braku potwierdzeń
▸TCP Hybla: optymalizowane dla sieci o dużych opóźnieniach
▸TCP BIC, TCP LFN (long fat networks): optymalizowane dla sieci o
wysokiej przepustowości
▸TCP Compound: wprowadzone w MS Vista
PODSUMOWANIE
▸TCP posiada wiele mechanizmów usprawniających jego pracę
▸TCP używa mechanizmu three-way handshake do rozpoczęcia
transmisji
▸Okno przesuwne reguluje szybkość transmisji
▸TCP używa potwierdzeń:
▹cumulative
▹selective
▸Mechanizm powolnego startu nie jest wolny!
▸Mechanizmy unikania przeciążeń służą do optymalizacji
transmisji w sieci
▸TCP doczekało się wielu wersji
Dziękuję za uwagę
Kontakt: [email protected]

Podobne dokumenty