Współczesny szybki rozwój sieci Internet, mnogość aplikacji a przede wszystkim coraz większa liczba korzystających z niej urządzeń, stawia przed obecnie istniejącymi metodami adresacji (protokół IP) bardzo poważny problem. W niedalekiej przyszłości (rok 2004) większość mobilnych urządzeń (telefony komórkowe, PDA) będzie miała stały dostęp do sieci. Ich liczbę szacuje się na jeden miliard co, w połączeniu z obecnie podłączonymi urządzeniami oraz adresami zarezerwowanymi, może przekroczyć magiczną liczbę możliwych do uzyskania adresów. Już od kilku lat istnieje rozwiązanie kwestii zwiększenia tej liczby - protokół IPv6.
Zacznijmy jednak od początku. Każdemu z urządzeń w sieci musi być przypisany adres IP. Jest to 4 bajtowa liczba zapisywana zwykle jako x.x.x.x, gdzie x jest z zakresu 1 do 254, co daje maksymalna liczbę kombinacji na poziomie 4,2 miliarda, a równocześnie jest maksymalną ilością urządzeń możliwych do przyłączenia. Protokół IPv6 oferuje nam 16 bajtowy adres, który ma praktycznie nie ograniczoną liczbę adresów. Dodatkowo projektanci wzbogacili IPv6 o kilka rozwiązań, które były bolączką wersji czwartej, są to:
Wszystkie to zalety są jednak okupione zwiększeniem objętości nagłówka IP, który w wersji czwartej miał 20 oktetów, a w wersji szóstej rozrósł się do 40 oktetów. Może też on zawierać dodatkowe nagłówki dotyczące bezpieczeństwa, fragmentacji i routingu. Przy obecnych parametrach transmisyjnych nie jest to jednak koszt znaczący, szczególnie wobec wielu przytoczonych zalet. Przyjrzyjmy się dokładnie mechanizmom umożliwiającym mobilność, zdefiniujmy to pojęcie i wykażmy znaczącą rolę IPv6 w tym kontekście.
Mobilność jest złożoną koncepcją, którą możemy obecnie obserwować w trzech różnych formach:
Obecnie termin mobile-IP jest często używany wyłącznie dla określenia zdo1ność komputera do przenoszenia się z jednej sieci IP do innej bez konieczności zmiany własnego adresu IP, a więc bez powtórnego nawiązywania połączenia przez protokoły warstwy wyższej (np. TCP). Należy podkreślić, że obecne rozwiązania lokalnych bezprzewodowych sieci komputerowych najczęściej nie wykorzystują mobile-IP, gdyż będące w nich urządzenia mobilne bez względu na swoje położenie zawsze pozostają w jednej przestrzeni adresowej.
|
Przedstawione powyżej rozwiązanie problemu mobilności przy zachowaniu stałego adresu wydaje się być poprawne.
Istnieje jednak poważny problem optymalizacyjny, polegający na tym że wszystkie pakiety, wysyłane do hosta
mobilnego (MN), nawet przez host znajdujący się w tej samej sieci obcej co on, wędrują najpierw do agenta domowego -
diagram 2. Wystarczy sobie wyobrazić, że pomiędzy sieciami domową i obcą jest duża odległość lub istnieje tylko jedno
łącze o niskiej przepustowości. Problem trójkątnego rutingu (triangle routing) rozwiązano zezwalając hostowi
komunikującemu się (CN) na bezpośrednią komunikację z obcym agentem (FA), jeśli tylko zna jego adres. Największą
niedogodnością tego rozwiązania jest obowiązek informowania o zmianie lokalizacji już nie tylko agenta domowego,
ale wszystkich hostów z którymi obecnie komunikuje się host mobilny. Nie jest to jednak możliwe bez działania na
tych hostach specjalistycznego oprogramowania.
Poza przytoczonym, istnieje jeszcze szereg innych udogodnień, mających na celu optymalizację komunikacji z hostem mobilnym w sieci obcej. Zauważmy, że krytycznym punktem naszego modelu jest agent domowy (HA), w razie jego awarii żaden z hostów mobilnych nie będzie mógł się komunikować. Stosunkowo prostym rozwiązaniem jest aktywacja kilku agentów domowych. Innym ciekawym pomysłem jest hierarchizacja mobilność. Podział na mikro i makro bloki, z których każdy posiada wiele obcych agentów wykorzystuje mechanizm regionalnej rejestracji (Regional Registration).
Linux od wersji 2.1.90 posiada możliwość korzystania z protokołu IPv6. W jądro wbudowane są mechanizmy umoż1iwiające
komunikacje zarówno poprzez protokół IPv4 jak i IPv6. Standardowo nie posiada natomiast żadnego wsparcia dla Mobile-IP.
Jest wiele projektów zajmujących się zagadnieniem implementacji tego protokołu. Do testów została wybrana implementacja
MIPL w wersji 0.9 rozwijana na HUT (Helsinki University of Technology)
przez grupę GO/Project, udostępniona na zasadach
licencji GPL. Składa się on z dwóch części: łatki (patch) do jądra oraz programu mipdiag, umożliwiającego diagnostykę
oraz konfigurację modułu. Dołączone są również przykładowe pliki konfiguracyjne oraz skrypt startowy dla dystrybucji
RedHat, SuSe oraz Debian.
Poprawna instalacja i konfiguracja pakietu wymaga posiadania źródeł jądra systemu. W zależności od posiadanej wersji wybieramy z pośród dwóch obecnie dostępnych instalacji mipv6-0.9-v2.4.7 (dla jąder 2.4.4 do 2.4.7) lub mipv6-0.8.1-v2.4.2 (dla jąder 2.4.0 do 2.4.2). Pliki pakietu rozpakowujemy w dowolnej lokalizacji, następnie zakładamy łatę na jądro 'root> patch -p1 < . ./mipv6-0.9-v* .patch'. Możemy teraz przystąpić do konfiguracji jądra 'make config', a po ustawieniu parametrów dotyczących mobile IPv6, rekompilacji i instalacji nowe jądra.
![]() |
![]() |
W katalogu w którym został on rozpakowany znajduje się katalog userspace. Uruchamiamy w nim skrypt configure,
a następnie mobile-ip6. Komendami make, make install odpowiednio kompilujemy i instalujemy narzędzia,
manuale i pliki konfiguracyjne. Musimy też stworzyć odpowiednie urządzenie w katalogu
/dev, komenda root> mknod /dev/mipv6 dev c 0xf9 0.
Konfiguracja pakietu jest zawarta w trzech plikach. Najważniejsze parametry, w tym typ hosta - mobilny lub agent,
znajdują się w /etc/network-mip6.conf.
Jeśli podczas kompilacji wybraliśmy opcję obsługi autentykacji w pliku
/etc/mipv6_sas.conf możemy umieścić odpowiednie wartości. Trzeci z plików /etc/mipv6_ad.conf jest istotny dla
hosta typu agent, zawiera bowiem listę adresów hostów mobilnych mogących się z nim łączyć. Domyślnie wszystkie adresy
są zabronione. Zawartość plików w konfiguracji agenta wraz z komentarzami znajduje się w ramkach, dużo łatwiejszą
konfigurację hosta mobilnego bez problemów uzyskujemy modyfikując odpowiednie wartości.
Na jednym z komputerów został również skonfigurowany demon radvd. Służy on do dynamicznego przydzielania adresów IP
w wersji szóstej, a także do tworzenia dynamicznych tablic rutingu.
![]() |
![]() |
Protokół IPv6 posiada zaawansowane mechanizmy autokonfiguracji. W celu uzyskania adresu host wysyła
zapytania - RS (router solicitations), które są odbierane przez router lub host spełniający jego rolę.
Wysyłana odpowiedź - RA (router advertisement) zawiera wszystkie informacje potrzebne hostowi do poprawnej
konfiguracji interfejsu sieciowego. W systemie Linux rolę routera odpowiadającego na zapytania RS może pełnić
demon radvd. Plik konfiguracyjny demona /etc/radvd.conf zawiera informacje opisujące wartości prefiksów dla
poszczególnych interfejsów routera, czasy odświeżania adresów itp.
Moduły MIPL aktywujemy za pomocą skryptu startowego mobile-ip6 wygenerowanego podczas kompilacji. Sprawdźmy jednak wcześniej czy moduł jest poprawnie zainstalowany root> ./mobile-ip6 status, komunikat "mobile ip6 module installed…" informuje, że wszystko jest w porządku, napiszmy root> ./mobile-ip6 start. Stan i akcje podejmowane przez moduł możemy teraz śledzić w logach systemowych /var/log/debug. Powyższe operacje musimy oczywiście wykonać na wszystkich komputerach mających działać w ramach naszej struktury mobilnej.
Mgr inż. Dominik Radziszowski jest pracownikiem Grupy Systemów Rozproszonych Katedry Informatyki AGH. Od kilku lat prowadzi laboratoria z zakresu sieci komputerowych. Swoje naukowe wysiłki koncentruje obecnie na adaptacji urządzeń PDA dla potrzeb telemedycyny, ze szczególnym uwzględnieniem dostępu bezprzewodowego oraz protokołu IPv6.