Selektywne powtarzanie (SP)

Podobne dokumenty
Selektywne powtarzanie (SP)

SEGMENT TCP CZ. II. Suma kontrolna (ang. Checksum) liczona dla danych jak i nagłówka, weryfikowana po stronie odbiorczej

Sieci komputerowe Warstwa transportowa

DR INŻ. ROBERT WÓJCIK DR INŻ. JERZY DOMŻAŁ

Warstwa transportu. Mapa wykładu

Transport. część 3: kontrola przeciążenia. Sieci komputerowe. Wykład 8. Marcin Bieńkowski

Transport. część 3: kontrola przeciążenia. Sieci komputerowe. Wykład 8. Marcin Bieńkowski

DR INŻ. ROBERT WÓJCIK DR INŻ. JERZY DOMŻAŁ

Plan całości wykładu 3-1

Transport. część 1: niezawodny transport. Sieci komputerowe. Wykład 6. Marcin Bieńkowski

3-1. network data link physical. application transport. network data link physical 3-3. network data link physical. application transport

Transport. część 3: kontrola przeciążenia. Sieci komputerowe. Wykład 8. Marcin Bieńkowski

Sieci komputerowe. Wykład 7: Transport: protokół TCP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Sieci komputerowe - Protokoły warstwy transportowej

Transport. część 2: protokół TCP. Sieci komputerowe. Wykład 6. Marcin Bieńkowski

Transport. część 2: protokół TCP. Sieci komputerowe. Wykład 6. Marcin Bieńkowski

Sieci komputerowe. Protokoły warstwy transportowej. Wydział Inżynierii Metali i Informatyki Przemysłowej. dr inż. Andrzej Opaliński.

Klient-Serwer Komunikacja przy pomocy gniazd

Sieci komputerowe. Wykład 5: Warstwa transportowa: TCP i UDP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Sieci komputerowe Mechanizmy sterowania przebiegiem sesji TCP w Internecie

Sieci komputerowe - warstwa transportowa

PROTOKOŁY WARSTWY TRANSPORTOWEJ

TCP/IP formaty ramek, datagramów, pakietów...

Przesyłania danych przez protokół TCP/IP

MODEL WARSTWOWY PROTOKOŁY TCP/IP

Protokoły sieciowe - TCP/IP

Warstwa transportowa. mgr inż. Krzysztof Szałajko

Protokół IP. III warstwa modelu OSI (sieciowa) Pakowanie i adresowanie przesyłanych danych RFC 791 Pakiet składa się z:

Wykład 4: Protokoły TCP/UDP i usługi sieciowe. A. Kisiel,Protokoły TCP/UDP i usługi sieciowe

Zarządzanie ruchem i jakością usług w sieciach komputerowych

Sieci Komputerowe 2 / Ćwiczenia 2

Rys. 1. Wynik działania programu ping: n = 5, adres cyfrowy. Rys. 1a. Wynik działania programu ping: l = 64 Bajty, adres mnemoniczny

Politechnika Łódzka. Instytut Systemów Inżynierii Elektrycznej

pasja-informatyki.pl

Uniwersalny Konwerter Protokołów

Dr Michał Tanaś(

ARP Address Resolution Protocol (RFC 826)

Warstwa transportowa

Model OSI. mgr inż. Krzysztof Szałajko

Enkapsulacja RARP DANE TYP PREAMBUŁA SFD ADRES DOCELOWY ADRES ŹRÓDŁOWY TYP SUMA KONTROLNA 2 B 2 B 1 B 1 B 2 B N B N B N B N B Typ: 0x0835 Ramka RARP T

Modyfikacja algorytmów retransmisji protokołu TCP.

Połączenie logiczne Zestawienie połączenia Zerwanie połączenia Niezawodne Np. TCP

UDP vs TCP. Autor: Marcin Koczara IV FDS

Unicast jeden nadawca i jeden odbiorca Broadcast jeden nadawca przesyła do wszystkich Multicast jeden nadawca i wielu (podzbiór wszystkich) odbiorców

Sieci komputerowe wykłady Protokoły TCP i UDP. Adresowanie komunikatów. Adresowanie komunikatów c.d. Porty protokołów. Porty protokołów c.d.

Skąd dostać adres? Metody uzyskiwania adresów IP. Statycznie RARP. Część sieciowa. Część hosta

Protokoły wspomagające. Mikołaj Leszczuk

Podstawowe protokoły transportowe stosowane w sieciach IP cz.2

Mosty przełączniki. zasady pracy pętle mostowe STP. Domeny kolizyjne, a rozgłoszeniowe

Plan wykładu. Wyznaczanie tras. Podsieci liczba urządzeń w klasie C. Funkcje warstwy sieciowej

Adresy w sieciach komputerowych

5. Model komunikujących się procesów, komunikaty

POŁĄCZENIE STEROWNIKÓW ASTRAADA ONE MIĘDZY SOBĄ Z WYKORZYSTANIEM PROTOKOŁU UDP. Sterowniki Astraada One wymieniają między sobą dane po UDP

Zarządzanie ruchem w sieci IP. Komunikat ICMP. Internet Control Message Protocol DSRG DSRG. DSRG Warstwa sieciowa DSRG. Protokół sterujący

Konfiguracja sieci, podstawy protokołów IP, TCP, UDP, rodzaje transmisji w sieciach teleinformatycznych

Podstawowe protokoły transportowe stosowane w sieciach IP cz.1

MODEL OSI A INTERNET

Sieci komputerowe w sterowaniu informacje ogólne, model TCP/IP, protokoły warstwy internetowej i sieciowej

Sieci komputerowe: WYŻSZE WARSTWY MODELU OSI. Agata Półrola Katedra Informatyki Stosowanej UŁ

Podstawy Transmisji Danych. Wykład IV. Protokół IPV4. Sieci WAN to połączenia pomiędzy sieciami LAN

BADANIE SPRAWNOŚCI PROTOKOŁU TCP

Programowanie sieciowe

Programowanie współbieżne i rozproszone

Uproszczony opis obsługi ruchu w węźle IP. Trasa routingu. Warunek:

Colloquium 1, Grupa A

Laboratorium 6.7.2: Śledzenie pakietów ICMP

Sieci komputerowe. Wykład dr inż. Łukasz Graczykowski

Stos TCP/IP Warstwa transportowa Warstwa aplikacji cz.1

Aby lepiej zrozumieć działanie adresów przedstawmy uproszczony schemat pakietów IP podróżujących w sieci.

Sieci komputerowe. Zajęcia 3 c.d. Warstwa transportu, protokoły UDP, ICMP

Architektura INTERNET

Laboratorium podstaw telekomunikacji

Referencyjny model OSI. 3 listopada 2014 Mirosław Juszczak 37

Moduł 11.Warstwa transportowa i aplikacji Zadaniem warstwy transportowej TCP/IP jest, jak sugeruje jej nazwa, transport danych pomiędzy aplikacjami

Tryby komunikacji między procesami w standardzie Message Passing Interface. Piotr Stasiak Krzysztof Materla

Plan wykładu. Warstwa sieci. Po co adresacja w warstwie sieci? Warstwa sieci

Mechanizmy pracy równoległej. Jarosław Kuchta

Laboratorium - Przechwytywanie i badanie datagramów DNS w programie Wireshark

Sieci Komputerowe. Wykład 1: TCP/IP i adresowanie w sieci Internet

DR INŻ. ROBERT WÓJCIK DR INŻ. JERZY DOMŻAŁ ADRESACJA W SIECIACH IP. WSTĘP DO SIECI INTERNET Kraków, dn. 24 października 2016r.

Sieci komputerowe - Wstęp do intersieci, protokół IPv4

1 Moduł Diagnostyki Sieci

Laboratorium Sieci Komputerowych - 2

Sieci Komputerowe Modele warstwowe sieci

Akademickie Centrum Informatyki PS. Wydział Informatyki PS

Akademia Techniczno-Humanistyczna w Bielsku-Białej

System operacyjny UNIX Internet. mgr Michał Popławski, WFAiIS

Zarządzanie infrastrukturą sieciową Modele funkcjonowania sieci

Instrukcja konfiguracji funkcji skanowania

Transmisja bezpołączeniowa i połączeniowa

BADANIE SPRAWNOŚCI PROTOKOŁU TCP

DR INŻ. ROBERT WÓJCIK DR INŻ. JERZY DOMŻAŁ

Akademickie Centrum Informatyki PS. Wydział Informatyki PS

Sieci Komputerowe Protokół TCP

Mapa wykładu. 5.6 Koncentratory, mosty, i switche 5.7 Bezprzewodowe łącza i sieci lokalne 5.8 PPP 5.9 ATM 5.10 Frame Relay

ZiMSK dr inż. Łukasz Sturgulewski, DHCP

ISO/OSI TCP/IP SIECI KOMPUTEROWE

1. W protokole http w ogólnym przypadku elementy odpowiedzi mają: a) Postać tekstu b) Postać HTML c) Zarówno a i b 2. W usłudze DNS odpowiedź

Warstwa sieciowa. Model OSI Model TCP/IP. Aplikacji. Aplikacji. Prezentacji. Sesji. Transportowa. Transportowa

Pytanie 1 Z jakich protokołów korzysta usługa WWW? (Wybierz prawidłowe odpowiedzi)

Transkrypt:

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 (pocz_okna) nadawca następny numer sekwencyjny (nast_num) już potwierdzony gotowy, nie wysłany rozmiar okna: N wysłany, nie potwierdzony nie używany rozmiar okna: N odbiorca potwierdzony, w buforze oczekiwany, nie otrzymany gotowy do odebrania nie używany 3-2

SP: nadawca i odbiorca nadawca dane od wyższej warstwy: jeśli w oknie jest wolny numer sekwencyjny, wyślij pakiet timeout(n): retransmituj pakiet n, ustaw ponownie zegar ACK(n) pakietu w oknie: zaznacz pakiet jako odebrany i wyłącz zegar jeśli n jest początkiem okna, przesuń okno do następnego niepotwierdzonego pakietu odbiorca pakiet n z okna wyślij ACK(n) nie w kolejności: do bufora w kolejności: przekaż (także przekaż uporządkowane pakiety z bufora), przesuń okno do następnego nieodebranego pakietu pakiet n z N pakietów przed oknem potwierdź ACK(n) wszystkie inne pakiety: ignoruj 3-3

SP w działaniu wysłany pkt0 0 1 2 3 4 5 6 7 8 9 wysłany pkt1 0 1 2 3 4 5 6 7 8 9 wysłany pkt2 0 1 2 3 4 5 6 7 8 9 wysłany pkt3, pełne okno 0 1 2 3 4 5 6 7 8 9 odebr. ACK0, wysł. pkt4 0 1 2 3 4 5 6 7 8 9 odebr. ACK1, wysł. pkt5 0 1 2 3 4 5 6 7 8 9 timeout, retransmisja pkt2 0 1 2 3 4 5 6 7 8 9 odebr. ACK3, nic nie wysłane 0 1 2 3 4 5 6 7 8 9 (strata) odebr. pkt0, przekazany, wysł. ACK0 0 1 2 3 4 5 6 7 8 9 odebr. pkt1, przekazany, wysł. ACK1 0 1 2 3 4 5 6 7 8 9 odebr. pkt3, buforowany, wysł. ACK3 0 1 2 3 4 5 6 7 8 9 odebr. pkt4, buforowany, wysł. ACK4 0 1 2 3 4 5 6 7 8 9 odebr. pkt5, buforowany, wysł. ACK5 0 1 2 3 4 5 6 7 8 9 odebr. pkt2, przekazane pkt2, pkt3, pkt4, pkt5, wysł. ACK3 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 transportu Multipleksacja i demultipleksacja Transport bezpołączeniowy: UDP Zasady niezawodnej komunikacji danych Transport połączeniowy: TCP struktura segmentu niezawodna komunikacja kontrola przepływu zarządzanie połączeniem Mechanizmy kontroli przeciążenia Kontrola przeciążenia w TCP 3-6

TCP: Przegląd RFC: 793, 1122, 1323, 2018, 2581 koniec-koniec: jeden nadawca, jeden odbiorca niezawodny, uporządkowany strumień bajtów: nie ma granic komunikatów wysyłający grupowo: kontrola przeciążeń i przepływu TCP określają rozmiar okna bufory u nadawcy i odbiorcy komunikacja "full duplex": dwukierunkowy przepływ danych na tym samym połączeniu MRS: maksymalny rozmiar segmentu połączeniowe: inicjalizacja (wymiana komunikatów kontrolnych) połączenia przed komunikacją danych kontrola przepływu: niazdo aplikacja pisze dane TCP bufor nadawcy segment aplikacja czyta dane TCP bufor odbiorcy gniazdo nadawca nie "zaleje" odbiorcy 3-7

Struktura segmentu TCP URG: pilne dane (zwykle nie używane) ACK: numer ACK używane PSH: wypchnij dane RST, SYN, FIN: zarządzanie połączeniem (polecenia nawiązania i zamknięcia) Internetowa suma kontrolna (jak w UDP) 32 bity port nadawcy # port odbiorcy # dług. nagł. numer sekwencyjny numer potwierdzenia nie używ. UAP R S F suma kontrolna Okno odbiorcy Wsk. na pilne dane Opcje (zmienna długość) dane aplikacji (zmienna długość) licząc według bajtów danych (nie segmentów!) ilość bajtów, jakie przyjmie odbiorca 3-8

TCP: numery sekwencyjne i potwierdzenia Numery sekwencyjne: numer w "strumieniu bajtów" pierwszego bajtu danych segmentu Potwierdzenia: numer sekwencyjny następnego bajtu oczekiwanego od drugiej strony kumulatywny ACK Pytanie: jak odbiorca traktuje segmenty nie w kolejności O: specyfikacja TCP tego nie określa: decyduje implementacja Użytkownik wpisuje C host A potwierdza odbiór C otrzymanego od hosta B Host A Host B Numer=42, ACK=79, dane = C Numer=79, ACK=43, dane = C Numer=43, ACK=80 prosty scenariusz telnet Host B potwierdza C, wysyła z powrotem C czas 3-9

TCP: czas powrotu (RTT) i timeout Pytanie: jak ustalić timeout dla TCP? dłuższe niż RTT ale RTT jest zmienne za krótki: za wczesny timeout niepotrzebne retransmisje za długi: wolna reakcja na stratę segmentu Pytanie: jak estymować RTT? MierzoneRTT: czas zmierzony od wysłania segmentu do odbioru ACK ignorujemy retransmisje MierzoneRTT będzie zmienne, chcemy mieć "gładsze" estymowane RTT średnia z wielu ostatnich pomiarów, nie tylko aktualnego MierzoneRTT 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 RTT (milliseconds) 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

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 transportu Multipleksacja i demultipleksacja Transport bezpołączeniowy: UDP Zasady niezawodnej komunikacji danych Transport połączeniowy: TCP struktura segmentu niezawodna komunikacja kontrola przepływu zarządzanie połączeniem Mechanizmy kontroli przeciążenia Kontrola przeciążenia w TCP 3-14

Niezawodna komunikacja TCP TCP tworzy usługę NPK na zawodnej komunikacji IP Wysyłanie grupowe segmentów Kumulowane potwierdzenia TCP używa pojedynczego zegara do retransmisji Retransmisje są powodowane przez: zdarzenia timeout duplikaty ACK Na razie rozważymy prostszego nadawcę TCP: ignoruje duplikaty ACK ignoruje kontrolę przeciążenia i przepływu 3-15

Zdarzenia nadawcy TCP: Dane od aplikacji: Utwórz segment z numerem sekwencyjnym numer sekwencyjny to numer w strumieniu bajtów pierwszego bajtu danych segmentu włącz zegar, jeśli jest wyłączony (zegar działa dla najstarszego niepotwierdzonego segmentu) oblicz czas oczekiwania: Timeout Timeout: retransmituj segment, który spowodował timeout ponownie włącz zegar Odbiór ACK: Jeśli potwierdza niepotwierdzone segmenty: potwierdź odpowiednie segmenty włącz zegar, jeśli są brakujące segmenty 3-16

Nast_Num = 1 Pocz_Okna = 1 loop (forever) { switch( zdarzenie ) { zdarzenie: Dane od aplikacji stwórz segment z numerem Nast_Num; if ( zegar wyłączony ) włącz zegar; przekaż segment do warstwy IP; Nast_Num = Nast_Num + length( dane ); zdarzenie: Timeout retransmituje niepotwierdzony segment o najniższym numerze sekwencyjnym; włącz zegar; zdarzenie: Odbiór ACK potwierdzającego pakiet y if ( y > Pocz_Okna ) { Pocz_Okna = y; if ( są niepotwierdzone segmenty w oknie ) włącz zegar; } } } /* end of loop forever */ Nadawca TCP (uproszczony) Komentarz: Pocz_Okna - 1: ostatni potwierdzony bajt Przykład: Pocz_Okna - 1 = 71; y= 73, więc odbiorca chce bajty powyżej 73; y > Pocz_Okna, więc nowe dane zostały potwierdzone 3-17

TCP: scenariusze retransmisji Host A Host B Host A Host B timeout Pocz_Okna = 100 Numer=92, 8 bajtów danych X strata ACK=100 Numer=92, 8 bajtów danych ACK=100 Pocz_Okna = 100 Pocz_Okna = 120 Pocz_Okna = 120 timeout numeru 92 timeout numeru 92 Numer=92, 8 bajtów danych Numer=100, 20 bajtów danych ACK=100 ACK=120 Numer=92, 8 bajtów danych ACK=120 czas scenariusz ze stratą ACK czas za wczesny timeout 3-18

TCP: scenariusze retransmisji (c.d.) Host A Host B Numer=92, 8 bajtów danych timeout Numer=100, 20 bajtów danych X strata ACK=100 Pocz_Okna = 120 ACK=120 czas Skumulowany ACK 3-19

Wysyłanie ACK w TCP [RFC 1122, RFC 2581] Zdarzenie u odbiorcy TCP Odbiór segmentu o oczekiwanym numerze w kolejności. Wszystkie poprzednie dane już potwierdzone Odbiór segmentu o oczekiwanym numerze w kolejności. Jeden inny segment nie był potwierdzony Odbiór segmentu nie w kolejności o za wysokim numerze. Wykrycie luki w danych Odbiór segmentu, który całkiem lub częściowo wypełnia lukę. Akcja odbiorcy TCP Opóźnione ACK. Czekaj do 500 ms na następny segment. Jeśli go nie ma, wyślij ACK. Wyślij natychmiast skumulowane ACK, potwierdzające oba segmenty. Wyślij natychmiast duplikat ACK, w którym podany jest numer oczekiwanego bajtu Jeśli segment leży na początku luki, wyślij natychmiast ACK. 3-20

Szybkie retransmisje Okres oczekiwania na timeout jest długi: długie czekanie na retransmisje Rozpoznaj stracone segmenty przez duplikaty ACK. Nadawca często wysyła segmenty jeden tuż po drugim Jeśli segment zginie, może być wiele duplikatów ACK. Jeśli nadawca otrzyma 3 duplikaty ACK dla tych samych danych, zakłada, że następny segment po potwierdzonych danych zginął: szybkie retransmisje: wyślij segment zanim nastąpi timeout 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 transportu Multipleksacja i demultipleksacja Transport bezpołączeniowy: UDP Zasady niezawodnej komunikacji danych Transport połączeniowy: TCP struktura segmentu niezawodna komunikacja kontrola przepływu zarządzanie połączeniem Mechanizmy kontroli przeciążenia Kontrola przeciążenia w TCP 3-23

Kontrola przepływu TCP odbiorca TCP ma bufor odbiorcy: Okno odbiorcy TCP kontrola przepływu nadawca nie "zaleje" bufora odbiorcy przesyłając za dużo i za szybko Dane od warstwy IP Wolne miejsce Dane TCP w buforze Dane do warstwy aplikacji Bufor TCP Proces aplikacji może za wolno czytać z bufora usługa dopasowania prędkości: dopasuje prędkość wysyłania do prędkości odbioru danych przez aplikację 3-24

Jak działa kontrola przepływu TCP Okno odbiorcy TCP Dane od warstwy IP Wolne miejsce Dane TCP w buforze Dane do warstwy 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 transportu Multipleksacja i demultipleksacja Transport bezpołączeniowy: UDP Zasady niezawodnej komunikacji danych Transport połączeniowy: TCP struktura segmentu niezawodna komunikacja kontrola przepływu zarządzanie połączeniem Mechanizmy kontroli przeciążenia Kontrola przeciążenia w TCP 3-26

Zarządzanie połączeniem TCP Przypomnienie: Nadawca i odbiorca TCP, tworzą połączenie zanim wymienią dane inicjalizacja zmiennych TCP: numery sekwencyjne bufory, informacja kontroli przepływu (rozmiar bufora) klient: nawiązuje połączenie Socket clientsocket = new Socket("hostname","port number"); serwer: odbiera połączenie Socket connectionsocket = welcomesocket.accept(); Trzykrotny uścisk dłoni: Krok 1: host klienta wysyła segment SYN do serwera podaje początkowy numer sekwencyjny bez danych Krok 2: host serwera odbiera SYN, odpowiada segmentem SYNACK serwer alokuje bufory określa początkowy numer Krok 3: klient odbiera SYNACK, odpowiada segmentem ACK, który może zawierać dane 3-27

Zarządzanie połączeniem TCP (c.d..) Zamykanie połączenia: klient zamyka gniazdo: clientsocket.close(); Krok 1: Host klienta wysyła segment TCP FIN do serwera Krok 2: serwer odbiera FIN, odpowiada segmentem ACK. Zamyka połączenie, wysyła FIN. zamnknij gniazdo timeout klient FIN ACK FIN ACK serwer zamknij gniazdo połączenie zamknięte połączenie zamknięte 3-28

Zarządzanie połączeniem TCP (c.d.) Krok 3: klient odbiera FIN, odpowiada segmentem ACK. Rozpoczyna oczekiwaniebędzie odpowiadał ACK na otrzymane FIN. Krok 4: serwer odbiera ACK. Połączenie zamknięte. zamknij gniazdo klient FIN ACK FIN serwer zamknij gniazdo Uwaga: z małymi zmianami, obsługuje jednoczesne FIN. timeout ACK połączenie zamknięte połączenie zamknięte 3-29

Zarządzanie połączeniem TCP (c.d..) minęło 30s ZAMKNIĘTE aplikacja klienta otwiera połączenie wyślij SYN CZEKAJ odebrano FIN wyślij ACK WYSŁANY SYN odebrano SYN-ACK wyślij ACK FIN-CZEKAJ 2 odebrano ACK Cykl życia klienta TCP FIN-CZEKAJ 1 POŁĄCZONY aplikacja klienta zamyka połączenie wyślij FIN odebrano ACK ZAMKNIĘTE Cykl życia serwera TCP aplikacja serwera tworzy gniazdo czekające wyślij FIN OSTATNI ACK SŁUCHANIE odebrano SYN wyślij SYN-ACK ZAMKNIJ CZEKAJ Odebrano FIN wyślij ACK POŁĄCZONY ODEBRANY SYN odebrano ACK 3-30

Mapa wykładu Usługi warstwy transportu Multipleksacja i demultipleksacja Transport bezpołączeniowy: UDP Zasady niezawodnej komunikacji danych Transport połączeniowy: TCP struktura segmentu niezawodna komunikacja kontrola przepływu zarządzanie połączeniem Mechanizmy kontroli przeciążenia Kontrola przeciążenia w TCP 3-31

Zasady kontroli przeciążenia Przeciążenie: nieformalnie: za wiele źró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óźnienia (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 dwóch nadawców, dwóch odbiorców Host A λ in : orginalne dane λ out jeden ruter, nieskończone bufory Host B nieskończony bufor łącza wyjściowego bez retransmisji opóźnienie duże opóźnienia przy przeciążeniu maksymalna dostępna przepustowość 3-33

Przyczyny/koszty przeciążenia: scenariusz 2 jeden ruter, skończone bufory retransmisje straconych pakietów Host A λ in : oryginalne dane λ' in : oryginalne dane plus retransmisje λ out Host B skończone, współdzielone bufory łącza wyjściowego 3-34

Przyczyny/koszty przeciążenia: scenariusz 2 zawsze: λ = λ (goodput) in out doskonałe retransmisje tylko po stracie: λ > λ in out retransmisje opóźnionych (nie straconych) pakietów zwiększa λ (w porównaniu z doskonałymi) dla tego samego λ in 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 dłuższe ścieżki timeout/retransmisje Pytanie: co nastąpi, gdy λ in oraz λ in wzrosną? Host A λ in : oryginalne dane λ' in : oryginalne dane plus retransmisje skończone, współdzielone bufory łącza wyjściowego λ out Host B 3-36

Przyczyny/koszty przeciążenia: scenariusz 3 H o s t A λ o u 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 koniec-koniec: brak bezpośredniej informacji zwrotnej od warstwy sieci przeciążenie jest obserwowane na podstawie strat i opóźnień w systemach końcowych tą metodą posługuje się TCP Kontrola przeciążenia z pomocą sieci: rutery udostępniają informację zwrotną systemom końcowym pojedynczy bit wskazuje na przeciążenie (SNA, DECbit, TCP/IP ECN, ATM) podawana jest dokładna prędkość, z jaką system końcowy powinien wysyłać 3-38

Studium przypadku: kontrola przeciążeń w usłudze ABR sieci ATM ABR: available bit rate: usługa elastyczna jeśli ścieżka nadawcy jest niedociążona : nadawca powinien używać dostępną przepustowość jeśli ścieżka nadawcy jest przeciążona: nadawca jest ograniczany do minimalnej gwarantowanej przepustowości Komórki RM (resource management): wysyłane przez nadawcę, przeplatane z komórkami danych bity w komórce RM ustawiane przez przełączniki sieci ( z pomocą sieci ) bit NI: nie zwiększaj szybkości (lekkie przeciążenie) bit CI: wskazuje na 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 nadawca komórki RM komórki danych odbiorca 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 transportu Multipleksacja i demultipleksacja Transport bezpołączeniowy: UDP Zasady niezawodnej komunikacji danych Transport połączeniowy: TCP struktura segmentu niezawodna komunikacja kontrola przepływu zarządzanie połączeniem Mechanizmy kontroli przeciążenia Kontrola przeciążenia w TCP 3-41

Kontrola przeciążenia w TCP metoda koniec-koniec (bez pomocy sieci) nadawca ogranicza prędkość transmisji: OstatniWysłanyBajt- OstatniPotwierdzonyBajt RozmiarOkna Z grubsza, prędkość = RozmiarOkna [Bajt/s] RTT RozmiarOkna jest zmienny, funkcja obserwowanego przeciążenia sieci Jak nadawca obserwuje przeciążenie? strata = timeout lub 3 zduplikowane ACK nadawca TCP zmniejsza prędkość (RozmiarOkna) po stracie trzy mechanizmy: AIMD powolny start konserwatywne po zdarzeniu timeout 3-42

Mechanizm AIMD w TCP multiplikatywne zmniejszanie: dziel RozmiarOkna przez dwa po stracie 24 Kb rozmiar okna przeciazenia addytywne zwiększanie: zwiększ RozmiarOkna o 1 rozmiar segmentu po każdym RTT bez straty: badanie sieci 16 Kb 8 Kb czas Długotrwałe połączenie TCP 3-43

Powolny start TCP Po nawiązaniu połączenia, RozmiarOkna = 1 segment Przykład: Segment = 500 b oraz RTT = 200 ms początkowa prędkość = 2.5 kb/s dostępna przepustowość >> rozmiarsegmentu/rtt pożądane jest szybkie przyśpieszenie komunikacji Na początku połączenia, rozmiar okna jest mnożony przez dwa aż do wystąpienia pierwszej straty Potem zaczyna działać mechanizm AIMD 3-44

Powolny start TCP (c.d.) Po nawiązaniu połączenia, zwiększaj prędkość wykładniczo do pierwszej straty: RTT Host A Host B jeden segment podwajaj RozmiarOkna co RTT dwa segmenty osiągane przez zwiększanie RozmiarOkna po otrzymaniu ACK cztery segmenty Podsumowanie: początkowo, prędkość jest mała, ale szybko przyśpiesza czas 3-45

Udoskonalenie powolnego startu Po 3 zduplikowanych ACK: RozmiarOkna dzielimy przez dwa okno zwiększane liniowo Ale: po zdarzeniu timeout: RozmiarOkna ustawiany na 1 segment; okno z początku zwiększane wykładniczo do pewnej wielkości, potem zwiększane liniowo Uzasadnienie: 3 zduplikowane ACK wskazują, że sieć dostarcza niektóre segmenty timeout przed 3 zduplikowanymi ACK jest bardziej alarmujący 3-46

Udoskonalenia (c.d.) Pytanie: Kiedy przestać zwiększać okno wykładniczo, a zacząć zwiększać liniowo? Odpowiedź: Gdy RozmiarOkna osiągnie połowę swojej wartości z przed zdarzenia timeout. RozmiarOkna Próg Czas mierzony w RTT Próg Implementacja: Zmienny Próg Po stracie, Próg jest ustalany na 1/2 wartości RozmiarOkna tuż przed stratą 3-47

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 za niepotwierdzone dane Powolny Start (PS) RozmiarOkna = RozmiarOkna + 1 segment, If (RozmiarOkna > Próg) stan = Unikanie Przeciążenia Po upływie RTT, RozmiarOkna się podwaja Odebranie ACK za niepotwierdzone dane Unikanie Przeciążenia (UP) RozmiarOkna = RozmiarOkna + (1 segment / RozmiarOkna) Liniowy wzrost RozmiarOkna o 1 segment po upływie RTT Strata zaobserwowana przez 3 zduplikowane ACK PS lub UP Próg = RozmiarOkna / 2, RozmiarOkna = Próg, Stan = Unikanie Przeciążenia Szybka poprawa przez multiplikatywne zmniejszanie. RozmiarOkna nie będzie mniejszy niż 1 segment. Timeout PS lub UP Próg = RozmiarOkna/2, RozmiarOkna = 1 segment, Stan = Powolny Start Wchodzimy w Powolny Start Zduplikowany ACK PS lub UP Zwiększ licznik ACK dla potwierdzonego segmentu RozmiarOkna ani Próg nie 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 = 2 10-10 Bardzo wyśrubowana! Potrzeba nowych wersji TCP dla bardzo szybkich sieci! L 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 Połączenie TCP 2 ruter będący wąskim gardłem: przepustowość R 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 Przepustowość połączenia 2 R równe udziały przepustowości R Przepustowość połączenia 1 strata: zmniejsz okno dwukrotnie unikanie przeciążenia: liniowy wzrost Pełne wykorzystanie łącza 3-53

Więcej o sprawiedliwości Sprawiedliwość i UDP Komunikacja strumieniowa nie używa TCP nie chce zmieniać prędkości nadawania zgodnie z kontrolą przeciążeń W zamian używa UDP: śle audio/wideo ze stałą prędkością, toleruje straty pakietów Obszar badań: Komunikacja strumieniowa "TCP friendly" Sprawiedliwość i równoległe połączenia TCP nic nie powstrzyma aplikacji przed nawiązaniem równoległych połączeń pomiędzy 2 hostami. Robią tak przeglądarki WWW Przykład: łącze o przepustowości R obsługuje 9 połączeń; nowa aplikacja prosi o 1 połączenie TCP, dostaje przepustowość R/10 nowa aplikacja prosi o 11 połączeń TCP, dostaje przepustowość R/2! 3-54

Podsumowanie warstwy transportu mechanizmy usług warstwy transportu: multipleksacja, demultipleksacja niezawodna komunikacja kontrola przepływu kontrola przeciążenia w Internecie: UDP TCP Co dalej: opuszczamy brzeg sieci (warstwy aplikacji i transportu) wchodzimy w szkielet sieci 3-55