IPv6: Wstęp do protokołu i jego nagłówek
 

Protokół IP w wersji 6 ma zastąpić powszechnie używaną wersję 4. Aktualnie jesteśmy w trakcie procesu migracji do IPv6, która o ile potrwać może jeszcze kilka lat, to długo będziemy korzystać z IPv4 i IPv6 równolegle. 

Gdzie podziała się wersja 5? W międzyczasie został opracowany protokół ST2 (Internet Stream Protocol), który na poziomie warstwy dostępu do sieci jest identyfikowany przez tą samą wartość pola typu, co IPv4. Jest to wartość 0x0800. Rozróżnienie pomiędzy IPv4 i ST2 następuje dopiero po odczytaniu kolejnych 4 bitów, które tworzą pole wersji. Pakiety ST2 mają tam wartość 5, a pakiety IPv4 wartość 4. Pomimo tego, że nazwa IPv5 nie jest nigdzie powszechnie używana, a protokół ST2 nie jest publicznie wykorzystywany, zdecydowano się wykorzystać kolejną wolną wartość, którą jest 6. I tak mamy IPv6. 

Protokół ST2 miał zapewnić inny rodzaj transmisji, niż typowe dla IP “best effort”. Było to związane z potrzebą odpowiedniej obsługi ruchu czasu rzeczywistego (głos, wideo, rozproszone symulacje oraz gry). Stąd miał on wbudowane mechanizmy gwarantujące odpowiednią jakość usługi i realizował transmisje w sposób połączeniowy.

Po co tak w ogóle wprowadzamy nową wersję? Projektujący protokół IP, nie zakładali obsługi tak dużej ilości użytkowników i urządzeń końcowych. Co prawda, by zmniejszyć zużycie adresów IP, obsługa i sposób adresowania w IPv4 sporo się zmieniła. Od obsługi klasowej przeszliśmy przez FLSM, VLSM i CIDR. Wprowadzono nawet usługę translacji adresów (NAT/PAT - Network Address Translation/Port Address Translation). Niemniej, doszliśmy już do granicy. Adresów IPv4 po prostu brakuje. I to jest głównym motorem tego całego zamieszania. Adres IPv4 ma tylko 32 bity. Adres IPv6 ma ich aż 128. Poniżej małe przybliżenie tych wielkości.

Ilość adresów IPv4: 232 = 4,294,967,296

Ilość adresów IPv6: 2128 = 340,282,366,920,938,463,463,374,607,431,768,211,456

Dla tych, którym same liczby nic nie mówią, poniżej postarałem się bardziej zobrazować tą ilość.

Przyjmuje się, że powierzchnia ziemi wynosi około 510,000,000 km2. Liczba ta nie jest zbyt dobrym dzielnikiem dla 2128. Stąd dla uproszczenia załóżmy troszkę większą powierzchnię ziemi. Niech będzie to 549,755,813,888 m2. Da to 618,970,019,642,690,137,449,562,112 adresów IP na 1 m2 powierzchni ziemi (dla uproszczenia bierzemy pod uwagę całą dostępną przestrzeń adresów IPv6)

Na chwilę obecną, organizacja IANA oddała do użytku globalnego prefiks 2000::/3. Jest to tylko 12.50% całkowitej przestrzeni adresowej IPv6. Załóżmy, że dla instytucji i użytkowników końcowych alokujemy prefiksy /48. W ramach takiej alokacji, każdy z nich ma możliwość utworzenia 65,536 podsieci, gdzie w każdej z nich dostępne będzie 18,446,744,073,709,551,616 adresów IP (jest to minimalna przestrzeń adresowa dostępna praktycznie dla każdego domostwa). Dla porównania, proszę jeszcze raz zwrócić uwagę na całkowitą dostępną ilość adresów w ramach przestrzeni IPv4. Przyjmijmy teraz, że mamy populację 10 miliona ludzi, chciaż mamy rok 2015 i jest nas sporo mniej. Przy takiej populacji, na każdą osobę przypada 4,253,001,033,404,265,436,616,327,168 adresów IPv6 lub 3,518 prefiksów /48.

Jak widać, ilość adresów IPv6 jest naprawdę spora. W niedalekiej przyszłości będziemy w stanie śledzić, zlokalizować, monitorować i zarządzać zdalnie praktycznie wszystkim. Oznacza to, że nie tylko każde narzędzie domowe, jak żelazko, będzie mogło mieć adres IP. Oznacza to, że będzie mogła go mieć nawet każda jego śrubka. Otwiera to drzwi do świata IP wielu nowym usługom i urządzeniom, a to wszystko wiąże się ze sporą ilością wyzwań i zmian. Wszystko przed nami.

IPv6, to nie tylko zwiększenie ilości bitów w adresie IP. Przy okazji, zostały wprowadzone dodatkowe ulepszenia w samym protokole, jego obsłudze i w mechanizmach jakie są z nim powiązane. Jedną z ważniejszych rzeczy, jest uproszczenie budowy i obsługi nagłówka IPv6. Jak widać poniżej, ma on znacznie mniej pól.

  

 

W 4 bitowym polu Version znajduje się wartość 6. Nagłówek IPv6 ma stałą długość 40 oktetów. Nie zawiera on opcji, które to obsługiwane są przez dodatkowe nagłówki rozszerzeń. Dzięki temu, pole które określało wielkość nagłówka w protokole IPv4 stało się niepotrzebne - mowa o IHL (Internet Header Length). 

8 bitowe pole Traffic Class pełni dokładnie takie same funkcje, jak pole DSCP w nagłówku IPv4 - wykorzystywane jest przez mechanizmy QoS (Quality of Service). Zmieniła się tylko jego nazwa.

Nowością jest 20 bitowe pole Flow Label. Umożliwia ono oznaczenie pakietów składających się na jeden strumień (tzw. Flow). Dzięki temu, w łatwy sposób możemy wskazać strumień dla którego potrzebujemy jakiejś specjalnej obsługi i ją zagwarantować.

Wielkość pakietu IP zawarta jest w 16 bitowym polu Payload Length. Wskazuje ona ilość oktetów reszty pakietu IP, jaka znajduje się zaraz za bieżącym nagłówkiem.

Next Header - 8 bitowe pole identyfikujące kolejny nagłówek. Podobnie, jak w polu Protocol nagłówka protokołu IPv4, znajdują się w nim wartości zdefiniowane w RFC1700 (np. 1 to ICMP, 6 to TCP, 17 to UDP).

8 bitowe pole Hop Limit realizuje tę samą funkcję, co pole TTL w nagłówku protokołu IPv4. Zapobiega krążeniu pakietów IP w pętli. Określa ono maksymalną liczbę routerów, przez które może przejść pakiet. Początkową wartość temu polu nadaje nadawca, a następnie jest ona zmniejszana o 1 przez każdy router na drodze pakietu. Kiedy pole to osiągnie wartość 0, pakiet IP jest usuwany z sieci, a nadawca informowany o tym fakcie przez protokół ICMP.

Pole Source Address to 128 bitowe pole w którym znajduje się adres IP nadawcy pakietu.

Pole Destination Address to 128 bitowe pole w którym znajduje się adres IP odbiorcy pakietu. Może nie być to końcowy odbiorca, jeśli jednym z nagłówków rozszerzeń jest Routing Header. 

Oprócz tego standardowego nagłówka, pakiet IPv6 może przenosić zero lub więcej nagłówków rozszerzeń. Nagłówki rozszerzeń przenoszą dodatkowe opcje protokołu IPv6. Znajdują się one pomiędzy głównym nagłówkiem IPv6, a nagłówkiem protokołu warstwy transportowej. Ich obecność wskazywana jest za pomocą pola Next Header. Poniższy przykład ilustruje ułożenie podstawowego nagłówka wraz z nagłówkami rozszerzeń i protokołu warstwy transportowej. 

  

Więcej o nagłówkach rozszerzeń będzie w oddzielnym artykule. Warto jednak zaznaczyć, że w podstawowym nagłówku IPv6 nie zostały zawarte pola związane z fragmentacją pakietu IP. Obsługa fragmentacji także realizowana jest poprzez dodatkowe nagłówki rozszerzeń. Została ona opisana w oddzielny artykule.

W nagłówku IPv6 nie ma sumy kontrolnej. W IPv4 wyliczana ona była tylko dla samego nagłówka IP. Ze względu na zmianę wartości pola TTL podczas przekazywania pakietów, wymagana była każdorazowo jej rekalkulacji. Za to, obowiązkiem jest teraz wyliczanie sumy kontrolnej przez protokoły warstwy transportowej TCP i UDP. Wcześniej obowiązek ten dotyczył tylko TCP, a dla UDP była ona opcjonalna. Do sumy kontrolnej tych protokołów wliczany jest pseudo-nagłówek, w którego skład wchodzą niektóre pola z nagłówka IPv6. Jest tam między innymi pole adresu źródłowego i docelowego, stąd ich implementacja musi uwzględniać zmianę wielkości adresów IP. W związku z brakiem sumy kontrolnej w IPv6 i chęcią zabezpieczenia dodatkowych pól nagłówka IP przed uszkodzeniem, do sumy kontrolnej ICMPv6 także doliczany jest pseudo-nagłówek. Tak samo, jak jest to realizowane w TCP i UDP. W ICMP dla IPv4 nie był on doliczany.

To tylko ogólne i bardzo podstawowe informacje o protokole IPv6 i zmianach jakie on za sobą wnosi do dzisiejszych sieci. Zapraszam do kolejnych artykułów, gdzie poruszone zostaną tematy adresacji, ulepszeń w samym protokole, jego obsłudze i w mechanizmach jakie są z nim powiązane.


Zapraszamy do kontaktu drogą mailową This email address is being protected from spambots. You need JavaScript enabled to view it. lub telefonicznie +48 797 004 932.