Internet Control Message Protocol for IPv6

ICMPv6(Internet Control Message Protocol for IPv6



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ネットワークの運用において不可欠なプロトコルであり、その機能を理解することは、安定したネットワーク構築と運用に繋がります。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。