IPv6 vzniklo jako reakce na nedostatky IPv4. Oproti IPv4 přináší mnohá vylepšení.
Dostupný adresový prostor byl rozšířen z 32 na 128 bitů. S tím se také změnily konvence zápisu adres. Adresy se v zápisu rozdělují po dvou oktetech oddělených dvojtečkou. Vlastní oktety jsou zapisovány hexadecimálně.
př.: FEDC:BA98:7654:3210:FEDC:BA98:7654:3210Pro další zjednodušení jsou zaváděny další konvence: vedoucí nuly ve dvojicích oktetů je možné vypustit
př.: FEDC:BA98:7654:0010:00DC:0008:7654:0010 lze zapsat FEDC:BA98:7654:10:DC:8:7654:10dvojici prázdných oktetů lze zapsat pouze jednou nulou
př.: FEDC:BA98:7654:0000:00DC:0000:7654:0000 lze zapsat FEDC:BA98:7654:00:DC:0:7654:0posloupnost po sobě jdoucích dvojic oktetů obsahujících pouze nuly je možné vyjádřit dvojitou dvojtečkou. Tuto konvenci lze, z důvodů jednoznačnosti použít v adrese pouze jednou.
př.: FEDC:BA98:7654:0000:0000:0000:7654:0000 lze zapsat FEDC:BA98:7654::7654:0U adres je možné určit délku prefixu pomocí lomítka za adresou následovaném počtem bitů prefixu.
př.: FEDC:BA98:7654:0000:0000:0000:7654:0000/16 vyjadřuje adresový prefix délky 16 bitů.Typy adres jsou rozlišeny podle prefixu následovně:
Reserved 0000 0000Jak je z výše uvedeného patrné, většina adresového prostoru není zatím přidělena a je považována za rezervu, která bude použita podle toho, jakým způsobem se budou zvyšovat požadavky na přidělování adres z jednotlivých skupin.
IPv6 zavádí několik druhů adres:
Používají se k identifikaci zařízení. V rámci spojení musí být jednoznačné. Identifikátor má délku 64 bitů. Pokud zařízení pro něž je Identifikátor tvořen má MAC adresu, použije se většinou tato adresa, která se doplní vložením dvoubajtového vzorku mezi část MAC adresy, která identifikuje výrobce zařízení a zbylou část. V případě, že zařízení nemá MAC adresu, může být použita MAC adresa jiného zařízení stejného uzlu. V Identifikátoru existují ještě dva bity se zvláštním určením. Prvním je sedmý bit zleva, který když je nastaven na 0 určuje pouze lokální platnost Identifikátoru v rámci spojení, v opačném případě je identifikátor platný globálně. Následující bit, osmý v pořadí zleva, určuje, zda je Identifikátor indivituální, nebo skupinový.
Lokální Identifikátory se mohou používat např. pro spojní přes seriový link.
Nespecifikovaná adresaje speciálním případem unicastové adresy. Jde o adresu se samými nulami 0:0:0:0:0:0:0:0 (jinak ::). Může být uvedena jako adresa uzlu, který nezná svou adresu, např. uzlu který se při inicializaci snaží dotazem do sítě svou adresu zjistit. Tato adresa nesmí být nikdy použita jako cílová adresa, ani nesmí být požita v Routovací hlavičce.
LoopbackLoopback má hodnotu ::1 tj. samé nuly ukončené jedničkou. Nesmí být přidělen žádnému fyzickému zařízení.
IPv6 adresy se zapouzdřenými adresami IPv4Pro zpětnou kompatibilitu jsou adresy IPv4 mapovány do adres IPv6. Mapovány jsou dvěma způsoby. V prvním prípadě jde o mapování adres uzlů, které mají zároveň také adresy IPv6, ve druhém se jedná o uzly pouze s přidělenou IPv4. V prvním případě je IPv4 adresa mapována na spodních 32 bitů IPv6 adresy, ve druhém jsou před tuto adresu přidány dva octety naplněné jedničkami.
např.:0:0:0:0:0:0:c0a8:0001 je adresa počítače s IPv6 adresou, ktežto 0:0:0:0:0:ffff:c0a8:0002 je adresa počítače bez IPv6 adresy.
Aggregatable Global Unicast Addressesje typ adresy označující daný uzel jednoznačně v globálním měřítku. Nejvyšší tři bity jsou vždy 001. Spodních 64 bitů je vyhrazeno pro Identifikátor zařízení, vyšších 16 bitů pro adresu podsítě a zbylé bity jsou určeny pro adresaci od providera nebo exchangera. Z těchto 45 bitů je nejvyšších 13 určeno pro top-level adresaci, následujících osm je zatím reservováno a zbylých 24 bitů slouží pro next-level adresaci.
Local-Use IPv6 Unicast AddressesObsahuje dva typy adres - link-local a site-local.
Link-LocalLink-local obsahuje na nejvyšších deseti bitech vzorek 1111111010, ve spodních 64 bitech je obsažen Identifikátor příslušného rozhraní a zbylých 54 bitů je vyplněno nulami. Link-local slouží pro komunikaci v rámci spojení tj. paket s touto adresou jako cílovou, nebo zdrojovou nesmí nikdy projít přes router do jiného segmentu sítě.
Site-LocalJe podobný na předchozí typ. V horních deseti bitech se liší pouze jedničkou na desáté pozici - 1111111011. Před adresu rozhraní rozhraní přibude ještě 16 bitů pro adresaci sítě. Site-local slouží pro adresaci v rámci sítě. Routery nesmí pakety s těmito adresami jako cílovými, nebo zdrojovými nikdy propustit za hranice sítě.
Adresy typu Anycast jsou oproti IPv4 novým typem adres. Paket s cílovou Anycast adresou bude doručen na právě jednu z množiny adres a to na tu nejbližší. Anycast adresy jsou zatím povoleny pouze pro routery a nesmí být použity jako zdrojové adresy. Anycast adresy jsou obsaženy v souboru adres vyhrazeném pro Unicast adresy a od těchto adres nejsou syntakticky rozlišitelné.
Existuje ještě jedna anycast adresa, která je předvolena pro každé spojení na síti. Tato adresa je tvořena prefixem shodným s unicastovou adresou spojení doplněnou nulami v místech Identifikátoru zařízení. Adresa slouží aplikacím vně sítě, které požadují spojení na jeden z routerů příslušného spojení.
Multicastové adresy slouží k doručení paketu k více uzlům. Každý uzel může přináležet k libovolnému počtu multicastových skupin. První oktet adresy je naplněn jedničkami. Poté následují čtyři bity příznaků, z nichž je zatím použit jen čtvrtý, který označuje v případě že je nastaven na 0, že se jedná o trvale přiřazenou "well-known" adresu, v případě 1, že jde o adresu nepřiřazenou trvale "transient". Well-known adresy jsou přiřazovány globální autoritou a platí ve všech sítích. Transient adresy se definují lokálně a platí pouze v definujícím segmentu. Další čtveřice bitů určuje rozsah platnosti adresy.
Zatím jsou přiřazeny nasledující hodnoty (hexa):Zbylých 121 bitů identifikuje vlastní skupinu.
Multicastové adresy se nesmí objevit jako zdrojové adresy ani v ruotovacích hlavičkách. Některé multicast adresy jsou rezervovány, jiné mají zvláštní význam.
FF01:0:0:0:0:0:0:1 - všechny IPv6 uzly uzlu (nodes)V současné době se pro identifikaci skupiny používá pouze spodních 32 bitů.
U hlaviček IPv6 došlo k určitému zjednodušení vypuštěním některých polí oproti IPv4. Toto zjednodušení bylo provedeno z důvodů rychlejšího zpracování hlaviček při směrování. Dalším markantním vylepšení je zavedení rozšiřujících hlaviček, které umožňují větší možnosti volby a budoucí rozšiřitelnost o další potřebné hlavičky bez nutnosti změny návrhu.
Hlavička má nyní jednotnou délku 40 bajtů s následujícím rozdělením:Za hlavní hlavičku je možné řadit další tzv. rozšiřovací hlavičky. Tyto hlavičky by měly být řazeny v doporučeném pořadí. Každá rozšiřovací hlavička obsahuje na svém začátku typ hlavičky následující a svou délku v osmioktetech. Na uzel, který paket jsou kladená přísná pravidla na způsob zpracování paketu. Každý uzel, který není v hlavičce uveden jako cílový nesmí číst žádnou další hlavičku, až na jedinou výjimku, kterou je Hip-by-Hop Options hlavička. Uzly které jsou v dané hlavičce uvedeny jako cílové musí číst a zpracovávat všechny následující hlavičky a to vždy v pořadí, ve kterém jsou uvedeny.
V IPv6 může mít jedno zařízení více adres a může mít také adresy od více providerů. V tomto případě se však mění jen adresa providera a zbytek adresy (pod 48bitem), zůstává nezměněn.
Exchangers slouží pro adresaci více providerů bez potřeby změny adresy. Místo toho stačí uzlu znát adresu exchangera.
Adresy IPv6 mohou mít tzv. lifetime, dobu po kterou jsou platné a po této době mohou být změněny. Router v intervalech vysílá informace o adresách (prefixech), podle kterých mohou uzly své adresy upravit. Změna může být také vyvolána např. přenosem zařízení do dosahu jiného providera.
Tunneling slouží k přenosu paketů IPv6 přes IPv4. Routery na obou stranách tunelu mají IPv6 i IPv4 adresy. Router odesílající pakety tyto pakety zabalí do paketů s cílovou adresou druhého routeru. Cílový router po obdržení IPv6 pakety vybalí.
IPv6 umožňuje aby systém mohl nakonfigurovat zařízení automaticky. Existují dva přístupy:
Konfigurace pomocí DHCP. Existuje někdo, koho se dá dotázat na adresu a ten adresu přidělí.
Systém sám odvodí adresu pro zařízení např. z MAC adresy.
Tzv. IPsec. Implementace je povinná, ale např. u Linuxu hodně pokulhává [USAGI]. Jde o ochranu paketu přímo na úrovni IP.
Jde o experimentální páteřní síť nad IPv6.
Nejdříve je třeba zajistit podporu IPv6 v kernelu. Toho lze dosáhnou buď zakompilováním podpory přimo do kernelu, nebo použitím modulu ipv6. Pokud je již podpora zavedena, musí existovat '/proc/net/if_inet6'. Vzhledem k tomu, že podpora ipv6 originálního jádra je historicky poměrně slabá, je dobré použít USAGI patch který doplňuje nekteré další funkce. Ještě je třeba se ujistit, zda IPv6 podporují potřebné nástroje ifconfig,ping6 a route.
Nyní můžeme přistoupit ke konfiguraci. Základní konfigurace se provádí v souboru /etc/sysconfig/network.
NETWORKING_IPv6=yesPoté nakonfigurujeme příslušné rozhraní. Do souboru /etc/sysconfig/network-scripts/ifcfg-eth0 přidáme:
IPV6INIT=yesJeště potřebujeme nakonfigurovat směrování. Do souboru /etc/sysconfig/static/routes-ipv6 vložíme řádky:
# IPv6 network to route IPv6 gateway addressUpravíme základní konfigurační soubor /etc/sysconfig/network
NETWORKING_IPv6=yesNásledně upravíme konfigurační soubory rozhraní /etc/sysconfig/network-scripts/ifcfg-eth0
IPV6INIT=yesa /etc/sysconfig/network-scripts/ifcfg-eth1
IPV6INIT=yes/etc/sysconfig/network-scripts/ifcfg-sit0
DEVICE="sit0"/etc/sysconfig/network-scripts/ifcfg-sit1
DEVICE="sit1"/etc/sysconfig/static/routes-ipv6
# IPv6 network to route IPv6 gateway addressVe freeBSD a ostatních systémech je použita KAME implementace IPv6. Tato je přímo součástí distribuce.
Ve hlavním konfiguračním souboru /etc/rc.conf přidáme řádky:
ipv6_enabled=yesExistují dva způsoby autokonfigurace. Můžeme buď nenastavovat pro rozhraní žádnou adresu, potom se provede autokonfigurace rozhraní uvedených v ipv6_network_interface, nebo pro některá rozhraní omezit autokonfiguraci zadáním prefixu ipv6_prefix_xl0="3ffe:2e02:1" a nechat automaticky dokonfigurovat pouze zbytek adresy.
/etc/rc.conf
ipv6_enabled=yes/etc/rc
/sbin/route add -inet6 default 3ffe:2e01:1:3::1 #default gateway/etc/rc
/usr/sbin/gifconfig gif0 129.254.165.59 129.254.254.86