==================== Wprowadzenie do IPv6 ==================== Dawno, dawno temu, za siedmioma górami, za siedmioma lasami, za siedmioma warstwami modelu OSI... No, może nie dokładnie za siedmioma warstwami, tylko w trzeciej -- żył sobie protokół IP. Protokół IP był bardzo ważnym krasnoludkiem, gdyż nosił wiaderka z danymi od jednej chatki do drugiej. Musiał przy tym pokonywać wieeeele trudności, takich jak dopuszczalna wielkość wiaderka w różnych królestwach, nazwy ulic w różnych językach, różne podłoże w różnych częściach świata... Męczące to było niesamowicie, a królestwa rosły i rosły... Krasnoludek nie nadążał jednak z zapamiętywaniem wszystkich nowych miejscowości: wiadomo -- starość nie radość. Prędkość dreptania też już nie ta sama, a wymagania rosły... Trzeba więc było następcy naszego krasnoludka, który na koszulce z tyłu miał liczbę "4"... DLACZEGO POWSTAŁ, CECHY, RÓŻNICE W STOSUNKU DO IPv4 IPv6 jest protokołem warstwy trzeciej (sieciowej) modelu OSI. W warstwie tej mieści się adresowanie, wybieranie trasy, dostarczanie pakietów na miejsce. IPv6 to Internet Protocol w wersji 6. Jest następcą powszechnie używanego w Internecie protokołu IP w wersji 4, zwanego po prostu IP. Dlaczego nie został nazwany IPv5? Wersja protokołu to pierwsze cztery bity nagłówka IP (wobec czego możliwe są numery od 0 do 15). Numerem 4 oznaczony jest obecnie najpowszechniejszy protokół IP, natomiast numer 5 został zarezerwowany dla protokołu STP (Stream Protocol), opisanego w RFC 1819, który jednak nigdy nie ujrzał światła dziennego. Kolejnym wolnym numerem było więc 6 :-) Jako główną z przyczyn wprowadzenia IPv6 wymienia się niewystarczającą przestrzeń adresową dostępną w IPv4. Adresy IPv4 mają długość 32 bitów, za pomocą których można zaadresować maksymalnie 4.294.967.296 komputerów. Jakkolwiek liczba ta wydaje się być niewiarygodnie dużą, ekspansja internetu na początku lat '90 zmusiła mądre głowy do wysiłku, gdyż prognozy wskazywały po prostu wyczerpanie się tej przestrzeni. Protokół IPv6 charakteryzuje się więc zwiększoną długością adresu, która wynosi 128 bitów. Łatwo sobie policzyć, że liczba adresów wzrosła w stosunku do IPv4 z około czterech miliardów do 340.282.366.920.938.463.463.374.607.431.768.211.456. Tak duża liczba adresów pozwala na dalszy rozwój internetu, elastyczniejsze zarządzanie przestrzenią adresową, umożliwia wprowadzenie autokonfiguracji i na pewien czas zapobiegnie wyczerpaniu się wolnych adresów (choć kto wie... biorąc pod uwagę rozwój telefonii komórkowej, która w przyszłości może również korzystać z protokołu IP -- nie wiadomo, na ile czasu starczy nam tych nowych adresów. Może za jakiś czas Zanussi, Whirlpool czy inna Amica wprowadzą lodówki, kuchenki gazowe i pralki z możliwością zdalnego zarządzania przez internet? ;-) Nagłówek pakietów został uproszczony w stosunku do nagłówka IPv4. Przede wszystkim -- ma stałą długość (40 oktetów). Jest to dwukrotny wzrost w porównaniu do IPv4, ale biorąc pod uwagę, iż adresy są 4 razy dłuższe -- nie jest to zły wynik ;-) W nagłówku IPv6 umieszczane są tylko najważniejsze informacje, takie jak adres nadawcy i odbiorcy, wersja protokołu, priorytet pakietu, długość payload'u czy typ następnego nagłówka. Dodatkowe opcje są umieszczone w dodatkowych, opcjonalnych nagłówkach, umieszczonych między nagłówkiem IPv6 a nagłówkiem warstwy transportowej. Większość tych opcjonalnych nagłówków nie jest przetwarzana przez rutery, co korzystnie wpływa na wydajność, a także umożliwia w miarę bezbolesne dodanie innych opcji. Fragmentacja pakietów w IPv6 dozwolona jest tylko na poziomie nadawcy. Nie mogą jej dokonywać rutery pośredniczące w transmisji. Kolejną zaletą w stosunku do IPv4 jest możliwość szyfrowania transmisji na poziomie pakietu (jest na to przewidziany specjalny nagłówek). Stosując taką autoryzację mamy pewność, że zawartość pakietu nie została zmieniona w trakcie transmisji, a także iż pakiet pochodzi naprawdę ze źródła podanego w nagłówku. ADRESY Adres IPv6 ma 128 bitów. Pozwala to na jakiś czas zapomnieć o wyczerpaniu się przestrzeni adresowej. Jeżeli za ileś lat trzeba będzie wymienić protokół IPv6 na coś nowszego, to będzie to raczej podyktowane usprawnieniami technicznymi, niż potrzebą zwiększenia ilości adresów. Warto wspomnieć, iż adresy przypisywane są do poszczególnych interfejsów maszyny, a nie do niej samej. Pojedyńczy interfejs może mieć przypisanych kilka unikalnych adresów unicast. Którykolwiek z adresów przypisanych do interfejsów maszyny może być użyty do jej identyfikacji. ZAPIS Adres IPv6 może być reprezentowany w różnych postaciach. Najpopularniejszą z nich jest reprezentacja heksadecymalna. Przy zapisie adresu IPv6 w postaci heksadecymalnej, używa się znaków 0123456789abcdef. Adres dzieli się na 8 16-bitowych grup, oddzielonych od siebie dwukropkiem. Przykładowy zapis może więc wyglądać tak: 3ffe:8010:0007:0013:0000:0000:0000:0002 Przyjęto jednak pewne ułatwienia, aby zapis ten skrócić. I tak, nie trzeba zapisywać wiodących zer. Można również zastąpić sąsiednie bloki zer podwójnym dwukropkiem. Tutaj jednak są pewne ograniczenia. Zastąpienia takiego można dokonać tylko raz i tylko w przypadku, gdy sąsiednie bloki zawierają same zera. Powyższy przykład skracamy więc do: 3ffe:8010:7:13::2 Największe możliwe skrócenie zapisu ma miejsce w przypadku adresu 'localhost' (odpowiednika 127.0.0.1 w przypadku IPv4): 0000:0000:0000:0000:0000:0000:0000:0001 -> ::1 Inną metodą zapisu jest Base85 (zdefiniowana w RFC 1924), w której nasz przykładowy adres wyglądałby tak: ItqvW43%v3yyB7eP`BM$ Zapis taki ma jednak nikłe szanse aby utkwić w pamięci zwykłego śmiertelnika i nie widuje się go w użyciu (dokument RFC, w którym zdefiniowana jest ta notacja został wydany 1 kwietnia, więc może to jakiś nieudany żart prima-aprilisowy ;-) RODZAJE IPv6 przewiduje trzy typy adresów: a) Unicast, identyfikujący pojedyńczy interfejs. Pakiet wysłany do adresu unicast jest dostarczany do interfejsu skojarzonego z tym adresem. Wśród adresów unicast można wyróżnić kilka szczególnych przypadków, takich jak adres komputera lokalnego (::1), "jakikolwiek" adres (::), adres IPv4 wpisany w adres IPv6 (::ffff:www.xxx.yyy.zzz), adresy link-local (służące do porozumiewania się w obrębie jednej sieci lokalnej, nie mają prawa wyjść poza jej ruter; FE80::/10), adresy site-local (podobne do link-local, ale zbudowane w taki sposób, iż umożliwiają bezbolesne przejście do adresów globalnych, FEC0::/10) b) Anycast, identyfikujący pewien zbiór interfejsów (często należących do różnych urządzeń). Pakiet wysłany do takiego adresu jest dostarczany do jednego, najbliższego z interfejsów skojarzonych z tym adresem (najbliższego w kontekście "odległości" mierzonej przez protokoły rutujące) c) Multicast, identyfikujący zbiór interfejsów (często należących do różnych urządzeń). Pakiet wysłany pod taki adres trafia do wszystkich interfejsów skojarzonych z tym adresem. STAN IPv6 W INTERNECIE Okej, wymyślono nowy, zapewne lepszy, protokół. Ale co dalej? Czy można gdzieś go wypróbować? Czy jest użyteczny? Czy się sprawdza? Do testowania protokołu IPv6 stworzono sieć 6bone. Na jej potrzeby testowe zaalokowano przestrzeń 3ffe::/16. Przyłączenie się do tej sieci jest bezpłatne, można więc bez żadnych kosztów partycypować w rozwoju technologii, która za kilka lat ma szansę wyprzeć istniejące IPv4. W ramach 6bone można testować wszelakie systemy operacyjne, stosy sieciowe, protokoły rutingu (np. BGP). Nie jest to oczywiście żadna samowolka, w 6bone, jak wszędzie, obowiązują pewne zasady. Nie chodzi tu jednak o ograniczanie użytkowników, tylko przede wszystkim o zgodność dołączanych sieci ze standardami opisanymi w RFC. W Polsce IPv6 rozwija się dość dynamicznie. W chwili obecnej mamy 3 duże ośrodki IPv6 (tzw. pTLA): ICM-PL, ATMAN6 i POZMAN. Tak, jak na świecie, polska część 6bone służy do testów; podłączenie się do niej jest bezpłatne, wymaga tylko trochę wiedzy i cierpliwości. Oprócz testowej przestrzeni 3ffe::/16, przydzielono również przestrzeń adresową organizacjom, które sprawują kontrolę nad adresami IPv4. I tak: dla IANA: 2001:0000::/29 - 2001:01F8::/29 ala APNIC: 2001:0200::/29 - 2001:03F8::/29 dla ARIN: 2001:0400::/29 - 2001:05F8::/29 dla RIPE: 2001:0600::/29 - 2001:07F8::/29 DOSTĘPNE USŁUGI I APLIKACJE Jedną z podstawowych usług, która potrzebna jest do płynnego przejścia z wersji 4 do wersji 6 protokołu IP jest system nazw domenowych (DNS). Cóż zwykłemu śmiertelnikowi z IPv6, jeśli wpisując w Swojej Ulubionej Przeglądarce (TM) Swój Ulubiony Adres Internetowy (TM), przypuścmy www.majkrozofd.com.pl ;-) nie dostał się w Swoje Ulubione Miejsce (TM)? Dla potrzeb rozwiązywania domen do adresów IPv6 wprowadzono rekord AAAA, będący odpowiednikiem pola A dla IPv4. Aby zapewnić również poprawne rozwiązywanie adresów do nazw, utworzono domenę .ip6.int, która mniej więcej odpowiada .in-addr.arpa dla IPv4. Od strony klienta DNS wygląda więc bardzo podobnie. W chwili obecnej, większość serwerów popularnych usług, pracująca pod kontrolą systemów unixopodobnych, posiada wsparcie dla IPv6. Jedne z nich obsługują IPv6 "po wyjęciu z pudełka", do innych potrzebne są różne łaty, które taką obsługę umożliwiają. W tym miejscu należy oddać hołd Arkowi Miśkiewiczowi, który jest jednym z najbardziej aktywnych w tej dziedzinie programistów. Warto również zwrócić uwagę na PLD, polską dystrybucję linuksa, w której większość daemonów "nakarmiona" już jest odpowiednimi łatami. Jeśli chciałbyś więc uruchomić serwer i udostępniać po IPv6 usługi takie jak WWW, DNS, SSH, FTP, NNTP, SMTP, TELNET, IRC, TALK czy IDENT, nie powinieneś mieć z tym problemów. Wśród aplikacji klienckich sytuacja jest podobna. Na większość popularnych programów dostępne są łaty, dodające obsługę IPv6, o ile takie są wogóle potrzebne. Z tego, co pamiętam, to gdzieś jest nawet Quake obsługujący IPv6 ;-) PODSUMOWANIE Cóż, zdaję sobię sprawę, iż tekst ten zapewne większość z Was wprawi w conajmniej cichy cichot, a może i gromki śmiech. Inni może pod wpływem tej lektury na zawsze zrażą się do IPv6. Mam jednak nadzieję, że pokrótce udało mi się wyjaśnić, czym jest owo magiczne IPv6; a kilka osób po przeczytaniu tych kilkunastu paragrafów zainteresuje się tym protokołem i zacznie szukać dokładniejszych informacji na ten temat. PODZIĘKOWANIA Na koniec, za pomoc i cierpliwość (niekiedy anielską ;-), podziękowania: - Wojtek Kaniewski - Maja Królikowska - Maciek Pijanka - Piotr Żurawski Jakub Jankowski