目次
IPv6アドレスのアドレス解決
IPv6パケットをネットワーク上に送り出すためには、イーサネットなど物理的なインタフェースで利用するデータリンク層プロトコルでカプセル化しなければいけません。IPv6アドレスに対するデータリンク層アドレスのマッピングが必要です。
IPv4では、IPv4アドレスに対するMACアドレスの対応付けのためにARPを利用しています。IPv6ではARPの代わりにICMPv6でIPv6アドレスに対応するMACアドレスを求められるようにしています。
IPv6アドレスのアドレス解決のためにICMPv6の次のメッセージを利用します。
- NS(Neighbor Solicitation) タイプ135
- NA(Neighbor Advertisement) タイプ136
NSはARPリクエストに相当し、NAはARPリプライに相当します。NS/NAを利用したアドレス解決は、IPv4におけるブロードキャストを利用するARPとは異なり、マルチキャストを利用します。IPv6ホストは、ユニキャストアドレスのインタフェースIDに応じて要請ノード(Solicited-node)マルチキャストグループに自動的に参加します。
要請ノードマルチキャストアドレス
FF02:0:0:0:0:1:FF00:0000~FF02:0:0:0:0:1:FFFF:FFFF
要請ノードマルチキャストアドレスの下位24ビットは、ユニキャストアドレスの下位24ビットをマッピングします。たとえば、2001:1:2:3::1のユニキャストアドレスに対する要請ノードマルチキャストアドレスは、FF02::1:FF00: 1です。
同一ネットワーク上にインタフェースIDの下位24ビットが重複しているホストが複数存在することはまずないでしょう。そのため、要請ノードマルチキャストグループに含まれるホストは、ほとんどの場合1台だけです。
こうした要請ノードマルチキャストを利用することで、アドレス解決をしたいホスト以外には余計な負荷をかけずにすみます。
IPv6アドレス解決の動作
アドレス解決を行うトリガーは、IPv4でのARPのときと同様です。IPv6アドレスを指定して、IPv6パケットをネットワークに送り出そうとするときに自動的に行われます。IPv6アドレスに対するアドレス解決の動作の流れは次の通りです。
- NSを送信
- NAでNSに応答
- ネイバーキャッシュを更新
指定したIPv6アドレスに対応するMACアドレスを求めるためにICMPv6 NSを送信します。このときの宛先IPv6アドレスは解決したいIPv6アドレスに対応する要請ノードマルチキャストアドレスです。また、送信元IPv6アドレスはリンクローカルアドレスです。
ICMPv6 NSはマルチキャストなので、同一ネットワーク内でフラッディングされます。アドレス解決の対象でなければ、宛先の要請ノードマルチキャストグループに参加していないので、NSは破棄されます。つまり、アドレス解決対象のホストのみがNSを受信することになります。
NSに対する返事として、ICMPv6 NAを返します。NAはユニキャストで返すことになります。
NAが返ってくると、ARPキャッシュに相当するネイバーキャッシュを更新します。ネイバーキャッシュにエントリが存在すれば、キャッシュ内の情報を利用するようになります。
宛先になるMACアドレスがわかったら、送信したいIPv6パケットにイーサネットヘッダをカプセル化して、ネットワーク上に送り出すことができます。
ここでは詳しく触れませんが、IPv6 ACLにはICMPv6 NS/NAを許可するための暗黙のpermit条件が追加されるようになっています。NS/NAがdenyされてしまうとアドレス解決ができずに、IPv6パケットをネットワーク上に送り出すことができなくなってしまうことを防ぐためです。
IPv6
- [演習] IPv6ルーティング RIPng&OSPFv3
- IPv6ヘッダフォーマット
- IPv6アドレスの表記フォーマット
- IPv6ユニキャストアドレス
- IPv6マルチキャストアドレス
- IPv6アドレスの設定方法 ~手動/SLAAC/DHCPv6~
- Cisco IPv6アドレスの設定と確認コマンド
- Cisco IPv6アドレスの設定例
- IPv6アドレス解決の仕組み
- IPv6 トンネリングの概要
- IPv6 over IPv4 スタティックトンネル
- 6to4トンネル
- ISATAPトンネル
- 基本的なIPv6ネットワークの設定例
- IPv6 設定ミスの切り分けと修正 Part1
- IPv6 設定ミスの切り分けと修正 Part2
- IPv6 設定ミスの切り分けと修正 Part3