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]