Internet Control Message Protocol for IPv6ICMPv6)はIPv6で用いられるICMPプロトコルである。

概要

編集

IPv6ではICMPv6の枠組みを利用して、アドレス解決やアドレス重複検出などにも利用し、type番号もICMP(IPv4)のものとは違う番号が定義し直されているので、IPv4のICMPとは異なる新しいプロトコルとして定義されている。プロトコル番号は58。RFC 4443 によって規定されている。

パケットフォーマット

編集

パケットフォーマット自体はICMPと同一。

ICMPv6 パケット
Bit offset 0–7 8–15 16–31
0 Type Code Checksum
32 Message body

各type毎にoptionが定義されることがある。

TypeとCode

編集

typeはエラー通知は127以下、そうでないものは128以上の値が定義される。

Type Code
意味 意味
ICMPv6エラーメッセージ
1 Destination Unreachable
(宛先不達)
0 no route to destination
1 communication with destination administratively prohibited
2 beyond scope of source address
3 address unreachable
4 port unreachable
5 source address failed ingress/egress policy
6 reject route to destination
7 Error in Source Routing Header
2 Packet too Big
パケット過大
0
3 Time Exceeded
時間切れ
0 hop limit exceeded in transit
1 fragment reassembly time exceeded
4 Parameter Problem
(パラメータ異常)
0 erroneous header field encountered
1 unrecognized Next Header type encountered
2 unrecognized IPv6 option encountered
100 Private experimentation
(プライベートな実験)
101 Private experimentation
(プライベートな実験)
127 Reserved for expansion of ICMPv6 error messages
(ICMPv6エラーメッセージ拡張用の予約)
ICMPv6情報メッセージ
128 Echo Request
エコー要求
0
129 Echo Reply
エコー応答
0
130 Multicast Listener Query
(マルチキャストリスナクエリー)
0

There are two subtypes of Multicast Listener Query messages:

  • General Query, used to learn which multicast addresses have listeners on an attached link.
  • Multicast-Address-Specific Query, used to learn if a particular multicast address has any listeners on an attached link.

These two subtypes are differentiated by the contents of the Multicast Address field, as described in section 3.6 of RFC 2710

131 Multicast Listener Report
(マルチキャストリスナレポート)
0
132 Multicast Listener Done
(マルチキャストリスナダン)
0
133 router solicitation (NDP)
(ルータ要請)
0
134 router advertisement (NDP)
(ルータ広告)
0
135 Neighbor solicitation (NDP)
(近隣要請)
0
136 Neighbor advertisement (NDP)
(近隣広告)
0
137 redirect (NDP)
(リダイレクト)
0
138 Router Renumber
(ルータリナンバ)
0 Router Renumbering Command
1 Router Renumbering Result
255 Sequence Number Reset
139 ICMP Node Information Query
(ICMPノード情報問い合わせ)
0 The Data field contains an IPv6 address which is the Subject of this Query.
1 The Data field contains a name which is the Subject of this Query, or is empty, as in the case of a NOOP.
2 The Data field contains an IPv4 address which is the Subject of this Query.
140 ICMP Node Information Reply
(ICMPノード情報応答)
0 A successful reply. The Reply Data field may or may not be empty.
1 The Responder refuses to supply the answer. The Reply Data field will be empty.
2 The Qtype of the Query is unknown to the Responder. The Reply Data field will be empty.
141 Inverse Neighbor Discovery Solicitation Message
(逆近隣探索要請)
0
142 Inverse Neighbor Discovery Advertisement Message
(逆近隣探索広告)
0
143 MLDv2 Multicast Listener Report (RFC 3810)
MLDv2マルチキャストリスナレポート)
144 Home Agent Address Discovery Request Message
(ホームエージェントアドレス発見要求)
0
145 Home Agent Address Discovery Reply Message
(ホームエージェントアドレス発見応答)
0
146 Mobile Prefix Solicitation
(モバイルプリフィックス要請)
0
147 Mobile Prefix Advertisement
(モバイルプリフィックス広告)
0
148 Certification Path Solicitation (SEND)
(証明書パス要請)
149 Certification Path Advertisement (SEND)
(証明書パス広告)
151 Multicast Router Advertisement (MRD)
(マルチキャストルータ広告)
152 Multicast Router Solicitation (MRD)
(マルチキャストルータ要請)
153 Multicast Router Termination (MRD)
(マルチキャストルータ終了)
155 RPL Control Message
(RPL制御メッセージ)
200 Private experimentation
(プライベートな実験)
201 Private experimentation
(プライベートな実験)
255 Reserved for expansion of ICMPv6 informational messages
(ICMPv6情報メッセージ拡張用の予約)

上記は全てのtypeを網羅したものではない。完全なリストはIANA: ICMPv6 Parametersを参照のこと。

エラー通知

編集

ICMPと同様にパケット配送中に発生したエラーを通知する。

近隣探索 (Neighbor discovery)

編集

IPv6 では IPアドレスから MACアドレスを取得するために、IPv4 の ARP のような別のプロトコルを定義するのではなく、ICMPv6 の枠組み(NDP、Neighbor Discovery)を用いてアドレス解決を行う。アドレス解決をしたいノードペイロードに解決したいIPアドレスを格納して、マルチキャストアドレスに IPv4 の ARP request に相当する Neighbor Solicitation (NS) パケットを送信し、それに答えるべきノードは、Target linklayer address option に自ノードの MAC アドレスを格納した Neighbor Advertisement (NA) を送信してアドレス解決を行う。 RFC 4861 で規定されている。

Multicast Listener Discovery

編集

MLD。IPv4Internet Group Management Protocol(IGMP)に相当する機能。

ルータ広告

編集

ルータ広告自体は ICMP でも定義されている (RFC 1256) が、IPv6 では DHCP などのようなアドレス割当用サーバがなくても、ノードが自力でアドレスを設定する (ステートレスアドレス自動設定 (RFC 4862)) 手段を提供するために、積極的にこのルータ広告が利用されている。 これも広い意味での Neighbor Discovery であり、RFC 4861 で規定されている。

重複アドレス検出

編集

アドレスを手動で設定したり、ステートレスアドレス自動設定でつけた場合は、そのアドレスの一意性を確認できないので、重複アドレス検出 (Duplicate Address Detection; DAD) で、その一意性を確認する。 RFC 4862 Section 5.4 で規定されている

あるノードにアドレスがつけられると、そのアドレスは 'TENTATIVE' という状態になり、アドレスの重複検出を行う。これは target アドレスにその重複検出をするアドレスを入れた、アドレス解決で利用される近隣要請 (Neighbor Solicitation) を送出するものである。 もし、既にそのアドレスを使っているノードがあれば近隣広告 (Neighbor Advertisement; NA) を返すので、アドレスの重複が検出できる。 1 秒以内に NA が返ってこないと、そのアドレスは重複無しと判断され、利用可能アドレスとなる。

パスMTU探索 (Path MTU Discovery)

編集

IPv6のパケット断片化は配送中のルータではなく、送信元のみで行われるので、送信元は配送される全経路で通過できるパケットのサイズ(パスMTU)を知らなければならない。これを行うのがパスMTU探索である。 RFC 1981で規定されている。

あるノードから送信されるパケットは、そのインタフェースのMTU値などなるべく大きな値のMTU値を用いて送信される。途中のルータで転送先のインタフェースのMTU値がそのパケットより小さければ、そのルータは送信元に「パケット過大(Packet too big)」エラーを返す。このとき送信可能なMTU値も返されるので、送信元はその値でパケットをフラグメントして再び送信する。これを繰り返すことで、送信元は送信先まで到達可能なMTU値(パスMTU)を知ることができ、以降は始めからその値でフラグメントして送信することができるようになる。

ノード情報問い合わせ

編集

IPv6ノードに対して、直接そのノードのノード名、アドレスなどを問い合わせをするプロトコルである。 RFC 4620 では、ノード名(FQDN)、IPv6アドレスIPv4アドレスの問い合わせプロトコルについて規定している。

参考文献

編集
  • RFC 4443 Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification