借助 EVPN-VXLAN 多宿主技术快速重新路由以保护出口链路
您可以在 EVPN-VXLAN 网络中的多宿主对等提供商边缘 (PE) 设备上启用快速重新路由出口链路保护 (ELP) 功能。此功能缩短了路由收敛时间,并避免在 PE 设备链接到 CE 设备失败时流向多宿主客户边缘 (CE) 设备的负载均衡流量损失。
好处
-
当与 CE 设备的链接出现故障时,可避免流向多宿主 CE 设备的负载均衡流量丢失。
-
缩短了大规模 EVPN-VXLAN 交换矩阵中多宿主以太网分段路由的路由收敛时间。
快速重新路由 ELP 如何与以太网网段中的多宿主协同工作
在 EVPN 交换矩阵中,为了提高可靠性和性能,客户通常将多宿主 CE 设备迁移到以太网段 (ES) 中的两个或多个 PE 设备。多宿主有助于:
-
如果 PE 设备链接到多宿主 CE 设备出现故障,可防止流量丢失。
-
在通向目标的多条路径之间启用负载平衡。
多宿主 CE 与不同 PE 设备的连接共享一个 ES 标识符 (ESI)。EVPN 设备使用 ES 路由(EVPN Type 4 路由)通告其本地多宿主对等方 PE 连接。PE 设备还使用 ES 路由在对等设备之间选择指定转发器 (DF),以避免在 ESI 上发送重复流量。
借助 EVPN-VXLAN,连接到多宿主 CE 设备的 PE 设备会通告每个本地连接的 ESI 的 ES 隧道路由(VXLAN 隧道路由)。远程 PE 设备接收这些通告,并为 ES 创建负载均衡的下一跳表。远程 PE 设备使用 ES 下一跃点在与 ESI 关联的对等 PE 设备之间对发往多宿主 CE 设备的流量进行负载平衡。
当远程 PE 向多宿主 CE 设备发送流量时,其中一个 ESI 链路发生故障时:
-
链路故障的 PE 设备撤回对应的 ES 路由。
-
远程 PE 设备继续使用与故障链路对应的路由向 ESI 负载平衡流量,直到设备收到路由撤回并调整其负载平衡下一跃点。
-
具有故障链路的 PE 设备会丢弃发往故障链路的多余(剩余)负载均衡流量。
-
远程 PE 设备接收并处理路由撤销。远程 PE 设备更新其 MAC 地址、路由信息和下一跳表。此时,远程 PE 设备停止向故障链路发送负载均衡流量。
在远程 PE 路由表收敛之前(在扩展环境中可能需要几秒钟),目标 CE 设备将丢失部分流量。
为避免成员链路中断时 ESI 上的这种负载均衡流量丢失,可在多宿主对等 PE 设备上启用快速重新路由 ELP 功能。此功能还有助于缩短 ESI 路由收敛时间,特别是在大规模网络中。
在以太网网段中具有快速重新路由功能的 ELP
在 PE 设备上启用此功能时,设备会为其每个对等 PE 设备创建一个备份 VXLAN 隧道,称为 ELP 隧道,用于 ES。ES 链路故障时,PE 设备使用 ELP 隧道将流量重新路由至一个或多个对等 PE 设备。
要使此功能正常工作,请在与 ESI 关联的所有对等 PE 设备上统一启用它。ES 上的每个 PE 设备都有一个通向所有对等 PE 设备的 ELP 隧道。
下图说明了 ELP 隧道重新路由流程在简单的 EVPN-VXLAN 交换矩阵中的工作原理,其中:
-
CE1 与对等 PE 设备 PE1 和 PE2 多宿主。
-
PE1 和 PE2 彼此之间有 ELP 隧道。
-
PE3 是一个远程源,使用 PE1 和 PE2 上的 VXLAN 隧道端点 (VTEP) 对流向 CE1 的流量进行负载均衡。
在 图 1 中,所有通向 CE1 的 ES 链路都已开启,因此 PE1 和 PE2 分别将其部分的负载均衡流量转发到 CE1。PE1 和 PE2 不需要使用其 ELP 隧道。

在 图 2 中,从 PE1 到 CE1 的链路出现故障。PE1 撤回故障链路的 ES 路由。但是,在 PE3 实现路由收敛之前,PE3 仍会向 PE1 发送一些多余的负载均衡流量。PE 1 不会丢弃其部分负载均衡流量,而是使用其 ELP 隧道将该流量重新路由到 PE2。PE2 将负载均衡流量的两部分转发到 CE1。

在 图 3 中,PE3 实现了路由收敛,并停止向 PE1 发送 ES 的任何负载均衡流量。PE3 仅将 ES 的所有流量发送至 PE2,PE2 将流量发送至 CE1。PE1 不再需要使用其到 PE2 的 ELP 隧道。

具有多个对等 PE 设备的 ELP 隧道
在 ES 上有两个或更多对等 PE 设备的 PE 设备上启用此功能时,PE 设备会为每个对等 PE 设备设置一个备用 VXLAN ELP 隧道。请参阅 图 4。每个 PE 设备都会维护一个下一跃点组,用于对发往 ES 的负载平衡流量进行处理。远程源 PE 设备在组中的下一跃点之间分配流向 ES 的流量。ES 上的每个对等 PE 设备还会维护一个负载均衡的下一跃点组,其中包含 ES 的所有 ELP 隧道,因此设备也可以对重新路由的流量进行负载均衡。
图 4 显示了如果 ES 上的一个链路发生故障时会发生什么情况。在这种情况下,从 PE1 到 CE1 的链路将会失败。其结果是:
-
在 PE4 实现路由收敛之前,PE4 仍会向 PE1 发送一些负载均衡的多余流量。
-
PE1 不会丢弃其部分负载均衡流量,而是将其两个 ELP 隧道上的多余负载均衡流量重新路由到对等 PE 设备 PE2 和 PE3。
-
PE2 和 PE3 将所有流量发送到 CE1,包括它们从 PE4 接收的负载均衡流量以及从 PE1 的 ELP 隧道接收的流量。
-
(未显示)PE4 的路由表收起。PE4 停止向 PE1 发送任何流量,并仅对流向 PE2 和 PE3 的流量进行负载均衡。

快速重新路由 ELP 要求和限制
要在 PE 设备上启用 ELP 隧道,请在[edit forwarding-options evpn-vxlan]
层级配置 reroute-address 语句。使用inet ip-address
语句的选项reroute-address
指定设备用于 ELP 隧道的 IP 地址。在 PE 设备上配置快速重新路由 ELP 将详细介绍此语句以及配置此功能所需的其他步骤。
使用此功能:
-
您必须在所有对等 PE 设备上为特定 ES 配置此语句,才能使任何对等 PE 设备上的 ELP 隧道正常工作。
-
当 AE ESI 接口出现故障时,多宿主对等 PE 设备不会刷新处于活动/活动状态的聚合以太网 (AE) 接口束链路的 MAC 地址表条目。此行为有助于实施快速重新路由操作并缩短路由收敛时间。
快速重新路由 ELP 具有以下限制:
-
此功能仅适用于在 AE 逻辑接口上配置的多宿主。
-
我们仅支持将此功能用于 IPv4 客户端流量。
-
此功能仅适用于单播流量和 VLAN 泛洪,不适用于组播流量。
-
我们仅在企业样式界面配置中支持此功能。(请参阅 灵活以太网服务封装 ,了解有关此类接口配置的更多信息。)
-
此功能可在 ES 链路发生故障时,一次仅在与特定 ESI 关联的一个多宿主对等方上处理重新路由流量。
对于计划中的管理链路关闭事件,例如当通过运行命令在 PE 设备上本地管理禁用 PE-CE 接口时, set interface interface-name disable
不支持快速重新路由 ELP。如果需要,对于 PE 设备上计划的接口关闭维护事件,请采取其他管理措施以防止维护期间的流量丢失。但是,如果 PE-CE 链路由于 CE 设备上的管理链路关闭命令而中断,PE 设备将检测到链路故障,并在这种情况下调用快速重新路由操作。
在 PE 设备上配置快速重新路由 ELP
您可以在支持的多宿主对等 PE 设备上为 ES 配置快速重新路由 ELP 功能元素。要使此功能正常工作,必须在 ES 的所有多宿主对等 PE 设备上启用它。您可以在每个对等 PE 设备上统一配置此处列出的步骤。
无需在 ES 中的多宿主 CE 设备或向 ES 发送流量的远程源 PE 设备上配置任何对应的元素。CE 设备和远程源 PE 设备可能是不支持此功能的设备。
要在 ES 的多宿主对等 PE 设备上启用快速重新路由 ELP 功能,请执行以下操作:
验证快速重新路由 ELP 隧道的创建和运行
启用快速重新路由 ELP 隧道功能后,您可以使用本节中的 CLI show 命令查看 ELP 隧道 IP 地址、下一跳 ID 以及源和远程 VTEP 信息。
我们根据 类似于图 2 的拓扑来解释一些示例 show 命令输出,下面再次包含这些拓扑以供参考:

表 1 显示了 PE 设备的主 lo0 IP 地址及其 ELP 隧道的辅助 lo0 IP 地址示例拓扑:
设备 | IP 地址 | ELP 隧道 IP 地址 |
---|---|---|
PE1型 |
192.168.0.1/32 |
192.168.102.1/32 从 PE1 到 PE2 的 ELP 隧道 |
PE2 |
192.168.0.2/32 |
192.168.201.1/32 从 PE2 到 PE1 的 ELP 隧道 |
在 图 5 中,示例拓扑的 CE 设备后面也有这些主机(未显示):
主机说明 | VLAN 名称 (VLAN ID) | MAC 地址 |
---|---|---|
CE1 后面的接收器 |
VLAN2(VLAN ID 2) |
00:00:94:00:00:01 |
CE2 背后的远程源 |
VLAN3(VLAN ID 3) |
00:01:95:00:00:01 |
最后,在此示例拓扑中,分配给从 CE1 到 PE1 和 PE2 的多宿主链路的 ESI 为 00:00:00:00:20:00:00:00:00:00:00。
- 显示以太网交换表
- 显示以太网交换 VXLAN-隧道-端点 ESI
- 显示以太网交换 VXLAN-隧道-端点远程
- 显示以太网交换 VXLAN-隧道-端点源
- 显示路由表 __default_evpn__.evpn.0 extensive
- 显示路由表 bgp.evpn.0 extensive
- show interfaces(带 ELP 隧道 VTEP 接口)
显示以太网交换表
show ethernet-switching table mac-address extensive
使用命令查看特定 MAC 路由的 ELP 隧道下一跃点。
例如,此输出显示 PE1 将使用 ELP 隧道下一跃点(ELP-NH
字段)将其接收到的任何流量发送到 VLAN2 上 CE1 后面的主机(MAC 地址 00:00:94:00:00:01):
user@PE1> show ethernet-switching table 00:00:94:00:00:01 extensive MAC address: 00:00:94:00:00:01 Routing instance: L3VRF_MVS1 VLAN name: Vlan2, VLAN ID: 2 Learning interface: ae0.0 ELP-NH: 11777 Layer 2 flags: in_hash,in_ifd,in_ifl,in_vlan,in_rtt,kernel,in_ifbd,advt_to_remote,rcvd_from_remote Epoch: 0 Sequence number: 3 Learning mask: 0x4000000000000000010000000000000000000001 BGP sequence number: 0
显示以太网交换 VXLAN-隧道-端点 ESI
show ethernet-switching vxlan-tunnel-end-point esi esi-identifier esi-value
使用命令查看 ELP 隧道、VTEP IP 地址、下一跃点和 VTEP 接口名称。
例如,此输出显示 PE1 有一个 ELP 隧道,以及 ELP 下一跃点(ELP-NH
字段)到远程 VTEP PE2(RVTEP-IP
字段),用于 ESI 00:00:00:00:20:00:00:00:00:00: 00: 00:
user@PE1> show ethernet-switching vxlan-tunnel-end-point esi esi-identifier 00:00:00:00:20:00:00:00:00:00 ESI RTT VLNBH INH ESI-IFL LOC-IFL #RVTEPs 00:00:00:00:20:00:00:00:00:00 L3VRF_MVS1 28425 135034 esi.28425 ae0.0, 1 Aliasing LOCAL-IFL ELP-NH RVTEP-NH-LIST ae0.0 11777 11822, RVTEP-IP RVTEP-IFL VENH MASK-ID FLAGS MAC-COUNT 192.168.0.2 vtep-8.32830 11821 0 2 52
显示以太网交换 VXLAN-隧道-端点远程
show ethernet-switching vxlan-tunnel-end-point remote
使用命令查看有关设备的 ELP 隧道源 VTEP 和远程 VTEP 信息,包括:
-
VTEP IP 地址和接口名称
-
对应的下一跳 ID 和 ELP 隧道 IP 地址
ELP-IP
如果输出字段包含 IP 地址,则表示列中的RVTEP-IP
远程 VTEP 具有对应的 ELP 隧道。此外,如果该RVTEP-IP
地址是 ELP 隧道地址,ELP-IP
则该行中的列RVTEP-IP
将包含 “ELP
”。
有关此输出含义的详细信息,请参阅下面的示例输出和 表 3 :
user@PE1> show ethernet-switching vxlan-tunnel-end-point remote Logical System Name Id SVTEP-IP IFL L3-Idx SVTEP-Mode ELP-SVTEP-IP <default> 0 192.168.0.1 lo0.0 0 192.168.102.1 RVTEP-IP IFL-Idx Interface NH-Id RVTEP-Mode ELP-IP Flags 192.168.0.2 2756 vtep.32830 11821 RNVE 192.168.201.1 192.168.201.1 2757 vtep.32831 11822 RNVE ELP VNID MC-Group-IP 530 0.0.0.0 531 0.0.0.0
输出字段 | 含义 |
---|---|
SVTEP-IP - 192.168.0.1 ELP-SVTEP-IP—192.168.102.1 |
PE1 (192.168.0.1) 是源 VTEP,并有一个 IP 地址为 192.168.102.1 的 ELP 隧道到 PE2。 |
RVTEP-IP 标题下的第一行,显示: RVTEP-IP - 192.168.0.2 ELP-IP—192.168.201.1 |
PE1 具有 PE2 (192.168.0.2) 作为远程 VTEP。PE2 有一个 IP 地址为 192.168.201.1 的 ELP 隧道到 PE1。 |
RVTEP-IP 标题下的第三行,显示: RVTEP-IP - 192.168.201.1 ELP-IP—ELP |
IP 地址为 192.168.201.1 的远程 VTEP 是 ELP 隧道远程 VTEP。从此表中的其他输出字段中,我们知道这个远程 VTEP 是从 PE2 到 PE1 的 ELP 隧道。 |
显示以太网交换 VXLAN-隧道-端点源
show ethernet-switching vxlan-tunnel-end-point source
使用命令在输出字段中ELP-SVTEP-IP
查看设备 ELP 隧道源 VTEP IP 地址。
例如,PE1 上的以下示例输出显示,PE1 (SVTEP -IP
192.168.0.1) 在 lo0 接口上有一个 IP 地址为 192.168.102.1 (ELP-SVTEP-IP
) 的 ELP 隧道:
user@PE1> show ethernet-switching vxlan-tunnel-end-point source Logical System Name Id SVTEP-IP IFL L3-Idx SVTEP-Mode ELP-SVTEP-IP <default> 0 192.168.0.1 lo0.0 0 192.168.102.1 L2-RTT Bridge Domain VNID Translation-VNID MC-Group-IP L3VRF_MVS1 Vlan2+2 2 0.0.0.0 L3VRF_MVS1 Vlan3+3 3 0.0.0.0
显示路由表 __default_evpn__.evpn.0 extensive
show route table __default_evpn__.evpn.0 extensive
路由表命令包含显示本地重新路由 ELP 隧道地址的Reroute address
字段。
例如, Reroute address
下面的字段显示 PE1 (192.168.0.1) 上的 ELP 隧道的 IP 地址为 192.168.102.1:
user@PE1> show route table __default_evpn__.evpn.0 extensive __default_evpn__.evpn.0: 2071 destinations, 2101 routes (2071 active, 0 holddown, 0 hidden) 1: 192.168.0.1:0::0::FFFF:FFFF/192 AD/ESI (1 entry, 1 announced) *EVPN Preference: 170 Next hop type: Indirect, Next hop index: 0 Address: 0x8c06784 Next-hop reference count: 32771, key opaque handle: 0x0, non-key opaque handle: 0x0 Protocol next hop: 192.168.0.1 Reroute address: 192.168.102.1 Thread: junos-main
显示路由表 bgp.evpn.0 extensive
命令 show route table bgp.evpn.0 extensive
包括 Reroute address
显示设备 ELP 隧道地址的字段。
例如:
user@PE1> show route table bgp.evpn.0 extensive bgp.evpn.0: 40116 destinations, 67780 routes (40116 active, 0 holddown, 0 hidden) 1: 192.168.0.1:0::0::FFFF:FFFF/192 AD/ESI (1 entry, 1 announced) TSI: Page 0 idx 0, (group iBGPGrp type Internal) Type 1 val 0xf820c88 (adv_entry) Advertised metrics: Flags: Nexthop Change Nexthop: Self Localpref: 100 AS path: [55000] I Reroute address: 192.168.102.1 Primary Routing Table: __default_evpn__.evpn.0 Thread: junos-main
show interfaces(带 ELP 隧道 VTEP 接口)
show interfaces
使用带有 ELP 隧道 VTEP 接口名称的命令,查看设备何时在 ELP 隧道上重新路由流量。
例如,我们之前在 show ethernet-switching vxlan-tunnel-end-point remote 中看到的示例命令输出显示,ELP 隧道 VTEP 接口名称为 vtep.32831( Interface
包含到 PE2 的隧道的远程 VTEP 的列)。
如果输入 show interfaces vtep.32831
命令,在 CE1 和 PE1 之间的链路出现故障之前, Output packets
字段会显示 VTEP 的流量未通过 ELP 隧道:
user@PE1> show interfaces vtep.32831 Logical interface vtep.32831 (Index 2757) (SNMP ifIndex 2585) Flags: Up SNMP-Traps 0x4000 Encapsulation: ENET2 VXLAN Endpoint Type: Shared ELP Remote, VXLAN Endpoint Address: 192.168.201.1, L3 Routing Instance: default Input packets : 2 Output packets: 1 Protocol eth-switch, MTU: Unlimited Flags: Trunk-Mode
CE1 和 PE1 之间的链路出现故障后,同一命令会显示流量会在短时间内沿 ELP 隧道路径(直到源路由表融合为止):
user@PE1> show interfaces vtep.32831 Logical interface vtep.32831 (Index 2757) (SNMP ifIndex 2585) Flags: Up SNMP-Traps 0x4000 Encapsulation: ENET2 VXLAN Endpoint Type: Shared ELP Remote, VXLAN Endpoint Address: 192.168.201.1, L3 Routing Instance: default Input packets : 2 Output packets: 3890 Protocol eth-switch, MTU: Unlimited Flags: Trunk-Mode