Sposób enkapsulacji datagramu IPv6 w warstwie II modelu ISO/OSI przedstawiono na rysunku 3 poniżej.
Przykład tunelowania protokołu IPv6 wewnątrz IPv4, przesyłanego po łączu typu Ethernet przedstawia rysunek 4.
Zagadnienia adresacji
Długość adresu IPv6 została w stosunku do IPv4 zwiększona z 32 bitów do 128 bitów. Można tu postawić pytanie, dlaczego zwiększono, aż 4 razy długość adresu. Na rys. 6 przedstawiono wykres zależności wielkości przestrzeni adresowej od długości adresu w bitach. Adres o długości 48 bitów (6 bajtów) (10 do potęgi 15) odpowiadałby dokładnie adresowi sprzętowemu urządzeń sieciowych. Implementacja oparta o adresy 48 bitowe, mogłaby w prosty sposób konwertować adresy MAC na adresy IP. Naturalne grupowanie się komputerów w sieci o różnych wielkościach powoduje, iż musi istnieć sposób identyfikacji podsieci i węzłów w każdej podsieci. Zatem przy takiej implementacji opartej o 48 bitów nie można identyfikować w prosty sposób podsieci. Dodatkowo większość współczesnych mikroprocesorów pracuje w oparciu o słowa będące wielokrotnościami 32 bitów i znacznie efektywniejsze byłoby zwiększenie długości adresu do 64 bitów. 64 bity (odpowiadające liczbie 10 do potęgi 19) już w zupełności wystarczą do zaadresowania wszystkich dostępnych na świecie urządzeń sieciowych. Dlaczego jednak długość adresu zwiększono jeszcze dwukrotnie z 64 do 128 bitów?
W związku z zaleceniami drugiego komitetu standaryzacyjnego, organizacji IEEE wprowadzono modyfikację 48-bitowych adresów MAC urządzeń sieciowych i ich stopniową migrację do formatu EUI-64. Identyfikator EUI-64 ma jednoznacznie identyfikować urządzenie sieciowe. IEFT zaleciło, aby wszystkie implementacje IPv6 były zgodne normą EUI-64. Zatem adres IPv6 nie mógłby być ograniczony do 64-bitów, gdyż taki adres uniemożliwiałby identyfikację podsieci i adresu węzła w danej podsieci. Zwiększenie długości adresu np. do 96 bitów jest mało efektywne z punktu widzenia obróbki adresu przez urządzenia sieciowe. Najrozsądniejsze wydawało się, zatem jeszcze większe wydłużenie adresu, do 128 bitów. Jest to tak niewyobrażalna liczba, ich chyba najbardziej pesymistyczne prognozy odnośnie zapotrzebowania na adresy IP są w stanie wykorzystać wszystkich dostępnych adresów.
Rysunek 5. Wykres dostępnej puli adresowej w zalezności od długości adresu w bitach
Pula IPv4 jest 32-bitowa. Dysponuje zatem 232 adresami lub inaczej 4 294 967 296. Pula adresów IPv6 jest 128-bitowa zatem dysponuje 2128 lub inaczej 340,282,366,920,938,463,463,374,607,431,768,211,456 lub jeszcze inaczej 3.4´1038 możliwymi adresami. Ilość adresów można inaczej podać, jako liczbę 655,570,793,348,866,943,898,599 (6.5´1023) adresów przypadających na metr kwadratowy powierzchni ziemi. Ilość ta wydaje się być wystarczająca do dowolnego ich wykorzystania we współczesnym i przyszłym Internecie.
Uwaga informacyjna
Architektura adresacji IPv6 opisana jest w dokumencie RFC 4291 oraz 4193.
|
Typy adresów
Adresy IPv6 podzielone zostały na trzy typy:
- Unicast - Identyfikują pojedynczy interfejs. Datagram wysłany na adres unicastowy zostanie dostarczony do konkretnego interfejsu sieciowego identyfikowanego przez ten adres.
- Anycast - Identyfikują grupy interfejsów (na ogół należące do różnych węzłów). Datagram wysłany na adres anycastowy zostanie dostarczony do jednego z interfejsów identyfikowanych przez ten adres („najbliższego” – w zależności od sposobu określenia przez dany protokół routingu, miary odległości).
- Multicast - Identyfikują grupy interfejsów (na ogół należące do różnych węzłów). Datagram wysłany na adres multicastowy zostanie dostarczony do wszystkich interfejsów identyfikowanych przez ten adres.
Uwaga informacyjna
W protokole IPv6 nie ma adresów rozgłoszeniowych typu broadcast. Ich role przejęły adresu multicastowe.
|
Łącza i podsieci
Podobnie jak to miało miejsce w protokole IPv4, protokół IPv6 zezwala na przydzielenie wielu prefiksów podsieci do pojedynczego łącza
Model adresowania
Adresy IPv6 są przypisane interfejsom, a nie węzłom sieci. Każdy interfejs należy do pojedynczego węzła, stąd jako identyfikator węzła może zostać użyty jakikolwiek adres unicast dowolnego z interfejsów węzła. Unicastowy adres IPv6 odnosi się do każdego interfejsu. Jednakże każdy z interfejsów może mieć przypisane wiele adresów IPv6 z każdego z typów (unicast, anycast, czy multicast).
Uwaga informacyjna
Adres unicastowy może być przypisany do wielu fizycznych interfejsów, jeżeli implementacja oprogramowania umożliwia „przedstawienie” go na warstwie sieciowej, jako jeden interfejs. Jest to przydatne podczas rozkładania obciążenia na wiele fizycznych interfejsów.
Routery mogą mieć również tzw. „nienumerowane interfejsy”, zwykle przy połączeniach punkt-punkt. Eliminuje to konieczność ręcznego konfigurowania i rozgłaszania adresów. Adresy nie są potrzebne interfejsom zapewniającym połączenie punkt-punkt, jeżeli te interfejsy nie będą używane do wysyłania lub odbierania datagramów IPv6.
Protokół IPv6 tak samo jak IPv4 zakłada, że podsieć jest podłączona do jednego łącza.
Wiele podsieci może być również podłączonych do tego samego łącza.
|
Reprezentacja adresów
Adresy IPv6 mogą być przedstawione w postaci łańcuchów znaków:
Preferowaną postacią jest forma :
x:x:x:x:x:x:x:x,
gdzie: x jest heksadecymalną wartością ośmiu 16-bitowych fragmentów adresu (patrz przykład 1 ponizej):
Przykład 1. Przykładowy adres IPv6.
FECD:BA98:7654:3210:FEDC:BA98:7634:3210
1080:0:0:0:8:800:200C:417A
Nie jest konieczne zapisywanie nieznaczących zer w każdym polu rozgraniczonym dwukropkiem, jednakże w każdym polu musi znajdować się przynajmniej jeden znak.
Kompresja zer
W początkowym okresie przydzielania adresów IPv6 adresy będą zawierać w sobie dużo zer. Aby ułatwić zapisywanie tego typu adresów wprowadzono specjalny symbol „::” – identyfikujący 16-bitowe grupy zer. Taki symbol może się pojawić w adresie tylko raz. Symbol ten może służyć również do usunięcia zer rozpoczynających lub kończących adres. Przykładowe adresy IPv6 przedstawiono w przykładzie 2 poniżej:
Przykład 2. Przykładowe adresy IPv6.
1080:0:0:0:8:800:200C:417A adres unicast
FF01:0:0:0:0:0:0:101 adres multicast
0:0:0:0:0:0:0:1 adres pętli zwrotnej (loopback address)
0:0:0:0:0:0:0:0 adres nieokreślony
Adresy te mogą być przedstawione w postaci skróconej (patrz przykład 3):
Przykład 3. Skrócona postać adresów IPv6 z przykładu 2.
1080::8:800:200C:417A
FF01::101
::1
::
Innym sposobem prezentacji adresu jest mieszana interpretacja, w szczególności w okresie, gdy przechodzimy z adresów IPv4 na IPv6. Forma jest wówczas następująca:
x:x:x:x:x:x:d.d.d.d
x – 16 bitowy heksadecymalny składnik adresu
d – dziesiętna wartość odpowiadająca fragmentom adresu IPv4
Przykład adresu IPv6 pochodzącego od adresu IPv4 przedstawia przykład 4:
Przykład 4. Adresy IPv6 pochodzące od IPv4.
0:0:0:0:0:0:13.1.68.3
0:0:0:0:0:FFFF:129.144.52.38
Adresy powyższe mogą być również przedstawiane w postaci o skompresowanych zerach (patrz przykład 5):
Przykład 5. Adresy IPv6 pochodzące od IPv4 postać skrócona.
::13.1.68.3
::FFFF:129.144.52.38
Prefiks adresów IPv6
Prefiks w notacji IPv6 jest podobny do notacji z IPv4 i jest zgodny z zaleceniami adresowania i routingu CIDR (ang. Classless Inter-Domain Routing). Zapisywany on jest w następującej postaci: Adres_IPv6/Długość_prefiksu
Gdzie długość prefiksu (podana dziesiętnie) określa, ile kolejnych bitów na najstarszych pozycjach („najbardziej na lewo”) identyfikuje sieć – podsieć (patrz przykład 6 i 7):
Przykład 6. Przykład 60-bitowego prefiksu 12AB00000000CD3.
12AB:0000:0000:CD30:0000:0000:0000:0000/60
12AB::CD30:0:0:0:0/60
12AB:0:0:CD30::/60
Przykład 7. Przykład jednoczesnego zapisywania adresu i jego prefiksu.
Adres węzła: 12AB:0:0:CD30:123:4567:89AB:CDEF
Prefiks podsieci: 12AB:0:0:CD30::/60
Może być przedstawiony w postaci:
12AB:0:0:CD30:123:4567:89AB:CDEF/60
Uwaga informacyjna
Implementacja IPv4 wykorzystuje dziesiętną reprezentację adresu oraz maskę. Nowe implementacje zamiast maski stosują również pojęcie prefiksu.
W przypadku protokołu IPv6 posługujemy się wyłącznie pojęciem prefiksu.
|
Adresy IPv6 typu unicast
Unicastowy adres IPv6 jest zgodny z konwencją bezklasowego routingu między domenowego CIDR. Istnieje kilka form zapisu adresu unicast w IPv6. Jest to globalny adres unicastowy, adres NSAP, adres IPX, adres lokalny łącza i adres lokalny węzła, adres zgodny z IPv4. Inne formy mogą być dodane w przyszłości. W zależności od funkcji, jaką pełni węzeł (czy jest hostem czy routerem) adres można zapisać w różny sposób. Najprostszy przykład adresu IPv6 (bez wewnętrznej struktury) przedstawia rysunek 6.
Rysunek 6. Najprostszy przykład adresu IPv6 (bez wewnętrznej struktury).
Dla podsieci o różnych prefiksach forma adresu przybiera postać (patrz rysunek 7):
Rysunek 7. Przykład adresu IPv6 z uwzględnieniem prefiksu.
Aktualnie adresy unicastowe dzielą się na następujące rodzaje:
- Globalne adresy unicastowe
- Adresy lokalne łącza
- Adresy lokalne miejsca
- Unikalne lokalne adresy unicastowe
- Adresy specjalnego przeznaczenia
Globalne adresu unicastowe
Globalne adresy unicastowe są odpowiednikiem adresów publicznych protokołu IPv4. Wszystkie przydzielane przez organizację IANA adresy budowane są zgodne ze specyfikacją zawartą w RFC 3587. Budowę globalnego adresu unicastowego przedstawia rysunek 8.
Rysunek 8. Budowa globalnego adresu unicastowego
Opis:
Pole
|
Przeznaczenia lub wartość pola
|
001
|
Prefiks (3 bity) zdefiniowany dla Globalnych adresów unicastowych, co oznacza, iż adresy zaczynają się od prefiksu 2000::/3
|
Global Routing Prefix
|
Wraz z polem 001 tworzy unikalny dla organizacji 48-bitowy prefiks
|
Subnet ID
|
16-bitowy identyfikator sieci w danej organizacji. Liczba ta umożliwia zbudowanie 65536 podsieci
|
Interface ID
|
Unikalny w obrębie sieci identyfikator interfejsu
|
Unicastowe adresy lokalnego przeznaczenia
IPv6 wykorzystuje dwa rodzaje adresów lokalnego przeznaczenia:
a) Adresy lokalne łącza (ang. Link-local), wykorzystywane w obrębie jednego łącza przez protokół Neighbor Discovery
b) Adresy lokalne miejsca, wykorzystywane do komunikacji pomiędzy dwoma węzłami w tym samym miejscu (lokalizacji/organizacji)
Adresy lokalne łącza - Link-Local Addresses
Adresy lokalne łącza zostały stworzone do użycia w obrębie pojedynczego łącza dla celów takich jak automatyczna konfiguracja adresów, odkrywanie sąsiedztwa albo w sytuacjach, gdy nieobecne są routery. Routerom nie wolno przesłać żadnego datagramu, którego adres źródłowy jest adresem lokalnym łącza. Adresy te są mniej więcej odpowiednikiem adresów zwanych, jako APIPA Automatic Private IP Addressing (pula 169.254.0.0/16) z protokołu IPv4. Budowę adresu lokalnego łącza przedstawia rysunek 9.
Rysunek 9. Format adresu IPv6 lokalnego łącza
Adresy lokalne łącza zawsze rozpoczynają się prefiksem FE80::/64. Wraz z 64-bitowym identyfikatorem interfejsu, tworzą adresy IPv6 lokalne łącza. Routery IPv6 nigdy nie przepuszczają tego typu adresów.
Adresy lokalne miejsca - Site-Local Addresses (nie zalecane już do wykorzystywania)
Adresy lokalne miejsca mogą być użyte dla miejsc lub organizacji, które nie są (jeszcze) podłączone do globalnego Internetu. Są one odpowiednikiem adresów z pul prywatnych IPv4 (10.0.0.0/8, 172.16.0.0/12 oraz 192.168.0.0/16). W takim przypadku nie ma konieczności rezerwacji prefiksów adresów z przestrzeni adresowej globalnego Internetu, w zamian można użyć adresów IPv6 lokalnych miejsca. Gdy organizacja podłącza się do globalnego Internetu, może stworzyć adresy globalne przez zastąpienie prefiksu adresu lokalnego miejsca prefiksem dostawcy usług sieciowych. Routerom nie wolno przesłać żadnego datagramu, którego adres źródłowy jest adresem lokalnym miejsca. Budowę adresu lokalnego miejsca przedstawia rysunek 10.
Rysunek 10. Format adresu IPv6 lokalnego miejsca
Pierwsze 10 bitów tworzy prefiks adresów lokalnych miejsca (FEC0::/10). Kolejne 54 bity pozwalały na zbudowanie hierarchicznych struktur sieci lokalnych. Wraz z 64-bitowym identyfikatorem interfejsu, tworzą adresy IPv6 lokalne miejsca.
Uwaga informacyjna
Dokument RFC 3879 formalnie usuwa konieczność implementacji tych typów adresów IPv6 dla nowych implementacji protokołu
|
Identyfikator Zone ID dla adresów lokalnych
W przeciwieństwie do adresów globalnych, adresy lokalne mogą się dublować w sieci. Adresy lokalne łącza muszą być unikalne tylko w obrębie danej sieci, zaś adresy typu site local (już niewykorzystywane) musiały być unikalne w obrębie danej lokalizacji.
W przypadku łączenie dwóch sieci lub dwóch lokalizacji, aby uniknąć konfliktów adresowych należy określić albo łącze albo miejsce, z którym związany jest dany adres. TO powiązanie realizowane jest przez dodatkowy identyfikator. Identyfikator ten nosi nazwę zone identifier (ID) lub scope ID. Składnia ZoneID przedstawiona została w dokumencie RFC 4007 dla identyfikacji strefy dla adresów lokalnego przeznaczenia:
Adres%zone_ID
Oba parametry Adres i zone_ID są wartościami całkowitymi i jako całość reprezentują pewną strefę. Strefa jest definiowana lokalnie na każdym węźle tak, że inny węzeł może tą samą strefę widzieć pod innym identyfikatorem strefy.
Unikalne lokalne adresy IPv6 typu unicast
Adresy typu Site-local miały reprezentować adresy prywatne wykorzystywane lokalnie, a przeciwieństwie do adresów globalnych. Jednakże prefiks adresów prywatnych mógłby się dublować przy łączeniu ze sobą lokalizacji, co prowadziłoby do bardzo skomplikowanego procesu readresacji urządzeń i zarządzania aplikacjami czy urządzeniami sieciowymi
Uwaga informacyjna
Więcej informacji znajduje się w sekcji 2 dokumentu RFC 3879.
|
Aby uniknąć możliwości zduplikowania się adresów typu site-local organizacja IETF zaleciła wycofanie tego typu adresu i w dokumencie RFC 4193 zdefiniowała nowy typ adresu określany, jako unikatowy lokalny adres typu unicast. Budowę unikalnego lokalnego adresu IPv6 typu unicast przedstawia rysunek 11.
Rysunek 11. Format unikalnego adresu IPv6 typu unicast
Pierwsze 7 bitów reprezentuje unikalny prefiks 1111110 (binarnie) lub FC00::/7 (heksadecymalnie).
Flaga (L) ustawiona na wartość 1 oznacza, iż będą to adresy lokalne. Wartość zero nie została jeszcze zdefiniowana. Oznacz to, iż de facto adresy lokalne posiadają prefiks FD00::/8.
Globalny identyfikator (Global ID) określa daną lokalizację w obrębie danej organizacji. Wartość ta ustawiane jest pseudolosowo (40 bitów). Razem z 8 bitowym prefiksem tworzą losowy identyfikator. Jest bardzo małe prawdopodobieństwo, iż w przypadku łączenia dwóch organizacji ten sam identyfikator może się w nich powtórzyć.
Globalne adresy unicastowe oraz unikalne adresy IPv6 typu unicast mają taką samą strukturę ostatnich 80 bitów. Różnią się tylko na pierwszych 48-bitach.
Rysunek 12. Porównanie adresu globalnego oraz unikalnego adresu IPv6 typu unicast
Dla adresów globalnych pole Subnet ID identyfikuje podsieć w danej organizacji. Dla adresów unikalnych lokalnych pełni identyczną funkcję, co pozwala na budowę hierarchicznych podsieci w obrębie organizacji zarówno dla adresów globalnych jak i unikalnych lokalnych. Zaleca się, aby organizacja nie rozgłaszała adresów unikalnych lokalnych na zewnątrz lub nie tworzyła dla nich rekordów typu AAAA w Internetowych serwerach DNS.
Adresy IPv6 specjalnego przeznaczenia
Specyfikacja IPv6 definiuje kilka typów adresów specjalnego przeznaczenia.
Adres nieokreślony
Adres 0:0:0:0:0:0:0:0 (lub też ::) nazywany jest adresem nieokreślonym. Adres ten nie może zostać przypisany żadnemu węzłowi. Jego wystąpienie oznacza brak adresu. Jednym z przykładów jego użycia jest pole adresu źródłowego każdego datagramu IPv6 wysłanego przez host w trakcie inicjacji, zanim pozna on swój adres. Adres nieokreślony nie może zostać użyty, jako adres docelowy datagramów IPv6 ani w nagłówkach routing protokołu IPv6.
Adres loopback
Adres unicastowy 0:0:0:0:0:0:0:1 (lub też ::1) nazywany jest adresem loopback. Węzeł może go użyć, aby wysłać do siebie datagram IPv6. Adres ten nie może zostać przypisany żadnemu interfejsowi fizycznemu. Adres ten nie może być użyty w polu Adres źródłowy w datagramach IPv6, które wysyłane są poza węzeł. Datagramy IPv6 z adresem loopback jako adresem docelowym również nie mogą być wysłane poza węzeł.
Urządzenia i łącza bez identyfikatorów
W przypadku braku jakiegokolwiek identyfikatora, może zostać użyty identyfikator węzła lub interfejsu, do którego to urządzenie lub łącze jest bezpośrednio podłączone. Jeżeli nie został i tam przydzielony żaden globalny identyfikator, można wygenerować identyfikator dowolny z zastrzeżeniem, iż będzie on unikalny w obrębie łącza. W procesie migracji z IPv4dto IPv6 mogą być jeszcze wykorzystywane dwa inne typy adresów.
IPv4-compatible address
Mechanizm przesyłania protokołu IPv6 zawiera dla hostów i routerów technikę dynamicznego tunelowania datagramów IPv6 poprzez infrastrukturę doboru tras protokołu IPv4. Węzły IPv6, które wykorzystują tę technikę, mają przypisane specjalne adresy unicastowe IPv6, które przenoszą adres IPv4 na 32 najmłodszych bitach. Ten typ adresu określany jest, jako "adres IPv6 kompatybilny z IPv4" (ang. IPv4-compatible IPv6 address) i ma format przedstawiony na rysunku 13.
Rysunek 13. Format adresu IPv6 kompatybilnego z IPv4.
IPv4-mapped address
Zdefiniowano także drugi typ adresu IPv6, który zawiera adres IPv4. Ten adres jest używany do reprezentowania adresów węzłów, które mają zaimplementowany tylko protokół IPv4 (nie obsługują IPv6), jako adresów IPv6. Ten typ adresu określany jest, jako "adres IPv6 będący odwzorowaniem adresu IPv4" (ang. IPv4-mapped IPv6 address) i ma format przedstawiony na rysunku 14.
Rysunek 14. Format adresu IPv6 będącego odwzorowaniem adresu IPv4.
Adresy 6to4
Adresy 6to4 wykorzystywane są przy komunikacji pomiędzy dwoma węzłami korzystając z mechanizmu tunelowania 6to4. Format adresu jest połączeniem prefiksu 2002::/16 z 32 bitami publicznego adres IP węzła tworząc dzięki temu nowy 48-bitowy prefiks. Mechanizm tunelowania 6to4 jest opisany w dokumencie RFC 3056.
Adresy IPv6 typu multicast
Adres multicastowy protokołu IPv6 jest identyfikatorem grupy węzłów. Węzeł może należeć do dowolnej liczby grup. Format adresu multicastowego pokazany jest na rysunku 15. Prefiks 11111111 na początku adresu identyfikuje adres multicastowy.
Rysunek 15. Format multicastowego adresu IPv6
Flagi:
Flaga
|
Przeznaczenie
|
T
|
0 – oznacza przypisany na stałe (ang. well-known) adres multicastowy, przyznany przez instytucję zajmującą się przydzielaniem globalnych adresów internetowych (IANA).
1 – oznacza przypisany tymczasowo (ang. transient) – przechodni adres multicastowy
|
P
|
1 - oznacza, iż adres multicastowy bazuje na adresie unicastowym
|
R -
|
Rendezvous Point Address - oznacza, iż adres multicastowy zawiera wbudowany element typu Rendezvou
|
Uwaga informacyjna
Flaga P zdefiniowana została w dokumencie RFC 3306
Flaga R zdefiniowana została w dokumencie RFC 3956
|
SCOPE – pole używane do określania zasięgu adresu multicastowego:
Wartości pola SCOPE heksadecymalnie:
SCOPE
|
Zakres
|
0
|
Zarezerwowane
|
1
|
Node-local scope – zakres ograniczony do lokalnego węzła
|
2
|
Link-local scope – zakres ograniczony do lokalnego łącza
|
3
|
Nieokreślone
|
4
|
Nieokreślone
|
5
|
Site-local cope – zakres ograniczony do lokalnego miejsca
|
6
|
Nieokreślone
|
7
|
Nieokreślone
|
8
|
Organization-local scope – zakres ograniczony do lokalnej organizacji
|
9
|
Nieokreślone
|
A
|
Nieokreślone
|
B
|
Nieokreślone
|
C
|
Nieokreślone
|
D
|
Nieokreślone
|
E
|
Global- scope - zakres globalny
|
F
|
Zarezerwowane
|
Multicastowe adresesy z zakresu FF01:: do FF0F:: są adresami zarezerwowanymi dla celów protokolarnych. Poniżej przedstawiono najbardziej popularne multicastowe adresy IPv6:
Adresy multicastowe wszystkich węzłów IPv6 o zasięgu 1 (węzeł lokalny) oraz 2 (łącze lokalne).
- FF01::1 - interface-local scope all-nodes multicast address
- FF02::1 - link-local scope all-nodes multicast address
Adresy multicastowe wszystkich routerów IPv6 o zasięgu 1 (węzeł lokalny), 2 (łącze lokalne) oraz 5 (lokalne miejsce).
- FF01::2 - interface-local scope all-routers multicast address
- FF02::2 - link-local scope all-routers multicast address
- FF05::2 - site-local scope all-routers multicast address
Skrócone adresy multicast węzła - Solicited-Node Address
Skrócony multicastowy adres węzła (solicited-node address) jest wykorzystywany do efektywnego odpytywania węzłów w procesie rozwiązywania adresu. W protokole IPv4, to ramka protokołu ARP Request jest rozsyłana na MAC’owski adres broadcastowy, niepotrzebnie angażując węzły, które nie muszą korzystać z protokołu IPv4. W przypadku protokołu IPv6, to komunikat Neighbor Solicitation protokołu Neighbor Discovery odpowiada za rozwiązywanie adresu. Jednakże zamiast korzystać z multicastowego adresu lokalnego węzła o zasięgu (scope) all-nodes (wszystkich węzłów), który to angażowałby wszystkie węzły działające z protokołem IPv6, wykorzystywany jest jego zamiennik, czyli skrócony multicastowy adres węzła.
Adres skrócony jest obliczany, jako funkcja adresu unicast i adresu multicast węzła. Adres wymagany dla węzła jest tworzony przez pobranie 24 najmłodszych bitów adresu (unicast lub anycast) i dołączenie tych bitów do 104-bitowego prefiksu FF02:0:0:0:1 co daje w rezultacie adres multicastowy w zakresie:
FF02:0:0:0:0:1:FF00:0000 do FF02:0:0:0:0:1:FFFF:FFFF
Konwersję adresu MAC na adres skrócony przedstawia rysunek 16.
Rysunek 16. Konwersja adresu MAC na multicastowego adres skrócony IPv6
Przykładowo:
Węzeł A ma przypisany adres lokalny łącza FE80::2AA:FF:FE28:9C5A
Nasłuchuje również na odpowiadającym mu skróconym multicastowym adresie węzła
FF02::1:FF28:9C5A (podkreślony fragment reprezentuje ostatnie 6 heksadecymalnych cyfr).
Węzeł B będący na tym samym łączu musi powiązać adres lokalny łącza węzła A (FE80::2AA:FF:FE28:9C5A) z odpowiadającym mu adresem warstwy łącza danych (adresem MAC).
Węzeł B wysyła zatem komunikat Neighbor Solicitation na skrócony adres multicastowy węzła FF02::1:FF28:9C5A.
Węzeł A nasłuchuje również na tym samym adresie multicastowym, zatem również rozpocznie przetwarzanie odebranego komunikatu Neighbor Solicitation, po czym wyśle już unicastowy komunikat Neighbor Advertisement w odpowiedzi do węzła B.
Rezultatem takiego podejścia jest ograniczenie procesu rozwiązywania adresu do działań realizowanych wyłącznie na łączu do określonych węzłów, a nie wszystkich jak to było w IPv4.
Adresy IPv6 typu anycast
Adres anycastprotokołu IPv6 to adres, który jest przypisany do więcej niż jednego interfejsu (różnych węzłów) i ma następującą własność: datagram wysłany na adres anycastjest przesyłany przez routery do "najbliższego" interfejsu, który posiada ten adres, gdzie określenie "najbliższy" odnosi się miary odległości używanej przez protokoły doboru tras
Adresy anycastsą wyjęte z przestrzeni adresowej adresów unicastowych i używają dowolnego zdefiniowanego formatu adresu unicastowego. Tak, więc adresy anycastnie są odróżnialne syntaktycznie od adresów unicastowych. Gdy adres unicastowy jest przypisany do więcej niż jednego interfejsu, (czyli zmienia się w adres anycast), to węzły, do których ten adres jest przypisany, muszą być skonfigurowane tak, by wiedzieć, że ten adres jest adresem anycast.
Dla każdego adresu anycast istnieje najdłuższy prefiks adresu, który określa obszar topologiczny, w którym znajdują się wszystkie interfejsy, do których odnosi się ten adres anycast. W tym obszarze, identyfikowanym przez prefiks, każdy element grupy interfejsów określanych przez jeden adres anycastmusi zostać zapamiętany, jako odrębny rekord w tablicy routingu,zazwyczaj określany terminem trasa do hosta (ang. host route); w ruchu rozgłoszeniowym poza obszarem identyfikowanym przez prefiks, adres anycastmoże być potraktowany jak adres pojedynczego interfejsu.
Zwróćmy uwagę, że w najgorszym przypadku prefiks każdego zbioru adresów anycastmoże być prefiksem pustym, np. gdy elementy grupy nie są lokalne pod względem topologii. W tym przypadku, adres anycastmusi zostać ogłoszony w całym Internecie, jako odrębny rekord tablicy tras, co ujawnia poważne ograniczenie: liczbę takich globalnych grup adresów anycast, które mogą być obsłużone. W związku z tym przewiduje się, że obsługa globalnych grup adresów anycastmoże być niedostępna lub bardzo ograniczona.
Jednym z prawdopodobnych sposobów użycia adresów anycastjest identyfikacja grupy routerów należących do dostawcy usług sieciowych. Takie adresy mogą być użyte, jako pośrednie adresy w nagłówku Routing protokołu IPv6, aby datagram był dostarczany przez określonego dostawcę usług sieciowych lub ciąg dostawców. Innym możliwym sposobem użycia jest identyfikacja grupy routerów dołączonych do określonej podsieci, lub grupy routerów dającej dostęp do określonej domeny.
Na podstawie dokumentu RFC 1546 omawiającego problemy pojawiające się przy powszechnym użyciu adresów anycastw Internecie, organizacja IETF zaproponowała następujące ograniczenia narzucone adresom anycastprotokołu IPv6:
- Adres anycast nie może być użyty, jako adres źródłowy datagramu IPv6.
- Adres anycast nie może być przypisany hostowi, tzn. może być przypisany tylko routerom IPv6.
Adres anycast routera – podsieci
Prefiks podsieci w adresie anycastjest prefiksem, który identyfikuje konkretne łącze. Ten adres anycastjest syntaktycznie taki sam, jak adres unicastowy dla interfejsu z identyfikatorem równym zero.
Rysunek 17. Format adresu anycast IPv6 router-podsieci
Datagramy wysłane na adres anycastroutera - podsieci będą dostarczone do jednego z routerów w podsieci. Wymaga się, by wszystkie routery obsługiwały adresy anycastroutera - podsieci dla podsieci, w których znajdują się ich interfejsy.
Adresy anycastroutera - podsieci są przeznaczone do użytku dla aplikacji, w których węzły wymagają komunikacji z jednym routerem z grupy routerów w oddalonej podsieci. Mogą być wykorzystywane przez hosty ruchome (ang. mobile host) do komunikacji z jednym z węzłów obsługujących hosty ruchome (ang. mobile agent), który znajduje się w "macierzystej" podsieci hosta.
Adresy IPv6 przypisywane do węzła
Wymaga się, aby host rozpoznawał następujące identyfikujące go adresy:
- Adres lokalny łącza dla każdego swojego interfejsu
- Przypisany adres unicastowy każdego z interfejsów
- Adres loopback (::1)
- Adresy multicastowe wszystkich węzłów o zasięgu interfejsu oraz łącza (FF01::1 oraz FF02::1)
- Skrócone adresy multicastowe dla każdego z przypisanych adresów unicastowych i anycastowych
- Adresy multicastowe wszystkich grup, do których należy host
Adresy IPv6 przypisywane do routera
Wymaga się, aby router rozpoznawał następujące identyfikujące go adresy:
- Adres lokalny łącza dla każdego swojego interfejsu
- Przypisany adres unicastowy każdego z interfejsów
- Adres loopback (::1)
- Adres anycastowy podsieci-routera, dla interfejsu, na którym zdefiniowane jest praca, jako router.
- Wszystkie inne adresy anycast, jakie zostały przypisane routerowi.
- Wszystkie adresy multicastowe przypisane do routera.
- Adresy multicastowe wszystkich grup, do których należy router:
1. interface-local scope all-nodes multicast address (FF01::1)
2. interface-local scope all-routers multicast address (FF01::2)
3. link-local scope all-nodes multicast address (FF02::1)
4. link-local scope all-routers multicast address (FF02::2)
5. site-local scope all-routers multicast address (FF05::2)
Jedyne prefiksy adresów, które powinny być predefiniowane w implementacji to:
- Adres nieokreślony.
- Adres loopback.
- Prefix multicastowy (FF).
- Prefiksy adresów użytku lokalnego (łącza i miejsca).
- Wstępnie przydzielone adresy multicastowe.
- Prefiksy adresów kompatybilnych z IPv4.
Implementacje protokołu powinny zakładać, że pozostałe adresy są adresami unicast chyba, że zostały specjalnie skonfigurowane (adresy anycast).
Identyfikator interfejsu w adresie IPv6
Koncepcja adresacji IEEE EUI-64 (rysunek 18) jest standardem powiązania adresów sprzętowych urządzeń sieciowych z adresacją IPv6.
Rysunek 18. Format adresu IEEE EUI-64
Gdzie poszczególne bity oznaczają:
„c” identyfikator producenta
„u” identyfikator uniwersalny (0) /lokalny (1)
„g” identyfikator indywidualny(unicastowy) (0) /grupowy(multicastowe) (1)
„m” identyfikator rozszerzający producenta (ang. Manufacturer-selected extension identifier)
Uwaga informacyjna
Bazując bezpośrednio na tej koncepcji tworzone są adresy IPv6 w systemach Windows XP and Windows Server 2003
Zgodnie z RFC 4941 adres może być również przydzielany tymczasowo bazując na losowo generowanym identyfikatorze. RFC 5072 rozszerza tą definicję na adresy generowane na łączach Point-to-Point lub w przypadku braku możliwości generacji adresu zgodnie ze specyfikacją EUI-64.
|
Uwaga informacyjna
W przypadku systemów Windows Vista, Windows 7, Windows 8, Windows Server 2008, Windows Server 2008 R2 oraz Windows Server 2012 RC tworzenie adresów jest zgodne z RFC 4941 oraz 5072. Można przywrócić ustawienie zgodne z RFC 2374 z pomocą polecenia netsh interface ipv6 set global randomizeidentifiers=disabled
|
Mapowanie adresów IEEE 802 do postaci EUI-64
Klasyczna postać adresu MAC IEEE 802 przedstawiona jest na rysunku 19.
Rysunek 19. Klasyczna postać adresu MAC IEEE 802
Typowy adres adaptera sieciowego zgodnego z norma 802.X ma oba bity u oraz g ustawione na 0.
W przypadku tworzenia identyfikator EUI-64 należy dokonać inwersji bitu „u” (bit uniwersalny/lokalny). Wartość tego bitu jest ustawiana na „1” w celu wskazania zakresu globalnego, „0” w przypadku zakresu lokalnego. Mapowanie adresów IEEE 802 do postaci EUI-64 przedstawia rysunek 20.
Rysunek 20. Mapowanie adresów IEEE 802 do postaci EUI-64
Pomiędzy grupę bitów „c” a „m” wstawiamy wartości 0xFF i 0xFE. Konwersję adresu EUI-64 na adres IPv6 interfejsu sieciowego przedstawia rysunek 21.
Rysunek 21. Konwersja adresu EUI-64 na adres IPv6 interfejsu sieciowego.
Aby uzyskać adres IPv6 powiązany ze specyfikacją IEEE 802, należy najpierw przekształcić adres IEEE 802 do postaci EUI-64, następnie należy ustawić odpowiednio bit „u” na 1 oraz dodać prefiks podsieci. Ostateczna postać identyfikatora IPv6 interfejsu sieciowego przedstawia rysunek 22.
Rysunek 22. Ostateczna postać identyfikatora IPv6 interfejsu sieciowego
Tymczasowy adresowy identyfikator interfejsu
W przypadku protokołu IPv6, urządzeniu przydzielany jest 64-bitowy lub krótszy prefiks, za pomocą rozgłoszeń protokołu Neighbor Discovery (komunikat Router Advertisement) oraz wbudowanemu mechanizmowi określanemu, jako protokół Stateless Address Autoconfiguration (SAA)
Jeżeli identyfikator interfejsu będzie bazował na formacie adresu EUI-64, to możliwe jest proste zidentyfikowanie na podstawie prefiksu oraz identyfikatora interfejsu, węzłów IPv6 realizujących transmisję. W celu zapewniania pewnego rodzaju anonimizacji, wprowadzono w dokumencie RFC 4941 alternatywny (pseudolosowy) sposób generacji identyfikatora interfejsu, wykorzystywanego później do budowy adresu IPv6.
Taki identyfikator przy pierwszym uruchomieniu zostaje wygenerowany w trybie pseudolosowym. Dla systemów, które nie mogą przechowywać informacji konfiguracyjnych, taki identyfikator będzie generowany przy każdym procesie inicjalizacji protokołu IPv6. Dla systemów, które mogą przechowywać informacje konfiguracyjne, pseudolosowy identyfikator interfejsu tworzony jest następującą metodą:
- Pobrać dane zapamiętane i dołączyć je do identyfikatora interfejsu generowanego zgodnie ze specyfikacją EUI-64.
- Obliczyć za pomocą funkcji skrótu Message Digest-5 (MD5) hash z danych pobranych w pierwszym kroku procedury.
- Zapamiętać ostatnie 64 bity skrótu MD5, wyliczone w kroku drugim do kolejnego procesu inicjalizacji stosu IPv6.
- Pobrać pierwsze 64 bity hasha MD5 obliczonego w kroku 2 i ustawić pierwsze 17 bitów na zero. 17 bit odpowiada bitowi U/L (universal/local), i przy ustawieniu wartości na zero, oznacza lokalnie zarządzany identyfikator interfejsu. Tak wygenerowany identyfikator będzie nowym identyfikatorem interfejsu.
Tak generowany adres IPv6 bazujący na losowo generowanym identyfikatorze interfejsu określany jest, jako adres tymczasowy - Temporary address. Adresy tymczasowe generowane są dla publicznych prefiksów konfigurowanych za pomocą mechanizmu SAA. Adresy tymczasowe wykorzystują możliwie małe wartości parametrów valid oraz preferred lifetime. Oba parametry te przesyłane są w opcji Prefix Information komunikatu Router Advertisement. Wartości domyślne to:
- 1 tydzień dla valid lifetime
- 1 dzień dla preferred lifetime
Jeżeli wartość parametru valid lifetime wygaśnie, generowany jest nowy identyfikator interfejsu i nowy adres tymczasowy.
Mapowanie multicastowych adresów IPv6 na multicastowe adresy Ethernet
Podczas wysyłania multicastowych datagramów IPv6 po sieci Ethernet, wykorzystywany jest specjalny multicastowy adres MAC o następującym formacie: 33-33-mm-mm-mm-mm, gdzie mm-mm-mm-mm jest bezpośrednim odwzorowaniem ostatnich 32 bitów multicastowego adresu IPv6. Przykład mapowania multicastowych adresów IPv6 na multicastowe adresy Ethernet przedstawia rysunek 23.
Rysunek 23. Mapowanie multicastowych adresów IPv6 na multicastowe adresy Ethernet
Aby efektywnie odbierać komunikację po protokole IPv6, każdy interfejs Ethernet musi mieć możliwość dynamicznego zarządzania adresami MAC. Adresy MAC związane z danym interfejsem są przechowywane w specjalnej tablicy w pamięci RAM sterownika karty sieciowej.
Przykład:
Węzeł o adresie MAC 00-AA-00-3F-2A-1C (i odpowiadającym mu adresie lokalnym łącza FE80::2AA:FF:FE3F:2A1C) rejestruje dodatkowe multicastowe adresy MAC:
Multicastowy adres MAC 33-33-00-00-00-01 jest odpowiednikiem multicastowego adresu wszystkich węzłów (link-local scope all-nodes multicast address) FF02::1.
Multicastowy adres MAC 33-33-FF-3F-2A-1C, jest odpowiednikiem skróconego multicastowego adresu węzła (solicited-node address) FF02::1:FF3F:2A1C).
Do węzła mogą być również dodawane dynamicznie dodatkowe adresy multicastowe MAC
Określanie źródłowego i docelowego adresu IPv6
Dla typowego hosta IPv4, mającego pojedynczy interfejs sieciowy z jednym przypisanym adresem IPv4, wykorzystującego DNS dla celów rozwiązywania nazw, wybór docelowego i źródłowego adresu IPv4 jest oczywisty. Adresem źródłowym będzie adres IPv4 przypisany do tego hosta, zaś adres docelowy zostanie określony na podstawie zapytania DNS.