如果 IPv6 地址将严格基于 EUI-64 逻辑,那么是否真的需要邻居发现协议?

网络工程 ip ipv6 协议理论 民进党
2021-08-01 05:42:33

我正在 IPv6 上构建我的基础知识,并意识到多播组只不过是 FF02::1:FFXX:XXXX。这里 xxx 只不过是带有简单的第 7 位魔法的 24 位 Mac 地址(48 位)。但是,如果地址是基于 EUI-64 的,那么为什么主机不能通过自己的数学运算而不是使用邻居发现协议来计算出 Mac 地址。这样,IPv6 会更快,因为不需要将 IP 地址解析为 mac 地址。我知道出于安全考虑,Microsoft 不喜欢 EUI-64 概念。但是,使用 24 位 Mac 地址的逻辑非常简单。因此,无论如何,您要公开 mac 地址的 24 位,其余 24 位实际上是制造 ID。所以,

2个回答

...并且已经意识到多播组不过是 FF02::1:FFXX:XXXX。这里 xxx 只不过是 24 位的 Mac 地址......

您是对的:如果IPv6 地址基于 MAC 地址,则不需要邻居发现。

所以,基本上我想了解邻居发现协议背后的基本原理......

问题是:为什么 MAC 地址并不总是编码到 IPv6 地址中。

RFC 1970(1996 年 8 月引入邻居发现协议)列举了一些原因:

  • 具有固定 IP 地址的计算机 - 例如服务器:更换网卡时必须更改 IP 地址。
  • 任播:这只有在共享一个 IP 地址的所有计算机都具有相同的 MAC 地址时才有可能。
  • IPv6 不仅适用于以太网,还适用于可能使用长于 64 位的“MAC”地址的第 2 层协议。

如果只有一台计算机使用不反映其 MAC 地址的 IPv6 地址,则您需要 ND 协议。

与 IPv4 的 ARP 一样,IPv6 的 ND 试图将第 3 层网络地址解析为第 2 层地址,例如 MAC 地址。大多数操作系统现在使用隐私扩展和随机寻址,因此 IPv6 网络地址不是基于原始修改的 EUI-64。

另外,请记住,并非所有第 2 层协议都使用 MAC 地址。IEEE LAN 协议可以,但有的使用 48 位 MAC 地址转换为 EUI-64,有的(特别是很多依赖 IPv6 的 IOT 设备使用的新无线协议使用 64 位 MAC 地址,可以直接使用无需转换为修改后的 EUI-64)。还有其他协议,主要用于不使用 MAC 寻址的 WAN 寻址。

IPv6 ND 必须设计为无论网络地址是否基于 EUI-64 寻址,它都能工作。

ND 还涵盖了比第 3 层到第 2 层地址解析更多的内容。请参阅RFC 4861,IP 版本 6 (IPv6) 的邻居发现,第 3.1 节。与 IPv4 的比较

3.1. 与 IPv4 的比较

IPv6 邻居发现协议对应于 IPv4 协议地址解析协议 [ARP]、ICMP 路由器发现 [RDISC] 和 ICMP 重定向 [ICMPv4] 的组合。在 IPv4 中,虽然主机要求文档 [HR-CL] 确实为死网关检测指定了一些可能的算法(邻居不可达检测解决的问题的一个子集),但对于邻居不可达检测没有普遍同意的协议或机制。

邻居发现协议对 IPv4 协议集进行了大量改进:

  • 路由器发现是基本协议集的一部分;主机不需要“窥探”路由协议。
  • 路由器广告携带链路层地址;不需要额外的数据包交换来解析路由器的链路层地址。
  • 路由器广告携带链接的前缀;不需要有单独的机制来配置“网络掩码”。
  • 路由器广告启用地址自动配置。
  • 路由器可以为要在链路上使用的主机通告 MTU,确保所有节点在缺少明确定义的 MTU 的链路上使用相同的 MTU 值。
  • 地址解析多播“传播”超过 1600 万 (2^24) 个多播地址,大大减少了目标节点以外的与地址解析相关的中断。此外,根本不应该中断非 IPv6 机器。
  • 重定向包含新的第一跳的链路层地址;接收重定向时不需要单独的地址解析。
  • 多个前缀可以与同一个链接相关联。默认情况下,主机从路由器广告中学习所有的链路前缀。但是,路由器可以配置为从路由器广告中省略部分或全部前缀。在这种情况下,主机假定目的地处于离线状态,并将流量发送到路由器。然后路由器可以根据需要发出重定向。
  • 与 IPv4 不同,IPv6 重定向的接收者假定新的下一跳在链路上。在 IPv4 中,主机忽略根据链接的网络掩码指定不在链接上的下一跳的重定向。IPv6 重定向机制类似于 [SH-MEDIA] 中指定的 XRedirect 工具。预计它对非广播和共享媒体链接有用,其中节点不希望或不可能知道链接上目的地的所有前缀。
  • 邻居不可达检测是基础的一部分,在出现路由器故障、部分故障或分区链路或节点更改其链路层地址的情况下,它显着提高了数据包传递的稳健性。例如,移动节点可以脱离链路而不会因为陈旧的 ARP 缓存而丢失任何连接。
  • 与 ARP 不同,邻居发现检测半链路故障(使用邻居不可达检测)并避免将流量发送到没有双向连接的邻居。
  • 与 IPv4 路由器发现不同,路由器广告消息不包含首选项字段。不需要偏好字段来处理不同“稳定性”的路由器;Neighbor Unreachability Detection 将检测死路由器并切换到工作路由器。
  • 使用本地链路地址来唯一标识路由器(用于路由器广告和重定向消息)使主机可以在站点重新编号以使用新的全局前缀的情况下维护路由器关联。
  • 通过将 Hop Limit 设置为 255,Neighbor Discovery 不受意外或有意发送 ND 消息的离线发送者的影响。在 IPv4 中,离线发送方可以发送 ICMP 重定向和路由器广告消息。
  • 将地址解析置于 ICMP 层使该协议比 ARP 更独立于媒体,并使适当使用通用 IP 层身份验证和安全机制成为可能。