Laboratorium Technologie Sieciowe Podstawowe protokoły transportowe stosowane w sieciach IP cz.2 Wprowadzenie Ćwiczenie przedstawia praktyczną stronę następujących zagadnień: połączeniowy i bezpołączeniowy model komunikacji cechy protokołu UDP cechy protokołu TCP o dzielenie przesyłanych danych na segmenty o logiczną połączeniowość (logical connections, nawiązywanie i rozwiązywanie sesji, three-way handshake) o kontrola przepływu (flow control) wskazywanie przez odbiornik maksymalnego numeru sekwencyjnego opisującego ile pakietów moŝe zostać odebranych bez przepełnienia bufor odbiorczego o bezstratność transmisji - technika numerów sekwencyjnych i kontroli czasu przedawnienia pakietu (time-out): mechanizm potwierdzeń wykrywanie strat pakietów retransmisje o zaleŝność pomiędzy optymalną wielkością okna TCP a iloczynem przepustowości sieci (bandwidth, BW) i opóźnienia dwukierunkowego (ang. Round Trip Time, RTT). Na ćwiczenie składają się 2 zajęcia laboratoryjne. Zaleca się zapamiętywanie dotychczas osiągniętych rezultatów w poprzez zapisywanie stanu maszyny wirtualnej (tzw. snapshot). Stany te najlepiej zgrać sobie na pen-drive. Źródła Postel J., Transmission Control Protocol, IEFT RFC793, 1981. Postel J., User Datagram Protocol, IETF RFC768, 1980. Zadania 1. Ze strony http://sourceforge.net/projects/iperf ściągnąć aplikację JPerf 2.0.0. Jeśli w systemie Windows nie jest zainstalowana wirtualna maszyna Java, naleŝy ją ściągnąć i zainstalować. Jperf uruchamiamy plikiem jperf.bat. Program ten słuŝy do pomiaru szerokości pasma TCP/UDP oraz raportowania róŝnego rodzaju informacji związanych z przesyłanymi danymi, opóźnieniami, stratami pakietów itd. 2. Sprawdzić obecność oraz aktywność w rzeczywistym systemie Windows interfejsu VirtualBox Host-Only Network. 3. Ustawić w maszynie R1 czwartą kartę sieciową tak aby była nią PCnet-FAST III (Sieć izolowana (host-only), 'VirtualBox Host-Only Ethernet Adapter'). 4. Uruchomić obie maszyny wirtualne: A1 (brama Linux) i R1 (router Linux). 5. Przy pomocy poleceń: ifconfig, route w systemie Linux oraz route, ipconfig w systemie Windows naleŝy skonfigurować sieć przedstawioną na rysunku 1. 1
2 Rysunek 1. Schemat sieci wykorzystywanej w ćwiczeniu. Upewnić się, Ŝe funkcja przekazywania pakietów IP przez bramę Linux jest włączona (plik /proc/sys/net/ipv4/ip_forward powinien mieć treść 1 ). 6. Sprawdzić czy tablice routingu w kaŝdym z systemów umoŝliwiają przesył pakietów. 7. Zweryfikować połączenia pomiędzy wszystkimi maszynami za pomocą polecenia ping. Szczególnie waŝne jest, aby rzeczywisty system Windows miał połączenie z systemem wirtualnym B. Wszystkie połączenia powinny działać w obie strony. 8. Przy pomocy narzędzia NetEm wprowadzić opóźnienie losowe w zakresie 250ms ±50ms (podobnie jak w ćwiczeniu dotyczącym protokołu TCP). 9. W wirtualnym systemie Linux B uruchomić aplikację iperf w trybie serwera natomiast w rzeczywistym systemie Windows uruchomić w trybie klienta (identycznie jak w pierwszej części ćwiczenia). 10. Dokonać analizy rejestracji dokonanej analizatorem Wireshark z punktu widzenia wartości średniej oraz wahań wartości chwilowej efektywnej szybkości transmisji TCP.
3
4
11. Dokonać analizy rejestracji dokonanej analizatorem Wireshark z punktu widzenia zaleŝności pomiędzy numerami sekwencyjnymi TCP (wartościami bezwzględnymi) a czasem sesji (mierzonym względem początku sesji). 12. Wskazać przypadki zaburzenia monotoniczności numerów sekwencyjnych. 13. Analizując wykres zmian wartości parametru RTT ocenić zaleŝność pomiędzy zaburzeniami monotoniczności numerów sekwencyjnych a wartością RTT. 5
6 14. Odnaleźć fragment rejestracji - serię pakietów - odpowiadającą wybranemu przypadkowi zaburzenia monotoniczności numerów sekwencyjnych (spośród uprzednio wskazanych). Dla wybranej serii pakietów zapisać wartości znaczników TCP kluczowych dla uzyskania bezstratności transmisji. 15. Dokonać analizy zmienności efektywnej szybkości transmisji podczas testu. Wskazać pakiety świadczące o działaniu mechanizmu adaptacyjnego sterowania szybkością transmisji TCP. Opierając się na szacunkowych obliczeniach wyjaśnić na przykładzie konkretnych pakietów wpływ wielkości okna TCP i wartości RTT na zaleŝności czasowe pomiędzy pakietami. 16. Zapisać sekwencję analizowanych pakietów w postaci prostego diagramu interakcji pomiędzy klientem a serwerem (przypominającego diagram sekwencji UML). Uwzględnić wartości numerów sekwencyjnych Acknowledgment Number i Sequence number. Zwrócić uwagę na retransmisje pakietów. 17. Powtórzyć kompletny test (iperf) zamiast TCP uŝywając protokołu UDP (o szybkości transmisji pakietów przekraczającej limit przepustowości emulowany przy uŝyciu NetEm). 18. Zapisać wszystkie uzyskane wyniki (analogicznie jak w teście TCP). 19. Powtórzyć test z uŝyciem przepływu UDP o szybkości transmisji pakietów nieznacznie niŝszej niŝ limit przepustowości emulowany przy uŝyciu NetEm. Upewnić się, ze nie wystąpiły straty pakietów. 20. Zmodyfikować konfigurację emulatora, tak aby wprowadzał on losowe 20% straty pakietów (tzw. random losses, straty nie będące wynikiem przepełnienia kolejki emulatora). 21. Powtórzyć sesję testową z uŝyciem generatora Iperf (o domyślnej konfiguracji) dla pakietów TCP.
22. Zapisać wszystkie uzyskane wyniki. 23. Przywrócić zerową stopę losowych strat pakietów (random losses) wprowadzanych przez emulator (nie będących wynikiem przepełnienia kolejki emulatora). 24. Korzystając z poniŝszego równania i przykładu obliczeń wyznaczyć teoretyczną optymalną wielkość okna TCP (TCPW). W tym celu obliczyć iloczyn eksperymentalnie wyznaczonej przepustowości sieci (patrz test z uŝyciem UDP) i wartości średniej RTT (tzw. bandwidthdelay product). TCPW = BW * RTT BW=45 Mbit/sec, RTT=42 ms 45 Mb/s * 42 ms = (45e6) * (42e-3) b = 1890000 b = 230 KB 7