Wszystko, co chcielibyście wiedzieć o IPv6, ale baliście się zapytać cz. 2
Posted on czw 02 grudzień 2010 in Routing
W poprzednim wpisie z cyklu przyjrzeliśmy się jak wyglądają typowe unicastowe adresy IPv6. Wyjaśniłem także zasady rządzące zapisem adresów - kiedy i co się skraca.
Tym razem zajmiemy się kilkoma innymi rodzajami adresów IPv6 a jest ich, jak się przekonamy, niemało.
Loopback
Podobnie jak w przypadku IPv4, w szóstce każdy host powinien mieć adres Loopback. Pamiętamy, że w IPv4 był to 127.0.0.1. Przy okazji zmarnowano całą masę adresów bo z automatu zarezerwowano całą klase 127.0.0.0/8.
W przypadku IPv6 adres loopback to chyba jedyny naprawdę łatwy do
zapamiętania adres :P A prezentuje się jak poniżej:
0000:0000:0000:0000:0000:0000:0000:0001
czyli, krótko mówiąc:
::1
Pamiętamy zasady skracania adresów? :)
Adresy Link-Local
Pamiętacie adresy z przedziału 169.254.1.0 do 169.254.254.255 przydzielane przez systemy MS w przypadku braku odpowiedzi z serwera DHCP? Otóż pomysł nie wyszedł ze stajni MS a z IETF. Adresy te zostały zarezerwowane jako link-local - czyli adresy, które mogą być tymczasowo używane do komunikacji w jednym segmencie LAN ale w żadnym wypadku nie powinny się pojawić w Internecie. Adresy tego typu host przydziela sobie sam i co gorsza robi to losowo - wybiera adres i za pomocą zapytania ARP sprawdza czy nie jest już używany. Jeśli jest - wybiera kolejny.
Pomysł nie był zbyt powszechnie wykorzystywany, ja w każdym razie nie przypominam sobie innej implementacji niż ta w systemach Windows.
W IPv6 link-local jest w powszechnym użyciu. Co więcej jest baj difolt
skonfigurowany na każdym z interfejsów, o ile maszyna jest przystosowana
do pracy z IP w najnowszej wersji. Link local zawsze ma prefix
fe80::/10. Na przykład:
fe80::20d:b9ff:fe1a:edb8%vr0
Ok. Zwróć uwagę na "%vr0" na końcu - link local przypisany jest do konkretnego interfejsu.
Przyjrzyjmy się teraz części adresu zaraz za prefixem i porównajmy ją z
adresem MAC interfejsu:
20d:b9ff:fe1a:edb8 00:0d:b9:1a:ed:b8
Widać podobieństwo, prawda? Ta część adresu jak pamiętamy, to tzw. interface id - generowany jest na podstawie adresu mac w następujący sposób: 7 bit licząc od lewej zamieniamy z 0 na 1 (w naszym przykładzie 00 zamienia się na 02). Adres MAC ma 48 bitów, interface id 64 - skąd zdobyć brakujące bajty? Pomiędzy dwie połowy adresu MAC wstawiamy FF:FE.
Prześledźmy to na naszym przykładzie:
00:0d:b9:1a:ed:b8 02:0d:b9:1a:ed:b8 <-- przestawilismy siódmy bit z 0 na 1 02:0d:b9:ff:fe:1a:ed:b8 <-- dodaliśmy FF:FE pomiędzy dwie części adresu MAC 20d:b9ff:fe1a:edb8 <-- zapis w notacji zgodnej z notacją IPv6, wystarczy dodać prefix
Taki sposób generowania adresów (swoją drogą mamy zagwarantowaną unikalność) używany jest nie tylko w przypadku adresów link local ale także w przypadku tzw. stateless autoconfiguration, ale o tym kiedy indziej. Dodajmy, że pomysł jest o tyle lepiej rozwiązany niż w przypadku IPv4, że znając adres MAC maszyny jesteśmy w stanie "wygenerować" sobie adres link-local i skomunikować się z maszyną (np. za pomocą ssh).
Adres link local, jak sama nazwa wskazuje, jest prawidłowym adresem na danym "linku", ponieważ Ethernet jest medium wielodostępowym, możemy powiedzieć, że w tym przypadku będzie działał w obrębie domeny rozgłoszeniowej.
Adresy multicast
Adresacja multicast nie jest nowym wynalazkiem ale w przypadku IPv6 zyskuje na znaczeniu. Wszystkie adresy multicastowe w IPv6 mają prefix ff00::/8. Adres multicast można generalnie podzielić na cztery grupy bitów:
8 bitów
prefiks
4 bity
flagi
4 bity
zakres
112 bitów
grupa
Najciekawsze jest pole scope (zakres) - to pole definiujące zakres działania naszego adresu multicastoweego. I tak:
- ffx1::/16 - to zakres interface-local - oznacza to, że pakiet z takim adresem nie zostanie wysłany do sieci ale będzie obowiązywał tylko w "zasięgu" danego hosta. Można powiedzieć, że to multicastowy odpowiednik adresu loopback.
- ffx2::/16 - link-local - pakiet z adresem z tego zakresu nie zostanie przeroutowany. Obowiązuje tylko w obrębie linku (domeny rozgłoszeniowej).
- ffx4::/16 - admin-local
- ffx5::/16 - site-local
- ffx8::/16 - organization-local
- ffxe::/16 - global scope - zasięg globalny, pakiet z takim adresem może być routowany w Internecie.
Poniżej przykłady częściej spotykanych adresów multicast:
ff02::1 | Wszystkie hosty w lokalnym segmencie |
ff02::2 | Wszystkie routery w lokalnym segmencie |
ff02::5 i ff02::6 | Pamiętacie na jakich adresach działa OSPF? To odpowiedniki w OSPFv3 (w IPv4 odpowiednio 224.0.0.5 i 224.0.0.6) |
ff02::9 | RIPng |
Jak widać - mimo iż IPv6 nie przewiduje adresów broadcast (sic!) to adres multicastowy ff02::1 ma w zasadzie takie samo działanie :)
Ciekawe może być też przyjrzenie się multicastom w warstwie 2. Pamiętamy, że standardowe multicasty IPv4 były mapowane na adresy MAC zaczynające się od 01-00-5E. W przypadku IPv6 adresy multicast mapowane są na adresy 33-33-xx-xx-xx-xx. Na pewno nieco łatwiej zapamiętać ;)
OK. To póki co tyle o adresacji. Następnym razem przyjrzymy się tzw. stateless autoconfiguration i okaże się dlaczego, przynajmniej w teorii, DHCPv6 nie jest potrzebne.
FIN