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 ICMPIGMP (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

Type

Význam

0

Rezervováno

1

Cíl nedostupný

2

Paket příliš velký

3

Čas překročen

4

Chybný parametr

100

Soukromé experimenty

101

Soukromé experimenty

102-126

Nepřiřazeno

127

Rezervováno pro rozšíření chybových zpráv

128

Požadavek na odezvu

129

Odezva

130

Dotaz na členství ve skupině

131

Zpráva o členství ve skupině

132

Změna členství ve skupině

133

Žádost routeru

134

Oznámení routeru

135

Žádost souseda

136

Oznámení souseda

137

Přesměrování

138

Přečíslování routerů

139

Dotaz na informace o uzlu

140

Odpověď s informacemi o uzlu

141

Výzva inverzního objevování sousedů

142

Ohlášení inverzního objevování sousedů

143

Ohlášení členství ve skupině (MLDv2)

144

Žádost o adresy domácích agentů

145

Odpověď s adresami domácích agentů

146

Žádost o mobilní prefix

147

Ohlášení mobilního prefixu

148

Žádost o certifikační cestu

149

Ohlášení certifikační cesty

150

Pro experimentální mobilní protokoly typu Seamoby

151

Ohlášení skupinového směrovače

152

Výzva skupinovému směrovači

153

Ukončení skupinového směrovače

154

Rychlé předávání

155

Řídicí zpráva RPL

156

Aktualizace lokátoru ro ILNPv6

157

Požadavek na duplicitní adresu

158

Potvrzení duplicitní adresy

159

Řídicí zpráva MPL

160–199

Nepřiřazeno

200

Soukromé experimenty

201

Soukromé experimenty

255

Rezervová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

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ě:

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.