NDPとは
NDPは、IPv6の同一リンク上でルーター発見、アドレス解決、重複検出、到達確認などを行う仕組みです。一般にNeighbor Discovery Protocol(ネイバー・ディスカバリー・プロトコル)と呼び、RFCの名称はNeighbor Discovery for IPバージョン6です。
IPv4のARPが担うIPアドレスからリンク層アドレスへの解決に加え、ルーターとプレフィックスの発見、到達不能の検知、より適切な次ホップの通知までをまとめて扱います。
NDPはブロードキャストではなく、ICMPv6とマルチキャストを使います。そのため「IPv6版ARP」という一言だけでは、NDPの役割を十分に表せません。

五種類のICMPv6メッセージを使う
アドレス解決では、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」