用語辞典・IPv6・接続方式

NDP

NDPとは

NDPは、IPv6の同一リンク上でルーター発見、アドレス解決、重複検出、到達確認などを行う仕組みです。一般にNeighbor Discovery Protocol(ネイバー・ディスカバリー・プロトコル)と呼び、RFCの名称はNeighbor Discovery for IPバージョン6です。

IPv4のARPが担うIPアドレスからリンク層アドレスへの解決に加え、ルーターとプレフィックスの発見、到達不能の検知、より適切な次ホップの通知までをまとめて扱います。

NDPはブロードキャストではなく、ICMPv6とマルチキャストを使います。そのため「IPv6版ARP」という一言だけでは、NDPの役割を十分に表せません。

一つのリンクで、ルーターと近隣の状態を発見・維持するルーター発見、アドレス解決、DAD、到達確認、Redirectを分担する
同じIPv6リンク上の端末とルーターがNDPを使い、ルーター発見、近隣アドレス解決、重複検出、到達確認、より良い次ホップへのRedirectを行う図解
図1問い合わせを全端末へ無差別に配るのではなく、solicited-nodeマルチキャスト(ソリシテッド・ノード・マルチキャスト)など、対象を絞ったグループを使います。

五種類のICMPv6メッセージを使う

誰が、何を知らせるメッセージかで読むNSとNAはアドレス解決だけでなく、DADや到達確認にも使う
RSルーターを探す

端末からルーターへ、RAを早く送るよう求める

RA経路とリンク情報

ルーターから端末へ、プレフィックスや寿命を知らせる

NS近隣へ問い合わせる

対象アドレスのリンク層アドレスや到達性を確認する

NA近隣情報を答える

自分が対象であることやリンク層アドレスの変更を通知する

Redirectより良い次ホップ

同じリンク上の別ルーターまたは宛先へ直接送れることを知らせる

図2RSは133、RAは134、NSは135、NAは136、Redirectは137のICMPv6 Typeを使います。受信時はHop Limit 255など、リンク内メッセージとしての検査条件があります。

アドレス解決では、IPv6アドレスから次のフレーム宛先を知る

同一リンクのIPv6宛先へ送る端末は、まず近隣キャッシュを調べます。リンク層アドレスが不明なら、そのIPv6アドレスに対応するsolicited-nodeマルチキャストへNSを送り、対象端末のNAから情報を得ます。

ルーターを越える宛先では、最終宛先のリンク層アドレスを探すのではありません。選んだ次ホップルーターのリンク層アドレスをNDPで解決し、そのルーター宛てフレームにIPパケットを入れます。

DADは、使用前のアドレスへNSを送る

新しく構成したIPv6アドレスはtentative状態で、送信元に未指定アドレスを使ったNSを対象のsolicited-nodeマルチキャストへ送ります。別機器からNAなどが返れば重複と判断し、そのアドレスを通常利用しません。

DADは競合を見つける仕組みであり、悪意ある応答を暗号学的に見破るものではありません。また、パケット損失があるリンクでは絶対的な保証にならないため、重複しにくい生成方法も重要です。

近隣キャッシュは、到達性に応じて状態が変わる

近隣キャッシュにはリンク層アドレスだけでなく、到達性の状態があります。直近に到達を確認したREACHABLE、情報はあるが再確認が必要なSTALE、送信を少し待つDELAY、能動的に確認するPROBEなどへ遷移します。

NUD(Neighbor Unreachability Detection/ネイバー・アンリーチャビリティー・ディテクション)は、上位層からの確認やNS・NAを使って次ホップが使えるか調べます。失敗すれば別ルーター選択やエラー処理につながります。

仕様の確認資料:RFC 4861「Neighbor Discovery for IP version 6」RFC 4862「IPv6 Stateless Address Autoconfiguration」

関連用語