PROTOKÓL IPv6 Zmiany w porównaniu z wersja 4: zwiekszenie wielkosci pola adresu IP z 32 do 128 bitów; dzieki temu otrzymuje sie mozliwosc polepszenia hierarchii adresowej, zwiekszenia liczby adresów dla wezlów sieci i uproszczenie auto-konfiguracji adresów, dodanie pola scope do adresów multicastowych, wprowadzenie adresu anycast dla wysylania pakietów do jednego z czlonków grupy wezlów, uproszczenie formatu naglówka zwiekszenie obszaru przeznaczonego na adresy czterokrotnie spowodowalo zwiekszenie rozmiaru naglówka tylko dwukrotnie, wprowadzenie zmian w sposobie kodowania opcji w naglówku; uzyskuje sie dzieki nim bardziej efektywny forwarding, zmniejszenie wymagan na wielkosc opcji i wieksze mozliwosci wprowadzania nowych opcji w przyszlosci, wprowadzenie mozliwosci oznaczania pakietów nalezacych do danego strumienia flaga QoS; nadawca moze zazyczyc sobie w ten sposób specjalnego traktowania (np. real-time service), wprowadzenie definicji rozszerzen, które zapewniaja mozliwosci authentication i privacy. 1
Protokól IPv6 sklada sie z dwóch czesci:?? zwyklego naglówka IPv6?? naglówków rozszerzajacych (extension headers). Format naglówka: Version Prior Flow Label Payload Length Next Header Hop Limit + + + Source Address + + + + + + Destination Address + + + Ver 4-bitowy numer IP = 6 Prio 4-bitowa wartosc priorytetu Flow Label pole 24-bitowe Payload Length 16-bitowe pole unsigned int. Dlugosc reszty pakietu za naglówkiem IPv6, w oktetach. Zero oznacza, ze dlugosc pakiety znajduje sie w opcji Jumbo Payload Next Hdr 8-bitowy selektor typu naglówka znajdujacego sie zaraz za naglówkiem IPv6. Wartosci takie same jak w IPv4 Hop Limit 8-bitowy unsigned int. Zmniejszane o jeden przez kazdy wezel na drodze od zródla do przeznaczenia. Pakiet jest odrzucany, gdy Hop Limit zrobi sie 0 Source Address 128-bitowy adres nadawcy pakietu Destination Address 128-bitowy adres odbiorcy (jezeli jest naglówek Routing Header, to nie jest to odbiorca ostateczny) 2
Naglówki rozszerzajace Opcje IPv6 umieszczane sa w osobnych naglówkach rozszerzajacych (extension headers) pomiedzy naglówkiem IPv6 i naglówkiem warstwy transportowej. Wiekszosc naglówków rozszerzajacych nie jest czytana przez routery posredniczace w przekazywaniu pakietu do odbiorcy. W wersji 4 wszystkie opcje musialy byc czytane przez wszystkie routery. Wielkosc naglówków rozszerzajacych nie jest niczym ograniczona; dlugosc wszystkich opcji w pakiecie nie jest ograniczona do 40 bajtów. Wszystkie opcje maja dlugosc bedaca wielokrotnoscia osmiu oktetów. Do tej pory zdefiniowano nastepujace rozszerzenia: Routing Fragmentation Authentication Encapsulation Hop-by-Hop Option Destination Options 3
Adresacja Adresy IPv6 sa liczbami 128-bitowymi i stanowia identyfikatory dla poszczególnych interfejsów lub zestawów interfejsów. Adresy sa przydzielane do interfejsów, a nie do wezlów sieci. Istnieja trzy typy adresów IPv6:?? unicast,?? anycast?? multicast. Adres unicast identyfikuje pojedynczy interfejs. Adres anycast identyfikuje grupe interfejsów tak, ze pakiet wyslany na adres anycastowy trafi do jednego z interfejsów z grupy. Adres multicast identyfikuje grupe interfejsów tak, ze pakiet wyslany na adres multicastowy trafi do wszystkich czlonków grupy. W IPv6 nie ma adresów broadcastowych. 128-bitowe pole adresowe powinno na jakis czas wystarczyc: na jeden metr kwadratowy powierzchni Ziemi wypada po 665 570 793 348 866 943 898 599 adresów. W praktyce wprowadza sie tzw. hierarchie adresowe, które troche zmniejszaja stopien wykorzystania przestrzeni adresowej. W najbardziej pesymistycznym przypadku daje to jednak 1 564 adresy na metr kwadratowy. 4
Konwencje tekstowego reprezentowania adresów IPv6: 1) Preferowana forma x:x:x:x:x:x:x:x, gdzie x jest jedna z osmiu liczb 16-bitowych zapisanych w postaci szesnastkowej, np. FEDC:BA98:7654:3201:FEDC:BA98:7654:3210 1080:0:0:0:8:800:200C:417A (nie jest konieczne zapisywanie zer na poczatku kazdej z liczb szesnastkowych; na kazdej pozycji natomiast musi byc co najmniej jedna cyfra). 2) Skrócona forma dla uproszczenia zapisywania adresów zawierajacych dlugie lancuchy zer wprowadzono skrót: ::, oznaczajacy pojawienie sie kilku, nastepujacych po sobie 16-bitowych zer. Znak :: moze wystapic tylko raz w zapisie adresu; mozna go uzywac zarówno na poczatku, jak i na koncu zapisu, np. 1080:0:0:0:8:800:200C:417A adres unicastowy FF01:0:0:0:0:0:0:43 adres multicastowy 0:0:0:0:0:0:0:1 adres loopback 0:0:0:0:0:0:0:0 adres unspecified mozna zapisac jako: 1080::8:800:200C:417A FF01::43 ::1 :: 3) W srodowiskach, w których operuje sie adresami obu typów (IPv6 i IPv4) mozna stosowac forme x:x:x:x:x:x:d.d.d.d, gdzie x oznacza 16-bitowa liczbe w zapisie szesnastkowym, a d zapis dziesietny jednej z czterech 8-bitowych, najmniej znaczacych liczb w adresie (standardowy zapis IPv4), np. 0:0:0:0:0:0:13.1.68.3 ::FFFF:129.144.52.38 5
Typ adresu. Jest on determinowany przez poczatkowe bity. Pole (o zmiennej dlugosci) nazywa sie Format Prefix (FP). Zarezerwowane prefiksy: Allocation Prefix(binary) Fraction of Address Space Reserved 0000 0000 1/256 Unassigned 0000 0001 1/256 Reserved for NSAP Allocation 0000 001 1/128 Reserved for IPX Allocation 0000 010 1/128 Unassigned 0000 011 1/128 Unassigned 0000 1 1/32 Unassigned 0001 1/16 Unassigned 001 1/8 Provider-Based Unicast Address 010 1/8 Unassigned 011 1/8 Reserved for Neutral-Interconnect-Based Unicast Addresses 100 1/8 Unassigned 101 1/8 Unassigned 110 1/8 Unassigned 1110 1/16 Unassigned 1111 0 1/32 Unassigned 1111 10 1/64 Unassigned 1111 110 1/128 Unassigned 1111 1110 0 1/512 Link Local Use Addresses 1111 1110 10 1/1024 Site Local Use Addresses 1111 1110 11 1/1024 Multicast Addresses 1111 1111 1/256 6
Klasy adresów unicastowych Unspecified Address adres 0:0:0:0:0:0:0:0 nie moze byc przydzielony zadnemu wezlowi. Oznacza brak adresu (np. moze byc uzyty w polu Source Address datagramu IPv6 przez hosta, który jeszcze nie zna swojego adresu IP) Loopback Address adres 0:0:0:0:0:0:0:1 moze byc uzyty przez wezel do przesylania datagramów do samego siebie. Provider Based Unicast Addresses uzywane w komunikacji globalnej. 3 n bits m bits o bits p bits o-p bits +---+-----------+-----------+-------------+---------+----------+ 010 REGISTRY ID PROVIDER ID SUBSCRI,BER ID SUBNET ID INTF. ID +---+-----------+-----------+-------------+---------+----------+ Local-Use Addresses ten adres jest widziany tylko wewnatrz podsieci badz sieci subskrybenta. Moga byc unikalne globalnie (gdy subskrybent spodziewa sie przylaczenia do Internetu) lub lokalnie. Wyróznia sie dwa rodzaje adresów Local-Use: Link-Local-Use (adresacja w obrebie jednej sieci single link) 10 bits n bits 118-n bits +----------+-------------------------+----------------------------+ 1111111010 0 INTERFACE ID +----------+-------------------------+----------------------------+ oraz adresy Site-Local-Use: 10 bits n bits m bits 118-n-m bits +----------+---------+---------------+----------------------------+ 1111111011 0 SUBNET ID INTERFACE ID +----------+---------+---------------+----------------------------+ 7
IPv6 Addresses with Embedded IPv4 Addresses w celu stopniowego przejscia na nowa wersje systemu potrzebna jest mozliwosc przenoszenia adresów IPv6 przez infrastrukture oparta na IPv4 (technika tunnelingu ). Wezlom przydziela sie specjalne adresy IPv6 w 32 najmniej znaczacych bitach (IPv4-compatible IPv6 address) o formacie: 80 bits 16 32 bits +--------------------------------------+--------------------------+ 0000...0000 0000 IPV4 ADDRESS +--------------------------------------+----+---------------------+ Drugi rodzaj adresu z tej serii to taki, który zawiera adres IPv4 jako adres IPv6 (IPv4-mapped IPv6 address) o formacie: 80 bits 16 32 bits +--------------------------------------+--------------------------+ 0000...0000 FFFF IPV4 ADDRESS +--------------------------------------+----+---------------------+ 8
Adresy anycastowe?? przypisany wiecej niz jednemu interfejsowi w sieci?? moze korzystac ze wszystkich formatów zdefiniowanych dla adresów unicastowych?? nie moze byc uzyty jako adres zródla w pakiecie IPv6; nie moze byc równiez przydzielony hostowi jedynie routerowi. 9
Adresy multicastowe Identyfikator grupy wezlów. Format adresu: 8 4 4 112 bits +--------+----+----+----------------------------------------------+ 11111111 flgs scop group ID +--------+----+----+----------------------------------------------+ 11..111 na poczatku oznaczaja, ze adres jest adresem multicastowym.?? flgs jest zestawem czterech flag : 0 0 0 T. Trzy najstarsze bity sa zarezerwowane, bit T=0 oznacza, ze adres jest nadany przez globalna internetowa organizacje przydzielajaca numery i jest staly ( well known ); T=1 oznacza adres niestaly ( transient ).?? scop jest 4-bitowym polem sluzacym do ograniczenia zasiegu grupy multicastowej. Wartosci: 0 zarezerwowane 1 node-local scope 2 link-local scope 3 (unassigned) 4 (unassigned) 5 site-local scope 6 (unassigned) 7 (unassigned) 8 organization-local scope 9 (unassigned) A (unassigned) B (unassigned) C (unassigned) D (unassigned) E global scope F reserved?? group ID identyfikuje grupe multicastowa w danym zasiegu. 10
ICMPv6 Format komunikatów Komunikaty ICMPv6:?? komunikaty o bledach?? komunikaty informacyjne (kontrolne). Ogólny format komunikatu ICMPv6: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 Type Code Checksum + Message Body + 11
Komunikaty o bledach Komunikat Destination Unreachable 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 Type Code Checksum Unused As much of invoking packet + as will fit without the ICMPv6 packet + exceeding 576 octets Komunikat Packet Too Big 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 Type Code Checksum MTU As much of invoking packet + as will fit without the ICMPv6 packet + exceeding 576 octets Komunikat Time Exceed 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 Type Code Checksum Unused As much of invoking packet + as will fit without the ICMPv6 packet + exceeding 576 octets Komunikat Parametr Problem 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 Type Code Checksum Pointer As much of invoking packet + as will fit without the ICMPv6 packet + exceeding 576 octets 12
Komunikaty informacyjne (kontrolne) Komunikat Echo Request 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 Type Code Checksum Identifier Sequence Number + Data + Komunikat Echo Reply 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 Type Code Checksum Identifier Sequence Number + Data + Komunikat Group Membership 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 Type Code Checksum Maximum Response Delay Unused + Multicast Address + 13
Rozszerzenia systemu IPv6 DNS Nowe definicje rekordów i domen?? Typ rekordu AAAA? Rekord ten jest specyficzny dla klasy Internet przechowujacy pojedynczy adres IPv6.??? Format danych AAAA? 128-bitowy adres jest przedstawiany w postaci bajtowej.??? Zapytanie AAAA? W odpowiedzi na zapytanie okreslajace nazwe domeny podawane sa wszystkie konieczne rekordy.??? Tekstowy format rekordu AAAA? Tekstowy format rekordu to tekstowa reprezentacja adresu IPv6.??? Domena IP6.INT? Adres IPv6 jest reprezentowany w domenie IP6.INT jako sekwencja nibbli (czwórki bitów) oddzielonych kropkami z sufiksem IP6.INT. Sekwencja ta jest zapisywana w odwrotnym porzadku niz adres IPv6? Modyfikacje istniejacych typów zapytan Wszystkie istniejace typy zapytan obslugujace typ A musza Byc przedefiniowane tak by byla mozliwa obsluga zapytan typu A i AAAA. 14
Postac adresów IPv6 Obecne formaty adresu?? [AddrSpec] okresla jedna z preferowanych postaci adresu IPv6 tekstowa.??? Postac x:x:x:x:x:x:x:x, gdzie x oznacza szesnastkowa liczbe.??? Postac adresu laczy w sobie wersje IPv6 oraz IPv4 i jest pomocna przy wlaczaniu adresu IPv4 do IPv6. Ten format moze byc dluzszy niz normalna reprezentacja adresu IPv6. Nowy format ADRES = 128-bitowa liczba calkowita. Kodowanie przy podstawie 85 i kodowanie za pomoca 85 znaków ASCII. Dlaczego 85? 2^128 jest 3,402823669209e+38, a 85^20 jest 3,875953108451e+38. Zatem 20 cyfr o podstawie 85 w pelni reprezentuje wszystkie adresy IPv6. Zbiór znaków Ponizsze znaki (w porzadku rosnacym) sluza do zakodowania 85 liczb o podstawie 85: 0.. 9, A..Z, a..z,!, #, $, %, &, (, ), *, +, -, ;, <, =, >,?, @, ^, _, `, {,, }, ~ 15
Przeksztalcenie adresu IPv6 do podstawy 85. Przyklad: 1080:0:0:0:8:800:200C:417A W postaci dziesietnej mamy 128-bitowa liczbe: 21932261930451111902915077091070067066 Jesli podzielimy przez 85 otrzymamy nastepujace reszty: 51, 34, 65, 57, 58, 0, 75, 53, 37, 4, 19, 61, 31, 63, 12, 66, 46, 70, 68, 4 W ten sposób otrzymujemy adres: 4-68-70-46-66-12-63-31 61 19-4-37-53 75-0-58-57-65-34-51 A po zakodowaniu: 4)+k&C#VzJ4br>0wv%Yp Dodatkowe korzysci. Zapis adresu IPv6 w postaci tekstowej redukuje jego dlugosc, ale powyzsza postac adresu daje korzysc w postaci jego stalej dlugosci. W ten sposób omija sie niepozadana zmiennosc dlugosci adresu Zagadnienia implementacyjne Wiele obecnych procesorów nie operuje arytmetyka 128-bitowa, ale nie jest to powazna wada. Bezpieczenstwo Poprzez zapis adresu w tej formie jest malo prawdopodobne by zwykly obserwator byl w stanie stwierdzic binarna postac adresu. 16
Mechanizm zamiany dla hostów i routerów IPv6 Pojecia Typy wezlów: IPv4-only IPv6/IPv4 IPv6-only Typy adresów IPv6 IPv4-compatible IPv6-only Techniki uzywane do zamiany adresów tunelowanie IPv6-over-IPv4 enkapsulacja IPv6-in-IPv4 tunelowanie konfigurowane tunelowanie automatyczne 17
Adresacja Automatyczne tunelowanie Specjalny typu adresów IPv6 IPv4-compatible. Adres taki jest identyfikowany poprzez 96 zer na poczatku 96-bitów 32-bity +-----------------------------------------------------------------------------+---------------+ 0:0:0:0:0:0 adres IPv4 i jest przypisany do wezla IPv6\IPv4, który obsluguje automatyczne tunelowanie. Wezly moga uzywac adresy IPv6 oraz IPv4. Podwójna warstwa IP Wezel IPv6/IPv4 i jego konfiguracje: wezel IPv6/IPv4 nie obsluguje tunelowania, wezel IPv6/IPv4 z tunelowaniem konfigurowanym wezel IPv6/IPv4 z tunelowaniem konfigurowanym i automatycznym Konfiguracja Adresowa Mechanizm: Dynamic Host Configuration Protocol DHCP, Bootstrap Protocol BOOTP, Reverse Address Resolution Protocol RARP reczna konfiguracja Petle adresowe IPv4 Implementacje IPv6/Ipv4 moga traktowac adres IPv4-compatible (np. ::127.0.0.1) jako adres petli. DNS DNS jest uzywany w IPv4 i IPv6 do przetwarzania nazw hostów na adresy. 18
Obsluga rekordów adresów IPv4 Jezeli analizator DNS stwierdzi, ze istnieja odpowiadajace sobie adresy IPv4 oraz IPv4-compatible to istnieja 3 mozliwosci: podawany jest adres IPv6, podawany jest adres IPv4, podawane sa oba adresy. Wybór mozliwosci zalezy od generowanego ruchu IP. Tunneling IPv6 poprzez IPv4 (IPv6-over-IPv4) Tunelowanie (enkapsulacja datagramów IPv6 w pakietach IPv4): router-to-router, host-to-router, host-to-host, router-to-host. Podstawowe techniki tunelowania:?? automatyczna?? konfigurowana Mechanizm tunelowania: wezel na poczatku tunelu tworzy pakiet za pomoca enkapsulacji dodajac naglówek IPv4, wezel koncowy po otrzymaniu pakietu usuwa z niego naglówek IPv4 (dekappsulacja) i przetwarza otrzymany pakiet IPv6, wezel poczatkowy musi posiadac informacje o parametrach tunelu np. MTU 19
Zwykly mechanizm tunelowania Enkapsulacja datagramu IPv6 do IPv4: +---------------+ IPv4 Header +---------------+ +---------------+ IPv6 Header IPv6 Header +---------------+ +---------------+ Transport Transport Layer = Layer Header Header +---------------+ +---------------+ Data Data Wezel realizuje funkcje: dodawanie naglówka IPv4 fragmentacja albo wysylanie komunikatu ICMP Packet Too Big, odzwierciedlanie bledów IPv4 ICMP od Routera poprzez tunel do zródla jako bledy IPv6 ICMP. Hop Limit Hop Limit jest zmniejszany o jeden po przejsciu pakietu przez tunel. Obsluga bledów IPv4 ICMP 20
Postac naglówka IPv4 (po enkapsulacji pakietu IPv6 do datagramu IPv4): Version = 4 IP Hdr Lenght = 5 Typ uslugi = 0 Maksymalna dlugosc = 60 Identification generowane przez system; unikalne dla kazdego pakietu Flags - ustawione DF i MF Protokól = 41 Header Checksum - obliczane na podstawie naglówka IPv4 Source Address - adres interfejsu wezla Destination Address - adres koncowy tunelu. Decapsulacja IPv6 zawartego w pakietach IPv4 +---------------+ IPv4 Header +---------------+ +---------------+ IPv6 Header IPv6 Header +---------------+ +---------------+ Transport = Transport Layer Layer Header Header +---------------+ +---------------+ Data Data Skonfigurowany tunneling Typowa konfiguracja tunelu Automatyczny Tunneling 21
Algorytm przesylania Algorytm jest uzywany do okreslenia jaki rodzaj pakietu wysylac (IPv4 czy IPv6), jaki tunel zastosowac. Podstawowe wlasnosci algorytmu: wysylanie pakietów IPv4 do wezla IPv4, wysylanie pakietów IPv6 do wezla IPv6, przesylanie pakietów IPv6 enkapsulowanych w IPv4 poprzez automatyczny tunel, Tresc algorytmu: 1) Wezel posiada adres IPv4 to:?? jesli odbiorca jest na tym samym laczu wtedy wysyla sie pakiet IPv4 do wezla przeznaczenia.?? jesli odbiorca nie jest przylaczony do tego lacza to:??gdy dolaczony jest router IPv4 wysyla sie pakiet IPv4. Adres przeznaczenia to adres IPv4.??odbiorca jest nieosiagalny gdy nie ma routera.? 2) Wezel posiada adres IPv6 typu IPv4-compatible to:?? jesli odbiorca jest na tym samym laczu wtedy wysyla sie pakiet IPv6 do wezla przeznaczenia.?? jesli odbiorca nie jest przylaczony do tego lacza to:??gdy dolaczony jest router IPv4 wysyla sie pakiet IPv6 enkapsulowany w IPv4. Adres Przeznaczenia jest adresem IPv6??jesli dolaczony jest router IPv6 to wysyla sie pakiet IPv6,?? odbiorca jest nieosiagalny gdy nie ma routera.? 3) Wezel posiada adres IPv6-only to?? jesli odbiorca jest na tym samym laczu wtedy wysyla sie pakiet IPv6 do wezla przeznaczenia.?? jesli odbiorca nie jest przylaczony do tego lacza to:??gdy dolaczony jest router IPv6 wysyla sie pakiet IPv6 enkapsulowany w IPv6. Adres przeznaczenia jest adresem IPv6.??jesli odbiorca jest osiagalny poprzez tunel oraz dolaczony jest router IPv4 to wysyla sie pakiet IPv6 enkapsulowany w IPv4. Adres przeznaczenia IPv6 jest adresem wezla koncowego, natomiast adres przeznaczenia IPv4 jest koncowym tunelu.?? odbiorca jest nieosiagalny gdy nie ma routera IPv6. 22
Zasady przedstawia tabela: End End IPv4 IPv6 Packet Node Node Router Router Format IPv6 IPv4 DLink Address On On On To Dest Dest Dest Type Link? Link? Link? Send Addr Addr Addr IPv4 Yes N/A N/A IPv4 N/A E4 EL IPv4 No Yes N/A IPv4 N/A E4 RL IPv4 No No N/A UNRCH N/A N/A N/A IPv4-compa Yes N/A N/A IPv6 E6 N/A EL IPv4-compa No Yes N/A IPv6/4 E6 E4 RL IPv4-compa No No Yes IPv6 E6 N/A RL IPv4-compa No No No UNRCH N/A N/A N/A IPv6-only Yes N/A N/A IPv6 E6 N/A EL IPv6-only No N/A Yes IPv6 E6 N/A RL IPv6-only No Yes No IPv6/4 E6 T4 RL IPv6-only No No No UNRCH N/A N/A N/A N/A - nie ma zastosowania w tym przypadku, E6 - adres IPv6 wezla koncowego, E4 - adres IPv4 wezla koncowego, EL - adres wezla koncowego lacza danych, T4 - adres IPv4 koncowy tunelu, R6 - adres IPv6 routera, R4 - adres IPv4 routera, RL - adres routera lacza danych, IPv4 - pakiet IPv4, IPv6 - pakiet IPv6, IPv6/4 - pakiet enkasulowany UNRCH - odbiorca nie osiagalny. 23