Autorem poniższego opracowania jest Jarosław Lech. Dokument powstał w czerwcu 2000.
IPv6 - nowe możliwości
IPv6 jest skrótem od angielskiej nazwy Internet Protocol version 6. IPv6 jest protokołem "następnej generacji" zaprojektowanym przez The Internet Engineering Task Force (IETF) w celu zastąpienia używanego obecnie protokołu IP w wersji 4 (IPv4).
Zaprojektowany blisko 20 lat temu protokół IPv4 jest obecnie jednym z najpopularnieszych protokołów wykorzystywanych w Internecie. W chwili obecnej zaczęły pojawiać się pewne ograniczenia, z których najistotniejszym chyba jest "kurczenie się" dostępnej puli numerów IP, potrzebnych dla każdej maszyny przyłączenej do sieci.
IPv6 rozwiązuje nie tylko ten problem, ale także wiele innych. Dodaje sporo usprawnień, takich jak np. automatyczna konfiguracja sieci. Przewiduje się stopniowe zastępowanie IPv4 jego nowszym odpowiednikiem i wynikające stąd równoczesne współistnienie obydwu protokołów przez pewien czas.
Dlaczego IPv6 jest tak ważny?
IPv6 został zaprojektowany z myślą o wysoko wydajnych, skalowalnych sieciach, które mogłbyby pracować bez awarii przez dziesięciolecia. Częścią procesu projektowego było poprawienie niedoskonałości IPv4, oraz dodanie nowych cech, takich jak dłuższa przestrzeń adresowa (16 bajtów zamiast 4, przy tylko dwukrotnym zwiększeniu długości nagłówka) i poprawiony format pakietu. Sieci skalowalne wymagają dużo bardziej uważnego wykorzystywanie posiadanych zasobów, dlatego duży nacisk położono na możliwośę autokonfiguracji, jak najmniejszego udziału człowieka przy procesie nadawania numeru IP i innych istotnych parametrów sieci. Zalety IPv6 uwidocznią się szczególnie w sieciach budowanych od początku w oparciu o ten protokół. Będzie możliwa np. dobrze ustrukturyzowana, sprawna i łatwo się przystosowująca do zmian hierarchia routingu. Nieco bardziej szczegółowo cechy IPv6 omówione są poniżej.
Adresacja i routing
IPv6 pomaga rozwiązywać problemy, które występują obecnie w obrębie i między przedsiębiorstwami. Na skalę globalną IPv6 pozwoli twórcom szkieletu (ang. backbone) Internetu na stworzenie elastycznego, rozszerzalnego, hierarchicznego routingu. Utrzymanie tego szkieletu, do którego bezpośrednio podłączane są duże przedsiębiorstwa i dostawcy internetu (ISP), zależy od utrzymania hierarchicznego systemu adresowania, bardzo podobnego do narodowego i międzynarodowego systemu telefonicznego. Duże centrale telefoniczne wybierają wstępnie numer na podstawie 3 pierwszych cyfr (numer kraju). Z podobnego systemu korzysta także protokół IPv4.
Bez hierarchicznego systemu adresowania, routery backbon'u byłyby zmuszone do przechowywania tabel routingu w zasięgu wszystkich sieci na świecie. Przy rozwiązaniu z hierarchią, routery mogą kierować odpowiednio ruch w sieci na podstawie przedrostka numeru IP. W ostatnich latach, w obrębie protokołu IPv4 stosowano rozwiązanie nazwane Classless InterDomain Routing (CIDR), które korzysta z bitów maski do ustalenia zmiennej części 32 bitowego adresu IP sieci, podsieci albo hosta. CIDR wykonuje "agregację trasy" na różnych poziomach hierarchi sieci, dzięki czemu routery mogą przechowywać tylko pojedynczą tablicę routingu, zapewniając dostęp do wielu niższych warstw sieci.
CIDR nie gwarantuje jednak sprawnej i skalowalnej hierarchii. W celu uniknięcia osobnego wpisu dla każdej trasy, jest ważne aby routery w niższej hierarchi sieci (które naturalnie mają dłuższe przedrostki numeru) były "zbierane" razem w mniejsze i mniej specyficzne trasy, na wyższym poziomie w hierarchi routingu.
Spuścizna po adresowaniu w oparciu o IPv4, które pochodzi zanim opracowano CIDR i bieżący dostęp w oparciu o hierarchie, nie ułatwia "sumowania". Brak jednolitości w obecnym hierarchicznym systemie, połączony z reglamentacją numerów IP czynią adresowanie i routing w Internecie mocno skomplikowanym. Problemy te dotykają nie tylko dostawców internetowych, ale także użytkowników końcowych. Co więcej, zmiana numerów IPv4 w przypadku zmiany np. providera internetu pociąga za sobą niepotrzebnie skomplikowaną poprawę adresacji i routingu "zsumowanych" już adresów. IPv6 rozwiązuje ten problem - szczegóły niżej.
Eliminacja szczególnych przypadków
Obence problemy Internetu są tak samo odczuwane przez providerów internetu, jak i użytkowników końcowych. Kiedy przedsiębiorstwo nie może prawidłowo zsumować swoich tras routingu, powoduje większe obciążenie w tabelarch routingu routerów. Jeśli nie posiada ono unikalnego w skali świata numeru IP, zmuszone jest do odcięcia swojej sieci od reszty świata.
Użytkownicy sieci prywatnych, posiadający dla swoich urządzeń numery IP ustalane dowolnie, potrzebują zwykle gateway'a i tzw. Network Address Translator'a (NAT), które zapewnią połączenie do sieci globalnej. W takim przypadku nie wszystki usługi mogą byę jednak dostępne. NAT pozwala bowiem na posiadanie jednego tylko numeru IP dla całej sieci lokalnej, bez wyszczególniania numerów dla poszczególnych maszyn z jej obrębu. Praktyka taka jest obecnie szeroko stosowana w świecie pracującym na IPv4
IPv6 bezpieczeństwo
Kodowanie, autentykacja i bezpieczeństwo przenoszonych danych są istotne dla przedsiębiorstw i sieci typu VPN (Virtual Private Network). Dla tych celów IPv6 oferuje tzw Security Header Extensions.
Nagłówki Authentication Extension Header pozwalają odbiorcy na określenie z dużym stopniem prawdopodobieństwa, czy pakiet pochodzi ze źródła, na które wskazuje jego adres. Zapobiega to przed nadawaiem hostom numerów IP w ten sposób, że możliwe jest podszycie się pod inną osołę Taka manipulacja adresami IP nosi nazwę spoofing i jest najczęstszą formą np. ataków denial of service. W standardowym IPv4 serwer nie jest w stanie odróżnię czy pakiet pochodzi z właściwego źródła, czy nie. Odpowiedzią na ten problem są rozwiązania typu firewall, jednak wiążą się one z dodatkowymi problemami w adminstrowaniu siecią.
IPv6 używa standardowej metody dla sprawdzenia autentyczności pakietów otrzymywanych na poziomie warstwy sieciowej, zakładając jednocześnie, że sprzęt różnych producentów korzysta z tych samych usług. Implementacje IPv6 wymagają wsparcia dla algorytmów MD5 i SHA-1, zapewniając tym samym odpowieni poziom bezpieczeństwa dla węzłów sieci.
Obok technik typu spoofing, kolejną dziurę w bezpieczeństwie Internetu stanowi zwiększająca się ilość oprogramowania do analizy ruchu w sieci, które wykorzystywane potajemnie pozwalają na podsłuchawanie przesyłanych informacji (tzw. sniffing). Narzędzia diagnostyczne tego typu mogą być stosowane do zdobywania np. numerów kart kredytowych czy haseł. IPv6 zapewnia ochronę poufnych danych przez stosowanie standardowo rozszerzenia nagłówka dla końcowego kodowania, na poziomie warstwy sieciowej (network layer). Nagłówki Encryption Headers, wskazują który klucz kodowania został wybrany i przenoszą inne potrzebne informacje. Istnieje rozszerzenie podobnego typu dla warstwy sieciowej protokołu IPv4 (kompatybilne z IPv6), ale nie jest jeszcze w powszechnym użyciu.
Obydwa rodzaje nagłówków IPv6 mogą być stosowane bezpośrednio między hostami albo w powiązaniu z dodatkowymi urządzeniami zabezpieczającymi, dodającymi kolejny poziom bezpieczeństwa ze swoimi własnymi oznaczeniami pakietów i własnymi metodami kodowania.
IPv6 mobilność
IPv4 jest uciążliwe dla posiadaczy komputerów przenośnych z kilku powodów:
komputer przenośny potrzebuje nowego adresu IP, za każdym razem gdy przyłączany jest do sieci Internet w nowym miejscu, informowanie każdego urządzenia związanego z routingiem, o zmianie położenia węzła w sieci wymaga dobrej obsługi związanej z identyfikacją, co nie jest powszechnie stosowane w sieciach IPv4, węzeł mobilny może mieę problemy z określeniem, czy znajduję się w tej samej sieci, jest nieprowdopodobne, aby węzeł mobilny był w stnie przekazać informację o zmianie lokacji do swoich partnerów w komunikacji.
Każdy z tych problemow jest rozwiązywany w sposób naturalny przez protoków IPv6. Pomoc wychodzi znacznie bardziej poza oferowanie wsparcia dla dial-up i obejmuje mi.in. autokonfigurację, nagłówki routujące (routing headers), enkapsulację, bezpieczeństwo i adresowanie typu anycast. W rzeczywistości niektóre satelity europejskie działają w oparciu o IPv6. Wymienione cechy IPv6 mogą być w przyszłości podkreślone przez połączenie z Flow Label Management, w celu zapewnienia lepszej jakości usług (Quality Of Service - QoS) dla węzłów przenośnych.
IPv6 - rozwiązania
IPv6 ze swoją nieporównywalnie większą przestrzenią adresową, definiuje także wielopoziomową, globalną, hierarchiczną architekturę routingu. Korzystając z przedrostków znanych z rozwiązania dynamicznego routingu - CIDR, przestrzeń adresowa IPv6 może być rozmieszczana w ten sposób, aby ułatwiać sumowanie (summarization) i kontrolować rozszerzanie tablic routingu w routerach backbone'u. Jednocześnie zwiększona pula numerów IP pozwoli na przypisywanie numeru dla każdego urządzenia w sieci. Używając porówniania do "wewnętrznych" numerów telfonicznych, można powiedzieę, że nie ł.dzie potrzeby ich stosowania. Każdy ł.dzie miał numer telefoniczny bezpośrednio do siebie.
IPv6 autokonfiguracja
Każdy węzeł sieci tworzy dla siebie początkowo lokalny adres IPv6, używając "bezstanowej" (stateless) autokonfiguracji adresu - nie wymagającego ręcznie skonfigurowanego serwera. Taka bezstanowa konfiguracja pozwala następnie węzłom sieci na utworzenie ich własnych, routowalnych globalnie adresów, we współpracy z routerm IPv6. Zwykle węzeł łączy swój 48 lub 64 bitowy adres MAC, przypisany przez producenta sprzętu, z przedrostkiem sieci pozyskanym od routera.
W sieciach IPv4 często stosowany jest protokół DHCP (Dynamic Host Configuration Protocol) w celu wyeliminowania ręcznej konfiguracji węzła sieci. DHCP określane jest terminem "stanowego" (stateful) narzędzia do konfiguracji adresu, bo wymaga utrzymania statycznych tablic, na podstawie których przydziela się kolejne numery. Nowa wersja DHCP została dopasowana do IPv6, w ten sposób, aby zapewnię podobne - stanowe, przydzielanie numerów IP, które może być pożądane przez wielu administratorów. DHCPv6 pomaga także przy sprawnej rekonfiguracji (zmiana adresów początkowych), przez korzystanie z tzw multitask z serwera DHCP do dowolnej grupy klientów.
Zdolność do autokonfiguracji protokołu IPv6 okaże się przydatna na wielu różnych poziomach sieci. Kiedy przedsiębiorstwo ł.dzie zmuszone do zmiany numeru IP, ze względu np. na zmianę dostawcy internetu, autokonfiguracja IPv6 pozwoli hostom na dobranie nowych numerów IP, bez potrzeby ręcznej konfiguracji stanowisk klienckich. Funkcja ta okaże sie ponadto przydatna dla przenośnych użytkownków końcowych - ł.dą im przydzielane właściwe numery bez względu na to, w którym miejscu przyłączyli się do sieci.
IPv6 Multicast
We współczesnych sieciach pojawiła się potrzeba transmisji dużej ilości danych, takich jak video, audio, animowana grafika, wiadomości, dane finansowe i inne związane z różnymi grupami ludzi i różnymi użytkownikami końcowymi. Najłatwiej jest to osiągnąę przez tzw. multicast w warstwie sieci (network layer). Zwykle serwer przesyła pojedynczy strumień danych multimedialnych albo danych istotnych ze względu na ich aktualność do poszczególnych odbiorców. Sieę posiadająca ceche multicast rozsyła pakiety właśnie tylko do wybranych adresatów w grupie multicast po określonych ścieżkach, powielając strumień tylko wtedy, gdy zajdzie taka potrzeba (Rysunek 1). Z rysunku wynika, że pakiet ze = .ródła ł.dzie rozesłany do wszystkich członków grupy multicast. W przypadku, gdy w grupie znajdują sie hosty z wielu sieci, tworzone jest specjalne "drzewo" dla grupy multicast.
Protokoły multicast używane przez routery to np. DVMRP (Distance Vector Multicast Routing Protocol), PIM (Protocol Independent Multicast), MOSPF (Multicast Open Shortest Path First). Wykorzystują one dynamiczny sposób tworzenia drzewa dystrybucji, aby dotrzeę do wszystkich członków danej grupy. Tylko te hosty, które są w danej grupie otrzymują rozsyłane dane. Aby stać się członkiem danej grupy host musi wysłać komunikat join do najbliższego routera. W takim przypadku korygowane jest odpowiednie drzewo dystrybucji. Serwer wysyła pojedynczy pakiet danych, który w razie potrzeby jest replikowany i przesyłany do członków grupy. Zapobiega to niepotrzebnemu obciążaniu zasobów serwera i sieci, ma także przewagę nad rozwiązaniami typu unicast i broadcast. Rozwiązania oparte na multicast były już rozwijane dla IPv4, jednak IPv6 rozszerza je przez określenie znacznie większej przestrzeni adresowej. Wymaga się aby wszystkie hosty i routery IPv6 wspierały mulitcast. W rzeczywistości IPv6 nie ma adresów typu broadcast jako takich - ma adresy multicast o różnym zasięgu (scope).
IPv6 Quality of Service
IPv4 posiada bajt differentiated services - w IPv6 jego odpowiednikiem jest bajt traffic class, którego zadaniem jest różnicowanie prostych usług. Zarówno IPv4, jak i IPv6 wspierają protokół RSVP w celu zapewnienia bardziej kompleksowej obsługi Quality of Service (QoS). Dodatkowo pakiety IPv6 zawierają nowe, 20 bitowe pole traffic flow identification, które ma duże znaczenie dla dostawców zamierzających imlementować w swoich produktach QoS. Takie produkty są ciągle w stadium planowania, jednak IPv6 daje solidne podstawy do implementacji funkcji QoS (np. rezerwacja pasma albo opóźnienia w przekazie).
IPv6 - szczegóły techniczne
Nagłówki IPv6 a nagłowki IPv4
W paragrafie tym porównane zostaną nagłówki IPv6 i IPv4. Obydwa przenoszą numer wersji protokołu i adres =
.ródła/przeznaczenia, ale jak pokazuje to Rysunek 2, nagłówek IPv6 jest znacznie bardziej uproszczony, co usprawnia jego przetwarzanie przez routery. Podczas gdy nagłówki IPv4 potencjalnie mają różną długość, nagłówki IPv6 mają stałą długość 40 bajtów. Sprawność przetwarzania została także podniesiona poprzez zmniejszenie ilości pozostałych, wymaganych pól w nagłówku IPv6. Nagłówek IPv4 pokazany na Rysunku 3 zawiera przynajmniej 12 pól, (w zależności od tego jak są liczone) i może zawierać także dodatkowe, trudne do przetworzenia pola (nie pokazane na rysunku). IPv6 używa stałej liczny pól - wynoszącej 8.
+-------+-------+---------------+-------------------------------+ |Version| 4 bits| 8 bits | 16 bits | | == 4 | IHL |Type of Service| Total Length | +-------+-------+---------------+-------------------------------+ | 16 bits | 4 bits| 12 bits | | Identification | Flags | Fragment Offset | +-------------------------------+-------------------------------+ | 8 bits | 8 bits | 16 bits | | Time to Live | Protocol | Header Checksum | +-------------------------------+-------------------------------+ | 32 bits | | Source Address | +---------------------------------------------------------------+ | 32 bits | | Destination Address | +---------------------------------------------------------------+ : 0 or more bits : : IP options : +---------------------------------------------------------------+
Rysunek 3: Format nagłówka IPv4
Jednym z pierwszych składników, które zostały wyrzucone z nowej wersji protokołu było pole określające długość nagłówka (Identification). Przestało ono być potrzebne ze względu na fakt, że w IPv6 nagłówki we wszystkich pakietach mają jednakową długość. Całkowita długość tego pola (16 bitów) została jednak zachowana - w IPv6 odpowiada mu pole Payload Length, o takiej samej długści. Pole to nie zawiera jednak długości nagłówka IPv6, które jest stałe i wynosi 40 bajtów. Nowe pole Payload Length może pomieścię pakiety o długości aż do 64 Kł Także dłuższe pakiety (nazywane jumbograms) mogą być przenoszone między węzłami sieci IPv6, jeśli długość pola Payload Length zostanie ustawiona na zero i dodany zostanie specjalny nagłówek, jak jest to opisane poniżej.
Pole Time-to-live (TTL) zostało w IPv6 nazwane hop limit, co bardziej oddaje pełnioną przez nie funkcję. Jest ono używane do przerwania pętli (loop) przez zmniejszenie maksymalnej wartości przeskoku (hop value) o 1 dla każdego przeskoku na trasie pakietu. Wartość tego pola ustawiana jest na początku przez węzeł źródłowy. Z chwilą kiedy na skutek ciągłego zmniejszania, zostanie ona ustalona na zero pakiet jest odrzucany. IPv6 pozwala na ustawienie maksymalnej wartości pola na 255 przeskoków, co przekracza potrzeby nawet dla największej sieci, jaką jesteśmy obecnie w stani oszacować.
W nawiązaniu do pola header length, także inne pola zostały wyeliminowane z nagłówka IPv4: fragment offset, identification, flags, checksum. Pole IPv4 type-of-service zostało zastąpione przez pole IPv4 traffic class plus całkiem nowe pole flow label. Pola Ipv4 dotyczące fragmentacji (offset, identification, flags) zostały przeniesione do opcjonalnego nagłówka IPv6 (patrz "Rozszerzenia nagłówka IPv6). W IPv6 wyrzucono pole checksum, ponieważ kontrola błędów zwykle powielana jest w innych wartstwach stosu protokołów. Złe pakiety ł.dą wykrywane poniżej, w warstwie łącza danych (Link Layer), albo ponad, w warstwie transportowej (Transport Layer). Wymuszanie na routerach kontroli błędów spowodowało obniżenie wydajności dzisiejszego Internetu.
Rozszerzone nagłówki IPv6
Nagłówek IPv4 zawiera dodatkowe pola, które przenoszą informacje o bezpieczeństwie, routingu i inne. Niestety pola te są słabo wykorzystywane, ze względu na fakt, że routery zwykle obniżają wydajność przy przetwarzaniu pakietów i polami opcjonalnymi.
Opcjonalne pola IPv4 zostały zastąpione w IPv6 przez rozszerzene nagłówki (extension headers), umieszczane zaraz za głównym nagłówkiem IPv6 i przed nagłówkiem transportowym (transport header) i danymi aplikacji (application payload). Nagłówki takie zapewniają bezpieczeństwo, fragmentację i inne funkcje. Nie ma ograniczenia co do ich liczby. Ponieważ w IPv6 nagłówki tworzą ściśle określone moduły, przetwarzanie powinno być prostsze i szybsze. Rysunek 4 przedstawia rozmieszczenie nagłówków rozszerzonych, występujących zaraz po głównym nagłówku IPv6 i nagłówkiem TCP (Transmission Control Protocol).
Pole protocol type (np. TCP albo User Datagram Protocol (UDP)) zostało zastąpione przez pole Next Header. Każdy nagłówek kolejnego pola wskazuje na rodzaj pola, jakie po nim wystąpi - może to być nagłówek TCP/UDP albo kolejny rozszerzony nagłówek. Grupy robocze IETF opracowały rodzaje nagłówków, jakie mogą występować oraz kolejność ich występowania. Dla nagłówków rozszerzonych jest ona następująca:
Powinny być one poprzedzone nagłówkiem warstwy wyższej i aplikacji (payload). Każdy z nagłówków rozszerzonych pojawia się zwykle raz w obrębie jednego pakietu, za wyjątkiem nagłówka destination options (patrz niżej).
Hip-by-Hop Options Header
Jeśli nagłówek ten występuje, zawiera inforamcje, które są sprawdzane przez węzły na drodze pakietu. Musi on występować jako pierwszy nagłówek rozszerzony po nagłówku IPv6. Ponieważ jest on czytany przez wszystkie routery na trasie, jest użyteczny przy przenoszeniu inforamcji do zarządzania albo poleceń do debuggingu dla routerów. Zdefinowanym obecnie poleceniem tego typu jest np. Router Alert, który informuje router, że pakiet powinien być w całości przetworzony zanim zostanie przesłany dalej. Przykładem takiego pakietu jest RSVP resource reservation message dla QoS.
Destination Options Header
Są dwie odmiany tego nagłówka, każda zajmuje inną pozycję w pakiecie. Pojawienie się nagłówka Destinatin Header przed nagłówkiem Routing Header wymusza jego przetwarzanie przez każdy węzeł wymieniony później. Pojawienie sie nagłówka Destination Header po Routing Header, albo bez niego, powoduje jego przetworzenie tylko w miejscu przeznaczenia.
Przejście z IPv4 na IPv6
Metoda przejścia Dual-Stack
Początkowi użytkownicy IPv6, którzy ł.dą chieli korzystać równolegle z IPv4 mają taką możliowść. Jest to osiągane przy pomocy metody Dual-Stack IPv4/IPv6 (podwójny stos). Wiele hostów i routerów w dzisiejszej sieci ma już zaimplementowane mechanizmy tego typu. Wiele stacji roboczych korzysta jednocześnie z protokołów IPv4, IPX, AppleTalk, NetBIOS, SNA, DECnet i innych. Dołączenie kolejnego protokołu (IPv6) nie jest problemem z technicznego punktu widzenia. Korzystając ze stosu IPv4/IPv6 host miałby jednoczesny dostęp do zasobów sieciowych zarówno IPv4, jak i IPv6. Routery wykorzystujące obydwa protokoły mogłyby bez problemów kierować ruch do węzłów każdej z sieci.
Maszyny działające w oparciu o mechanizm dual-stack mogą używać zupełnie niezależnych adresów IPv4 i IPv6, albo mogą być skonfigurowane tylko z adresem IPv6, który byłby jednak kompatybilny z adresem IPv4. Adres IPv4 może być nadany tak jak dotychczas np. przez serwer DHCP. Adresy IPv6 mogą być skonfigurowane ręcznie, zgodnie ze 128 bitową specyfikacją, albo automatycznie określone zgodnie z mechanizmami automatycznej konfiguracji IPv6. Większość serwerów ł.dzie pracowała w trybie dual-mode, dopóki wszystkie hosty w sieci nie zaczną korzystać z protokołu IPv6.
Automatic Tunneling
Automatyczne tunele (automatic tunnels) używają adresów kompatybilnych z IPv4, które są hybrydą adrsów IPv4 i IPv6. Adres taki uzyskiwany jest przez dodanie przewodzących zer do 32 bitowego adresu IPv4, tak aby powstał adres 128 bitowy. Tunele stosowane są dla potrzeb przesyłania pakietów IPv6 w sieciach IPv4. Przy wejściu do tunelu urządzenie potrafi automatycznie przekształcić 128 bitowy adres IPv6 (kompatybilny z IPv4, czyli uzupełniony zerami z przodu) na odpowiedni adres IPv4. Przy wyjściu z tunelu następuje proces odwrotny, możliwe jest zatem ustalenie adresu IPv6 pakietu. Należy pamiętać, że automatyczny tunelling możliwy jest tylko w przypadku adresów IPv6 kompatybilnych z IPv4, co oznacza że tracimy korzyści wynikające ze 128 bitowej przestrzeni adresowej.
Brak możliwości korzystania z pełnej przestrzeni adresowej nie oznacza jednak utraty pozostałych udogodnień IPv6, takich jak autentykacja, enkrypcja, flow label, multicast.