IPv6
IPv6 (ang. Internet Protocol version 6) – protokół komunikacyjny, będący następcą protokołu IPv4, do którego opracowania przyczynił się w głównej mierze problem małej, kończącej się liczby adresów IPv4. Podstawowymi zadaniami nowej wersji protokołu jest zwiększenie przestrzeni dostępnych adresów poprzez zwiększenie długości adresu z 32-bitów do 128-bitów, uproszczenie nagłówka protokołu oraz zapewnienie jego elastyczności poprzez wprowadzenie rozszerzeń a także wprowadzenie wsparcia dla klas usług, uwierzytelniania oraz spójności danych. Protokół jest znany także jako IP Next Generation oraz IPng[1]. Głównymi dokumentami opisującymi protokół są RFC2460 oraz RFC4291.
Spis treści |
[edytuj] 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.
[edytuj] 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 wideo), 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[potrzebne źródło], ż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.
[edytuj] 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 |
[edytuj] Adresacja
W protokole IPv6 adres zapisany jest w 128-bitowej liczbie i może identyfikować jeden bądź wiele interfejsów. W przypadku tego protokołu adres jest bardziej przejrzysty niż adres w poprzedniej wersji protokołu. W przeciwieństwie do poprzedniej wersji protokołu, zakres adresu, czyli obszar jego widoczności, jest ograniczony przez odpowiedni prefiks.
Zazwyczaj adres składa się z ośmiu 16-bitowych bloków złożonych z cyfr szesnastkowych i oddzielonych dwukropkiem. Dozwolone jest pomijanie początkowych zer w bloku, a także pominięcie ciągu bloków składających się wyłącznie z zer. Pomijając bloki zer dubluje się separator bloków (dwukropek). W tym miejscu należy zauważyć, że dopuszczalny jest tylko jeden podwójny dwukropek :: w adresie[2]. Poniższe adresy są równoznaczne:
- 2001:0db8:0000:0000:0000:0000:1428:57ab
- 2001:0db8:0:0:0:0:1428:57ab
- 2001:0db8:0:0::1428:57ab
- 2001:0db8::1428:57ab
- 2001:db8::1428:57ab
[edytuj] Typy adresów
W adresacji wykorzystywanej w protokole IPv6 używane są trzy typy adresów:
- adresy unicast - identyfikujące pojedynczy interfejs; pakiety, które są kierowane na ten typ adresu dostarczane są tylko do odbiorcy
- adresy multicast - identyfikujące grupę interfejsów (mogą one należeć do różnych węzłów), pakiety wysyłane na ten adres dostarczane są do wszystkich członków grupy
- adresy anycast - podobnie jak adresy multicast, identyfikują one grupę interfejsów, jednak pakiet wysyłany na ten adres dostarczany jest tylko do najbliższego węzła (węzeł ten jest wyznaczany przez protokół rutingu)
W przeciwieństwie do poprzedniej wersji protokołu, IPv6 nie definiuje adresów typu broadcast. Jednym z powodów jest fakt, że pakiety wysyłane na ten adres odbierane były przez wszystkie węzły w sieci, nawet takie, które nie potrafiły danych pakietów zinterpretować.
[edytuj] Zakresy adresów
Charakterystyczną cechą protokołu jest fakt, że zostały zdefiniowane zakresy adresów. W przypadku adresów unicastowych wyróżniane są następujące zakresy:
- adresy lokalne dla łącza (link-local address) - są to adresy wykorzystywane tylko do komunikacji w jednym segmencie sieci lokalnej lub przy połączeniu typu point-to-point. Rutery nie przekazują pakietów z tego rodzaju adresem. Z puli pozostałych adresów wyróżniane są przez prefiks FE80::/10. Każdy interfejs musi mieć przydzielony co najmniej jeden adres lokalny dla łącza, nawet jeżeli posiada adres globalny lub unikalny adres lokalny[2].
- unikalne adresy lokalne (unique local adress) - są to adresy będące odpowiednikami adresów prywatnych wykorzystywanych w protokole IPv4. Z puli pozostałych adresów wyróżniane są przez prefiks FC00::/7. Od adresów lokalnych łącza odróżnia je także prefiks rutingu.[3].
- adresy globalne (global unicast address) - widoczne w całym internecie, są odpowiednikami adresów publicznych stosowanych w IPv4; do adresów tego typu należą adresy nie wymienione w pozostałych punktach[2].
Przez pewien czas, protokół definiował adresy site-local address, identyfikowane przez prefiks FEC0/10, jednak, ze względu na wiele kontrowersji zostały uznane za przestarzałe[4]
[edytuj] Mapowanie adresów IPv4 na IPv6
Możliwe jest reprezentowanie adresów protokołu IPv4 jako adresów IPv6. Jedną z możliwości jest stworzenie adresu IPv6, którego młodsze 32 bity zawierają adres IPv4, natomiast starsze 96 bitów jest wypełniona specjalnym wzorcem bitów (::ffff). Tak skonstruowany adres ma postać ::ffff:127.0.0.1 (za 127.0.0.1 można podstawić dowolny adres IP) i umożliwia normalną komunikację w sieci.
[edytuj] 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.
[edytuj] Nagłówek i jego rozszerzenie
W przeciwieństwie do protokołu IPv4, którego długość nagłówka wynosi od 20 do 60 bajtów, długość nagłówka protokołu IPv6 jest stała i wynosi 40 bajtów. Jego znaczną część zajmują adresy źródłowy oraz docelowy - 32 bajty, łatwo więc obliczyć, że na pozostałe dane pozostaje tylko 8 bajtów. Dzięki stałej długości nagłówek IPv6 jest dużo prostszy niż nagłówek poprzedniej wersji protokołu a zarazem dużo łatwiejszy w przetwarzaniu. Jest także dużo bardziej elastyczny - dodatkowe opcje protokołu mogą być umieszczane w opcjonalnych nagłówkach rozszerzających (ang. extension headers), następujących po nagłówku głównym IPv6. Takie rozwiązanie umożliwia zwiększenie możliwości protokołu bez wprowadzania zmian do podstawowego nagłówka[5].
| Bity | 0-3 | 4-7 | 8-11 | 12-15 | 16-19 | 20-23 | 24-27 | 28-31 | ||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | Wersja | Klasa ruchu | 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 | ||||||||||||||||||||||||||||||||
Podstawowy nagłówek protokołu składa się z następujących pól[5]:
- Wersja (4 bity) - definiująca wersję protokołu, w przypadku IPv6 pole te zawiera wartosć 6 (bitowo 0110)
- Klasa ruchu (8 bitów) - określa sposób w jaki ma zostać potraktowany pakiet danych. W poprzedniej wersji protokoły pole te nazywało się Type of Service, jednak ze względu na to, że w IPv6 stosowane są inne mechanizmy priorytetowania danych, nazwę tego pola zmieniono
- Etykieta przepływu (20 bitów) - pomagające odróżnić pakiety, które wymagają takiego samego traktowania (ich pole klasy ruchu ma tę samą wartość)
- Długość danych (16 bitów) - wielkość pakietu, nie wliczając długości podstawowego nagłówka (wliczając jednak nagłówki rozszerzające)
- Następny nagłówek (8 bitów) - identyfikuje typ następnego nagłówka, pozwalając określić czy jest to nagłówek rozszerzający czy nagłówek warstwy wyższej. W przypadku tego drugiego, wartość pola jest identyczna z wartością pola w protokole IPv4
- Limit przeskoków (8 bitów) - określa ilość węzłów po odwiedzeniu których pakiet zostaje porzucony. W poprzedniej wersji protokołu pole te nosiło nazwę time to live i zawierało liczbę skoków, która była zmniejszana przez każdy odwiedzony węzeł
- Adres źródłowy (128 bitów) - adres węzła, który wysłał pakiet
- Adres docelowy (128 bitów)- adres węzła do którego adresowany jest pakiet
[edytuj] Nagłówki rozszerzające
Nagłówki rozszerzające służą do zwiększania możliwość protokołu IPv6. W chwili obecnej zdefiniowanych jest sześć rozszerzeń protokołu:
- Hop-by-Hop Options
- nagłówek rutingu
- nagłówek fragmentacji
- nagłówek opcji docelowych
- nagłówek uwierzytelniania
- Encrypted Security Payload
[edytuj] 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 rutery; 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 rutowany 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.
[edytuj] 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'.
[edytuj] Kontrowersje
W adresach IPv6 unikalny adres MAC komputera (przypisany do sprzętu) jest widoczny dla całego Internetu. Dwa działania są konieczne aby zapewnić prywatność taką samą jak przy obecnych sieciach IPv4: klient musi mieć włączone rozszerzenia prywatności i ISP musi dynamicznie przydzielać adres do urządzenia klienta. [6][7][8][9][10]
[edytuj] Zobacz też
Przypisy
- ↑ Internet Protocol, Version 6 (IPv6) Specification.
- ↑ 2,0 2,1 2,2 Internet Protocol Version 6 (IPv6) Addressing Architecture (ang.). [dostęp 2011-09-10].
- ↑ Unique Local IPv6 Unicast Addresses (ang.). [dostęp 2011-02-10].
- ↑ Deprecating Site Local Addresses (ang.). [dostęp 2011-02-10].
- ↑ 5,0 5,1 5,2 Silvia Hagen: "IPv6 Essentials, Second Editin". O'Reilly, 2006. ISBN 0-596-10058-2.
- ↑ T. Narten, R. Draves: Privacy Extensions for Stateless Address Autoconfiguration in IPv6. 2001-01.
- ↑ Statement on IPv6 Address Privacy, Steve Deering & Bob Hinden, Co-Chairs of the IETF's IP Next Generation Working Group , 1999-11-06.
- ↑ IPv6: Privacy Extensions einschalten, Reiko Kaps, 2011-04-13
- ↑ Privacy Extensions (IPv6), Elektronik Kompendium.
- ↑ Neues Internet-Protokoll erschwert anonymes Surfen, Konrad Lischka, Spiegel Online, 2010-11-18.
[edytuj] Linki zewnętrzne
|
||||||||||||||