ICMPv6は、
IPv6ネットワークにおいて、エラー報告やネットワーク管理に用いられるプロトコルです。
IPv4のICMPをベースとしつつも、
IPv6の特性に合わせて拡張されており、
IPv6ネットワークの根幹を支える重要な役割を担っています。
概要
ICMPv6は、
IPv6における様々な機能をサポートするために、独自の構造とType番号を持っています。アドレス解決や重複アドレス検出など、
IPv4のARPに相当する機能も、ICMPv6の枠組み内で実現されています。プロトコル番号は58で、RFC 4443によって詳細が規定されています。
ICMPv6の
パケットフォーマットは、基本的な構造はICMPと同様です。しかし、各TypeごとにOptionが定義されることがあり、より柔軟な運用が可能です。
TypeとCode
ICMPv6では、Type番号によってエラー通知とそれ以外のメッセージを区別しています。エラー通知は127以下の値、それ以外のメッセージは128以上の値が使用されます。
以下は、ICMPv6の主なTypeとCodeの一覧です。
Type | Code | 説明 |
---|
-- | | ---------------- |
1 | 0 | Destination Unreachable (宛先到達不能) |
2 | 0 | Packet Too Big (パケット過大) |
3 | 0 | Time Exceeded (時間切れ) |
4 | 0 | Parameter Problem (パラメータ問題) |
128 | 0 | Echo Request (エコー要求) |
129 | 0 | Echo Reply (エコー応答) |
133 | 0 | Router Solicitation (ルータ要請) |
134 | 0 | Router Advertisement (ルータ広告) |
135 | 0 | Neighbor Solicitation (近隣要請) |
136 | 0 | Neighbor Advertisement (近隣広告) |
137 | 0 | Redirect (リダイレクト) |
143 | 0 | MLD Query (MLDクエリ) |
144 | 0 | MLD Report (MLDレポート) |
145 | 0 | MLD Done (MLD完了) |
※上記はICMPv6のTypeの一例であり、すべてのTypeを網羅したものではありません。完全なリストについては、IANAのICMPv6 Parametersを参照してください。
エラー通知
ICMPv6は、
パケット配送中に発生したエラーを送信元に通知する機能を持っています。これにより、ネットワーク管理者はエラーの原因を特定し、問題を解決することが可能です。
近隣探索 (Neighbor Discovery)
IPv6では、
IPアドレスからMACアドレスを取得するために、ICMPv6の近隣探索(NDP)という仕組みを利用します。これは、
IPv4のARPに相当する機能です。具体的には、アドレス解決を行いたいノードが、解決したい
IPアドレスをペイロードに格納したNeighbor Solicitation (NS)
パケットをマルチキャストアドレスに送信し、それに対して、該当するノードが自身のMACアドレスを格納したNeighbor Advertisement (NA)
パケットを返信することで、アドレス解決を行います。この手順はRFC 4861で規定されています。
Multicast Listener Discovery (MLD)
MLDは、
IPv6におけるマルチキャストグループ管理プロトコルです。
IPv4のIGMPに相当する機能であり、ホストが特定のマルチキャストグループに参加・離脱する際に利用されます。
ルータ広告
ICMPv6のルータ広告は、
IPv6ネットワークにおいて、ノードがアドレスを自動設定する際に重要な役割を果たします。ルータは定期的にルータ広告を送信し、ノードはこの情報に基づいて
IPアドレスを設定します。これにより、DHCPサーバを使用せずに、効率的なアドレス設定が可能になります。この機能は、RFC 4861で規定されているNeighbor Discoveryの一部として定義されています。
重複アドレス検出 (Duplicate Address Detection; DAD)
重複アドレス検出(DAD)は、
IPv6アドレスの一意性を確認するための仕組みです。ノードがアドレスを自動または手動で設定した場合、そのアドレスがネットワーク内で重複していないかをチェックします。具体的には、設定されたアドレスがテンタティブ(仮)状態になり、近隣要請(NS)が送信されます。もし、そのアドレスを既に使用しているノードが応答(NA)した場合、アドレスの重複が検出されます。1秒以内に応答がなければ、そのアドレスは使用可能と判断されます。DADの手順は、RFC 4862 Section 5.4で規定されています。
パスMTU探索 (Path MTU Discovery)
IPv6では、
パケットの断片化は送信元でのみ行われます。そのため、送信元は
パケットが通過する経路上の最小のMTU(パスMTU)を知る必要があります。パスMTU探索は、このMTUを自動的に発見するメカニズムです。送信元は最初は大きめのMTUで
パケットを送信し、経路上のルータが「
パケット過大(Packet too big)」エラーを返すたびに、送信元はMTUを小さくして再送します。これを繰り返すことで、送信先まで
パケットが到達する最適なMTU(パスMTU)が決定され、それ以降はそのMTUで
パケットをフラグメントせずに送信できるようになります。
ノード情報問い合わせ
ICMPv6には、ノードの情報を問い合わせる機能もあります。例えば、ノードの名前やアドレスなどの情報を取得できます。RFC 4620では、ノード名(FQDN)、
IPv6アドレス、
IPv4アドレスの問い合わせプロトコルについて規定しています。
参考文献
RFC 4443: Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification
RFC 4861: Neighbor Discovery for IP Version 6 (
IPv6)
RFC 4862: IPv6 Stateless Address Autoconfiguration
RFC 1981: Path MTU Discovery for IP version 6
* RFC 4620: Node Information Query Protocol for the
IPv6 Protocol
ICMPv6は、
IPv6ネットワークの運用において不可欠なプロトコルであり、その機能を理解することは、安定したネットワーク構築と運用に繋がります。