Protokol IP verze 6

Mikuláš Patočka

Vytvořeno 15.3.2002 pro seminář Moderní síťová řešení.

Obsah

Historie

V roce 1993 přišla myšlenka, že by se nový protokol mohl nový protokol začít navrhovat. Bylo vydáno RFC 1550, které určovalo pouze oblasti, na které je potřeba se zaměřit, a současně bylo požadavkem, aby ostatní lidé dodali svoje požadavky. První specifikace byla vytvořena v roce 1995 — RFC 1883. V současné době je platná specifikace RFC 2460 vydaná v roce 1998.

Struktura packetu

IPv6 packet byl oproti IPv4 packetu zjednodušen.
012345678910111213141516171819202122232425262728293031
0 Version Traffic class Flow label
1 Payload length Next header Hop limit
2 Source address
3
4
5
6 Destination address
7
8
9
10 ... data ...
..
..
Version
verze protokolu — 6
Traffic class
podobné, jako "type-of-service" u IPv4. Je zde rozhodování na spolehlivost vs. rychlost doručení packetu, případně bity signalizující zahlcení při použití ECN.
Flow label
identifikátor toku. Přesná specifikace neexistuje. Předpokládá se, že zde bude jakýsi identifikátor spojení, pomocí budou moct bý zaručovány real-timové kvality služeb. Idea je asi taková, že se najde cesta, na každém routeru v této cestě se zaregistruje flow label a router bude podle zdrojové adresy a flow labelu zaručovat určité kvality služeb. Zatím není specifikováno, jak přesně by to mělo fungovat.
Payload length
délka dat následujících IPv6 hlavičku.
Next header
typ další hlavičky. Viz níže.
Hop limit
tato položka je dekrementovaná na každém routeru, který předává packet. Když dosáhne nuly, packet je zahozen. Je to ochrana, aby packety cyklící v kruhu nezahltily síť.
Source address
128-bitová zdrojová adresa
Destination address
128-bitová cílová adresa
data
vlastní data obsažená v packetu

Oproti protokolu IPv4 z hlavičky ubyla indetifikace, fragmentační příznaky a offset fragmentu. Fragmentace je řešena pomocí speciální zřetězené fragmentační hlavičky. Rovněž ubyla položka "options" – optiony jsou nahrazeny speciálními zřetězenými hlavičkami. Packet byl zjednodušen, aby se router mohl dívat na minimální množství položek.

Adresy v IPv6

IPv6 má 128-bitovou adresu. V dřívějších návrzích specifikace byla snaha tuto adresu rozdělit na víc částí (podobně jako jsou IPv4 adresy děleny na třídy sítí A, B, C), ale nakonec od toho bylo upuštěno. Rozdělování IPv4 adres do tříd stejně už dnes používá málokdo.

IPv6 adresa je zapisována jako osm čtyřmístných hexadecimálních čísel oddělených dvoječkou. Zkrácený zápis umožňuje, aby se v adrese na jednom místě vyskytly dvě dvojtečky vedle sebe — to znamená, že dané místo bude doplněno adekvátním počtem nul.
příklad zápisu jedné IPv6 adresy
0123:5678:0000:0000:0000:00AB:0000:CDEF
123:5678:0:0:0:AB:0:CDEF
123:5678::AB:0:CDEF

IPv6 rozlišuje 3 druhy adres:

Unicast
adresa je přiřazena jednomu síťovému rozhraní.
Anycast
adresa je přiřazena několika síťovým rozhraním a packet je doručen na libovolné jedno z nich. Zatím není jasné, k čemu se anycast adresy budou používat. TCP či jiné stavové protokoly s takovým doručováním packetů nebudou, a bezestavové protokoly se moc nepoužívají.
Multicast
adresa je přiřazena skupině zařízení a packet je doručen na věechna tato zařízení. Nepoužívá se to, stejně tak, jako se nepoužívají multicastové adresy rezervované v adresním prostoru IPv4. Problémem je neexistence routovacích protokolů, které by směrování takových paketů umožnily, a možnost zahlcení sítě v případě, že by došlo k cyklu.

Není možno používat libovolné adresy; adresové místo je podle prefixů děleno následovně:

Anycastové adresy jsou přidělovány z prostoru unicastových adres.

U IPv4 se pro převod IP-adresy na linkovou adresu používá protokol ARP. Tento protokol má nevýhodu, že je v něm přímo specifikována velikost linkové adresy jako 48 bitů – lze ho tedy použít jen na ethernetu.
Na IPv6 je tento problém řešen tak, že je linková adresa specifikována v EUI-64 formátu. Mechanismus převodu IPv6 adres na linkové adresy již není nutno dělat pro každý typ linky zvlášť neboť každý linkový protokol (Ethernet, FDDI, ...) má vlastní zobrazení svých adres do EUI-64 formátu. EUI-64 adresy tvoří dolních 64 bitů u lokální unicastové adresy na jednom segmentu. EUI-64 adresy mohou rovněž tvořit dolních 64 bitů u globálních unicastových adres.

Multicastové adresy jsou ve tvaru 11111111000TSSSSGGGG.....
T = 0 indikuje globáně přidělenou multicastovou adresu.
SSSS je rozsah platnosti adresy: 1 – node-local; 2 – link-local; 5 – site-local; 8 – organization-local; E – global.
GGGG.... je vlasní adresa.

Řetězení hlaviček

Hlavička IPv6 byla oproti hlavičce IPv4 výrazně zjednodušena. Chybějící funkce byly implementovány pomocí zřetězených hlaviček. Hlavička IPv6 packetu obsahuje jednu položku "next header". To je typ další hlavičky, která následuje. Tato další hlavička obsahuje opět položku "typ hlavičky", což je typ hlavičky, která za touto následuje. V poli "next header" rovněž může výt typ protokolu (např. TCP, UDP) – to znamená, že už žádné další hlavičky nejsou a datová oblast se předá ovladači daného protokolu.

IPv6 rozeznává následující druhy rozšířených hlaviček:

Hop-by-hop header
musí následovat přímo za IPv6 hlavičkou. Obsahuje informace, na které se dívá každý router, který packet předává. Používá se pro zaznamenávání cesty packeu.
Routing header
používá se když odesilatel chce specifikovat přímo cestu packetu mezi routery. Adresu prvního routeru uloží jako cílovou adresu a další adresy uloží do routovací hlavičky. Router packet přijme, podívá se na routovací hlavičku, vybere první adresu a pošle packet dál na tuto adresu.
Fragment header
umožňuje posílat fragmentované packety. Fragmentaci packetů provádí vždy odesilatel. Routery fragmentaci provádět nemohou. Pokud router dostane příliš velký packet, informuje odesialtele pomocí ICMP, že packet je moc velký a odesilatel musí sám zajistit fragmentaci a znovuposlání.
Destination options header
obsahuje další informace, na které se kouká při zpracovávání packetu příjemncem.

Jako příklad, jak vypadají zřetězené hlavičky zde uvedu routing header:
012345678910111213141516171819202122232425262728293031
0 Next header Hdr Ext Len Routing Type Segments Left
1 ... data specifická pro daný Routing Type ...
..
..
jak vidíme, hlavička obsahuje opět "Next Header" – to je typ další hlavičky, která bude tuto hlavičku následovat. "Hdr Ext Len" je délka routovací hlavičky. V datech je uložena cesta, kterou má packet projít. Když poslední router v cestě zpracuje packet, tak routing hlavičku odstraní a předá cílovému počítači zbytek packetu.

Je možno přidávat další zřetězené hlavičky – napřiklad pro autentifikaci packetů, šifrování, a podobně.

Neighbour Discovery

Neghbour Discovery je protokol nad IPv6, který umožňuje zjišťovat stav počítačů na stejném segmentu. Tento protokol má několik funkcí

Protokol používá 5 základních druhů packetů:

Když chce počítač zjistit, jaké routery se na segmentu nacházejí, pošle Router Solicitation packet. Všechny routery na to odpoví packetem Router Advertisement. Routery po nějaké době posílají packety Router Advertisement automaticky, aby si všechny počítače aktualizovali informace. Z Router Advertisement packetu počítač snadno získá informace o adrese a masce sítě, o linkové adrese routeru a od adresách/maskách, kam je tento router schopen routovat.

Pokud chce počítač zjistit linkovou adresu jiného počítače na témže segmentu, pošle Neighbour Solicitation packet. Funkčnost je ekvivalentní packetu ARP na IPv4. Jako odpověď dostane Neighbour Advertisement, který obsahuje danou adresu.

Redirect packet je ekvivalentní ICMP redirect z IPv4. Router může pomocí redirect packetu odesilateli říct, že by měl k danému cíli posílat packety jinou kratší cestou. Také se používá, pokud odesilatel pošle na router packet, jehož cílová adresa je na stejném segmentu.

Neighbor Discovery má novou funkci – zjišťování nedosažitelnosti počítačů. Tato funkce je být schopna zjistit spadlé nebo nedosažitelné počítače na stejném segmentu a případně s nimi přestat komunikovat. Pokud spadl router, a existuje jiný router, který je schopen směrovat packety na dané místo, odesilatel se automaticky překonfiguruje, aby používal nový router.
Funguje to následovně:
Pokud má odesilatel nějakou informaci o tom, že příjemce je naživu (dostává od něj nějaké packety), není třeba dělat nic. Pokud příjemci posílá packety, ale nedostává žádné zpět, hrozí nebezpečí, že příjemce spadl. V takovém případě odesilatel jednou za čas posílá Neighbor Solicitation packet. Pokud nedostane Neighbor Advertisement, prohlásí příjemce za mrtvého.

Automatická bezestavová konfigurace adresy

IPv6 umožňuje automaticky přidělovat adresy počítačům připojivším se na segment aniž by bylo potřeba vést evidenci počítačů na serveru. (ale je možno použít i přidělování adres podle evidence – to dělá protokol DHCPv6).

Postu při výrobě adresy je takový:

  1. Vyrobí se lokální adresa specifická pro daný segment. Použije se prefix FE80 a k němu se přidá linková adresa daného zařízení.
  2. Detekuje se, zda někdo už stejnou adresu nepoužívá. Udělá se to tak, že se pošle Neighbor Solicitation packet s danou adresu. Pokud nepřijde žádná odpověď, pak je adresa volná. (pokud odpověď přijde, tak to znamená, že dva počítače mají stejnou linkovou adresu. to by ale nemělo nastat.)
  3. Pošle se Router Solicitation a počká se, než přijde Router Advertisement. Z packetu Router Advertisement se zjistí adresa a maska sítě.
  4. Vyrobí se globální adresa. A to tak, že se linková adresa zařízení přidá k adrese získané z routeru.
  5. Detekuje se, zda globální adresu už někdo nepoužívá. Detekce je stejná, jako v bodě 2.
  6. Pokud globální adresu nikdo nepoužívá, je možno ji použít a počítač je plně schopen komunikovat v IPv6 síti.
Packety Router Advertisement mohou obsahovat čas vypršení platnosti adresy. Po uplynutí tohoto času musí klient přestat používat globální adresu a znovu se zeptat routeru na adresu a masku sítě. Tato vlastnost umožňuje za běhu měnit adresu celé sítě.

Reference

Protokol IPv6 je popsán v následujících RFC dokumentech:
	rfc1550.txt
	rfc1826.txt
	rfc1883.txt
	rfc1884.txt
	rfc1885.txt
	rfc1886.txt
	rfc1887.txt
	rfc2373.txt
	rfc2460.txt
	rfc2461.txt
	rfc2462.txt
	rfc2463.txt
	rfc2464.txt
	rfc2675.txt
	rfc2711.txt
	rfc3041.txt
RFC dokumenty je možno stáhnout na
http://www.ietf.org/rfc/.