IPv6


IPv6/IPNG (ang. Internet Protocol version 6 / Internet Protocol Next Generation) - wersja protokołu IP, będąca następcą IPv4, do którego stworzenia przyczynił się w głównej mierze problem małej, kończącej się ilości adresów IPv4. Dodatkowymi zamierzeniami było udoskonalenie protokołu IP: eliminacja wad starszej wersji, wprowadzenie nowych rozszerzeń (uwierzytelnienie, zlikwidowanie konieczności stosowania translacji adresów i adresów prywatnych w wielu sieciach, kompresja i inne), zminimalizowanie czynności wymaganych do podłączenia nowego węzła do Internetu (autokonfiguracja).

IPv6 stanowi tylko jedną warstwę w modelu OSI - nie ingeruje on w inne warstwy, np. aplikacyjną, co pozwala działać istniejącym już protokołom zasadniczo bez problemów.

IPv6 opisują dokumenty RFC 1883 i RFC 1884.

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.

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 video), 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.

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

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

MLD (ang. Multicast Listener Discovery Protocol)

protokół komunikatów kontrolnych

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

Adresowanie hostów

W protokole IPv4, przestrzeń adresowa opisywana była za pomocą 32 bitów, pozwalając zaadresować 232 ≈ 4,3×109 węzłów, co odpowiada liczbie 8,42 adresów/km² powierzchni Ziemi. W protokole IPv6 rozmiar tej przestrzeni został zwiększony do 128 bitów co daje 2128 ≈ 3,4×1038 kombinacji. Odpowiada to liczbie 6,7×1017 adresów/mm² powierzchni Ziemi.

Adres reprezentowany jest w postaci heksadecymalnej, z dwukropkiem co 16 bitów, np. 2001:0DB8:0000:0000:0000:0000:1428:57AB.

Dozwolone jest skrócenie jednego bloku zer (nie dotyczy zer na końcach sekcji) na podwójny dwukropek, początkowe zera w grupach również mogą być opuszczane, w związku z czym poniższe sposoby zapisu są prawidłowe i równoznaczne sobie:

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

Sekwencja ostatnich 4 bajtów adresu może być również zapisana w postaci adresu IPv4, z wykorzystaniem kropek jako separatorów: adres ::ffff:1.2.3.4 jest równoznaczny adresowi ::ffff:102:304, jednak niewiele systemów pozwala na wprowadzanie tak podanych adresów.

Gdy jest to wymagane, do adresu może być dołączona maska sieci w notacji CIDR, np. 2002:0db8:1234::/48. Jeżeli natomiast zachodzi potrzeba podania portu docelowego (np. w adresie URL), adres IPv6 otaczany jest nawiasami kwadratowymi, np.:

http://[2001:0db8:85a3:08d3:1319:8a2e:0370:7344]:443/

Adresy specjalne

Następujące adresy i grupy adresów posiadają specjalne, zarezerwowane znaczenie:

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.

Budowa datagramu

Bity

0-3

4-7

8-11

12-15

16-19

20-23

24-27

28-31

0

Wersja

Priorytet

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

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 routery; 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 routowany 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.

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'.

Bieżąca wersja protokołu Internet Protocol (znanego jako protokół IP w wersji 4 lub IPv4) nie zmieniła się w istotny sposób od czasu opublikowania specyfikacji RFC 791 w 1981 roku.
32-bitowa przestrzeń adresowa wydawała się aż nadto duża do obsługi planowanego użytkowania Internetu. Burzliwy rozwój tej sieci spowodował jednak szybkie wyczerpanie się wolnych adresów.
Obecnie, gdy coraz więcej komputerów i urządzeń używa protokołu IP, zaistniała potrzeba zaprojektowania prostszej i bardziej zautomatyzowanej konfiguracji adresów i innych ustawień.
Z kolei komunikacja prywatna przez Internet wymaga również usług szyfrowania, które chronią przesyłane dane przed odczytywaniem i modyfikowaniem przez niepowołane osoby.
Z myślą o rozwiązaniu tych problemów, grupa robocza
Internet Engineering Task Force (IETF) opracowała zestaw protokołów i standardów znanych jako protokół IP w wersji 6 (IPv6), nazywany również IP-The Next Generation (IPng).
Protokół IPv6 to bezpołączeniowy, zawodny protokół wymiany datagramów, używany głównie do adresowania i rutowania pakietów między hostami. Protokół IPv6 zdefiniowan
o w specyfikacji RFC 2460, "Internet Protocol, Version 6 (IPv6) Specification".

1.2 Główne cechy

Nowy format nagłówka

Nagłówek IPv6 ma nowy format, który zaprojektowano w taki sposób, aby zminimalizować obciążenie związane z przetwarzaniem nagłówka (na ruterach pośrednich).
Nagłówki IPv4 i IPv6 nie współdziałają ze sobą i protokół IPv6 nie jest zgodny z protokołem IPv4. Aby host lub ruter rozpoznawał i przetwarzał oba formaty nagłówków, musi korzystać z implementacji zarówno protokołu IPv4, jak i IPv6.

Olbrzymia przestrzeń adresowa

Źródłowe i docelowe adresy IPv6 mają
128 bitów (dla porównana adresy IPv4 składają si˛e tylko z 32 bitów). Łatwo jest sprawdzić, że liczba wszystkich adresów IPv6 to liczba 39 cyfrowa (dla IPv4 tylko 10 cyfrowa)! Głównym celem zaprojektowania tak dużej przestrzeni adresowej protokołu IPv6 było umożliwienie tworzenia wielu poziomów podsieci i wielopoziomowej alokacji adresów.

Ułatwiona konfiguracja adresów

Dla uproszczenia konfiguracji hostów protokół IPv6 obsługuje zarówno konfigurację adresów przy obecności serwera DHCP, jak i bez serwera DHCP. W tym drugim przypadku hosty podłączone do łącza automatycznie konfigurują swoje adresy IPv6 dla tego łącza (adresy lokalne) oraz adresy, które uzyskują na podstawie prefiksów anonsowanych przez rutery lokalne. Nawet przy nieobecności rutera, hosty podłączone do tego samego łącza mogą automatycznie konfigurować dla siebie adresy lokalne dla łącza i komunikować się, bez konfiguracji ręcznej.

Wbudowane zabezpieczenia

Zaimplementowano zabezpieczenia protokołu internetowego (protokół
IPSec), które zapewniają ochronę danych IPv6 podczas ich przesyłania przez sieć.

Lepsza obsługa jakości usługi (QoS)

Nowe pola w nagłówku IPv6 określają, w jaki sposób pakiet jest obsługiwany i identyfikowany. Identyfikacja ruchu na podstawie pola Etykieta przepływu oraz Priorytetu w nagłówku IPv6 umożliwia ruterom zidentyfikowanie pakietów należących do przepływu i zapewnienie specjalnej obsługi tych pakietów. Przepływ jest serią pakietów między miejscem źródłowym a docelowym.

Nowy protokół interakcji między sąsiednimi węzłami

Protokół
Neighbor Discovery dla protokołu IPv6 jest serią komunikatów, które zarządzają interakcją między sąsiednimi węzłami.

Rozszerzalność

Protokół IPv6 można rozszerzać o nowe funkcje, dodając nagłówki rozszerzeń po nagłówku IPv6.

BUDOWA

Adresy IPv4 reprezentowane są w formie dziesiętno-kropkowej. 32 bitowy adres podzielony jest kropkami na 8 bitowe fragmenty, które konwertowane są do swojego dziesiętnego odpowiednika. Dla IPv6 128 bitowy adres dzieli się na 16 bitowe fragmenty dzielone dwukropkami. Każdy 16 bitowy blok konwertowany jest do 4-cyfrowego numeru w postaci szesnastkowej.
Oto 128-Bitowy adres IPv6 podzielony jest na 16 bitowe fragmenty:
0010000111011010 0000000011010011 0000000000000000 0010111100111011 0000001010101010 0000000011111111 1111111000101000 1001110001011010
Każdy 16-bitowy blok konwertowany jest do postaci szesnastkowej, ograniczony jest dwukropkiem. Oto rezultat:
21DA:00D3:0000:2F3B:02AA:00FF:FE28:9C5A
Reprezentacja IPv6 może zostać uproszczona poprzez usunięcie poprzedzających zer z każdego bloku 16-bitowego, przy czym każdy blok musi posiadać przynajmniej jeden znak. Po wyrzuceniu poprzedzających zer reprezentacja adresu wygląda następująco:
21DA:D3:0:2F3B:2AA:FF:FE28:9C5A
Niektóre typy adresów zawierają dłuższe sekwencje zer. Aby jeszcze bardziej uprościć adres IPv6, sąsiadujące sekwencje 16-bitowych bloków złożonych z zer w formacie szesnastkowym mogą zostać zapisane jako "
::". Przykładowo, adres typu link-local FE80:0:0:0:2AA:FF:FE9A:4CA2 może zostać skrócony do postaci FE80::2AA:FF:FE9A:4CA2. Kompresji zer można użyć tylko raz w danym adresie!
Prefiks w IPv6 pełni podobną funkcje jak maska w IPv4. Prefiks to liczba w systemie dziesiętnym, która informuje o ilości bitów przeznaczonych na "adres sieci", np. 21DA:D3:0:2F3B::/64

RODZAJE ADRESÓW

3.1 Unicast

Adres Unicast to adres pojedynczego interfejsu. Pakiet wyslany na ten adres, jest odbierany tylko przez ten interfejs. Typu adresów unicast:

 Główne adresy jednostkowe
Główne adresy unicast znane także jako adresy globalne identyfikowane są przez prefiks 001 i odpowiadają adresom publicznym IPv4. Trasowane są globalnie w całym internecie IPv6. Każdy gł
ówny adres jednostkowy (unicast) jest unikalny dla każdego punktu internetu IPv6.
Adres globalny może być stworzony "ręcznie" za pomocą odpowiedniego polecenia (np. ifconfig), "półautomatycznie" za pomocą prefiksu otrzymanego od specjalnego dae
mona radv, reszta adresu tworzona jest automatycznie. Ostatnia możliwość to otrzymanie adresu w całości od specjalnego "dostawcy" adresów IPv6 (DHCPv6).

 Adresy lokalne łącza (link-local)
Adresy typu
link-local, identyfikowane przez prefiks 1111 1110 10, używane są przez węzły w przypadku komunikowania się z sąsiednimi węzłami na tym samym łączu. Przykładowo, w prostej sieci IPv6 bez routera adresy link-local wykorzystywane są przez poszczególne hosty do komunikacji między sobą. Adres link-local wymagany jest do działania Neighbor Discovery i zawsze konfiguruje się automatycznie. Adresy link-local zawsze zaczynają sie od FE80. Router IPv6 nigdy nie przekazuje ruchu link-local poza łącze.
Jak powstaje taki adres?
Powstaje on na podstawie adresu sprzętowego
. Z adresu MAC 00-50-56-C0-00-01 powstaje adres IPv6 postaci fe80::0250:56ff:fec0:0001, poprzez zamianę siódmego bitu pierwszego bajtu adresu MAC.

 Adresy lokalne węzła (site-local)

Adresy typu site-local, identyfikowane przez prefiks 1111 1110 11 sa odpowiednikami prywatnej przestrzeni IPv4 (10.0.0.0/8, 172.16.0.0/12, oraz 192.168.0.0/16). Przykładowo, prywatny intranet nie posiadający bezpośredniego wpięcia do Internetu IPv6 może użyć adresów typu site-local bez konfliktu z głownymi adresami unicast. Adresy site-local nie są osiagalne z innych sieci a routery nie powinny przekazywać lokalnego ruchu poza sieć. Adresy site-local mogą stanowić dodatek do głównych adresów unicast. Zasięgiem adresów site-local jest dana sieć. W przeciwieństwie do adresów link-local, adresy site-local nie konfigurują się automatycznie i muszą zostać przypisane na drodze ręcznej bądź też automatycznej (DHCPv6) konfiguracji.

 Adresy Specjalne

3.2 Anycast

ANYCAST to adres grupy interfejsów. Adres IPv6 typu Anycast to adres przypisany do więcej niż jednego interfejsu (należący do różnych hostow), o właściwosci takiej, ze pakiet wysłany na ten adres jest przekazywany do najbliższego interfejsu posiadającego taki adres zgodnie z metryką protokołu rutingu. Przykładowe użycie tych adresów to przypisanie ich np. grupie routerów. Służyć może również jako adres "najbliższego" serwera DNS, "najbliższego" serwera DHCP, "najbliższej" mirrorowanej bazy danych. Adres typu ANYCAST nie może być użyty jako adres źródłowy, lecz tylko jako adres docelowy.
Przykład:
Unicastowy adres hosta:
3ffe:ffff:100:f101:210:a4ff:fee3:9566/64
Adres typu anycast najbliższego routera:
3ffe:ffff:100:f101::/64

3.3 Multicast

Multicast to adres grupy interfejsow. Pojedynczy interfejs moze należeć do dowolnej liczby grup interfejsow. Pakiet wysłany na adres multicastowy jest odbierany przez każdy interfejs należący do tej grupy. Adres multicast używany jest do komunikacji typu jeden-do-wielu dostarczając pakiety do wielu interfejsów. Adres anycast to komunikacja jeden-do-jednego-z-wielu dostarczający pakiet do pojedynczego interfejsu.Adresy grupowe IPv6 wyrażane są w FP(Format Prefix) jako 11111111. Łatwo jest uznać adres za grupowy dlatego że zawsze zaczyna się on od "FF". Adresy grupowe nie mogą być używane jako adresy źródłowe!
Zarezerwowane adresy multicast:

FF02::1 - multicastowy adres wszystkich interfejsów w sieci lokalnej.

FF02::2 - multicastowy adres wszystkich routerów w sieci lokalnej
Warto zauważyć brak adresu broad
cast!



4.1 ICMPv6

Protokół ICMPv6 jest wymagany przez IPv6, w przeciwieństwie do IPv4, gdzie ICMP jest opcjonalne. Główne zadania tego protokołu to sygnalizacja błędów transmisji IPv6 oraz inne cele diagnostyczne (np. echo). Protokół ten jest również używany przez protokoły Neighbor Discovery oraz MLD, czyli Multicast Listener Discovery.Wiadomość typu ICMPv6 jest oczywiście opakowana w nagłówek IPv6:

0x01 graphic


Typy wiadomości ICMPv6 (nie związane z protokołem ND, ani MLD):

Destination Unreachable

Packet Too Big

Time Exceeded

Parameter Problem

Echo Request

Echo Reply

4.2 ND

Protokół IPv6 Neighbor Discovery (ND) to zestaw komunikatów i procesów, które są używane do określania relacji między sąsiednimi węzłami. Protokół ND zastępuje komunikaty ARP oraz komunikaty ICMP Router Discovery i ICMP Redirect, które są używane w protokole IPv4, a ponadto oferuje dodatkową funkcjonalność.
Protokół ND jest używany do wykonywania następujących zadań:

 Wykrywanie sąsiednich routerów.

 Wykrywanie adresów, prefiksów adresów i innych parametrów konfiguracji interfejsów sieciowych.

 Anonsowanie swojej obecności, parametrów konfiguracji hosta i prefiksów wejściowych łączy.

 Informowanie hostów o lepszym adresie następnego przeskoku, którego można użyć do przesłania pakietów dalej w kierunku określonego miejsca docelowego (odpowiednik ICMP Redirect)

 Zarówno hosty, jak i routery rozpoznają adres warstwy łącza sąsiedniego węzła, do którego pakiet IPv6 jest przesyłany dalej, i wykrywają zmiany adresu warstwy łącza sąsiedniego węzła.

 Określanie, czy pakiety mogą być wysłane do sąsiedniego węzła i odebrane z niego.

 Ustawianie parametrów transmisji (np. MTU)

4.3 MLD

Protokół Multicast Listener Discovery (MLD) jest częścią protokołu ICMPv6 i następnikiem protokołu IGMP (Internet Group Management Protocol) dobrze znanego z IPv4. Główne zadania to znalezienie przez router członków grupy multicastowej oraz oraz ustalenie adresu multicastowego tej grupy. Jak wiemy multicast, zwany takze multiemisja, polega na tym, iż pakiet jest wysyłany na jeden adres, ale jest przetwarzany przez wiele hostów. Multiemisja przypomina subskrypcję biuletynów. Podobnie jak subskrybenci otrzymują biuletyn po jego opublikowaniu, komputery-hosty, które należą grupy multicastowej, odbierają i przetwarzają ruch wysłany na zarezerwowany adres grupy. Grupa hostów prowadzących nasłuch na określonym adresie multicast nazywa się grupą multicastową. Członkostwo w danej grupie jest dynamiczne, czyli hosty mogą w dowolnym momencie dołączyć do grupy i opuścić ją. Dołączanie do grupy odbywa się przez wysyłanie komunikatów członkostwa grupy za pomocą odpowiednich komunikatów MLD. Grupy nie są ograniczone rozmiarem, a dany host może wysyłać ruch na adres grupy, nawet jeśli nie należy do danej grupy.
Wyróżniamy 3 typy komunikatów MLD:

 Multicast Listener Query - ogólne zapytanie routera o adres multicastowy członków grup na adres FF02::1 lub zapytanie o hosty posiadające dany adres multicastowy na adres grupy

 Multicast Listener Report - wysłany przez hosta, kiedy chce dołączyć do danej grupy lub odpowiedź na komunikat MLD Multicast Listener Query wysłany przez router

 Multicast Listener Done - opuszczenie grupy na adres wszystkich routerów FF02::2.
Komunikaty MLD wysyłane są jako komunikaty ICMP o odpowiednim typie.


5.1 Różnice

Nagłówek datagramów protokołu IP w wersji 6 uległ zmianom. Polegają one głównie na zapewnieniu obsługi adresów 128-bitowych oraz usunięciu pól nieaktualnych i zbędnych.

0x01 graphic


Nagłówek IPv4 = 20 oktetów + opcje (4 oktety), 13 pól
Nagłówek IPv6 = 40 oktetów, 8 pól

Ogólna postać datagramu IPv6
Datagram IP ma nagłówek podstawowy o ustalonym rozmiarze, po którym następuje zero lub więcej nagłówków dodatkowych poprzedzających dane.

0x01 graphic

5.2 Nagłówek podstawowy

0x01 graphic


Version - numer wersji; 4 bity.

Priorytet (Traffic Class) - definiuje kolejność transmisji; 4 bity.
Najpierw jest określany ogólnie, przez podział na klasy, a następnie dokładniej, za pomocą identyfikatora w obrębie danej klasy. Datagramy dzieli się na dwie klasy -
z kontrolą przeciążenia (congestion-controlled) lub bez kontroli przeciążenia (non-congestion-controlled).
Datagram
z kontrolą przeciążenia reaguje na przeciążenie sieci. Może w takiej sytuacji zostać spowolniony i tymczasowo przetrzymany w buforze do momentu likwidacji zatoru. Posiadają priorytety od 0 do 7.
Datagramy
bez kontroli przeciążenia są zawsze kierowane do celu przed pozostałymi. Posiadają priorytety od 8 do 15.

Etykieta przepływu - żądanie specjalnego trybu obsługi pakietu; 24 bity.
Pomaga identyfikować komputery docelowe dla potrzeb dużych transferów, co zwiększa wydajność buforowania podczas wyboru marszruty (rutingu) między komputerem źródłowym a docelowym.

Przykład:
Komputer pracujący w systemie Windows jest podłączony do serwera UNIX z innej sieci, do którego wysyła dużą liczbę datagramów. Ustawienie określonej wartości etykiety przepływu dla wszystkich przesyłanych datagramów powoduje, że rutery po drodze do serwera mogą w buforach wyboru marszruty złożyć pozycję wskazującą na trasę kierowania datagramów o tej samej etykiecie. Po przybyciu kolejnych datagramów o tej samej etykiecie, ruter nie będzie musiał ponownie obliczać marszruty - wystarczy mu sprawdzenie bufora i wydobycie z niego zapisanych informacji. Efektem jest zwiększenie szybkości przechodzenia datagramów przez każdy ruter.

Zbytniemu rozrostowi bufora urządzenia wyboru marszruty oraz przetrzymywaniu przez niego informacji zdezaktualizowanych zapobiega przechowywanie zawartości przez najwyżej sześć sekund. Jeżeli w ich trakcie nie nastąpi odbiór datagramu o tej samej etykiecie przepływu, pozycja bufora zostanie usunięta.
Aby zapobiec powtórzeniom wartości, komputer wysyłający musi poczekać sześć sekund przed zastosowaniem tej samej etykiety dla innego miejsca przeznaczenia.

Pola Priorytet oraz Etykieta przepływu są przewidziane do realizacji zadań w ramach QoS (Quality of Service).

Długość pola danych - określa całkowitą długość datagramu IP w bajtach, bez samego nagłówka; 16 bitów.
Wartość maksymalna wynosi 65536, jednak dzięki nagłówkom rozszerzającym będzie można wysyłać datagramy większe.

Next Header - określa typ nagłówka występującego zaraz po nagłówku IPv6; 8 bitów.
Służy do identyfikacji pola nagłówka dodatkowego (rozszerzającego).

Limit skoków - określa maksymalną liczbę skoków datagramu; 8 bitów.
Określa liczbę segmentów sieci, przez które może przejść pakiet, zanim zostanie odrzucony przez ruter. Limit przeskoków jest ustawiany przez hosta nadawczego i zapobiega nieskończonemu krążeniu pakietów po sieci IPv6. Każde przekazanie datagramu dalej powoduje zmniejszenie jej o jeden. Po osiągnięciu wartości zero datagram jest odrzucany. Maksymalna liczba to 256.

5.3 Nagłówki rozszerzające

IPv6 obejmuje między innymi mechanizmy takie jak fragmentacja, trasowanie według nadawcy czy uwierzytelnianie. Przyjęcie w nagłówku datagramu ustalonych pól dla wszystkich tych mechanizmów jest nieefektywne, gdyż większość datagramów nie korzysta z nich.
Protokół IPv6 umożliwia dołączanie do nagłówka podstawowego nagłówków dodatkowych.

0x01 graphic


Działanie to może być konieczne przy braku możliwości prostego wyboru marszruty do celu

0x01 graphic


lub w sytuacji wymagania przez datagram specjalnych usług, np. uwierzytelniania.

0x01 graphic


Model nagłówków dodatkowych IPv6 działa podobnie do opcji IPv4 - nadawca może zadecydować, które nagłówki dołączyć do danego datagramu, a których nie. Do jednego nagłówka IP można dodać kilka rozszerzeń, przy czym pole następnego nagłówka każdego z nich będzie wskazywało na kolejne.
Isnieją różne typy nagłówków rozszerzających, identyfikowanych przez wartość pola następnego nagłówka, znajdującego się w nagłówku IP.
Dotychczas zdefiniowane wartości zawiera dokument
RFC-1700, niektóre z nich to:

0 - "skok po skoku" (hop-by-hop)
1 - ICMP
2 - IGMP
4 - IP
6 - TCP
17 - UDP
43 - SIP-SR, Wybór marszruty
44 - SIP-FRAG, Fragmentacja
45 - IDRP, Wybór marszruty między domenami
46 - RSVP, Rezerwacja zasobów
50 - SIPP-ESP, Zamykanie zabezpieczeń
51 - SIPP-AH, Uwierzytelnianie
...
255

Przykład nagłówka rozszerzeń

Trasowanie według nadawcy
Przydatne do sterowania wyborem marszruty datagramu przez komputer wysyłający, a nie przez rutery.

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

| Nast. Nagłówek | Typ Wyzn. Tras | Liczba adresów | Nast. adres |

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

| Zarezerwowane |

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

| |

+ +

| |

+ Adres[1] +

| |

+ +

| |

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

| |

+ +

| |

+ Adres[2] +

| |

+ +

| |

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

. . .

. . .

. . .

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

| |

+ +

| |

+ Adres[n] +

| |

+ +

| |

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

Nagłówek zawiera listę adresów, która określa pośrednie rutery, przez które datagram musi przejść. Pole Liczba Adresów służy do określenia całkowitej liczby adresów na liście, a pole Następny Adres - następnego adresu, pod który datagram powinien zostać wysłany.





WINDOWS

6.1 Implementacje

Microsoft wydał do tej pory dwie implementacje protokołu IPv6: "The Microsoft Research IPv6 implementation" oraz "Microsoft IPv6 Technology Preview for Windows 2000" (Ms IPv6 TP). Implementacja IPv6 zawarta w Windows XP, wykorzystuje te same narzędzia i aplikacje, co "Ms IPv6 TP".
Oficjalnie Microsoft nie wspiera Windows 9x, ME oraz CE.

6.2 Instalacja

Instalacja polega na wydaniu komendy:

ipv6 install

w wierszu poleceń. Instalowane są wtedy wszystkie składniku (biblioteki i programy) niezbędne do obsługi protokołu IPv6.

6.3 Pseudointerfejsy

6.3.1 Loopback

Interfejs 1 jest pseudointerfejsem używanym dla sprzężenia zwrotnego (nazywany jest pseudointerfejsem sprzężenia zwrotnego).

6.3.2 ISATAP

Interfejs 2 jest pseudointerfejsem używanym dla automatycznego tunelowania (nazywany jest pseudointerfejsem automatycznego tunelowania).0x01 graphic

::206.123.31.101

6.3.3 6to4

Interfejs 3 jest zazwyczaj pseudointerfejsem używanym dla tunelowania 6to4 (nazywany jest pseudointerfejsem tunelowania 6to4). Usługa 6to4 umożliwia podsieciom rozpoznającym protokół IPv6 komunikowanie się przy użyciu protokołu IPv6 przez infrastrukturę IPv4 (na przykład Internet).

0x01 graphic



Inne interfejsy są numerowane zgodnie z kolejnością, w jakiej są tworzone.
Pseudointerfejsy sprzężenia zwrotnego, automatycznego tunelowania i tunelowania 6to4 nie używają protokołu IPv6 Neighbor Discovery.

6.4 Narzędzia

W implementacji "Ms IPv6 TP" dostępne mamy następujące narzędzia do pracy z protokołem IPv6:

6.4.1 ipv6.exe

ipv6.exe - podstawowe narzędzie służące do konfiguracji protokołu oraz wyświetlania jego stanu.

ipv6 if [numer interfejsu]

- wyświetla informacje o podanym interfejsie lub o wszystkich, jeśli zostaje użyte bez parametru. W wyniku otrzymujemy następujące informacje:

Przykładowy listing:

Interfejs 4: Ethernet: Połączenie lokalne

{0872CE0F-9A48-4089-B68C-C3B5B85AD39A}

używa Odnalezienia sąsiadów

używa Odnalezienia routera

adres warstwy łącza: 00-0a-e6-3f-ca-01

preferred link-local fe80::20a:e6ff:fe3f:ca01, istnienie infinite

multiemisja interface-local ff01::1, 1 refs, nie do raportowania

multiemisja link-local ff02::1, 1 refs, nie do raportowania

multiemisja link-local ff02::1:ff3f:ca01, 1 refs, ostatni reporter

MTU łącza 1500 (MTU prawdziwego łącza 1500)

aktualny limit przeskoków 128

osiągalny czas 34500 ms (podstawowy 30000 ms)

interwał retransmisji 1000 ms

Przesłania DAD 1

ipv6 ifd IndeksInterfejsu

- usuwa podany interfejs

ipv6 adu IndeksInterfejsu/Adres [life] [anycast / unicast]

- dodaje albo usuwa adres ipv6, przypisany do odpowiedniego interfejsu. Ustala jego czas życia (w sekundach), jeśli parametr life nie jest określony czas życia jest nieskończony. Dla adresów typu anycast możliwymi wartościami parametru life są zero lub nieskończoność.
Podając parametr life równy 0 usuwamy interfejs:

ipv6 adu 4/fe80::20a:e6ff:fe3f:ca01 life 0

ipv6 rc [IndeksInterfejsu Adres]

- wyświetla bufor tras.

ipv6 rcf [IndeksInterfejsu [Adres]]

- usuwa określony wpis z bufora tras.

ipv6 nc [IndeksInterfejsu [Adres]]

- wyświetla bufor sąsiedztwa.

ipv6 ncf [IndeksInterfejsu [Adres]]

- usuwa określony wpis z bufora sąsiedztwa.

ipv6 [-v] rt

- wyświetla stan tablic rutingu

ipv6 rtu Prefiks IndeksInterfejsu[/AdresNastępnegoPrzeskoku]

- dodaje trasy (ruting) IPv6
Parametr Prefiks jest prefiksem trasy.
Parametr IndeksInterfejsu jest numerem interfejsu.
Parametr AdresNastępnegoPrzeskoku jest adresem rutera lokalnego.

ipv6 ppt

- wyświetla tabelę zasad prefiksów. Tabela zasad prefiksów służy do określania zasad wyboru adresu źródłowego i docelowego.

ipv6 ppu Prefiks precedence Priorytet srclabel WartośćEtykietyŹródłowej

[dstlabel WartośćEtykietyDocelowej]

- aktualizuje tabelę zasad prefiksów przy użyciu zasady, która określa priorytet, wartość etykiety źródłowej (WartośćEtykietyŹródłowej) i wartość etykiety docelowej (WartośćEtykietyDocelowej). Pozycje w tabeli zasad prefiksów mogą modyfikować sposób wybierania adresu źródłowego i docelowego.

ipv6 gp

- wyświetla wartości globalnych parametrów dla protokołu IPv6.

ipv6 [-p] gpu Parametr Wartość

- ustawia wartości globalnych parametrów dla protokołu IPv6. Opcja -p zapisuje ustawienia w rejestrze systemowym.

ipv6 renew [IndeksInterfejsu]

- odświeża konfigurację IPv6.

ipv6 ifc IndeksInterfejsu [Atrybut]

- konfigurowanie atrybutów interfejsu.
gdzie parametr IndeksInterfejsu jest numerem interfejsu, a parametr Atrybut jest jednym lub kilkoma z następujących atrybutów:
forwards
Włącza przesyłanie dalej pakietów odebranych na danym interfejsie.

-forwards
Wyłącza przesyłanie dalej pakietów odebranych na danym interfejsie.

advertises
Włącza dla interfejsu wysyłanie komunikatów Anons rutera.

-advertises
Wyłącza dla interfejsu wysyłanie komunikatów Anons rutera.

mtu Bajty
Ustawia rozmiar maksymalnej jednostki transmisji (w bajtach) dla łącza. Rozmiar ten jest wysyłany jako opcja MTU w komunikacie Anons rutera.

site IdentyfikatorWitryny
Ustawia identyfikator dla witryny. Identyfikator witryny umożliwia odróżnienie interfejsów należących do różnych regionów administracyjnych, które używają adresów lokalnych dla witryny.

6.4.2 ping6.exe

Służy do testowania łączności między hostami.
Aby wysłać pakiety ping na lokalny adres innego węzła podłączonego do tej samej podsiecią:

ping6 Adres%IDzakresu

gdzie parametr Adres jest lokalnym adresem innego węzła, a parametr IDzakresu jest indeksem interfejsu, z którego chcemy wysłać pakiety.

Aby wysłać pakiety ping na adres globalny innego węzła:

ping6 Adres

gdzie parametr Adres jest adresem globalnym innego węzła.

Aby wysłać pakiety ping do innego węzła, używając jego nazwy:

ping6 Nazwa

gdzie parametr Nazwa jest nazwą, która może być przetłumaczona na adres IPv6 na podstawie wpisów w lokalnym pliku Hosts lub na podstawie rekordów systemu nazw domen (DNS, Domain Name System).

Aby wysłać pakiety ping na adres innego węzła zgodny z IPv4:

ping6 ::AdresIPv4

gdzie parametr AdresIPv4 jest adresem innego węzła zgodnym z IPv4.

6.4.3 tracert6.exe

Pozwala śledzić ścieżkę przechodzenia pakietów.

tracert6 NazwaHosta

lub polecenie:

tracert6 AdresIPv6%IDzakresu

gdzie: Parametr NazwaHosta jest nazwą hosta komputera zdalnego.
Parametr AdresIPv6 jest adresem IPv6 komputera zdalnego.
Parametr IDzakresu jest identyfikatorem (ID) zakresu dla adresu docelowego.

6.4.4 pathping.exe

pathping -6 [NazwaHosta | AdresIPv6%IDzakresu]

Zapewnia informacje dotyczące czasu oczekiwania w sieci i strat sieciowych podczas przeskoków pośrednich między lokalizacją źródłową i lokalizacją docelową. Polecenie pathping wysyła wiele komunikatów żądań echa do poszczególnych routerów znajdujących się między lokalizacją źródłową i lokalizacją docelową w określonym czasie, a następnie oblicza wyniki na podstawie pakietów zwróconych przez poszczególne routery. Polecenie pathping wyświetla stopień utraty pakietów na określonym routerze lub łączu, pozwalając ustalić routery lub łącza, które mogą być przyczyną problemów sieciowych.

6.5 Odinstalowanie

Wydanie komendy:

ipv6 uninstall

usuwa obsługę protokołu IPv6 z systemu.





LINUX

0x01 graphic

LINUX

0x01 graphic

7.1 Instalacja

W celu sprawdzenia czy jądro linuksa wspiera IPv6, można użyc wirtualnego systemu plików Procfs i poszukać pliku /proc/net/if_inet6. Jeżeli tego pliku nie ma, to prawdopodobnie moduł ipv6 nie został załadowany. Ładujemy go poleceniem:

# modprobe ipv6

7.2 IPv6 ping

Program ten wchodzi w skład pakietu iputils. Został zaprojektowany do wysyłania pakietów ICMPv6 echo-request i oczekiwania na odpowiedź ICMPv6 echo-reply. Użycie:

# ping6 <hostwithipv6address>

# ping6 <ipv6address>

# ping6 [-I <device>] <link-local-ipv6address>

Przykład:

# ping6 -c 1 ::1

PING ::1(::1) from ::1 : 56 data bytes

64 bytes from ::1: icmp_seq=0 hops=64 time=292 usec

--- ::1 ping statistics ---

1 packets transmitted, 1 packets received, 0% packet loss

round-trip min/avg/max/mdev = 0.292/0.292/0.292/0.000 ms

Jeżeli używamy ping6 do adresów typu link-local, jądro nie wie przez który interfejs wysłać pakiet. Dlatego musimy to wyspecyfikować wywołując polecenie ping6 z odpowiednim parametrem:

# ping6 -I eth0 -c 1 fe80::2e0:18ff:fe90:9205

PING fe80::212:23ff:fe12:3456(fe80::212:23ff:fe12:3456) from

? fe80::212:34ff:fe12:3478 eth0: 56 data bytes

64 bytes from fe80::212:23ff:fe12:3456: icmp_seq=0 hops=64 time=445 usec

--- fe80::2e0:18ff:fe90:9205 ping statistics ---

1 packets transmitted, 1 packets received, 0% packet loss round-trip

? min/avg/max/mdev = 0.445/0.445/0.445/0.000 ms

Jeżeli nie podamy interfejsu, komenda ping6 zwróci błąd:

# ping6 fe80::212:34ff:fe12:3456

connect: Invalid argument

Jedną z cech ping6 jest możliwość wykrycia wszystkich aktywnych hostów ipv6 na łączu. Wystarczy wysłać ICMPv6 echo-request na adres multicastowy ff02::1.

# ping6 -I eth0 ff02::1

PING ff02::1(ff02::1) from fe80:::2ab:cdff:feef:0123 eth0: 56 data bytes

64 bytes from ::1: icmp_seq=1 ttl=64 time=0.104 ms

64 bytes from fe80::212:34ff:fe12:3450: icmp_seq=1 ttl=64 time=0.549 ms (DUP!)

7.3 IPv6 traceroute6

Polecenie traceroute6 to odpowiednik polecenia traceroute z IPv4. Przykład:

# traceroute6 www.6bone.net

traceroute to 6bone.net (3ffe:b00:c18:1::10) from 3ffe:ffff:0000:f101::2, 30

hops max, 16 byte packets

1 localipv6gateway (3ffe:ffff:0000:f101::1) 1.354 ms 1.566 ms 0.407 ms

2 swi6T1-T0.ipv6.switch.ch (3ffe:2000:0:400::1) 90.431 ms 91.956 ms 92.377 ms

3 3ffe:2000:0:1::132 (3ffe:2000:0:1::132) 118.945 ms 107.982 ms 114.557 ms

4 3ffe:c00:8023:2b::2 (3ffe:c00:8023:2b::2) 968.468 ms 993.392 ms 973.441 ms

5 3ffe:2e00:e:c::3 (3ffe:2e00:e:c::3) 507.784 ms 505.549 ms 508.928 ms

6 www.6bone.net (3ffe:b00:c18:1::10) 1265.85 ms * 1304.74 ms

7.4 IPv6 tracepath6

Polecenie tracepath6, działa podobnie jak traceroute6, dotatkowo podaje również MTU na całej trasie.

# tracepath6 www.6bone.net

1?: [LOCALHOST] pmtu 1480

1: 3ffe:401::2c0:33ff:fe02:14 150.705ms

2: 3ffe:b00:c18::5 267.864ms

3: 3ffe:b00:c18::5 asymm 2 266.145ms pmtu 1280

3: 3ffe:3900:5::2 asymm 4 346.632ms

4: 3ffe:28ff:ffff:4::3 asymm 5 365.965ms

5: 3ffe:1cff:0:ee::2 asymm 4 534.704ms

6: 3ffe:3800::1:1 asymm 4 578.126ms !N

Resume: pmtu 1280

7.5 Nadawanie adresu IPv6

Podobnie jak w IPv4 do przypisania adresu do interfejsu uzywamy polecenia ifconfig, w postaci:

# /sbin/ifconfig <interface> inet6 add <ipv6address>/<prefixlength>

np.

/sbin/ifconfig eth0 inet6 add 3ffe:ffff:0:f101::1/64

Również za pomocą ifconfig mozemy wyświetlić wszystkie adresy IP przypisane do danego interfejsu, np.:

# /sbin/ifconfig eth0 |grep "inet6 addr:"

inet6 addr: fe80::210:a4ff:fee3:9566/10 Scope:Link

inet6 addr: 3ffe:ffff:0:f101::1/64 Scope:Global

inet6 addr: fec0:0:0:f101::1/64 Scope:Site

Jak widzimy w powyższym przykładzie, interfejs eth0 ma przypisane 3 adresy ipv6 o zasiegu link-local, globalnym oraz site-local.

7.6 Routing

Do wyświetlenia tablicy routingu używamy polecenie route z odpowiednim przełącznikiem:

# /sbin/route -A inet6

Przykładowy listing:

# /sbin/route -A inet6 |grep -w "eth0"

3ffe:ffff:0:f101 ::/64 :: UA 256 0 0 eth0 - Interface route for global address

fe80::/10 :: UA 256 0 0 eth0 - Interface route for link-local address

ff00::/8 :: UA 256 0 0 eth0 - Interface route for all multicast addresses

::/0 :: UDA 256 0 0 eth0 - Automatic default route

Również za pomocą polecenia route można zmieniać tablicę routingu, np. dodając nowy wpis:

# /sbin/route -A inet6 add <network>/<prefixlength> dev <device>

lub usuwając istniejący wpis:

# /sbin/route -A inet6 del <network>/<prefixlength> dev <device>

7.7 Neighbor Discovery

Informacje o "sąsiadach" mozna wyświetlić za pomocą polecenia ip:

# ip -6 neigh show [dev <device>]

Przykładowe wywołanie tego polecenia:

# ip -6 neigh show

fe80::201:23ff:fe45:6789 dev eth0 lladdr 00:01:23:45:67:89 router nud reachable

Polecenie ip pozwala również na dodawanie bądź usuwanie wpisów z tablicy sąsiadów.

7.8 Serwery wspierające IPv6

Strona 17 z 19



Wyszukiwarka

Podobne podstrony:
5a 6 5 2 5 Lab Rozwiązywanie problemów związanych z trasami statycznymi IPv4 oraz IPv6
IPv4 oraz IPv6, Prace - dokumenty
8 2 5 4 Lab Identifying IPv6?dresses
lab2 IPv6
IPv6 2 Datagram IPv6
IPv6
8 2 5 5 Lab Configuring IPv6?dresses on Network?vices
IP v 6, IPv6
Protokol internetowy IPv6
IPv6 4 Neighbor Discovery
IPv6 r6
0 0 0 2 Lab Installing the IPv6 Protocol with Windows XP
Czy IPv6 SEIP2013
8 3 2 8 Packet Tracer Troubleshooting IPv4 and IPv6?dressing Instructions
IPv6 3 ICMPv6
IPV6 RIP
8 3 2 5 Packet Tracer Verifying IPv4 and IPv6?dressing Instructions
8 2 5 4 Lab Identyfikowanie adresow IPv6 id (2)
IPv6 Lekturka

więcej podobnych podstron