Protokol IP verze 6
Vytvořeno 15.3.2002 pro seminář Moderní síťová řešení.
Obsah
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.
IPv6 packet byl oproti IPv4 packetu zjednodušen.
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31
|
---|
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.
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ě:
- 001 — Globální unicastové adresy
- 1111 1110 10 — Lokákní unicastové adresy na jednom segmentu
- 1111 1110 11 — Lokákní unicastové adresy v jedné organizaci
- 1111 1111 — Multicastové adresy
- adresa 0::1 je loopback adresa.
- adresa 0::XXXX:XXXX je IPv4 adresa při tunelování IPv4 přes IPv6.
- adresa 0::FFFF:XXXX:XXXX je IPv4 adresa pro stroje, které nepodporují IPv6.
(ve standartu je toto blíže nespecifikováno)
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.
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:
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31
|
---|
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ě.
Neghbour Discovery je protokol nad IPv6, který umožňuje zjišťovat stav počítačů
na stejném segmentu. Tento protokol má několik funkcí
- Nahrazuje protokoly ARP/RARP na IPv4
- Umožňuje automaticky zjistit adresu sítě a masku na daném segmentu
- Umožňuje automaticky zjistit, jaké routery se na segmentu nacházejí
a k jakým cílovým adresám směrují packety
- Umožňuje zjistit, když nějaký počítač spadl
- Umožňuje automaticky přepnout na používání jiného routeru, pokud spadl
router
Protokol používá 5 základních druhů packetů:
- Router Solicitation
- Router Advertisement
- Neighbor Solicitation
- Neighbor Advertisement
- Redirect
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.
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ý:
-
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í.
-
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.)
-
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ě.
-
Vyrobí se globální adresa. A to tak, že se linková adresa zařízení přidá k
adrese získané z routeru.
-
Detekuje se, zda globální adresu už někdo nepoužívá. Detekce je stejná, jako
v bodě 2.
-
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ě.
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/.