IPv6/IPNG (
ang.
Internet Protocol version 6 / Internet Protocol Next Generation) – wersja
protokołu
IP
, będąca następcą
IPv4
, do którego stworzenia przyczynił się w głównej mierze problem małej, kończącej się ilości adresów IPv4. Dodatkowymi zamierzeniami było udoskonalenie protokołu IP: eliminacja wad starszej wersji, wprowadzenie nowych rozszerzeń (
uwierzytelnienie
, zlikwidowanie konieczności stosowania translacji adresów i adresów prywatnych w wielu sieciach,
kompresja
i inne), zminimalizowanie czynności wymaganych do podłączenia nowego węzła do
Internetu
(autokonfiguracja).
IPv6 stanowi tylko jedną warstwę w
modelu OSI
– nie ingeruje on w inne warstwy, np. aplikacyjną, co pozwala działać istniejącym już protokołom zasadniczo bez problemów.
IPv6 opisują dokumenty
RFC 1883
i
RFC 1884
.
Wdrażanie IPv6
Pierwsze
dokumenty RFC
opisujące protokół IPv6 powstały w
1995
roku. W latach
1996
-
2006
w infrastrukturę
Internetu
wdrażany był projekt
6BONE
w formie eksperymentalnej sieci działającej w oparciu o IPv6. Po zamknięciu tego projektu niektórzy dostawcy usług internetowych (
ISP
) rozpoczęli produkcyjne dostarczanie IPv6 tak samo jak obecnie
IPv4
; spora część użytkowników IPv6 korzysta jednak z tego protokołu za pomocą tuneli wykorzystujących poprzednią wersję protokołu (tzw. tunelowanie IPv6-in-IPv4). Najprostszą metodą zestawienia takiego tunelu jest obecnie mechanizm
6to4
.
Powody powstania IPv6 i brak kompatybilności z IPv4
Powszechnie stosowany obecnie protokół IPv4 ma pojemność około 4 miliardów adresów (232). W czasach gdy powstawał protokół IP (lata siedemdziesiąte), wydawało się to wystarczające - wtedy nikt nie przewidywał takiej popularności komputerów i Internetu. Jednakże już w pierwszych latach użytkowania IP podjęto prace mające na celu zaoszczędzenie adresów - wprowadzono wtedy
adresowanie bezklasowe
. Na początku lat dziewięćdziesiątych było jednak już jasne, że adresy IP wkrótce ulegną wyczerpaniu, więc w 1992 rozpoczęto prace nad stworzeniem IPNG - protokołu internetowego nowej generacji, co doprowadziło do pełnej definicji nowego protokołu w roku 1996. Nowy protokół nie mógł nosić numeru wersji 5, ponieważ numer ten został już wcześniej użyty dla eksperymentalnego protokołu Internet Streaming Protocol (w zamierzeniu mającego przenosić treści audio i video), dlatego też użyto kolejnego numeru - 6.
Przy tworzeniu nowych technologii i protokołów projektanci często stają przed dylematem stworzenia całkiem nowej jakości, czy też utrzymywania zgodności wstecz, często kosztem pewnych ograniczeń lub wprowadzenia znacznej komplikacji. W czasach tworzenia IPv6 Internet nie był tak popularny jak teraz i szacowano[], że zamiana protokołu na IPv6 będzie możliwa bez utrzymania zgodności między nowszą i starszą wersją protokołu IP, dlatego też zaprojektowano całkowicie nowy protokół, bez obciążenia balastem koniecznej zgodności z IPv4. Prace nad projektowaniem IPv6 trwały dość długo, a po ich zakończeniu wizja końca adresacji IPv4 była wciąż dość odległa w czasie, dlatego też nowy protokół nie został wdrożony produkcyjnie. W tej chwili jednak ilość komputerów w Internecie i jego zastosowania uniemożliwiają zamianę protokołu IPv4 na IPv6 i jednocześnie oba protokoły muszą być używane przez urządzenia sieciowe, które przez to będą mieć faktycznie połączenie do dwóch rozłącznych sieci.
Różnice między protokołem IPv6 a IPv4
| IPv4 | IPv6 |
---|
adresy | 32 bity | 128 bitów |
---|
wsparcie dla
IPsec
| opcjonalne | wymagane |
---|
identyfikacja ruchu dla
QoS
| brak | przy użyciu pola Flow Label |
---|
fragmentacja
| przez nadającego hosta i routery | jedynie przez nadającego hosta |
---|
suma kontrolna
w nagłówku | obecna | brak |
---|
opcje | w nagłówku | przeniesione do nagłówków dodatkowych |
---|
ramki zgłoszeń |
ARP
| wielopoziomowe wiadomości typu Neighbor Solicitation |
---|
zarządzania grupami
multicastowymi
|
IGMP
| MLD (
ang.
Multicast Listener Discovery Protocol) |
---|
protokół komunikatów kontrolnych |
ICMP
|
ICMPv6
, wymagany |
---|
adresy transmisji | do wysyłania danych do wszystkich węzłów w podsieci | zastąpione przez grupowy adres typu link-local |
---|
przydzielanie adresu | wymagana konfiguracja ręczna, przez DHCP lub APIPA | nie wymaga konfiguracji ręcznej ani
DHCP
|
---|
mapowanie nazw hostów w
DNS
| używa rekordów A oraz PTR w domenie IN-ADDR.ARPA | używa rekordów AAAA oraz PTR w domenie IP6.ARPA |
---|
Typy adresów IPv6
Adresy Globalne (Global Address) - są odpowiednikami adresów publicznych w IPv4. Charakteryzuje je pierwszy blok o wartości od 2000 do 3FFF.
Adres tego typu składa się z pierwszych 48 bitów routingu globalnego określającego lokację organizacji w tym pierwsze 3 bity o wartości 001. Jest to część kontrolowana przez ISP następnie z 16 bitów routingu prywatnego, które są identyfikatorem podsieci kontrolowanym przez organizację i umożliwia zaadresowanie 65536 podsieci. Ostatnie 64 bity to identyfikator hosta.
Przykład: 2001:0fa2:2210:0001:3234:90ff:a2fc:1bcd
Adresy lokalne dla łącza (Link-Local Address) - tego rodzaju adresy są odpowiednikami adresów APIPA w IPv4. Są to adresy które nie podlegają routingowi, konfigurowane są automatycznie i używane są tylko do komunikacji w sieci lokalnej. Różnicą pomiędzy adresami LLA a APIPA jest to, że LLA jest przypisany na stałe nawet po uzyskaniu przez hosta adresu GA lub ULA. Istotną informacją jest to, że adres LLA zawsze zaczyna się od FE80.
Ades LLA składa się z pierwszych 10 bitów o wartości 1111 1110 10 czyli FE80 następnie 54 bitów wypełnionych samymi zerami, 64 bitami identyfikatora hosta oraz ID strefy w postaci %ID. ID strefy jest to kluczowa informacja mówiąca o tym do którego interfejsu sieciowego podłączony jest dany adres LLA. Wynika to z tego, że w przypadku posiadania kilku interfejsów sieciowych musi być możliwość identyfikacji lokacji do której jest przypisany dany adres.
Przykład: fe80::453a:0adb:2011:ff23
Unikalne adresy lokalne (Unique Local Address) - te adresy można porównać do prywatnych adresów IPv4 są routowalne pomiędzy sieciami prywatnymi lecz nie wychodzą do sieci globalnej. Adresy te zaczynają się od FD.
Adres ULA składa się z pierwszych 8 bitów o wartości 1111 1101 czyli FD, następnie 40 bitów reprezentujących routing prywatny pomiędzy lokacjami, 16 bitów dla routingu pomiedzy sieciami w LAN w danej lokacji oraz 64 bitów ID hosta.
Przykład: fd32:2341:ad23:0032::0004
Adresowanie hostów
W protokole IPv4, przestrzeń adresowa opisywana była za pomocą 32
bitów
, pozwalając zaadresować 232 ≈ 4,3×109 węzłów, co odpowiada liczbie 8,42 adresów/km² powierzchni
Ziemi
. W protokole IPv6 rozmiar tej przestrzeni został zwiększony do 128
bitów
co daje 2128 ≈ 3,4×1038 kombinacji. Odpowiada to liczbie 6,7×1017 adresów/mm² powierzchni Ziemi.
Adres reprezentowany jest w postaci
heksadecymalnej
, z dwukropkiem co 16 bitów, np. 2001:0db8:0000:0000:0000:0000:1428:57ab.
Dozwolone jest skrócenie jednego bloku zer (nie dotyczy zer na końcach sekcji) na podwójny dwukropek, początkowe zera w grupach również mogą być opuszczane, w związku z czym poniższe sposoby zapisu są prawidłowe i równoznaczne sobie:
2001:0db8:0000:0000:0000:0000:1428:57ab2001:0db8:0:0:0:0:1428:57ab2001:0db8:0:0::1428:57ab2001:0db8::1428:57ab2001:db8::1428:57ab
Sekwencja ostatnich 4 bajtów adresu może być również zapisana w postaci adresu IPv4, z wykorzystaniem kropek jako separatorów: adres ::ffff:1.2.3.4 jest równoznaczny adresowi ::ffff:102:304, jednak niewiele systemów pozwala na wprowadzanie tak podanych adresów.
Gdy jest to wymagane, do adresu może być dołączona maska sieci w notacji
CIDR
, np. 2002:0db8:1234::/48. Jeżeli natomiast zachodzi potrzeba podania portu docelowego (np. w adresie URL), adres IPv6 otaczany jest nawiasami kwadratowymi, np.:
http://[2001:0db8:85a3:08d3:1319:8a2e:0370:7344]:443/
Adresy specjalne
Następujące adresy i grupy adresów posiadają specjalne, zarezerwowane znaczenie:
- ::/128 - adres nieokreślony (zawierający same zera).
- ::1/128 - loopback, adres wskazujący na host lokalny.
- ::/96 - pula zarezerwowana dla zachowania kompatybilności z protokołem IPv4 (pierwsze 96 bitów stanowią 0, pozostają 32 bity na adresy w formacie IPv4).
- ::ffff:0:0/64 - jw., ale pozwala wykorzystywać komunikację według protokołu IPv6 w sieci IPv4.
- 2001:7f8::/32 - pula zarezerwowana dla
punktów wymiany ruchu
, każdy z nich dostaje jedną podsieć /48.
- 2001:db8::/32 - pula wykorzystywana w przykładach i dokumentacji - nigdy nie będzie wykorzystywana produkcyjnie.
- 2002::/24 – adresy typu 6to4. Są to adresy wygenerowane na podstawie istniejących, publicznych adresów IPv4, dostępne dla każdego użytkownika.
- 3ffe::/16 – adresy testowej sieci 6BONE (adresy zostały wycofane
6 czerwca 2006
w związku z zakończeniem działania 6BONE).
- fc00::/7 — pula lokalnych unikalnych adresów IPv6 typu unicast (
RFC 4193
), będąca odpowiednikiem adresów prywatnych IPv4, choć, zgodnie z nazwą, powinny być unikalne na świecie.
- fe80::/10 - pula link-local określa adresy w obrębie jednego łącza fizycznego (np. segmentu sieci Ethernet). Pakiety z tej puli nie są przekazywane poza podsieć, jej działanie jest analogiczne do automatycznie konfigurowanych adresów z puli 169.254.0.0/16 w IPv4.
- fec0::/10 - pula site-local określa adresy w obrębie jednej lokalnej organizacji. Obecnie nie zaleca się wykorzystywania tej puli; przyszłe implementacje IPv6 nie będą musiały obsługiwać tej puli.
- ff00::/8 - pula multicastowa używana do komunikacji multicast.
W protokole IPv6 nie występuje pojęcie komunikacji
broadcastowej
(dane rozsyłane do wszystkich węzłów w danej podsieci). Aby wysyłać dane do wielu odbiorców jednocześnie, należy korzystać z komunikacji
multicastowej
.
Budowa datagramu
Bity | 0-3 | 4-7 | 8-11 | 12-15 | 16-19 | 20-23 | 24-27 | 28-31 |
---|
0 | Wersja | Priorytet | Etykieta przepływu |
---|
32 | Długość danych | Następny nagłówek | Limit przeskoków |
---|
64 | Adres źródłowy (128 bitów) |
---|
96 |
---|
128 |
---|
160 |
---|
192 | Adres docelowy (128 bitów) |
---|
224 |
---|
256 |
---|
288 |
---|
Autokonfiguracja
Dla podsieci będących
LAN-em
przydzielana jest pula adresów z maską /64 co umożliwia tworzenie unikalnych numerów IP w oparciu o (niepowtarzalne) numery sprzętowe
MAC
; adres taki (dla adresu MAC 11:22:33:44:55:66
) będzie miał postać: 64bitowy_prefiks_sieci:1322:33FF:FE44:5566
(pierwszy bajt adresu MAC zwiększany jest o 2, w środku wstawiane jest FFFE). 64-bitowy prefiks sieci jest informacją rozgłaszaną przy pomocy
ICMPv6
przez routery; natomiast jeżeli host nie uzyskał wspomnianego prefiksu w jego miejsce wstawiane jest fe80::
(czyli fe80:0000:0000:0000
) - taki adres nazywa się "link-local" (nie jest on routowany do sieci zewnętrznych, jednak zawsze (także gdy prefiks został uzyskany) może być używany wewnątrz sieci lokalnej). Oczywiście nadal możemy korzystać z przydziału IP przez
DHCP
oraz ręcznych ustawień IP.
DNS
Obsługa adresacji IPv6 w systemie
DNS
została zaprojektowana jako rozszerzenie systemu DNS, które jest całkowicie zgodne wstecz z IPv4, co nie wprowadza żadnych problemów implementacyjnych w tym zakresie. Nazwy hostów w DNS zawierają adres IPv4 w rekordzie 'A', adresy IPv6 umieszcza się w rekordzie 'AAAA' - taka konstrukcja powoduje, że dany host może mieć jednocześnie adres IPv4 i IPv6 w DNS. Odwrotny DNS wprowadza kilka różnic: adres IPv4 postaci 123.45.67.89 jest mapowany na rekord 89.67.45.123.in-addr.arpa, natomiast adres IPv6 postaci 2001:db8::1428:57ab mapowany jest na rekord b.a.7.5.8.2.4.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa (kiedyś w tym celu wykorzystywano domenę ip6.int). W przypadku obu rodzajów adresacji wykorzystuje się ten sam typ rekordu - 'PTR'.
Ciekawostka
128 bitów adresu daje 296 = 79228162514264337593543950336 razy większą przestrzeń adresową niż IPv4, teoretycznie umożliwia to przydzielenie 665.570.793.348.866.943.898.599 (665,57 *1021 = 665,57 tryliardy) adresów na każdy metr kwadratowy Ziemi.
Zobacz też
Linki zewnętrzne
Tunel brokery na świecie: