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 R1 R2 PC2.1.2.1.2.1.2 192.168.1.0/24 192.168.2.0/24 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 niezawodny zachowujący kolejność pakietów Stosowane mechanizmy: nawiązywania i zrywania połączenia kontroli szybkości transm isji potwierdzenia / retransm isje Numery portów
NIEZAWODNOŚĆ TRANSMISJI 0 15 16 31 Port źródłowy Port docelowy Numer sekwencyjny Numer potwierdzenia DN Rez. Flagi Szerokość okna Suma kontrolna 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 A SYN (n, 0) SYN-ACK (m, n+1) ACK (n+1, m+1) wymiana danych host B PAKIET (a, b): a nr sekwencyjny b nr potwierdzenia m i n są wybierane losowo dla każdej transmisji
ZAKOŃCZENIE TRANSMISJI host A FIN (m, n) ACK (n, m+1) FIN (n+1, m+1) host B PAKIET (a, b): a nr sekwencyjny b nr potwierdzenia ACK (m+1, n+2)
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 3 4 5 6 7 8 9 10 11 12 ACK (n, 1001) ACK (n+1, 5001)
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 10 W tej sytuacji, nadawca nie dowie się, który pakiet z serii nie dotarł ang. Cumulative Acknowledgement ang. Selective Acknowledgement
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. Gdy pojawi sie przeciążenie, zapamiętaj połowę wartości CWD 2. Ustaw CWD na 1 3. Do połowy poprzedniego CWD: mechanizm Slow-Start 4. Od połowy: CWD rośnie liniowo Często nie ma kroku 2 i 3.
ADDITIVE INCREASE MULTIPLICATIVE DECREASE Szybkość transmisji 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: robert.wojcik@kt.agh.edu.pl