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

Podobne dokumenty