EVPN-over-VXLAN 支持的功能
EVPN-over-VXLAN 数据平面封装支持以下功能:
VXLAN 封装
EVPN 支持同一 EVPN 实例中的 VXLAN 数据平面封装类型。为了支持 VXLAN 封装类型,所有 EVPN PE 设备都会在 BGP 封装扩展社区中将隧道类型指定为 VXLAN。入口 PE 根据自己的封装功能及其 EVPN 远程 PE 设备播发的封装功能确定要使用的封装类型。
当 EVPN 用作采用 VXLAN 封装的底层 IP 网络的叠加解决方案时,数据包将在入口 PE 设备上使用 VXLAN 标头封装,而数据包将从出口 PE 设备的 VXLAN 标头中解封。 图 1 显示了通过采用 VXLAN 封装的底层 IP 网络在核心中转发数据包时的数据包格式:
的底层 IP 网络
如果底层网络使用 IPv4 协议和 IPv4 寻址,则 VXLAN 数据包中的外部 IP 报头为 IPv4 报头。所有支持 EVPN-VXLAN 的平台均使用 IPv4 底层网络。
在某些平台上,您可以将底层网络配置为使用 IPv6 协议和 IPv6 寻址。在这些情况下,VXLAN 数据包中的外部 IP 报头是 IPv6 报头,您需要将 VTEP 源地址配置为 IPv6 地址。有关使用 IPv6 底层网络的详细信息,请参阅 具有 IPv6 底层网络的 EVPN-VXLAN 。
EVPN BGP 路由和属性
EVPN BGP 路由和属性支持 EVPN-over-VXLAN 数据平面封装,受影响如下:
-
通过在 EVPN MAC 路由中附加带有隧道封装类型 VXLAN 的 BGP 封装扩展社区属性,出口 PE 设备将通告包含 EVPN 的组播路由和 EVPN per EVI 路由自动发现。
-
所有 EVPN BGP 路由的以太网标记字段都设置为零,以仅支持基于 VXLAN 网络标识符 (VNI) 的模式。
-
VNI 在 EVPN 叠加中也称为 VNI 字段,放置在 EVPN MAC 路由、EVPN 包含组播路由和每个 EVPN 实例自动发现路由的 MPLS 字段中。
-
对于每个以太网分段的 EVPN 自动发现路由,以太网分段标识符标签字段设置为零,因为支持的 VXLAN 封装类型不存在以太网分段标识符标签。
-
来自远程 PE 设备的所有对应 EVPN 路由都将通过 inet.0 或 :vxlan.inet.0 表进行解析,而非 IPv4 的 inet.3 表。将 IPv6 底层网络用于 EVPN-VXLAN 隧道时,inet6.0 和 :vxlan.inet6.0 表也是如此。
EVPN 多宿主过程
您可以通过第 2 层链路聚合组 (LAG) 接口,将裸机服务器 (BMS) 多宿主到一对瞻博网络架顶式 (TOR) 交换机,例如 QFX5100 交换机。由于采用 LAG 接口,因此只有一个 BUM 流量副本会从 BMS 转发到核心路由器。为防止第 2 层环路并将 BUM 流量泛洪回多宿主 BMS 所连接的同一以太网段,BUM 流量将应用多宿主主动-主动水平分割过滤规则。为了完全支持 EVPN 多宿主主动-主动模式功能,瞻博网络 TOR 交换机还会将 EVPN 混叠路由播发至其他 EVPN PE 设备。
由于采用 VXLAN 数据平面封装的 EVPN over IP 缺乏 MPLS 标签支持,这会影响以下 EVPN 多宿主主动-主动模式功能:
基于 VXLAN 的 EVPN 不支持主动-备用模式作。您只能使用 ESI 接口配置中的选项 all-active 配置主动-主动模式。不支持使用带有该 single-active 选项的 VXLAN 封装的 EVPN 的单宿主以太网分段。
从 Junos OS 22.2R1 版开始,EVPN 添加了对全活动 冗余、混叠和批量 MAC 撤销的支持(包括数据平面VXLAN的集成),以在数据中心之间提供与其现有 数据中心互连 (DCI) 技术的弹性连接。这一全新支持通过将 EVPN 组播与数据平面 VXLAN 集成,构建了端到端 DCI 解决方案。
在主动-主动拓扑中,两个链路都用于流量负载平衡。源自 EVPN-MPLS 域的单播流量负载均衡到两个网关,并通过 VXLAN 隧道转发到远程 VXLAN 终端路由器。负载均衡的数据包可能来自任一网关,并导致 VXLAN 终端路由器上出现 MAC 触发器问题。您可以通过将任播 IP 地址配置为网关环路接口上的辅助地址来克服此 MAC 触发器问题。将任播地址 vxlan-source-ip设置为 后,将创建指向任播地址的 VXLAN 隧道,并从 VTEP 的任播地址中学习 MAC。
使用以下语句在 ESI 级别设置主动-主动冗余,并在 lo0 接口上设置任播地址。将具有任播 IP 的备用地址添加到 lo0 接口,并将其作为 VTEP 接口vxlan-source-ip包含在路由实例和协议 pim 下。secondary-vtep-address
set interfaces lo0 unit 0 esi identifier set interfaces lo0 unit 0 esi all-active set interfaces lo0 unit 0 family inet address anycast-ip-address set interfaces lo0 unit 0 family inet address primary-ip-address primary set protocols pim secondary-vtep-address anycast-ip-address set routing-instances <name> vtep-source-interface lo0.0 set routing-instances <name> vtep-source-interface inet evpn-mpls-encap vxlan-source-ip anycast-ip-address
本地偏差和水平分割过滤规则
由于缺少 MPLS 标签,将修改多宿主以太网段的水平分割过滤规则,并基于 EVPN PE 设备的 IP 地址,而非 MPLS 以太网段标签。对于来自接入接口的流量,转发到多宿主以太网段的任何流量均基于采用 VXLAN 数据平面封装的 EVPN 的本地偏差。每个 EVPN PE 设备都会跟踪其共享同一以太网段的对等多宿主 EVPN PE 设备的 IP 地址。此跟踪可为从其他 EVPN PE 设备接收的每个 VXLAN 数据包提供源VTEP IP 地址(在外部 IP 报头中)。对于多目的地流量,水平分割过滤规则会在入口和出口 PE 设备上实施:
-
入口 PE — 负责将来自其任何直连接入接口的多目标数据包转发到其剩余的关联多宿主以太网段,无论入口 PE 设备的指定转发器 (DF) 选择状态如何。
-
出口 PE — 不允许将任何多目标数据包转发到出口 PE 与其入口 PE 设备共享的同一多宿主以太网段,无论主体出口 PE 设备的 DF 选择状态如何。
混淆
通过 LAG 接口束将 BMS 连接到一对瞻博网络 TOR 交换机时,只有一台交换机可以学习本地 MAC 地址。为了支持从 VXLAN 到交换机之间的 BMS 的已知单播流量的负载平衡,交换机上的 EVPN PE 设备必须按 EVPN 实例自动发现路由通告 EVPN。此播发向远程 EVPN PE 设备发出信号,表明从对等方多宿主 PE 设备从多宿主以太网段获知的 MAC 也可访问。对于 VXLAN 封装,在提供 EVPN 混叠功能时,EVPN 过程不会更改。
下一跳转发
第 2 层地址学习守护程序 (l2ald) 在入口处创建 VXLAN 封装复合下一跃点,在出口处创建 VXLAN 解封装复合下一跃点。VXLAN 封装复合下一跃点使用 VXLAN 封装将第 2 层单播流量转发到远程 PE 设备。如果有多个路径可用于到达远程 MAC(如多宿主 EVPN 主动-主动情况),路由协议守护程序 (rpd) 会将与远程 MAC 关联的所有远程 VTEP IP 地址通知 l2ald。l2ald 负责为远程 MAC 构建等价多路径 (ECMP) 下一跃点。VXLAN 解封装复合下一跃点可在出口处对 VXLAN 隧道标头进行解封装,然后将流量转发至 BMS。
对于已知的单播流量:
-
在入口时,rpd 不需要在 mpls.0 表中添加标签路由。
-
在出口时,rpd 不需要添加标签路由来指向 mpls.0 表中的表下一跃点。
叠加 IRB 环路防御
VXLAN 隧道路由在底层网络中解析。叠加使用底层路由解析来实现可访问性。在某些情况下,底层会使用叠加层实现可访问性,这可能会导致路由环路。
考虑这样一种情景:您在同一路由实例中同时配置 VXLAN 和 IRB,同时还在 OSPF 协议中或通过静态路由配置 IRB。您可以使用 option 或使用 “interface all” 选项set protocols ospf area # interface all来显set protocols ospf area # interface irb式配置 IRB。无论使用哪种方法,底层都可以让底层使用叠加层来解析隧道路由。
通过配置该 overlay-vxlan-interfaces 语句,防止底层网络使用叠加解析路由。然后配置路由策略,如下所示:
user@device# set policy-options policy-statement policy-name then install-nexthop except overlay-vxlan-interfaces user@device# set routing-options forwarding-table export policy-name
检查 :vxlan.inet.0 表,以验证系统是否阻止了 IRB 路由。首先,查看底层可以使用叠加路由的方案。活动路由使用 IRB:
user@device> show route table :vxlan.inet.0 10.1.1.1/32
:vxlan.inet.0: 15 destinations, 15 routes (15 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
10.1.1.1/32 *[Static/1] 00:00:33, metric2 1
> to 10.101.101.11 via irb.1
to 10.12.12.1 via et-0/0/2:0.0
此选项同时支持 IPv4 和 IPv6。以下是包含 IRB 路由的 :vxlan.inet6.0 表:
user@device> show route table :vxlan.inet6.0 abcd::10:1:1:1/128
:vxlan.inet6.0: 10 destinations, 10 routes (10 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
abcd::1:1:1:1/128 *[Static/1] 00:30:11, metric2 1
to fe80::8ad9:8fff:fe62:b25f via et-0/0/2:0.0
> to fe80::8ad9:8f00:162:b220 via irb.1
当语句阻止将 IRB 路由添加到表中时 overlay-vxlan-interfaces ,请查看相同的输出。IPv4 和 IPv6 表如下所示:
user@device> show route table :vxlan.inet.0 10.1.1.1/32
:vxlan.inet.0: 15 destinations, 15 routes (15 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
10.1.1.1/32 *[Static/1] 00:00:15, metric2 1
to 10.12.12.1 via et-0/0/2:0.0
user@device> show route table :vxlan.inet6.0 abcd::10:1:1:1/128
:vxlan.inet6.0: 10 destinations, 10 routes (10 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
abcd::10:1:1:1/128 *[Static/1] 00:00:16, metric2 1
to fe80::8ad9:8fff:fe62:b25f via et-0/0/2:0.0
控制平面 MAC 学习方法
EVPN 独有的特点是,PE 设备之间的 MAC 地址学习发生在控制平面中。本地 PE 路由器可以检测到来自客户边缘设备的新 MAC 地址,然后使用 MP-BGP 将地址通告给所有远程 PE 设备。此方法不同于 VPLS 等现有的第 2 层 VPN 解决方案,这些方案通过在数据平面中进行未知单播泛洪的方式来学习。此控制平面 MAC 学习方法是 EVPN 提供的功能和优势的重要组件。由于 MAC 学习过程发生在控制平面中,因此 EVPN 具有较高的灵活性,可以在 PE 设备之间支持不同的数据平面封装技术。这种灵活性很重要,因为并非每个骨干网络都在运行 MPLS,特别是在企业网络中。
对于控制平面远程 MAC 学习,由于 l2ald 创建了 VXLAN 封装复合下一跃点和 VXLAN 解封装复合下一跃点,因此 rpd 不再创建 MAC 转发表中使用的间接下一跃点。rpd 依靠现有机制将从控制平面获知的远程 MAC 地址通知 l2ald。rpd 不会向 l2ald 通知 l2ald 有关远程 MAC 在 MAC FIB 表中使用的 VLAN ID 和间接下一跳索引,而是将远程 VTEP IP 地址和 VXLAN 网络标识符通知 l2ald。控制平面远程 MAC 获知路由指向 VXLAN 封装复合下一跃点,或由 MAC 转转发表中的 l2ald 创建的 ECMP 下一跃点。
对于多宿主 EVPN 主动-主动,一对远程 VTEP IP 地址与远程 MAC 地址相关联。从从远程 PE 设备接收的 MAC 路由或从远程 PE 设备的混叠路由中获取远程 VTEP IP 地址。当远程 PE 设备撤回 MAC 从中获知的以太网段的 MAC 路由或混叠路由时,rpd 会相应地提醒 l2ald 有关远程 VTEP IP 地址对的更改。因此,l2ald 更新为此 MAC 构建的单列表下一跃点。当远程 MAC 路由及其关联的混叠路由均被撤回或变得未解析时,rpd 会通知 l2ald 此远程 MAC 已删除,并且 l2ald 会从 MAC 转发表中撤回此 MAC。
Contrail 虚拟路由器和 L3-VRF 表
Contrail 虚拟化软件可创建与第 3 层虚拟路由和转发 (L3-VRF) 表中的路由相关联的虚拟网络 (VN)。
以下是关联的路由:
IRB 接口的子网路由
对于为 MX 系列路由器上的虚拟网络创建的每一对 MAC(虚拟路由和转发)VRF 和 L3-VRF 表,相应的 IRB 接口都会与 MAC-VRF 和 L3-VRF 表对相关联。MX 系列 路由器 上的 L3-VRF 表包含来自 IRB 接口的子网路由,这些路由路由与其本地虚拟网络关联,以及 Junos OS IRB 接口的所有子网路由,这些路由功能提供的数据中心内其他虚拟网络相关联。MX 系列路由器通过 MP-BGP 将这些子网路由播发至 Contrail 控制节点。因此,Contrail vRouter 中的 L3-VRF 表包含其 IP FIB 中的 IRB 接口的同一组子网路由,并且子网路由将其下一跃点指向 MX 系列路由器。
虚拟机主机路由
Contrail 虚拟路由器支持代理 ARP,并使用其虚拟机 (VM) 的 EVPN MAC 路由通告 IP 地址。对于 Contrail 虚拟路由器和 MX 系列路由器,虚拟网络的 L3-VRF 表都包含同一虚拟网络中那些虚拟机的所有虚拟机主机路由,以及所有其他虚拟网络中的路由。虚拟机之间的虚拟网络内和虚拟网络间流量直接在第 3 层 Contrail vRouter 之间转发。
裸机服务器主机路由
瞻博网络 TOR 交换机(例如 QFX5100 交换机)不会使用其所连接的裸机服务器 (BMS) 的 EVPN MAC 路由通告 IP 地址。由于交换机发出 EVPN MAC 路由播发,因此 Contrail 虚拟路由器和 MX 系列路由器上的 L3-VRF 表中未安装任何 BMS 主机路由。但是,如果 MX 系列路由器接收来自 BMS 的 ARP 响应,则 MX 系列路由器的 ARP 路由将安装在 MX 系列路由器的内核中。
指定转发商选择
为了提供更好的负载平衡和更灵活的拓扑结构,指定转发器的选择是通过为每个以太网段选择最小 VLAN ID 或 VXLAN 网络 ID 来确定的,而不是基于 EVPN 实例进行选择。 图 2 显示了指定转发器选择拓扑示例。
客户边缘设备 (CE1) 的以太网段标识符值配置等于 ES1,并且连接到 PE1 和 PE2 设备,配置了 VLAN 100 和 101。路由器 PE1 被选为两个 VLAN 的指定转发器。
客户边缘设备 (CE2) 的以太网段标识符值配置为等于 ES2,并且连接到配置了 VLAN 201 的 PE1 和 PE3 设备。路由器 PE3 被选为此 VLAN 的指定转发器。
以太网标记 ID 可以是以下任一类型:
-
VLAN ID(适用于 EVPN-MPLS)
-
VXLAN 网络 ID(适用于 EVPN-VXLAN)