在 NDP (IPv6) 中使用的链接本地地址

网络工程 ip IPv6 协议论 ip 链接本地 国家发展计划
2022-02-10 09:35:59

如何在 NDP 中使用链接本地地址。我们可以使用全局地址发现邻居。那么为什么我们需要在 NDP 中链接本地地址呢?

2个回答

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

3.1。与 IPv4 的比较

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

Neighbor Discovery 协议提供了对 IPv4 协议集的大量改进:

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

最初,IPv4 没有链路本地寻址,后来被固定来满足需求。当 IETF 设计 IPv6 时,它从一开始就采用了类似的方法并将其内置到 IPv6 中。IPv6 要求每个 IPv6 接口都有一个本地链路地址。这样,所有 IPv6 主机在启用时都准备好参与,至少,在本地 LAN 中。

有多个 IPv6 RFC 解释了 IPv6 链路本地寻址的各个方面。

RFC 4291,IP 版本 6 寻址架构,第 2.5.6 节链路本地 IPv6 单播地址

链路本地地址设计用于在单个链路上寻址,用于自动地址配置、邻居发现或不存在路由器时。

RFC 4861,IP 版本 6 (IPv6) 的邻居发现

使用链路本地地址来唯一标识链路上的路由器的好处是,当站点重新编号时,路由器所知道的地址不应更改。

RFC 4862,IPv6 无状态地址自动配置

在没有路由器的情况下,主机只能生成链路本地地址。但是,链路本地地址足以允许连接到同一链路的节点之间进行通信。

-和-

链接本地地址 - 具有仅链接范围的地址,可用于到达连接到同一链接的相邻节点。所有接口都有一个本地链路单播地址。

-和-

由连接到单个链接的一组机器组成的小型站点不应要求存在 DHCPv6 服务器或路由器作为通信的先决条件。即插即用通信是通过使用链路本地地址实现的。链接本地地址有一个众所周知的前缀,用于标识一组节点所连接的(单个)共享链接。主机通过将接口标识符附加到链路本地前缀来形成链路本地地址。

还有RFC 7404,在 IPv6 网络中仅使用本地链路寻址

NDP 消息有两种类型:

  • 路由器请求和路由器通告
  • 邻居招揽和邻居广告

对于第二种消息,不需要链接本地地址(我刚刚使用 Wireshark 进行了检查)。

当计算机还没有 IPv6 全球单播地址时,通常会发送路由器请求消息。因此,计算机不能使用自己的 IPv6 全球单播地址作为源地址。

可以使用全局地址作为源地址来发送路由器通告消息。但是,没有全局地址的接收计算机不可能将单播消息发送回路由器。