ICMPv6

ICMPv6 protokol (anglicky Internet Control Message Protocol Version 6) nebo také ICMP pro IPv6 je nová verze ICMP protokolu a je nedílnou součástí architektury IPv6, která musí být plně podporována všemi implementacemi na všech uzlech. ICMPv6 kombinuje funkce, které byly dříve rozděleny mezi více protokolů, jako třeba ICMP, IGMP (anglicky Internet Group Membership Protocol) a ARP (anglicky Address Resolution Protocol) a zároveň poskytuje mnohá zjednodušení zejména odstraněním zastaralých typů zpráv, které se již nepoužívají.

Úvod

IPv6 je novou verzí IPv4 a používá ICMP definovaný pro IPv4 v RFC 792 (někdy také označovaný jako ICMPv4) ovšem s velkým počtem změn. Například v sobě obsahuje také IGMP.

Tento článek popisuje formát sady kontrolních zpráv, které jsou využívány v ICMPv6, ale nepopisuje procedury pro jejich používání a zpracování k vytváření dalších funkcí, jako například zjištění MTU na cestě datagramu (popsané v RFC 1981). Stejně jako tato funkce jsou i další funkce ICMPv6 popsané v RFC.

ICMPv6

ICMPv6 je víceúčelový protokol a je určen pro ohlašování chyb při přenosu paketů, vytváří diagnosu přenosu, umožňuje vyhledávání dalších uzlů a přenáší informace pro rozeslání multicastových zpráv. Pro tyto účely se dělí do dvou kategorií: chybové zprávy (error messages) a informační zprávy (information messages). ICMPv6 zprávy jsou přenášeny uvnitř IPv6 datagramů v jejich rozšířené hlavičce. ICMPv6 také podporuje funkce vyšších vrstev internetových protokolů.

Formát zprávy

Formát ICMPv6 zprávy je Typ, Kód a Kontrolní součet. 8bitový blok Typ určuje typ zprávy. Pokud má nejvyšší bit tohoto bloku hodnotu 0, pak se jedná o chybovou zprávu (rozsah těchto zpráv je tedy 0 – 127). Pokud je tato hodnota 1, jedná se o zprávu informační (rozsah 128 – 255). Další 8bitový blok Kód závisí na typu zprávy a používá se jako další úroveň rozlišení zpráv. Třetí část Kontrolní součet slouží k odhalení chyb při přenosu samotné ICMP zprávy.

 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 1 2 3 4 5 6 7 8 9 A B C D E F
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      Typ      |      Kód      |        Kontrolní součet       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                          Tělo zprávy                          +
|                                                               |
+---------------------------------------------------------------+

Typy ICMP zpráv

TypeVýznam
0Rezervováno
1Cíl nedostupný
2Paket příliš velký
3Čas překročen
4Chybný parametr
100Soukromé experimenty
101Soukromé experimenty
102-126Nepřiřazeno
127Rezervováno pro rozšíření chybových zpráv
128Požadavek na odezvu
129Odezva
130Dotaz na členství ve skupině
131Zpráva o členství ve skupině
132Změna členství ve skupině
133Žádost routeru
134Oznámení routeru
135Žádost souseda
136Oznámení souseda
137Přesměrování
138Přečíslování routerů
139Dotaz na informace o uzlu
140Odpověď s informacemi o uzlu
141Výzva inverzního objevování sousedů
142Ohlášení inverzního objevování sousedů
143Ohlášení členství ve skupině (MLDv2)
144Žádost o adresy domácích agentů
145Odpověď s adresami domácích agentů
146Žádost o mobilní prefix
147Ohlášení mobilního prefixu
148Žádost o certifikační cestu
149Ohlášení certifikační cesty
150Pro experimentální mobilní protokoly typu Seamoby
151Ohlášení skupinového směrovače
152Výzva skupinovému směrovači
153Ukončení skupinového směrovače
154Rychlé předávání
155Řídicí zpráva RPL
156Aktualizace lokátoru ro ILNPv6
157Požadavek na duplicitní adresu
158Potvrzení duplicitní adresy
159Řídicí zpráva MPL
160–199Nepřiřazeno
200Soukromé experimenty
201Soukromé experimenty
255Rezervováno pro rozšíření informačních zpráv

Určování adresy odesílatele zprávy

Síťový uzel, který posílá ICMPv6 zprávu, je zodpovědný za určení IPv6 adresy odesílatele a příjemce a to ještě dříve, než je vypočten kontrolní součet. Pokud má uzel více než jednu unicastovou adresu a je tedy potřeba zvolit jednu z nich, musí být adresa odesílatele určena podle následujících pravidel:

  1. Pokud je zpráva odpovědí na zprávu zaslanou na jednu z unicastových adres uzlu, jako adresa odesílatele odpovědi musí být použita právě tato adresa, pro kterou byla původní zpráva určena.
  2. Pokud je zpráva odpovědí na zprávu zaslanou na jinou adresu, jako je
    • multicastová adresa,
    • anycastová adresa, kterou zahrnuje uzel, nebo
    • unicastová adresa, která nenáleží uzlu.

Jako adresa odesílatele musí být použita některá z unicastových adres uzlu. Adresa by měla být vybrána na základě pravidel, která se používají při určování odesílatele jakéhokoli jiného paketu odesílaného uzlem podle adresy příjemce paketu. Může být však vybrána i jiným způsobem, který povede k vyšší srozumitelnosti doručované zprávy na straně příjemce.

Výpočet kontrolního součtu zprávy

Kontrolní součet je 16bitový jednotkový doplněk součtu jednotkového doplňku úplné ICMPv6 zprávy začínající blokem Type, před který se předřazuje "pseudo-hlavička", jak je specifikováno v IPv6. Hodnota NextHeader použitá v "pseudo-hlavičce" je 58. (Poznámka: zahrnutí pseudo-hlavičky v ICMPv6 kontrolním součtu je změna oproti IPv4; použijte článek o IPv6 pro odůvodnění této změny.) Pro výpočet kontrolního součtu, blok Checksum je nastaven na nulu.

Přenos ICMPv6 zprávy

Uzel odesílající ICMP zprávu určuje IPv6 adresu odesílatele a příjemce pro ICMPv6 zprávu. Zvláštní pozornost je nutné věnovat hlavně výběru adresy odesílatele. Pokud má uzel více než jednu unicastovou adresu, musí být adresa odesílatele zprávy určena následovně:

  • Pokud zpráva je odpovědí na zprávu zaslanou na některou z unicastových adres uzlu, adresa odesilatele odpovědi musí být stejná jako adresa, pro kterou byla zpráva určena.
  • Pokud zpráva je odpovědí na zprávu zaslanou na některou z multicastových nebo anycastových adres uzlu, adresa odesilatele odpovědi musí být unicastová adresa náležící rozhraní, na kterém byl multicastový nebo anycastový paket přijat.
  • Pokud zpráva je odpovědí na zprávu zaslanou na adresu, která nenáleží uzlu, adresa odesílatele by měla jednoznačně určovat chybu (například unicastová adresa náležící rozhraní, na kterém odesíláni selhalo).
  • V ostatních případech musí routovací tabulky uzlu určit, které rozhraní má být použito k přenosu zprávy ke svému cíli a unicastová adresa tohoto rozhraní musí být použita jako adresa odesílatele.

Když ICMPv6 uzel přijme paket, musí provést akci, která záleží na typu přijaté zprávy. ICMPv6 protokol musí omezovat počet chybových zpráv zaslaných na stejné místo určení, aby zamezil přetížení sítě. Například, když uzel pokračuje v odesílání chybových paketů, ICMP signalizuje chybu v prvním paketu a pak to dělá opakovaně v přednastavených minimálních intervalech a nebo podle přednastaveného maximálního vytížení sítě. ICMP chybová zpráva nesmí být nikdy odeslána jako odpověď na jinou ICMP chybovou zprávu.

Reference

V tomto článku byl použit překlad textu z článku ICMPv6 na anglické Wikipedii.

Externí odkazy

Internet Control Message Protocol v 6 - parametry http://www.iana.org/assignments/icmpv6-parameters/icmpv6-parameters.xhtml