IP verze 6

Robin Horníček, xhornic@fi.muni.cz


Obsah


1. IPv6 - motivace

Internet Protocol verze 6 (IPv6) se má stát následníkem nosného protokolu současného Internetu - IPv4. Už na počátku 90-tých let začalo být jasné, že adresní prostor dostupný v rámci IPv4 nebude stačit rychle se rozvýjejícímu Internetu, proto bylo nutné navrhnout protokol nový s adresním prostorem, který bude stačit pokud ne navždy, tak aspoň hodně dlouho a tím je právě IPv6. Zatímco IPv4 je založen na 32-bitových adresách, IPv6 používá pro adresování 128-bitu, což dává teoreticky 2^128 unikátních adres a to je opravdu hodně.

1.1 Formát datagramu

Datagram má v IPv6 podobný tvar jako u IPv4 - na začátku jsou hlavičky a za nimy následují data. První hlavička je tzv. standardní hlavička datagramu, která má následující formát
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |Version| Traffic Class |           Flow Label                  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |         Payload Length        |  Next Header  |   Hop Limit   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +                                                               +
   |                                                               |
   +                         Source Address                        +
   |                                                               |
   +                                                               +
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +                                                               +
   |                                                               |
   +                      Destination Address                      +
   |                                                               |
   +                                                               +
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
kde jednotlivé sekce mají význam: Za standardní hlavičkou pak mohou následovat přímo data nebo ještě rozšiřující hlavičky. Každá rozšiřující hlavička začíná položkou Next Header, která definuje typ následující hlavičky, poslední z takto utvořené řady hlaviček pak má v této položce typ dat, které datagram nese.

1.2 Format IPv6 adresy

IPv6 sdresy jsou stejně jako u IPv4 přidělovány síťovým rozhraním, nikoli počítačům. U IPv6 existují 3 druhy adres s odlišným chováním Podrobnosti v
RFC 2373 Jak už bylo řečeno, IPv6 adresa na 128 bitů a zapisuje se jako 8 skupin po 4-ech číslicích šestnáctkové soustavy, které vyjadřují hodnoty 16 bitů dlouhých částí adresy. Navzájem se tyto skupiny oddělují dvojtečkami.

Např: 0123:0000:0000:BA98:0000:AC3B:FEDC:0000

V zápisu adres lze použít i zkratek, výše uvedenou adresu lze například zkrátit na
123::BA98:0:AC3B:FEDC:0
Podobně jako u IPv4 je několik adres a prefixů rezervovaných pro zvláštní účely: Zbytek prefixů není přidělen a slouží jako záloha pro budoucí RFC. Aktuální stav lze najít na adrese www.iana.org/assignments/ipv6-address-space

1.3 Fragmentace

Na rozdíl od IPv4 v IPv6 fragmentuje datagramy výlučně odesílatel. Zjednodušeně řečeno odesílatel nejprve odešle datagram, jehož velikost je rovna MTU (Maximum Transmission Unit) rozhraní, kterým datagram odesílá. Pokud dostane potvrzení o přijetí cílem, je MTU celé cesty rovno MTU tohoto rozhraní. Pokud místo toho obdrží ICMP zprávu, která znamená "příliš velký paket" a jejíž součástí je i MTU linky, kterou datagram neprošel. Odesílatel potom zmenší fragmenty na velikost toho MTU a pošle je znovu. A tak dále a dokola až obdrží potvrzení o příjmu. Tento algoritmus se jmenuje Path MTU Discovery a je podrobně popsán v
RFC 1981

1.4 Další vlastnosti

IPv6 také implementuje další zajímavé mechanismy

2. IPv6 - praxe

2.1 Jak to rozjet

Chcete-li se regulérně připojit k IPv6, obstarejte si IPv6 zařízení a software a obraťte se na některého vlastníka pTLA - což je určitý rozsah adres, vyjádřený jejich společným prefixem, které dostane takový vlastník přiděleny - s žádostí o přidělení adresy. Seznam vlastníku pTLA sítě 6bone nejdete na stránce
www.6bone.net/6bone_pTLA_list.html
6bone je tzv. virtuální síť - skládá se z lokálních IPv6 sítí, které jsou navzájem propojné tunely v IPv4 infrastuktuře. Jelikož není možné "přepnout" naráz celý internet na IPv6 bylo nutné vymyslet mechnismus, který propojí navzájem lokální IPv6 sítě. Takových mechanismů je více (např. překlad adres), ale "tunelování" jednoduché, levné a dá se vytvořit topologie jaká je potřeba. Spočívá v tom, že se IPv6 datagramy balí jako data do běžného IPv4 a přenášejí se standardním internetem do cílové sítě, kde se zase rozbalí a pokračují jako normální IPv6 datagramy. Do sítě 6bone je zapojeno více než 60 zemí a tato síť má za úkol simulovat skutečný IPv6 Internet, získat tak praktické zkušenosti z používání IPv6 v praxi a díky nim tento protokol dále vyvíjet. V České Republice bohužel v současnosti není žádný vlastník 6bone pTLA.
Na to abyste si mohli 6bone vyzkoušet, vám ovšem stačí operační systém s podporou IPv6. Pro individuální zájemce jsou totiž k dispozici veřejné tunel servery. Na adrese www.freenet6.net získáte klienta pro TSP (Tunnel Setup Protocol). Jeho prostřednictvím pak můžete kdykoliv vytvořit tunel mezi svým počítačem a některým z veřejných serverů sítě 6bone.
Nejlepší podporu IPv6 ze všech operečních systému kterými se tu zabýváme (a tedy asi nejlepší vůbec :) mají systémy řady BSD. Ta spočívá v projektu KAME Project. Linux má podobný projekt - USAGI Project - UniverSAl playGround for Ipv6. USAGI je zatím distribuováno jako upravené alternativní jádro. Linux má podporu pro IPv6 také v oficiálním jádře (od verze 2.1.8), ale USAGI je lepší :) Pro zapnutí podpory musíte ovšem při kompilaci jádra povolit experimentální položku The IPv6 protocol

2.1.1 ip

K tomu, abyste si nakonfigurovali IPv6 pod Linuxem můžete použít program ip
Podrobny návod jak to udělat je v
Linux IPv6-HOWTO takže jenom pár příkladů:

2.2 DNS

DNS se světe IPv6 nachází v poněkud zmatené situaci. V roce 1995 totiž vyšlo
RFC 1886: DNS Extensions to support IP version 6 které je široce podporováno. V červnu 2000 následovalo RFC 2874: DNS Extensions to Support IPv6 Address Aggregation and Renumbering , které zavádí jiné mechanismy. Vázla ovšem implementace tohoto dokumentu a také se objevily problémy a tak v létě 2001 vyhlásilo IETF novější specifikaci za experimentální a doporučila vrátit se zatím ke starší verzi. Vzhledem k tomu, že BIND 9 podporuje obě specifikace a automaticky mezi nimi konvertuje nemusíme se ovšem tímto problémem zabývat.

2.2.1 RFC 1886 - starší verze

Pro dopředné dotazy zavádí RFC 1886 nový typ záznamů - AAAA Má-li počítač pc.kdesi.cz adresu 2345:67:89AB:1:123:45FF:FE67:89AB, bude v zónovém souboru pro doménu kdesi.cz obsažen záznam
pc	AAAA	2345:67:89AB:1:123:45FF:FE67:89AB
Celá definice domény kdesi.cz, v níž se nacházejí dva autoritativní DNS servery ve dvou různých podsítích a jeden počítač, by vypadala následovně
$ORIGIN kdesi.cz.
@               SOA ns1.kdesi.cz. root.ns1.kdesi.cz. (
                                2002011200      ; Serial 
                                10800           ; Refresh 
                                3600            ; Retry   
                                3600000         ; Expire  
                                86400           ; default_ttl
				)
;DNS servery
	NS	ns1
	NS	ns2

;adresy pocitacu
ns1	AAAA	2345:67:89AB:1:2A0:ECFF:FE12:3456
ns2	AAAA	2345:67:89AB:2:2A0:ECFF:FE12:7890
pc	AAAA	2345:67:89AB:1:123:45FF:FE67:89AB
Zpětný dotaz je položen prostřednictvím doménového jména sestaveného tak, že se obrátí pořadí šestnáctkových číslic v adrese a na konec se připojí doména ip6.arpa. Pro výše zmiňovanou adresu by reverzní dotaz měl tvar
B.A.9.8.7.6.E.F.F.F.5.4.3.2.1.0.1.0.0.0.B.A.9.8.7.6.0.0.5.4.3.2.ip6.arpa
(nuly se vynechávají).
Díky obrácenému pořadí číslic se obecná část adresy (prefix) dostává na konec a lze tedy realizovat distribuovanou správu reverzních domén. Například síť instituce vlastnící doménu kdesi.cz má prefix 2345:67:89AB::/48 a tudíž dostane do správy reverzní doménu B.A.9.8.7.6.0.0.5.4.3.2.ip6.arpa. Pro počítač pc.kdesi.cz by její zónový soubor obsahoval záznam
$ORIGIN		B.A.9.8.7.6.0.0.5.4.3.2.ip6.arpa.
@               SOA ns1.kdesi.cz. root.ns1.kdesi.cz. (
                                2002011200      ; Serial 
                                10800           ; Refresh 
                                3600            ; Retry   
                                3600000         ; Expire  
                                86400           ; default_ttl
				)
;DNS servery
	NS	ns1
	NS	ns2

;reverzni zaznamy
6.5.4.3.2.1.E.F.F.F.C.E.0.A.2.0.1.0.0.0		PTR	ns1.kdesi.cz.
0.9.8.7.2.1.E.F.F.F.C.E.0.A.2.0.2.0.0.0		PTR	ns2.kdesi.cz.
B.A.9.8.7.6.E.F.F.F.5.4.3.2.1.0.1.0.0.0		PTR	pc.kdesi.cz.

2.2.2 RFC 2874 - nová verze

Pro dopředné dotazy zavádí RFC 2874 nový typ záznamů nazvaný A6. Ty neobsahují celou adresu, ale jen její konec a odkaz na prefix, který se má před něj vložit. A6 záznam má tvar
	jmeno	A6	delka_prefixu	pokracovani_adresy	prefix
například
	pc	A6	64	::123:45FF:FE67:89AB	sit1.ip6

2.3 Směrovače

K tomu, abyste mohli ze svého počítače udělat směrovač, potřebujete program, který jej přiměje odpovídat na autokonfigurační dotazy klientů, posílat "ohlášení směrovače".

2.3.1 Zebra

Zebra je program, který umožní počítači fungovat jako plnohodnotný směrovač. Je postavena na démonu zebra, který shromažďuje směrovací informace, spolupracuje s jádrem systému a upravuje jeho směrovací tabulky. Ostatní démoni, jako ripd, ripngd, ospfd či bgpd, slouží jen jako rozhraní pro démon zebra pro daný protokol. Zebra má totiž modulární strukturu, každý směrovací protokol v ní má svého vlastního démona. Zebru si můžete stáhnout na její domovské stránce
http://www.zebra.org
Zebra je bezesporu zajímavá, ale konfiguruje se poněkud hůř, protože každý démon v ní má vlastní konfigurační soubor. Pokud si vystačíte se statickým směrováním, je lepší volbou

2.3.2 radvd - Router ADVertisement Daemon

který se konfiguruje podstatně jednodušeji. Pokud tohoto démona nenajdete ve své distribuci, můžete si jej stáhnout ze stránky
http://v6web.litech.org/radvd/ kde najdete upravenou verzi radvd od Nathana Lutchanskeho.
Konfigurace je uložena v souboru /etc/radvd.conf (případně /usr/local/etc/radvd.conf), který obsahuje definice chování radvd pro jednotlivá rozhraní, tvaru
interface jmeno{
	volby_rozhrani
	prefix prefix/delka{
		volby_prefixu
	};
	pripadne dalsi prefixy
};
kde nejdůležitější volby rozhraní jsou Voleb prefixu je podstatně méně a většinou si vystačíte s jejich implicitním nastavením. Jsou to např. Implicitně jsou obě tyto volby nastaveny na on. Konfiguracni soubor může vypadat např. takto
interface eth0 {
        AdvSendAdvert on;
        prefix 5f15:9100:c2dd:1400:8000::0/80
	{
                AdvOnLink on;
                AdvAutonomous on;
        };
};
a říká, že radvd má šířit (AdvSendAdvert on) prefix 5f04:f900:c2dd:1400:8000::0 o délce 80 bitů na rozhraní eth0. Prefix je také označen jako autonomní a "on-link".

3. Užitečné odkazy

RFCs