IPv6: Typy adresów i ich budowa

 

Zadaniem sieci IP jest zapewnienie komunikacji pomiędzy wszystkimi dołączonymi do niej węzłami. Wymaga to ich jednoznacznej identyfikacji, co zapewniają adresy IP. Każdy pakiet posiada pełne dane adresowe, mówiące o tym skąd (źródłowy adres IP) i dokąd (docelowy adres IP) jest przełączany. Umożliwia to jego niezależną obsługę, na każdym z kolejnych urządzeń. W protokole IPv6 wyróżniamy trzy typy adresów:

- adres unicast (adres indywidualny), identyfikujący unikalnie pojedynczy interfejs, 

- adres multicast (adresy grupowy), identyfikujący zbiór interfejsów zainteresowany otrzymywaniem danego typu ruchu, gdzie pakiet dostarczany jest do wszystkich interfejsów posiadających dany adres IP,

- adres anycast (adresy jeden z wielu), identyfikujący zbiór interfejsów udostępniających tę samą usługę, gdzie pakiet dostarczany jest tylko do jednego interfejsu o danym adresie IP, tego który jest najbliżej według tablicy routingu.

Proszę zauważyć, że nie ma na powyższej liście adresu rozgłoszeniowego. W IPv6 transmisji rozgłoszeniowa została całkowicie zastąpiona transmisja grupową (multicast). W IPv6 adresy zawierające w części hosta same zera i same jedynki są prawidłowymi/użytecznymi adresami, przy czym może im zostać przypisana jakaś specjalna funkcja. Do tych adresów wrócimy w dalszej części artykułu, kiedy zajmiemy się adresami anycast.

Typ adresu IPv6 określany jest na podstawie jego najbardziej znaczących bitów (tych od strony lewej). 

      Address type         Binary prefix        IPv6 notation   

      ------------         -------------        -------------

      Unspecified          00...0  (128 bits)   ::/128

      Loopback             00...1  (128 bits)   ::1/128

      Multicast            11111111             ff00::/8

      Link-Local unicast   1111111010           fe80::/10

      Global Unicast       (everything else)

 

Adres 0:0:0:0:0:0:0:0 (::) nazywany jest nieokreślonym adresem (Unspecified Address). Nie przypisuje się go do żadnego urządzenia, stąd nie może być on użyty jako adres docelowy. Umieszczany jest on w polu adresu źródłowego, kiedy swojego adresu IP jeszcze nie znamy (np. podczas procedury uzyskiwania adresu IP). Pakiety z takim adresem źródłowym nie są przekazywane przez routery.

Adres 0:0:0:0:0:0:0:1 (::1) jest adresem pętli zwrotnej (Loopback Address). Może być wykorzystywany, kiedy chcemy wysłać pakiet sami do siebie. Nie przypisuje się go do żadnego fizycznego interfejsu. Jest przypisany do wirtualnego interfejsu loopback. Adres ::1 jest typu unicast o zakresie Link-Local.

W ramach adresów unicast zostało wydzielonych kilka grup o różnym przeznaczeniu.

Prefiks Zastosowanie prefiksu
2000::/3 Global Unicast
fec0::/10 Site-Local Unicast (przestarzałe - RFC 3879)
fc00::/7 Unique Local Addresses
fe80::/10 Link-Local Unicast
2001:db8::/32 Zarezerwowany do użytku w dokumentacjach
0000::/96 IPv4-Compatible IPv6 address (przestarzałe - RFC 4213)
::ffff:0:0/96 IPv4-mapped IPv6 address
64:ff9b::/96 Algorytm mapowania dla IPv4-embedded IPv6 addresses (RFC 6052) 

Global Unicast

Organizacja IANA oddała obecnie do użytku prefiks 2000::/3 (najbardziej znaczące trzy bity są mają binarnie wartość 001). Stąd wszystkie używane adresy Global Unicast zaczynają się od 0010 lub 0011, czyli mają w pierwszej cyfrze adresu od lewej wartość 2 lub 3.

Urządzenia końcowe zwykle nie posiadają zbyt dużej wiedzy na temat wewnętrznej struktury adresu IPv6. Wystarcza im znajomość granicy pomiędzy częścią sieci i hosta, którą wyznacza długość prefiksu. Wiedza ta jest potrzebna, by stwierdzić czy urządzenie z którym chcemy się komunikować znajduje się w naszej sieci i możemy komunikować się z nim bezpośrednio, czy też poza naszą siecią i powinniśmy komunikować się z nim za pośrednictwem jakiegoś routera. Wszystkie adresy Global Unicast IPv6, za wyjątkiem tych, które posiadają najbardziej znaczące trzy bity równe binarnie 000, muszą posiadać interface ID (część hosta) o długości 64 bitów (wyjątkiem są tutaj prefiksy /127 o których będzie w innym artykule). Zatem global routing prefix + subnet ID musi być równe 64 bitom (n + m = 64). Format struktury adresu Global Unicast IPv6 został zaprezentowany poniżej.

   |         n bits         |   m bits  |       128-n-m bits         |

   +------------------------+-----------+----------------------------+

   | global routing prefix  | subnet ID |       interface ID         |

   +------------------------+-----------+----------------------------+

 

Global routing prefix - jest wartością przypisywaną do organizacji/lokalizacji. Zwykle jest to prefiks /32, /40, /48 lub /56, w zależności od wielkości organizacji/lokalizacji i ich potrzeb. 

Subnet ID - służy do identyfikacji kolejnych połączeń/podsieci w danej organizacji/lokalizacji.

W każdej z podsieci urządzenia powinny mieć unikalną część interface ID (nie dotyczy adresu anycast). Przy czym RFC zalecana, by ten sam interface ID nie był przypisany do innych urządzeń w szerszym zakresie - globalnie, czyli niekoniecznie tylko w ramach tej samej sieci. Do automatycznego generowania interface ID, dla interfejsów posiadających adresy warstwy dostępu do sieci zgodne z IEEE MAC-48 stosuje się format IEEE EUI-64. Dzięki temu, że adresy IEEE MAC-48 są unikalne i przypisane do karty sieciowej urządzenia, otrzymane w ten sposób interface ID jest unikalne w skali globalnej. Oznacza to, że zmieniając lokalizacje (co za tym idzie subnet prefix), możemy zachować ten sam interface ID. Ma to swoją zaletę - łatwiej się do nas odwołać, ale też wadę - łatwiej nas śledzić. Więcej o IEEE EUI-64 znajduje się w oddzielnym artykule.


Przykładem adresów, które zaczynają się binarnie od 000, są adresy IPv6 z wbudowanymi adresami IPv4 (ang. IPv6 Addresses with Embedded IPv4 Addresses). Posiadają one w swoich najmniej znaczących 32 bitach (od strony prawej) adres IPv4. Wyróżniamy dwa rodzaje takich adresów: kompatybilny z IPv4 adres IPv6 (ang. IPv4-Compatible IPv6 address) i mapowany do IPv4 adres IPv6 (ang. IPv4-mapped IPv6 address).

IPv4-Compatible IPv6 address 

   |                80 bits               | 16 |      32 bits        |

   +--------------------------------------+--------------------------+

   |0000..............................0000|0000|    IPv4 address     |

   +--------------------------------------+----+---------------------+

 

Ostatnie 32 bity adresu muszą być unikalnym globalnie adresem IPv4 - pole IPv4 address. Adresy te są obecnie uznane za przestarzałe (RFC 4213). Były wykorzystywane przez metody automatycznego tunelowania (ang. Automatic Tunneling), gdzie adres końca tunelu był określany na podstawie tunelowanego pakietu (docelowy adres IPv6 typu IPv4-Compatible). Obecne mechanizmy migracji do IPv6 już z nich nie korzystają. Do łączenia domen IPv6 poprzez sieć IPv4 zaleca się korzystanie z metod opisanych w RFC 3056. Obecne i nowe implementacje protokołu IPv6 nie muszą obsługiwać tych adresów.

 

IPv4-mapped IPv6 address 

   |                80 bits               | 16 |      32 bits        |

   +--------------------------------------+--------------------------+

   |0000..............................0000|ffff|    IPv4 address     |

   +--------------------------------------+----+---------------------+

 

Adres ten służy do mapowania adresu IPv4 na adres IPv6. Dzięki niemu, aplikacje obsługujące tylko IPv6, które uruchomione są na urządzeniach obsługujących dual-stack (IPv4 i IPv6), mogą komunikować się z urządzeniami obsługującymi i IPv4 i IPv6. Pakiet IPv4 zaadresowany do aplikacji dostępnej tylko pod adresem IPv6, może do niej dotrzeć dzięki odpowiedniemu mapowaniu, jakie realizowane jest po drodze. Aplikacja IPv6 nasłuchuje tylko na adresach IPv6, ale jednym z nich jest specjalnie skonfigurowany adres IPv4-mapped IPv6 address. Więcej o obsłudze tego adresu i aplikacji w IPv6 można znaleźć w RFC 4038. 


Site-Local

Adresy Site-Local (fec0::/10) miały być adresami służącymi do komunikacji tylko w zakresie danej lokalizacji. Dawało to również możliwość zaadresowania organizacji/instytucji bez potrzeby posiadania prefiksu globalnego. Oznacza to, że ruch z i do tych adresów nie powinien być przekazywany do sieci publicznej (poza daną organizację).

   |   10     |

   |  bits    |         54 bits         |         64 bits            |

   +----------+-------------------------+----------------------------+

   |1111111011|        subnet ID        |       interface ID         |

   +----------+-------------------------+----------------------------+

 

Obecne implementacje mogą kontynuować wykorzystanie tych adresów według ich dawnego przeznaczenia. Nowe implementacje powinny obsługiwać je, tak jak wszystkiego inne adresy Global Unicast. 


Unique Local Addresses

Zamiast wyżej opisanych adresów Site-Local, zostały wprowadzone adresy ULA (Unique Local Addresses) fc00::/7. Ich zastosowanie i sposób alokacji został bardziej precyzyjnie opisany. Prefiksy ULA powinny być tworzone z wykorzystaniem pseudolosowego Global ID. Z adresów tych możemy korzystać wewnątrz organizacji/instytucji. Oznacza to, że ruch z i do tych adresów nie powinien być przekazywany do sieci publicznej (poza daną organizację).

   | 7 bits |1|  40 bits   |  16 bits  |          64 bits           |

   +--------+-+------------+-----------+----------------------------+

   | Prefix |L| Global ID  | Subnet ID |        Interface ID        |

   +--------+-+------------+-----------+----------------------------+

             ^ L = 1 - jeśli sami nadajemy sobie Global ID

               L = 0 - nieokreślona jeszcze metoda alokacji Global ID

 

Biorąc pod uwagę wartość bitu "L", otrzymujemy dwa dłuższe prefiksy. Dla L = 0, prefiks fc00::/8 i dla L = 1, prefiks fd0::/8. Obecnie RFC definiuje tylko wykorzystanie prefiksu z wartością L = 1 (fd00::/8), gdzie kolejne 40 bitów (Global ID) jest generowane pseudolosowym algorytmem. Poniżej zostało przedstawione działanie takiego algorytmu:

(1) Bierzemy aktualny czas w 64 bitowym formacie NTP.

(2) Bierzemy identyfikator EUI-64 lub inną unikalną wartość (np. numer seryjny) .

(3) Łączymy te dwie wartości ze sobą.

(4) Wyliczamy skrót SHA-1 (otrzymujemy w ten sposób 160 bitową wartość).

(5) Najmniej znaczące 40 bitów skrótu wykorzystujemy jako Global ID.

(6) Połączenie fc00::/7, bitu "L" ustawionego na 1 i 40 bitowego Global ID tworzy nasz lokalny prefiks.


Link-Local

Adresy Link-Local (fe80::/10) są przeznaczone do wykorzystania tylko w lokalnym segmencie danego połączenia. Routery nie powinny przekazywać pakietów zaadresowanych z i do adresów Link-Local do innych segmentów sieci.

   |   10     |

   |  bits    |         54 bits         |          64 bits           |

   +----------+-------------------------+----------------------------+

   |1111111010|           0             |       interface ID         |

   +----------+-------------------------+----------------------------+

 

Każdy z interfejsów routera posiada adres IPv6 Link-Local należący do jednego, dużego zakresu fe80::/10. Możemy przypisać dokładnie ten sam adres Link-Local na każdym z interfejsów jednego urządzenia. Niemniej, adres te musi unikalnie identyfikować każdy węzeł w danym segmencie sieci. Stąd odwołując się do tych adresów należy dodatkowo wskazać interfejs. Adresy te wykorzystywane są podczas procedury autokonfiguracji, wykrywania innych urządzeń, przez protokoły routingu i do komunikacji, jeśli w sieci nie ma routerów.


Anycast

Adresy anycast alokowane są z puli adresów unicast, a co za tym idzie, nie da się ich wprost rozróżnić. Podczas przypisywania interfejsowi takiego adresu, należy jawnie wskazać jego typ. Wynika to z tego, że dla każdego adresu, za wyjątkiem adresu anycast jest realizowana procedura DAD (Duplicat Address Detection) oraz tego, że adres ten nie może być wykorzystywany jako adres źródłowy. Pakiety zaadresowane na adres anycast dostarczane są tylko do jednego interfejsu, tego który na podstawie tablicy routingu jest najbliżej. Stąd często adres anycast jest ogłaszany jako tzw. host route (prefiks /128) w ramach obszaru jego zastosowania (organizacja/jednostka lub globalnie).

Przykładowe zastosowania adresów anycast to:

- serwery DNS (np. jeden adres IP root serwera może być obsługiwany przez wiele urządzeń zlokalizowanych w różnych częściach świata),

- wykorzystanie Routing Header do kierowania pakietu przez wskazanego usługodawcę (ważny jest usługodawca, a nie jakiś konkretny jego router, który może być chwilowo nieosiągalny).

 

Zostało zdefiniowanych kilka dobrze znany adresów anycast. Pierwszym z nich jest tzw. Subnet-Router Anycast Address. Jego budowę można zobaczyć poniżej. 

   |                         n bits                 |   128-n bits   |

   +------------------------------------------------+----------------+

   |                   subnet prefix                | 00000000000000 |

   +------------------------------------------------+----------------+

 

Jak widać, posiada on w części hosta same zera (jest to pierwszy identyfikator interfejsu w każdej podsieci). Pakiety zaadresowane na adres Subnet-Router Anycast powinny zostać dostarczone do jednego z routerów działających w danej podsieci, przy czym obsługiwać powinien go każdy router.

Dodatkowo w każdej podsieci do obsługi adresów anycast zarezerwowane jest 128 ostatnich identyfikatorów interfejsów - są to tzw. Reserved Subnet Anycast Addresses. Jeśli wykorzystywany przez nas prefiks posiada 64 bitowe identyfikatory interfejsów, to bit "u" we wszystkich tych adresach anycast musi być ustawiony na 0 (local). Oznacza to, że identyfikator interfejsu w tym adresie nie jest unikalny. Nie jest, bo adres anycast może posiadać wiele interfejsów. Dla przypomnienia, 64 bitowe identyfikatory prefiksów powinny mieć wszystkie adresy, które binarnie mają najbardziej znaczące bity od 001 do 111, z wyjątkiem adresów multicast (1111 1111), o których będzie dalej. Poniżej została przedstawiona struktura tych adresów, gdzie wykorzystywane są 64 bitowe identyfikatory interfejsów zgodnie z formatem EUI-64.

   |              64 bits            |      57 bits     |   7 bits   |

   +---------------------------------+------------------+------------+

   |           subnet prefix         | 1111110111...111 | anycast ID |

   +---------------------------------+------------------+------------+

                                     |   interface identifier field  | 

 

Dla prefiksów, gdzie nie korzysta się z EUI-64, identyfikatory interfejsów nie muszą być 64 bitowe i nie ma tutaj bitu "u". W takich podsieciach wykorzystuje się po prostu 128 najwyższych wartości identyfikatorów interfejsów. Poniżej została przedstawiona struktura tych adresów.

   |              n bits             |    121-n bits    |   7 bits   |

   +---------------------------------+------------------+------------+

   |           subnet prefix         | 1111111...111111 | anycast ID |

   +---------------------------------+------------------+------------+

                                     |   interface identifier field  | 

 

W związku z adresami Reserved Subnet Anycast Addresses, podsieć IPv6 musi posiadać minimum 8 bitów (/120). Podsieć o 7 bitach (/121) byłaby bezużyteczna, gdyż zawierałaby same adresy anycast.

Obecnie zarezerwowane są następujące identyfikatory adresów Reserved Subnet Anycast Addresses. 

  Decimal   Hexadecimal     Description

  -------   -----------     -----------

   127         7f           Reserved

   126         7e           Mobile IPv6 Home-Agents anycast

   0-125       00-7d        Reserved

 

Zobaczymy jak taki adres wygląda w całości. Dla przykładu weźmy adres Mobile IPv6 Home-Agents anycast. W przypadku, kiedy korzystamy z 64 bitowych prefiksów, gdziem może być stosowane EUI-64, ostatnie 64 bity tego adresu będą miały postać jak poniżej.  

   |0              1|1              3|3              4|4              6|

   |0              5|6              1|2              7|8              3|

   +----------------+----------------+----------------+----------------+

   |1111110111111111|1111111111111111|1111111111111111|1111111111111110|

   +----------------+----------------+----------------+----------------+

          ^                                                     ^^^^^^^

          +--- universal/local bit        anycast identifier ---+-----+

 

Natomiast, kiedy nie stosujemy EUI-64 i długość prefiksu może być różna od 64 bitów, adres ten będzie wyglądał jak poniżej (dla lepszego porównania daliśmy także 64 bity, niemniej dla innej długości prefiksów konstrukcja tego adresu jest dość analogiczna - jest to przedostatni identyfikator interfejsu). 

   |0              1|1              3|3              4|4              6|

   |0              5|6              1|2              7|8              3|

   +----------------+----------------+----------------+----------------+

   |1111111111111111|1111111111111111|1111111111111111|1111111111111110|

   +----------------+----------------+----------------+----------------+

                                                                ^^^^^^^

                                          anycast identifier ---+-----+

  

Pomimo, że adresy Reserved Subnet Anycast Addresses i Subnet-Router Anycast Address należą do puli adresów unicast, to nie powinno się używać ich do takich samych celów jak zwykłe adresy unicast.


Multicast 

Ostatnim typem adresu jaki został nam do omówienia, jest adres multicast. Identyfikuje on grupę interfejsów zainteresowanych tym samym typem ruchu. Pakiet zaadresowany na adres multicast dostarczany jest do wszystkich interfejsów posiadających ten adres. Adres multicast może być używany tylko jako adres docelowy, przy czym nie może pojawić się w Routing Header. Format adresu został przedstawiony poniżej. 

   |   8    |  4 |  4 |                  112 bits                   |

   +------ -+----+----+---------------------------------------------+

   |11111111|flgs|scop|                  group ID                   |

   +--------+----+----+---------------------------------------------+

 

Wszystkie adresy multicast rozpoczynają się od biarnie 1111 1111. 

Dalej znajduje się 4 bitowe pole flgs, o budowie jak poniżej.

                  +-+-+-+-+

                  |0|R|P|T|

                  +-+-+-+-+

Najbardziej znaczący bit flagi został zarezerwowany i powinien mieć wartość 0. 

Bit T = 0 jeżeli mam do czynienia ze stałym, dobrze znanym adresem multicast ("well-known").

Bit T = 1 oznacza adres tymczasowy/dynamiczny, o nieprzypisanej na stałe funkcji.

Bitami P i R zajmiemy się szerzej w oddzielnych artykułach. Zwykle są one ustawione na 0. Jeśli bit P = 1, to adres multicast jest przypisany na bazie prefiksu sieciowego. Jeśli bit R = 1, to w adresie multicast zaszyty jest adres RP (Rendezvous Point). 

 

4 bitowe pole scope określa zasięg adresu grupowego multicast. Routery nie powinny przekazywać pakietów multicast poza zakres zdefiniowany w tym polu. Może przyjmować on następujące wartości.

  Zakres  Opis zakresu
0 reserved Pakiety z takim zakresem powinny być odrzucane. 
1 Interface-Local Obejmuje ten sam obszar co adres unicast Link-Local.
2 Link-Local      Obejmuje pojedynczy interface węzła (do transmisji multicast do samego siebie (loopback)).  
3 (unassigned)  Zakres dostępny dla administratora. Można swobodnie definiować.
4 Admin-Local  Obejmuje konfigurowalny zakres, który musi zostać określony administracyjnie.    
5 Site-Local Obejmuje obszar pojedynczej lokalizacji w organizacji.  
6 (unassigned) Zakres dostępny dla administratora. Można swobodnie definiować.
7 (unassigned) Zakres dostępny dla administratora. Można swobodnie definiować.
8 Organization-Local  Obejmuje obszar całej organizacji (wiele lokalizacji).  
9 (unassigned) Zakres dostępny dla administratora. Można swobodnie definiować.
a (unassigned) Zakres dostępny dla administratora. Można swobodnie definiować.
b (unassigned) Zakres dostępny dla administratora. Można swobodnie definiować.
c (unassigned) Zakres dostępny dla administratora. Można swobodnie definiować.
d (unassigned) Zakres dostępny dla administratora. Można swobodnie definiować.
e  Global Obejmuje obszar całej sieci Internet.
f reserved Pakiety z takim zakresem powinny być traktowany tak samo jak E. 

  

112 bitowa wartość group ID identyfikuje konkretną grupę multicast (stałą lub tymczasową) w danym zakresie. Co ważne, group ID jest niezależne od zakresu. Dla przykładu, jeśli weźmiemy group ID serwera NTP, które szesnastkowo ma wartość 0x0101, to otrzymamy 

      ff01:0:0:0:0:0:0:101 - wszystkie serwery NTP na tym samym interfejsie

      ff02:0:0:0:0:0:0:101 - wszystkie serwery NTP na tym samym połączeniu

      ff05:0:0:0:0:0:0:101 - wszystkie serwery NTP w danej lokalizacji

      ff04:0:0:0:0:0:0:101 - wszystkie serwery NTP w sieci Internet

 

Adresy multicast, którym nie została przypisana na stałe żadna konkretna funkcja ("well-known multicast addresses") mają znaczenie tylko w ramach danego zakresu. Co oznacza, że adres ff15:0:0:0:0:0:0:101 używany w jednej lokalizacji, może oznaczać coś innego niż ten sam adresu używany w innej lokalizacji.

Poniżej zostało przedstawionych kilka najważniejszych, dobrze znanych adresów multicast. Dla wszystkich poniższych adresów został jednoznacznie określone zakresy. Stąd, jeśli bit T = 0, to nie można tego adresu wykorzystać w ramach innego zakresu, niż zostało to poniżej zdefiniowane. 

Poniższe adresy są zarezerwowane i nie powinny być do niczego wykorzystywane. 

      Reserved Multicast Addresses:   ff00:0:0:0:0:0:0:0

                                      ff01:0:0:0:0:0:0:0

                                      ff02:0:0:0:0:0:0:0

                                      ff03:0:0:0:0:0:0:0

                                      ff04:0:0:0:0:0:0:0

                                      ff05:0:0:0:0:0:0:0

                                      ff06:0:0:0:0:0:0:0

                                      ff07:0:0:0:0:0:0:0

                                      ff08:0:0:0:0:0:0:0

                                      ff09:0:0:0:0:0:0:0

                                      ff0a:0:0:0:0:0:0:0

                                      ff0b:0:0:0:0:0:0:0

                                      ff0c:0:0:0:0:0:0:0

                                      ff0d:0:0:0:0:0:0:0

                                      ff0e:0:0:0:0:0:0:0

                                      ff0f:0:0:0:0:0:0:0

 

Poniższe adresy identyfikują wszystkie węzły IPv6 (All Nodes Multicast Address) w zakresie 1 (Interface-Local) lub 2 (Link-Local).

      All Nodes Addresses:    ff01:0:0:0:0:0:0:1

                              ff02:0:0:0:0:0:0:1

 

Poniższe adresy identyfikują wszystkie routery IPv6 (All Routers Multicast Address) w zakresie 1 (Interface-Local), 2 (Link-Local) lub 5 (Site-Local). 

      All Routers Addresses:   ff01:0:0:0:0:0:0:2

                               ff02:0:0:0:0:0:0:2

                               ff05:0:0:0:0:0:0:2

 

Adres Solicited-Node tworzony jest poprzez dołączenie 24 najmniej znaczących bitów adresów unicast lub anycast do prefiksu FF02:0:0:0:0:1:FF00::/104.

      Solicited-Node Address:  ff02:0:0:0:0:1:ffXX:XXXX

      ff02:0:0:0:0:1:ff00:0000-ff02:0:0:0:0:1:ffff:ffff - zakres

  

I tak adresowi fe80::20c:29ff:fec2:2ee0, odpowiada adres Solicited-Node ff02::1:ffc2:2ee0. Poniżej został zobrazowany sposób realizacji mapowania ostatnich 24 bitów adresu.

      Link-Local Address:      fe80:0000:0000:0000:020c:29ff:fec2:2ee0

      Solicited-Node Address:  ff02:0000:0000:0000:0000:0001:ffc2:2ee0

 

Z powyższego wynika, że wszystkie adresy IPv6 różniące się w pierwszych 104 najbardziej znaczących bitach, zostaną zamapowane do tego samego adresu Solicited-Node. Zmniejsza to ilość grup do których musi dołączyć węzeł. Wymaga się od węzła, by wyliczył i dołączył na każdym ze swoich interfejsów do wszystkich grup Solicited-Node, wynikających z obsługiwanych na jego interfejsach adresach unicast i anycast. Adres ten jest wykorzystywany podczas procedury wykrywania sąsiadów, która szerzej zostanie opisana w innym artykule. 

Zobaczmy jak wygląda to w praktyce. Do tego celu posłużymy się systemem GNU/Linux Debian 6.0. Poniżej znajduje się wynik polecenia ifconfig, na którym widać skonfigurowane adresy IPv6.

 

# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:0c:29:c2:2e:e0  
          inet addr:10.8.100.51  Bcast:10.8.100.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fec2:2ee0/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2103697 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1854873 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:272995286 (260.3 MiB)  TX bytes:267111227 (254.7 MiB) 
#  

 

Poleceniem netstat możemy wyświetlić wszystkie adres IPv6 multicast obsługiwane przez system.

netstat -ng6
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
IPv6/IPv4 Group Memberships
Interface       RefCnt Group
--------------- ------ ---------------------
lo              1      ff02::1
eth0            1      ff02::1:ffc2:2ee0
eth0            1      ff02::1

 

Oprócz wspomnianego adresu Solicited-Node (został pogrubiony), na interfejsie eth0 obsługiwany jest jeszcze adres ff02::1 (All Nodes Multicast Address). 

Każdy z interfejsów obsługujący protokół IPv6 powinien posiadać minimum jeden adres unicast o zakresie Link-Local z odpowiadającym mu adresem Solicted-Node Multicast oraz adres All Nodes Multicast (jeśli jest to router, to dodatkowo adres All Routers Multicast). Oprócz tego, może mieć dowolną ilość adresów innego typu i zakresu. W tranzytowych połączeniach point-to-point, gdzie żaden z adresów/końców takiego połączenia nie będzie ani nadawcą, ani odbiorcą pakietu, nie jest potrzebna stosowania żadnych dodatkowych adresów. Podobnie jak w IPv4, w IPv6 pojedynczy prefiks może być powiązany tylko z jednym połączeniem danego urządzenia. Przy czym na jednym połączeniu może być obsługiwanych wiele prefiksów.


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.