1. 简介
    地址重复检测(DAD: Duplicate Address Detection)背景要求:
    . 节点在发送路由器公告(RA)之前要获得唯一的本地链路地址。
    . IPv6自动配置要求在使用地址之前进行地址重复检测(DAD)。
    . 标准DAD花费较长时间才能完成,因而引入了“乐观的DAD”(RFC 4429)。

2. 标准DAD过程
    (1) 在发送邻居请求(NS)前,接口必须加入全节点组播地址(FF02::1)和生成IPv6地址的请求节点组播地址(solicited-node multicast address),即接收目的地址为这些IPv6地址的分组。

    (2)生成IPv6地址后随机延时一段时间后开始发送用于DAD的邻居请求(NS)消息。
      邻居请求(NS)消息的源地址为::,目的地址为临时单播地址的请求节点组播地址

    (3) 在DAD过程中地址处于Tentative状态(“暂时的”)(IFA_F_TENTATIVE)。在完成DAD过程后,tenativeAddr将会被作为“首选的”地址(PreferedAddr)。若发现了重复地址,则该地址变为"废弃的"地址(deprecatedAddr)。
      
       背后原理:未确定唯一性的地址不能使用
                 即不能接收目的地址或者发送源地址为此地址的分组,但是与DAD相关的邻居公告(NA)消息除外。

    (4) 以下参数值是Linux操作系统下的缺省值,这些参数可根据需要配置:
      . 发送邻居请求(NS)的个数n=1
      . 发送间隔Tret=1000ms

3. 地址冲突处理:
    (1) 当节点收到目的地址为其正在做DAD检测地址的邻居请求(NS)消息时:
       . 如果请求的源地址类型为IPV6_ADDR_ANY(全0地址::),则节点从接口上删除这个地址(DAD检测失败)