labts-cw2
Transkrypt
labts-cw2
labts-cw2 Technologie sieciowe — Implementacja prostych protokołów w szablonie CLICK Informacje ogólne Ćwiczenie polega na implementacji specyficznej części komunikacji protokołu ICMP (ICMP Echo Request i ICMP Echo Reply). Ostrzeżenie W tym ćwiczeniu termin element ma konkretne znaczenie. Jeśli napotkasz ten termin w opisie ćwiczenia, myśl o nim jak o klasie w rozumieniu programistycznym. Wprowadzenie Do wykonania ćwiczenia należy skorzystać ze szkieletu CLICK. Jest to zbiór elementów (elements) realizujących podstawowe operacje na pakietach/ramekach oraz pewne funkcje specyficzne głównie dla warstw II i III stosu ISO/OSI. CLICK instalowany jest jako moduł jądra systemu GNU/Linux. Pakiety pobierane z bufora karty sieciowej przekazywane są w pierwszej kolejności do modułu CLICK, z którego ewentualnie przekierowywane są do natywnego stosu TCP/IP systemu operacyjnego. Na potrzeby ćwiczenia, natywny stos TCP/IP jest całkowicie pomijany. Realizacja komunikacji ICMP Echo i ICMP Reply powinna odbyć się wyłącznie z użyciem elementów szkieletu CLICK. Przebieg ćwiczenia Wykonanie ćwiczenia polega na zaimplementowaniu komunikacji ICMP Echo Request i ICMP Echo Reply (reimplementacja programu ping) wykorzystując gotowe elementy szablonu CLICK. Weryfikacja poprawnej komunikacji ICMP Echo Request i Echo Reply odbędzie się przy pomocy polecenia ping systemu Windows. Należy w tym celu zainicjować komunikację z natywnego systemu do wirtualnej maszyny. Kluczowa jest zmiana wartości parametru TTL w odpowiedzi w stosunku do wartości ustawianej przez natywny stos TCP/IP systemu GNU/Linux. Konfiguracja środowiska Do wykonania ćwiczenia wystarczy pojedyncza maszyna wirtualna oraz narzędzie ping systemu Windows. Najwygodniej skonfigurować obraz VMWare-a tak, aby jego sieć działała w trybie NAT, co pozwoli na automatyczną konfigurację adresu sieciowego wirtualnej maszyny. Podpowiedź Gdyby host uruchomił się bez automatycznie przydzielonego adresu IP, można explicite wywołać klienta usługi DHCP: click:~# dhclient eth0 1 labts-cw2 Narzędzia Praca ze szkieletem CLICK polega na redagowaniu pliku konfiguracyjnego który następnie instalowany jest wraz z modułem jądra poleceniem click-install plik_konfiguracyjny. W celu odinstalowania modułu należy wydać polecenie click-uninstall (bez parametrów dodatkowych). Podpowiedź W skrajnych przypadkach może dojść do błędów implementacyjnych, które w przypadku programów poziomu jądra wymuszają ponowne, twarde uruchomienie systemu. W przypadku maszyny wirtualnej sprowadza się to do jej zrestartowania. Plik konfiguracyjny szkieletu CLICK składa się z deklaracji elementów oraz połączeń między nimi, wyrażonych symbolem ->. Elementy posiadają zróżnicowaną liczbę portów wejściowych i wyjściowych (0+ wejściowych i 1+ wyjściowych), które indeksowane są liczbami naturalnymi od 0, np. Przykład 1. Jawne deklarowanie portów połączenia TestElement[0]->[1]TestElement2 Domyślnie symbol -> wykorzystuje port wejściowy/wyjściowy 0. Specyfikacja konkretnego portu wejścia/wyjścia odbywa się przy pomocy operatora indeksowego [numer_wejscia/wyjscia], odpowiednio przed i po elemencie dla portów wejściowych i wyjściowych. Przykład 2. Przekierowanie natywnego stosu wszystkich pakietów do FromDevice(eth0) -> Queue -> ToHost; Relewantne elementy Poniżej znajduje się lista elementów, które zdają się być przydatne przy implementacji komunikacji ICMP. Podpowiedź Jest więcej niż jeden sposób na rozwiązanie tego problemu. Możesz wykorzystać tylko część poniższych elementów, wszystkie, a może nawet zupełnie inne! Interakcja z systemem operacyjnym FromDevice, ToDevice Pobieranie/wysyłanie pakietów z/do urządzenia. Warstwa łącza danych Strip „Obcięcie” przodu ramki/pakietu. Queue Kolejka (działa jako konwerter Push->Pull). EtherEncap Dodaje statyczny nagłówek Ethernetowy. 2 labts-cw2 ARPQuerier Kompleksowa obsługa protokołu ARP (samodzielnie realizuje zapytania ARP Query na podstawie docelowego adresu IP). Warstwa sieciowa Classifier, IPClassifier Klasyfikacja ramek/pakietów na podstawie zadanych parametrów (demultiplekser ruchu sieciowego). IPInputCombo, IPOutputCombo Zbiór podstawowych operacji na pakietach IP na wejściu/wyjściu. CheckICMPHeader Weryfikacja poprawności nagłówka ICMP. ICMPPingResponder Generuje odpowiedź na ICMP Echo. Autorzy dr inż. Andrzej Szwabe <[email protected]> mgr inż. Cezary Krzyżanowski <[email protected]> Bibliografia Teoria [1] The Internet And Its Protocols. A Comparative Approach. Adrian Farrel. Morgan Kauffman. Elsevier. San Francisco. 2004. Narzędzia [2] Strona projekctu CLICK. styczeń 2008. [3] Samouczek szablonu CLICK. styczeń 2008. [4] Przykładowe konfiguracje szablonu CLICK. styczeń 2008. [5] Dokumentacja elementów CLICK. styczeń 2008. 3