DAD(Duplicate Address Detection)の忘備録です。
IPv6には、ネットワーク上に同じアドレスを持つノードが存在しない事を確認する為、DAD(Duplicate Address Detection)と呼ばれる機能が実装されています。
この機能は、IPv6アドレスが設定された機器がネットワークに接続された時やI/FがDown/Upした時などに実行されるもので、NDP(Neighbor Discovery Protocol)の一部の機能を利用して実行される機能です。IPv4のデータリンク層で使われるARPと同じような動作をします。つまり、IPv4ではデータリンク層の解決にARPを、IPv6ではデータリンク層の解決にNDPを使用するということになります。
※NDPについてはまた今後ということで。
DADはNDPの機能のうち、NS(Neighbor Solicitation)とNA(Neighbor Advertisement)を利用します。
例えば、以下の構成を想定してDADの動きを見てみます。
※MACアドレスを元に、自動的にリンクローカルアドレスを生成するEUI-64形式でもDADは実施されますが、例ではより動きを分かりやすくするためにスタティックアドレスを設定しアドレス重複を意図的に発生させています。- E80::1を設定したPC#1をネットワークに接続します。アドレスは重複していませんのでこの状態では通信が可能です。
- 同じFE80::1を設定したPC#2を、新たにネットワークに接続します。この状態では、FE80::1は"tentative address(仮アドレス)"として扱われ、通信に使用する事は出来ません。
- PC#2は、Neighbor Solicitation(NS)のTarget AddressにFE80::1を設定し、ソースアドレス"::"からマルチキャスト宛に送信します。
- PC#2のNSを受信したPC#1が、Neighbor Advertisement(NA)のTarget Addressにfe80::2を設定し、マルチキャスト宛に送信します。
- Target Addressに自分のアドレスが設定されたPC#1のNAを受信したPC#2は、アドレス重複と判断しFE80::1を使用しません。
PR