Before assigning unicast addresses to an interface, Duplicate Address Detection (DAD) is performed on the addresses to ensure that the addresses configured on a link are unique. DAD is performed on all unicast addresses (both manually and automatically configured). When the DAD procedure fails for an address, the address is not configured.
DAD prevents multiple nodes from using the same address simultaneously. DAD is performed on all unicast addresses of a network interface, provided the value of the dad_attempts option for that interface is greater than zero.
To check the uniqueness of an address, a node sends Neighbor Solicitation messages, each separated by an interval of 1 second. The number of Neighbor Solicitation messages sent is equal to the value of the dad_attempts option for the network interface.
An address on which the DAD procedure is applied remains in the tentative state until the procedure has been successfully completed. The target address of the Neighbor Solicitation message is set to the address that is being checked and remains in the tentative state. If the node receives a valid Neighbor Advertisement message with the tentative address as target, the tentative address is not unique. The tentative address is marked duplicated and cannot be used for any data communication.
If DAD fails for a link-local address, the network interface is configured to the down status.
If a node does not receive a Neighbor Advertisement message after sending the Neighbor Solicitation messages for a tentative address, the address is considered unique. When an address is determined to be unique, it is assigned to the network interface.
system1> ifconfig e0b 2001:0db8::99 system1> ifconfig e0b e0b: flags=0x2508866<BROADCAST,RUNNING,MULTICAST,TCPCKSUM> mtu 1500 inet6 2001:0db8::99 prefixlen 64 tentative ether 00:a0:98:08:64:07 (auto-1000t-fd-cfg_down) flowcontrol full
system1> Wed Aug 6 09:24:44 GMT [system1:netif.linkUp:info]: Ethernet e0b: Link up. Wed Aug 6 09:24:44 GMT [system1:netinet6.nbr.dad.dtcDupAdr:error]: e0b: DAD detected duplicate IPv6 address 2001:0db8::99: %d NS, 0 NA. Wed Aug 6 09:24:44 GMT [system1:netinet6.nbr.dad.complete:error]: e0b: DAD complete for 2001:0db8::99- duplicate found. Wed Aug 6 09:24:44 GMT [system1:netinet6.nbr.manl.intvtnReq:error]: e0b: Manual intervention required. Wed Aug 6 09:24:45 GMT [system1:netinet6.nbr.dadStrc.notFnd1:error]: nd6_dad_timer: DAD structure is not found. system1> ifconfig e0b e0b: flags=0x2d48867<UP,BROADCAST,RUNNING,MULTICAST,TCPCKSUM,LINK_UP> mtu 1500 inet6 2001:0db8::99 prefixlen 64 duplicated inet6 fe80::2a0:98ff:fe08:6407 prefixlen 64 scopeid 0x2 autoconf ether 00:a0:98:08:64:07 (auto-1000t-fd-up) flowcontrol full
system1> ifconfig e0b up system1> Tue Jul 22 16:46:38 GMT [system1: netif.linkUp:info]: Ethernet e0b: Link up. Tue Jul 22 16:46:39 GMT [system1: netinet6.nbr.dad.dtcDupAdr:error]: e0b: DAD detected duplicate IPv6 address fe80:0002::02a0:98ff:fe08:6407: %d NS, 0 NA. Tue Jul 22 16:46:39 GMT [system1: netinet6.nbr.dad.complete:error]: e0b: DAD complete for fe80:0002::02a0:98ff:fe08:6407 - duplicate found. Tue Jul 22 16:46:39 GMT [system1: netinet6.nbr.manl.intvtnReq:error]: e0b: Manual intervention required. Tue Jul 22 16:46:39 GMT [system1: netif.linkInfo:info]: Ethernet e0b: Link configured down. Tue Jul 22 16:46:40 GMT [system1: netinet6.nbr.dadStrc.notFnd1:error]: nd6_dad_timer: DAD structure is not found.
system1> ifconfig -a
e0a: flags=0x2508866<BROADCAST,RUNNING,MULTICAST,TCPCKSUM> mtu 1500
ether 00:a0:98:08:64:06 (auto-1000t-fd-cfg_down) flowcontrol full
e0b: flags=0x2508866<BROADCAST,RUNNING,MULTICAST,TCPCKSUM> mtu 1500
ether 00:a0:98:08:64:07 (auto-1000t-fd-cfg_down) flowcontrol full
e0c: flags=0x2508866<BROADCAST,RUNNING,MULTICAST,TCPCKSUM> mtu 1500
ether 00:a0:98:08:64:08 (auto-1000t-fd-cfg_down) flowcontrol full
e0d: flags=0x2508866<BROADCAST,RUNNING,MULTICAST,TCPCKSUM> mtu 1500
ether 00:a0:98:08:64:09 (auto-1000t-fd-cfg_down) flowcontrol full
e0e: flags=0x2508866<BROADCAST,RUNNING,MULTICAST,TCPCKSUM> mtu 1500
ether 00:a0:98:08:64:0a (auto-1000t-fd-cfg_down) flowcontrol full
e0f: flags=0x2508866<BROADCAST,RUNNING,MULTICAST,TCPCKSUM> mtu 1500
ether 00:a0:98:08:64:0b (auto-1000t-fd-cfg_down) flowcontrol full
lo: flags=0x1948049<UP,LOOPBACK,RUNNING,MULTICAST,TCPCKSUM,LINK_UP,UDPCKSUM> mtu 8160
inet 127.0.0.1 netmask 0xff000000 broadcast 127.0.0.1
inet6 fe80::1 prefixlen 64 scopeid 0x7 autoconf
inet6 ::1 prefixlen 128
ether 00:00:00:00:00:00 (VIA Provider)