Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

IPv6 邻接方发现

邻接方发现是一种用于 IPv6 流量的协议,允许同一链路上的不同节点向邻接方通告其存在,并了解其邻接方的存在。

IPv6 邻接方发现概述

邻居发现是一种协议,它允许同一链路上的不同节点向邻居通告它们的存在,并了解它们邻居的存在。

路由器和主机(节点)使用邻接方发现 (ND) 消息来确定驻留在附加链路上的邻接方的链路层地址,并覆盖无效的缓存条目。主机还使用 ND 来查找可以代表主机转发数据包的相邻路由器。

此外,节点使用 ND 来主动跟踪到达邻居的能力。当路由器(或路由器的路径)发生故障时,节点会主动搜索替代方案以到达目的地。

本节讨论以下主题:

对 IPv4 协议的改进

IPv6 邻居发现对应于多种 IPv4 协议:ARP、ICMP 路由器发现和 ICMP 重定向。但是,邻接方发现比 IPv4 协议集提供了许多改进。这些改进解决了以下问题:

  • 路由器发现 — 主机如何定位驻留在附加链路上的路由器。

  • 前缀发现 — 主机如何发现驻留在附加链路上的目标的地址前缀。节点使用前缀来区分驻留在附加链路上的目标和只能通过路由器到达的目标。

  • 参数发现 — 节点如何学习放置在传出数据包中的各种参数(链路参数或互联网参数)。

  • 地址解析 — 节点如何仅使用目标 IPv6 地址来确定附加链路上目标的链路层地址。

  • 下一跃点确定 — 节点用于将 IPv6 目标地址映射到其计划向其发送目标流量的邻接方 IPv6 地址(下一个路由器跃点或目标本身)的算法。

  • 邻接方不可达性检测 - 节点如何确定其无法再访问邻接方。

  • 重复地址检测 - 一个节点如何确定一个地址是否已被另一个节点使用。

路由器会定期从其每个组播接口组播路由器播发广告,以通告其可用性。主机侦听这些播发,用于地址自动配置和发现相邻路由器的链路本地地址。当主机启动时,它会组播路由器请求以请求立即播发。

路由器发现消息不构成路由协议。它们使主机能够发现相邻路由器的存在,但不用于确定哪台路由器最适合到达特定目标。

邻接方发现使用以下 Internet 控制消息协议版本 6 (ICMPv6) 消息:路由器请求、路由器通告、邻接方请求、邻接方通告和重定向。

IPv6 的邻接方发现可替换以下 IPv4 协议:路由器发现 (RDISC)、地址解析协议 (ARP) 和 ICMPv4 重定向。

Junos OS 9.3 及更高版本支持安全邻接方发现 (SEND)。SEND 使您能够保护邻居发现协议 (NDP) 消息。它适用于链路上的物理安全性得不到保证且担心对 NDP 消息的攻击的环境。Junos OS 通过加密生成的地址 (CGA) 保护 NDP 消息的安全。

路由器发现

路由器播发可以包含前缀列表。这些前缀用于地址自动配置、维护链路上(在同一数据链路上)前缀数据库以及重复地址检测。如果节点处于链路状态,路由器会将数据包转发至该节点。如果节点未联机,则数据包将被发送到下一个路由器以供考虑。对于 IPv6,前缀列表中的每个前缀都可以包含前缀长度、前缀的有效生存期、前缀的首选生存期、链路连接标志和自动配置标志。这些信息支持地址自动配置和链路参数设置,例如最大传输单元 (MTU) 大小和跳数限制。

Junos OS 22.4R1 及更高版本支持 NAT64 IPv6 地址前缀路由器播发。路由器播发路由器播发数据包中配置的 NAT64 IPv6 地址前缀。每个接口最多可以配置 3 个 NAT64 IPv6 地址前缀。

您可以使用命令配置 NAT64 IPv6 地址前缀 set protocols router-advertisement interface <interface-name> nat-prefix <prefix>.

您可以使用命令配置路由器播发时间 set protocols router-advertisement interface <interface-name> nat-prefix <prefix> lifetime <lifetime>.

地址解析

对于 IPv6,ICMPv6 邻居发现取代了地址解析协议 (ARP),用于将网络地址解析为链路级地址。邻接方发现还可处理链路层地址、入站负载平衡、任播地址和代理播发中的更改。

请求目标节点的链路层地址的节点会将邻居请求消息与目标地址组播。目标发回包含其链路层地址的邻接方通告消息。

邻接方请求和播发消息用于检测同一链路上的重复单播地址。IP 地址的自动配置取决于该链路上是否存在重复地址。重复地址检测是自动配置的必要条件。

邻接方请求和播发消息也可用于邻接方不可达性检测。邻接方不可达性检测涉及检测给定链路上是否存在目标节点。

重定向

发送重定向消息是为了通知主机到特定目标或链路邻接方的下一跳路由器更好。这类似于 ICMPv4 重定向。与 ICMPv4 重定向功能非常相似,路由器使用 ICMPv6 重定向消息通知链路上的主机给定目标的更好下一跃点。其目的是允许路由器帮助主机做出尽可能高效的本地路由决策。

SLAAC

除了为网络环境带来的所有其他改进之外,邻接方发现还支持地址自动配置,即无状态地址自动配置 (SLAAC)。IPv6 保留了通过 DHCPv6(和静态分配)进行有状态地址分配的功能,但 SLAAC 提供了一种轻量级地址配置方法,在许多情况下可能需要这种方法。

SLAAC 分两个阶段提供即插即用的 IP 连接:第 1 阶段:链路本地地址分配;然后进入第 2 阶段:全局地址分配

  • 第 1 阶段 - 本地连接步骤:

    1. 链路本地地址生成:每当启用支持 IPv6 组播的接口时,节点都会为该接口生成链路本地地址。这是通过将接口标识符附加到链路本地前缀 (FE80::/10) 来完成的。自动生成的链路本地地址无法删除。但是,也可以手动输入新的链路本地地址,这将覆盖自动生成的链路本地地址。

    2. 重复检测:在将新的链路本地地址分配给其接口之前,节点会验证该地址是否唯一。这是通过向新地址发送发往的邻居请求消息来实现的。如果有回复,则该地址是重复的,并且该过程将停止,需要作员干预。

    3. 链路本地地址分配:如果地址是唯一的,则节点会将其分配给为其生成地址的接口。

    此时,节点可以与同一链路上的所有其他节点建立 IPv6 连接。第 2 阶段只能由主机完成。路由器的接口地址必须通过其他方式进行配置。

  • 第 2 阶段 - 全球连接的步骤:

    1. 路由器通告:节点发送路由器请求,以提示所有链路上的路由器向其发送路由器通告。当路由器被启用以提供无状态自动配置支持时,路由器播发将包含一个子网前缀,供相邻主机使用。

    2. 全局地址生成:从路由器接收到子网前缀后,主机会通过将接口 ID 附加到提供的前缀来生成全局地址。

    3. 重复地址检测:主机再次执行重复地址检测 (DAD),这次是针对新的全局地址。4.全局地址分配:假设地址不是重复的,主机将其分配给接口。

    此过程可确保完整的 IPv6 全球连接,无需手动主机配置,也只需极少的路由器配置。

支持的 ICMP 路由器发现和 IPv6 邻居发现标准

Junos OS 实质上支持以下 RFC,这些 RFC 定义了互联网控制消息协议(IP 版本 4 的 ICMP [IPv4])和邻居发现(IP 版本 6 [IPv6])的标准。

  • RFC 1256,ICMP 路由器发现消息

  • RFC 4861,IP 版本 6 的邻接方发现 (IPv6)

  • RFC 2463, 互联网协议第 6 版 (IPv6) 规范的互联网控制信息协议 (ICMPv6) 规范

  • RFC 4443, 互联网协议第 6 版 (IPv6) 规范的互联网控制信息协议 (ICMPv6) 规范

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

  • RFC 8335,Probe :用于探测接口的实用程序

示例:配置 IPv6 接口并启用邻接方发现

此示例说明如何配置路由器或交换机以发送 IPv6 邻接方发现消息。

要求

在此示例中,除了设备初始化之外,不需要任何特殊配置。

概述

在此示例中,示例拓扑中的所有接口都配置了 IPv6 地址。如果您计划将 IPv6 功能扩展到 LAN、数据中心或客户网络,则可能需要使用无状态地址自动配置 (SLAAC),这意味着配置路由器播发。SLAAC 是一种 IPv6 协议,可提供与 IPv4 中的 DHCP 类似的功能。使用 SLAAC,网络主机可以根据附近路由器在路由器播发中提供的前缀,自动配置全局唯一的 IPv6 地址。这样就无需在网络的给定部分中显式配置每个接口。默认情况下,路由器播发消息处于禁用状态,您必须启用它们才能利用 SLAAC。

要将路由器配置为发送路由器通告消息,必须在配置中至少包含以下语句。所有其他路由器通告配置语句都是可选的。

要配置邻接方发现,请包含以下语句。您可以按接口配置路由器通告。

拓扑学

图 1 显示了简化的示例拓扑。

图 1:ICMP 路由器发现拓扑 ICMP Router Discover Topology

此示例说明如何确保连接到示例拓扑中子网的所有 IPv6 主机都可以自动配置本地 EUI-64 地址。

CLI 快速配置 显示了 图 1 中所有设备的配置。 #d15e200__d15e368 介绍了设备 R1 上的步骤。

配置

程序

CLI 快速配置

要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以便与网络配置匹配,然后将命令复制并粘贴到层 [edit] 级的 CLI 中。

设备 R1

设备 R2

设备 R3

设备 R4

分步过程

下面的示例要求您在各个配置层级中进行导航。有关作说明,请参阅 CLI 用户指南中的在配置模式下使用 CLI 编辑器

要配置 IPv6 邻接方发现,请执行以下作:

  1. 配置网络接口。

    此示例显示了多个环路接口地址,用于模拟连接的网络。

  2. 启用邻接方发现。

结果

在配置模式下,输入 show interfacesshow protocols 命令,以确认您的配置。如果输出未显示预期的配置,请重复此示例中的配置说明,以便进行更正。

如果完成设备配置,请从配置模式进入 提交

验证

要确认配置工作正常,请执行以下任务:

检查接口

目的

验证接口是否已开启,并查看分配的 EUI-64 地址。

行动

在作模式下,输入 show interfaces terse 命令。

意义

输出显示所有接口均配置了 IPv6 (inet6) 地址族。每个支持 IPv6 的接口都有两个 IPv6 地址;一个链路本地地址和一个全局地址。全局地址与 图 1 中所示的地址匹配。Junos OS 会自动为启用 IPv6作的任何接口创建链路本地地址。所有链路本地地址均以 fe80::/64 前缀开头。地址的主机部分整整 64 位长,与链路本地接口标识符匹配。使用 eui-64 语句配置接口地址时,其接口标识符将与链路本地地址的接口标识符匹配。这是因为链路本地地址是根据 EUI-64 规范编码的。

对接口执行 Ping 命令

目的

验证直接连接的接口之间的连接。

行动
  1. 确定远程路由器的 IPv6 接口地址。

    在设备 R2 上,对直接连接到设备 R1 的接口运行 show interfaces terse 命令,并将全局地址复制到终端仿真器的捕获缓冲区中。

  2. 在设备 R1 上,使用您复制的全局地址运行 ping 命令。

意义

Junos OS 对 IPv4 和 IPv6 测试使用相同的 ping 命令。由于网络中没有任何内部网关协议 (IGP),因此 ping 测试仅限于直接连接的邻居。对其他直接连接的邻居重复 ping 测试。

检查 IPv6 邻居缓存

目的

显示有关 IPv6 邻接方的信息。

执行 ping 测试后,您可以在 IPv6 邻接方缓存中找到接口地址条目。

行动

在作模式下,输入 show ipv6 neighbors 命令。

意义

在 IPv6 中,地址解析协议 (ARP) 已由邻接方发现协议 (NDP) 取代。IPv4 命令 show arp 替换为 IPv6 命令 show ipv6 neighbors。此命令显示的关键信息包括 IP 地址、MAC(链路层)地址和接口。

验证 IPv6 路由器通告

目的

通过确保路由器播发正常工作,确认可以使用 SLAAC 将设备添加到网络中。

行动

在作模式下,输入 show ipv6 router-advertisement 命令。

意义

输出显示设备 R1 的接口上正在发送和接收路由器通告,表示设备 R1 及其直接连接的邻接方均配置为生成路由器通告。

跟踪邻居发现事件

目的

通过跟踪路由器播发来执行其他验证。

行动
  1. 配置追踪作。

  2. 运行命令 show log