Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

第 3 层 VPN 故障排除

诊断常见的第 3 层 VPN 问题

问题

描述

要解决第 3 层 VPN 配置中的问题,请从 VPN 的一端(本地客户边缘 [CE] 路由器)开始,然后按照路由到 VPN 的另一端(远程 CE 路由器)。

溶液

以下故障排除步骤应有助于诊断常见问题:

  1. 如果在本地提供商边缘 (PE) 和 CE 路由器之间配置了路由协议,请检查对等互连和邻接是否完全正常运行。执行此作时,请务必指定路由实例的名称。例如,要检查 OSPF 邻接,请在 PE 路由器上输入 show ospf neighbor instance routing-instance-name 命令。

    如果对等和邻接未完全正常运行,请检查 CE 路由器上的路由协议配置,并检查 PE 路由器上关联的 VPN 路由实例的路由协议配置。

  2. 检查本地 CE 和 PE 路由器是否可以相互 ping 通。

    要检查本地 CE 路由器是否可以对本地 PE 路由器上的 VPN 接口执行 ping作,请使用 ping 以下格式的命令,并指定 PE 路由器的 IP 地址或名称:

    要检查本地 PE 路由器是否可以对 CE 路由器执行 ping 命令,请使用 ping 以下格式的命令,并在传出回显请求数据包中指定 CE 路由器的 IP 地址或名称、用于 VPN 的接口名称以及源 IP 地址(本地地址):

    通常,在命令成功之前ping,必须先建立本地 CE 和本地 PE 路由器之间的对等或邻接关系。要在实验室设置中检查链路是否正常运行,请从[edit routing-instance routing-instance-name]层次结构级别删除interface语句并重新提交配置,从而从 VPN 路由和转发 (VRF) 中删除接口。执行此作会从 VPN 中删除接口。然后重试该ping命令。如果命令成功,请将接口配置回 VPN,并再次检查本地 CE 和 PE 路由器上的路由协议配置。

  3. 在本地 PE 路由器上,检查来自本地 CE 路由器的路由是否在 VRF 表 (routing-instance-name.inet.0) 中:

    以下示例显示了路由表条目。此处,CE 路由器的环路地址为 10.255.14.155/32 PE 和 CE 路由器之间的路由协议为 BGP。该条目看起来像任何普通的 BGP 公告。

    如果 VRF 路由表中不存在来自本地 CE 路由器的路由,请检查 CE 路由器是否正在向 PE 路由器播发路由。如果在 CE 和 PE 路由器之间使用静态路由,请确保配置了正确的静态路由。

  4. 在远程 PE 路由器上,检查来自本地 CE 路由器的路由是否存在于 bgp.l3vpn.0 路由表中:

    命令的输出 show route table bgp.l3vpn.0 extensive 包含特定于 VPN 的以下信息:

    • 在前缀名称(输出的第一行)中,路由识别符将添加到本地 CE 路由器的路由前缀中。由于路由识别符在 Internet 中是唯一的,因此路由识别符和 IP 前缀的串联可提供唯一的 VPN-IP 版本 4 (IPv4) 路由条目。

    • Route Distinguisher 字段将路由识别符与 VPN-IPv4 地址分开列出。

    • label-switched-path 字段显示用于传输 VPN 流量的标签交换路径 (LSP) 的名称。

    • Push 字段显示 VPN-IPv4 数据包中携带的两个标签。第一个标签是内部标签,也就是 PE 路由器分配的 VPN 标签。第二个标签是外部标签,即 RSVP 标签。

    • Communities 字段列出了目标社区。

    • Secondary tables 字段列出了此路由器上已安装此路由的其他路由表。

    如果远程 PE 路由器上的 bgp.l3vpn.0 路由表中不存在来自本地 CE 路由器的路由,请执行以下作:

    • 检查语句中配置 vrf-import 的远程 PE 路由器上的 VRF 导入过滤器。(在本地 PE 路由器上,检查使用 vrf-export 语句配置的 VRF 导出过滤器。)

    • 检查 PE 路由器之间是否存在可作的 LSP 或 LDP 路径。为此,请检查 IBGP 下一跃点地址是否在 inet.3 表中。

    • 检查 PE 路由器之间的 IBGP 会话是否已建立并正确配置。

    • 检查“隐藏”路由,这通常表示路由标记不正确。为此,请使用 show route table bgp.l3vpn.0 hidden 命令。

    • 检查内部标签是否与本地 PE 路由器分配的内部 VPN 标签匹配。为此,请使用 show route table mpls 命令。

    以下示例显示了此命令在远程 PE 路由器上的输出。此处,内部标签为 100004

    以下示例显示了此命令在本地 PE 路由器上的输出,其中显示内部标签与 100004 远程 PE 路由器上的内部标签匹配:

  5. 在远程 PE 路由器上,检查来自本地 CE 路由器的路由是否存在于 VRF 表 (routing-instance-name.inet.0) 中:

    在此路由表中,路由识别符不再前置到前缀。最后一行 Primary Routing Table,列出了从中获知此路由的表。

    如果路由不在此路由表中,但存在于本地 CE 路由器上的 bgp.l3vpn.0 路由表中,则路由可能未通过远程 PE 路由器上的 VRF 导入策略。

    如果 VPN-IPv4 路由不 vrf-import 匹配任何策略,则该路由根本不会显示在 bgp.l3vpn 表中,因此不会出现在 VRF 表中。如果发生这种情况,则可能表示在 PE 路由器上,您在另一个 VPN(具有公共目标)上配置了另一个 vrf-import 语句,并且路由显示在 bgp.l3vpn.0 表中,但被导入到错误的 VPN 中。

  6. 在远程 CE 路由器上,检查路由表 (inet.0) 中是否存在来自本地 CE 路由器的路由:

    如果路由不存在,请检查远程 PE 和 CE 路由器之间的路由协议配置,并确保 PE 和 CE 路由器之间的对等方和邻接(或静态路由)正确无误。

  7. 如果确定源自本地 CE 路由器的路由正确无误,请重复此过程,检查源自远程 CE 路由器的路由。

示例:对 3 层 VPN 进行故障排除

此示例说明如何使用 ping 命令检查 VPN 拓扑中各种路由器的可访问性,以及如何使用 traceroute 命令检查数据包在 VPN 路由器之间传输的路径。

要求

此示例使用以下硬件和软件组件:

  • M Series 路由器

  • Junos OS 10.0R1 及更高版本

概述

拓扑学

图 1 所示的拓扑展示了此示例中使用的网络,用于演示如何使用 ping 和 traceroute 命令来测试参与第 3 层 VPN 的路由器之间的连接。

图 1:用于 ping 和 traceroute 的第 3 层 VPN 拓扑示例 Network topology diagram showing connections: CE1 to PE1 (IP 192.168.10.4), PE1 to P (VPN1, IP 192.168.10.1), P to PE2 (VPN3), PE2 to CE2 (VPN2, IP 192.168.20.2).

从另一台 CE 路由器对 CE 路由器执行 Ping 命令

程序

分步过程

下面介绍了如何使用 ping 和 traceroute 命令对第 3 层 VPN 拓扑进行故障排除。在命令中 ping 将另一台 CE 路由器的环路地址指定为 IP 地址,从而可以将一台 CE 路由器与另一台 CE 路由器对另一台 CE 路由器执行 ping 命令。如果 CE 路由器已向其直接连接的 PE 路由器通告环路地址,则此 ping 命令将成功。这些 ping 命令的成功也意味着路由器 CE1 可以对路由器 CE2 以外的任何网络设备执行 ping 命令,反之亦然。 图 1 显示了以下步骤中引用的拓扑:

  1. 从路由器 CE1 (VPN4) 对路由器 CE2 (VPN5) 执行 Ping作:

  2. 要确定从路由器 CE1 的环路接口到路由器 CE2 的环路接口的路径,请使用以下 traceroute 命令:

  3. 使用 traceroute 命令检查第 3 层 VPN 使用的路径时,不会显示服务提供商网络中的提供商 (P) 路由器。如上所示,从路由器 VPN1 到路由器 VPN2 的跳转显示为单跃点。未显示 图 1 中所示的 P 路由器 (VPN3)。

  4. 从路由器 CE2 (VPN5) 对路由器 CE1 (VPN4) 执行 Ping作:

  5. 要确定从路由器 CE2 到路由器 CE1 的路径,请使用以下 traceroute 命令:

从本地 CE 路由器对远程 PE 和 CE 路由器执行 Ping 命令

程序

分步过程

从本地 CE 路由器,您可以对远程 PE 和 CE 路由器(点对点接口)上的 VPN 接口执行 ping 命令。 图 1 显示了以下示例中引用的拓扑:

  1. 从路由器 CE1 对路由器 CE2 执行 Ping 命令。

  2. 要确定从路由器 CE1 的环路接口到路由器 CE2 的直连接口的路径,请使用以下 traceroute 命令:

  3. 从路由器 CE1 (VPN4) 对路由器 PE2 (VPN2) 执行 Ping作。在这种情况下,从路由器 CE1 发出的数据包会先转到路由器 PE2,然后转到路由器 CE2,然后再返回到路由器 PE2,然后路由器 PE2 才能响应互联网控制信息协议 (ICMP) 请求。您可以使用 traceroute 命令进行验证。

  4. 要确定从路由器 CE1 到路由器 PE2 的路径,请使用以下 traceroute 命令:

从多接入接口对 CE 路由器执行 Ping 命令

程序

分步过程

如果 VPN 接口是多接入接口(如 fe-1/1/2.0 路由器 CE1 上的接口),则无法对一台 CE 路由器从另一台路由器执行 ping 命令。要从路由器 CE2 对路由器 CE1 执行 ping 命令,必须在路由器 PE1 上的层次结构级别包含语 vrf-table-label[edit routing-instances routing-instance-name] ,或者在路由器 PE1 上配置到路由器 CE1 的 VPN 接口的静态路由。如果包含 vrf-table-label 用于 ping 路由器的语句,则无法配置静态路由。

  1. 如果在路由器 PE1 上配置到路由器 CE1 的 VPN 接口的静态路由,则其下一跃点必须指向路由器 CE1(在 [edit routing-instance routing-instance-name] 层次结构级别),并且必须从路由器 PE1 向路由器 PE2 通告此路由,如以下配置所示:

  2. 现在,您可以从路由器 CE2 对路由器 CE1 执行 ping 命令:

  3. 要确定这两个接口之间的路径,请使用命令 traceroute

从 CE 路由器对直接连接的 PE 路由器执行 Ping 命令

程序

分步过程

通过 CE 路由器上的环路接口,您可以对直接连接的 PE 路由器上的 VPN 接口执行 ping 命令。 图 1 显示了此过程中引用的拓扑:

  1. 通过路由器 CE1 (VPN4) 上的环路接口,ping 路由器 PE1 上的 VPN 接口 fe-1/1/0.0

  2. 从路由器 CE2 (VPN5) 上的环路接口,对路由器 PE2 上的 VPN 接口 t3-0/0/3.0、 执行 ping 命令:

  3. 从路由器 CE2 (VPN5) 上的环路接口,对路由器 PE2 上的 VPN 接口 t3-0/0/3.0、 执行 ping 命令:

  4. 要确定从路由器 CE2 上的环路接口到路由器 PE2 上的 VPN 接口的路径,请使用以下 traceroute 命令:

从 PE 路由器对直接连接的 CE 路由器执行 Ping 命令

程序

分步过程

通过 PE 路由器上的 VPN 和环路接口,您可以对直接连接的 CE 路由器上的 VPN 接口执行 ping 命令。 图 1 显示了此过程中引用的拓扑:

  1. 通过 PE 路由器(路由器 PE1)上的 VPN 接口,可以对直接连接的 CE 路由器(路由器 CE1)上的 VPN 或环路接口执行 ping 命令。

    从路由器 PE1 (VPN1) 上的 VPN 接口,对路由器 CE1 上的 VPN 接口 fe-1/1/0.0、 执行 ping 命令:

  2. 从路由器 PE1 (VPN1) 上的 VPN 接口,对路由器 CE1 上的环路接口 10.255.10.4、 执行 ping 命令:

  3. 要分别确定从路由器 PE1 上的 VPN 接口到路由器 CE1 上的 VPN 和环路接口的路径,请分别使用以下 traceroute 命令:

  4. 从路由器 PE2 (VPN2) 上的 VPN 接口,对路由器 CE2 上的 VPN 接口 t3-0/0/3.0、 执行 ping 命令:

  5. 从路由器 PE2 (VPN2) 上的 VPN 接口,对路由器 CE2 上的环路接口 10.255.10.5、 执行 ping 命令:

  6. 要分别确定从路由器 PE2 上的 VPN 接口到路由器 CE2 上的 VPN 和环路接口的路径,请分别使用以下 traceroute 命令:

从本地 PE 路由器对远程 CE 路由器执行 Ping 命令

程序

分步过程

以下过程仅对第 3 层 VPN 有效。要从第 3 层 VPN 中的本地 PE 路由器对远程 CE 路由器执行 ping 命令,需要配置以下接口:

  1. 为环路接口配置逻辑单元。

    要在 PE 路由器的环路接口上配置其他逻辑单元,请在[edit interfaces lo0]层级配置unit语句:

  2. 在本地 PE 路由器上为第 3 层 VPN 路由实例配置环路接口。您可以将一个逻辑环路接口与每个第 3 层 VPN 路由实例相关联,从而对路由器上的特定路由实例执行 ping 命令。

    使用interface层次结构级别的语句[edit routing-instances routing-instance-name]指定您在步骤 1 中配置的环路接口:

    interface-name 环路接口上的逻辑单元(例如, lo0.1)。

  3. 现在,通过 PE 路由器上的 VPN 接口,您可以对远程 CE 路由器上环路接口上的逻辑单元执行 ping 命令:

    用于 interface 在环路接口上指定新的逻辑单元(例如, lo0.1)。有关如何使用命令 ping interface 的详细信息,请参阅 Junos 接口命令参考

排除来自千兆以太网接口的不一致通告路由的故障

程序

分步过程

对于第 3 层 VPN 中 LAN 上的直接路由,Junos OS 会尝试查找可指定为下一跃点的 CE 路由器。如果无法执行此作,则会丢弃来自千兆以太网接口的播发路由。

在这种情况下:

  1. static[edit routing-options] VRF 路由实例的或[edit logical-systems logical-system-name routing-options]层次结构级别使用语句到 LAN 子网上的 CE 路由器,将 CE 路由器配置为下一跃点。此 LAN 上直接指向目标的所有流量都将流向 CE 路由器。您可以向 LAN 上的两台 CE 路由器添加两条静态路由以实现冗余。

  2. [edit routing-instances routing-instance-name]层次结构级别配置vrf-table-label语句,以将数据包的内部标签映射到特定的 VRF 路由表。这允许检查封装的 IP 报头,以强制在 VRF 路由实例上查找所有流量。

    注意:

    vrf-table-label该语句并非适用于每个面向核心的接口;例如,不支持通道化接口。有关通过以太网和 SONET/SDH 接口支持语vrf-table-label句的信息,请参阅基于 IP 报头过滤第 3 层 VPN 中的数据包