IPv6: ICMPv6


ICMPv6

ICMPv6フォーマット
                     1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 (32bits width)
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type      |      Code     |         Checksum              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     Message Body                              |
                        ...
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

ICMPv6 のType一覧

ICMPv6 で新設されたものは背景色をlight greenで表示している。

名称 Type
Destination Unreachable 1
Packet Too Big 2
Time Exceeded 3
Parameter Problem 4
Echo Request 128
Echo Reply 129
Multicast Listener Query 130
Multicast Listener Report 131
Multicast Listener Done 132
Router Solicitation 133
Router Advertisement 134
Neighbor Solicitation 135
Neighbor Advertisement 136
Redirect Message 137
Router Renumbering 138
ICMP Node Information Query 139
ICMP Node Information Response 140
Inverse Neighbor Discovery Solicitation Message 141
Inverse Neighbor Discovery Advertisement 142
Version 2 Multicast Listener Report 143
HA Address Discovery Request Message 144
HA Address Discovery Reply Message 145
Mobile Prefix Solicitation 146
Mobile Prefix Advertisement 147

Packet Too Big とパスMTU探索

IPv6では、パケット分割を行う可能性があるのは送信元ノードだけであり、中継ノードでのパケット分割は行わない。 送信元ノードはパケットを送信する前に、宛先ノードまでのパスの間で送信可能なパケットの最大サイズを知る必要がある。

  1. 送信元ノードは、パケットの送信に使用する物理インターフェイスのリンクMTU値を「仮のパスMTU値」とする。
  2. 「仮のパスMTU値」で送出して、送信先まで正常にパケットが届けば、正式なパスMTU値として採用する。
  3. ICMPv6 の"Packet Too Big" が返ってくれば、そのメッセージの中に含まれているMTU値をパスMTU値として採用し、再度パケットを送信する。この処理を、送信先に正しくパケットが届くまで繰り返す。

パスMTU探索は、各機器への実装は Must (必須)ではない (RFC1981)。 IPv6 の規格上の最小MTUサイズである 1280 byte で送信すれば、パスMTUを越えることはない。

RFC