在 IPv6 中生成链路本地地址时是否需要 DAD

网络工程 ipv6 ip-link-local
2021-07-12 07:52:57

在 IPv4 中,使用 ARP 请求检查本地链路地址是否唯一。但是在 IPv6 中,因为它是由 EUI-64 或哈希生成的。它被认为是独一无二的(我想)。但是它是否需要一个 DAD(邻居请求和广告)来做一个额外的确认。我查看了 RFC,但没有看到确切的规范。

2个回答

是的,当然 IPv6 需要 DAD 进行无状态寻址。请参阅IPv6 无状态地址自动配置,第 5.4 节。重复地址检测:

5.4 . 重复地址检测

在将所有单播地址分配给接口之前,必须对所有单播地址执行重复地址检测,无论它们是通过无状态自动配置、DHCPv6 还是手动配置获得的,以下情况除外:

  • DupAddrDetectTransmits 变量设置为零的接口不执行重复地址检测。

  • 不能对任播地址执行重复地址检测(请注意,任播地址在语法上不能与单播地址区分开来)。

  • 应该测试每个单独的单播地址的唯一性。请注意,已部署的实现仅对链路本地地址执行重复地址检测,并跳过对使用与链路本地地址相同的接口标识符的全局地址的测试。尽管本文档不会使此类实现无效,但不推荐这种“优化”,并且新实现不得进行这种优化。这种优化来自这样一个假设,即接口的所有地址都是从相同的标识符生成的。然而,这个假设实际上并不成立。引入了新类型的地址,其中单个接口上的所有单播地址的接口标识符不一定相同 [RFC4941] [RFC3972]。

如果地址是通过 EUI-64 生成的,则可以安全地假定它是唯一的。在以太网上,如果 MAC 不是唯一的,则会出现其他问题。任何自行生成的地址都必须经过验证,因为它们可能是重复的。