Wszystko, co chcielibyście wiedzieć o IPv6, ale baliście się zapytać cz. 1
Posted on śro 03 listopad 2010 in Routing
IPv6 puka do bram, czy tego chcemy czy nie. Ostatnia pula /8 została rozdysponowana. Koniec.
Faktem jest, że wielu użytkowników a nawet administratorów podchodzi do tematu jak do jeża. IP w wersji 6 uchodzi (zbyt często) za coś nieco mitycznego a w najlepszym przypadku traktowane jest nadal jako zabawka sieciowych freaków. To czy pewnego pięknego poranka obudzimy się z przysłowiową ręką w nocniku zależy wyłącznie od nas.
Ta seria wpisów - mam nadzieję - rzuci nieco światła na ajpiwisiks. Jak się okaże nie taki diabeł straszny.
Adresacja IPv6
Adresacja IPv6 to pierwsza i najbardziej widoczna zmiana w stosunku do IPv4. W przeciwieństwie do IPv4 adres IP ma długość 128 bitów co daje nam 3,4028236692093846346337460743177e+38 adresów. W porównaniu do tych marnych czterech miliardów w przypadku poprzednika to całkiem sporo ;)
Ze względu na długość adresu zrezygnowano z dotychczasowo stosowanej notacji kropkowo-dziesiętnej na rzecz – jakby nie patrzeć znacznie skracającej zapis – notacji szesnastkowej – grupy czterech cyfr szesnastkowych oddzielonych dwukropkami:
2001:0DB8:1234:5678:9ABC:DEF1:2345:6789
W IPv6 nie stosujemy maski zmiennej długości. Podział adresu jest stały. Typowy adres Unicast dzieli się w ten sposób:
48 bitów
network prefix
16 bitów
subnet id
64 bity
interface id
Pierwsze 64 bity to tzw. routing prefix. Na podstawie tej części pakiet jest routowany. Na uwagę zasługuje 16 bitowy subnet id - oznacza to, że po otrzymaniu globalnego prefiksu możemy wydzielić do 65536 podsieci! Na adresację hostów zostaje nam bagatela 64 bity...
Notacja, głupcze!
OK. Kilka słów o samej notacji. Przyjmijmy, że adres ma następującą
postać:
2001:0DB8:0123:0000:0000:9ABC:2345:6789
To co powyżej jest jak najbardziej prawidłowe jednak sieciowiec to zwierze leniwe i lubi sobie ułatwić życie. Poniżej zasady skracania adresów IPv6.
Wszystkie zera wiodące możemy usunąć.
Zapis będzie wyglądał następująco:
2001:DB8:123:0000:0000:9ABC:2345:6789
Grupy zer możemy pominąć i zastąpić je *::*
2001:DB8:123::0000:9ABC:2345:6789
A skracając jeszcze bardziej:
2001:DB8:123::9ABC:2345:6789
Prawda, że wygląda już znacznie ładniej? Na koniec wszystko razem krok po kroku:
2001:0DB8:0123:0000:0000:9ABC:2345:6789 2001:DB8:123:0000:0000:9ABC:2345:6789 2001:DB8:123::0000:9ABC:2345:6789 2001:DB8:123::9ABC:2345:6789
Ale przyjrzyjmy się nieco zmodyfikowanemu przykładowi:
2001:0DB8:0000:0123:9ABC:0000:0000:6789
W pierwszym odruchu moglibyśmy zrobić z niego:
2001:DB8::123:9ABC::6789
No cóż. Taki zapis już prawidłowy nie jest – grupy zer możemy skrócić do
dwukropka tylko w jednym miejscu! W zapisie powyżej nie jesteśmy w
stanie stwierdzić (a tym bardziej żadne urządzenie) jaki był pierwotny
adres. Gdzie znajdowała się jedna grupa zer a gdzie dwie? Zapis stał się
niejednoznaczny. Prawidłowo byłoby:
2001:DB8::123:9ABC:0000:0000:6789
lub, co nawet jest lepszym rozwiązaniem
2001:DB8:0000:123:9ABC::6789
Następnym razem przyjrzymy się innym typom adresów i dowiemy się dlaczego nie ma adresu broadcast a jednak jest :)
FIN