VXLAN BGP EVPN 转发特性解析
1. 引言
VXLAN BGP EVPN 在网络领域得到了广泛应用,不过在流量转发方面,一些特性需要深入探讨。本文将详细介绍 VXLAN BGP EVPN 处理多目的地流量的方法,以及相关的增强功能。
2. VXLAN BGP EVPN 概述
VXLAN BGP EVPN 提供了二层和三层服务。对于三层转发,需要存在第一跳默认网关。分布式 IP 任播网关通过将端点的默认网关分布到所有可用的边缘设备(VTEP),增强了第一跳网关功能。它利用集成路由和桥接(IRB)功能实现,确保端点的桥接和路由流量能根据 BGP EVPN 通告的可达性信息,在网络内以可预测的延迟进行最优转发。
数据中心要求各层和组件具备高可用性,VXLAN BGP EVPN 从多个角度提供冗余。三层路由底层在 VXLAN 边缘设备或 VTEP 之间提供弹性和多路径。通过多机箱链路聚合或虚拟端口通道(vPC)连接经典以太网端点,提供双归属功能,确保即使 VTEP 发生故障也能实现容错。此外,动态主机配置协议(DHCP)服务通常用于为端点动态分配 IP 地址。在 VXLAN BGP EVPN 架构中,需要在每个分布式任播网关点配置 DHCP 中继,并且 DHCP 服务器配置必须支持 DHCP 选项 82,以实现端点的无缝 IP 配置服务。
3. 多目的地流量处理
3.1 利用底层网络的组播复制
处理多目的地流量的第一种方法是在底层配置 IP 组播,并利用基于网络的复制机制。使用组播时,BUM 流量的单个副本从入口/源 VTEP 发送到底层传输网络。网络本身沿着组播树(共享树或源树)转发这个副本,使其到达参与给定组播组的所有出口/目的地 VTEP。只有当接收者加入了与 VNI 关联的组播组时,副本才会在适当的分支点进行复制。这种方法在网络内每条线路/链路只保留一个副本,是转发 BUM 流量最有效的方式。
一个二层 VNI 映射到一个组播组,这个映射必须在所有存在该 VNI 的 VTEP 上一致配置。配置完成后,VTEP 会发送相应的组播加入消息,表示对与相应组播组关联的树感兴趣。在将二层 VNI 映射到组播组时,有多种映射选项。最简单的方法是使用单个组播组,并将所有二层 VNI 映射到该组,这样可以减少底层网络中的组播状态,但在 BUM 流量复制方面效率较低。当 VTEP 加入给定的组播组时,它会接收所有转发到该组的流量,但对于不感兴趣的流量(例如该 VTEP 不负责的 VNI)会静默丢弃。
在实际部署中,有两种极端情况:一种是每个二层 VNI 映射到一个唯一的组播组;另一种是所有二层 VNI 映射到同一个组播组。最佳做法通常介于两者之间。虽然理论上有大量的 VNI 值和足够的组播地址,但实际硬件和软件因素限制了大多数实际部署中使用的组播组数量。
下面通过一个示例来说明:
假设有三个边缘设备作为 VTEP 参与一个基于 VXLAN 的网络,分别为 V1(10.200.200.1)、V2(10.200.200.2)和 V3(10.200.200.3)。IP 子网 192.168.1.0/24 与二层 VNI 30001 关联,子网 192.168.2.0/24 与二层 VNI 30002 关联。VNIs 30001 和 30002 共享一个组播组(239.1.1.1),但 VNIs 并不分布在所有三个 VTEP 上。当主机 A 发送广播数据包时,VTEP V1 接收该数据包并封装 VXLAN 头,将广播流量映射到相应 VNI 的组播组(239.1.1.1)。该广播数据包被转发到所有加入了组播组 239.1.1.1 的 VTEP。VTEP V2 接收到数据包但由于对 VNI 30001 不感兴趣而静默丢弃,VTEP V3 接收到数据包并在解封装后将其发送到参与映射到 VNI 30001 的 VLAN 的所有本地以太网接口,从而使广播数据包到达主机 C。
如果为 VNIs 30001 和 30002 使用不同的组播组,可以避免不必要的 BUM 流量。例如,VNI 30001 使用组播组 239.1.1.1,VNI 30002 使用组播组 239.1.1.2。当主机 A 发送广播时,VTEP V1 接收并封装后将数据包仅转发到加入了组播组 239.1.1.1 的 VTEP V3,VTEP V2 不会收到该数据包。同样,对于 VNI 30002,广播流量只会在参与该 VNI 的 VTEP(V2 和 V3)上出现,从而减少了底层网络中的组播出站接口(OIF)数量。
在实际部署中,为了简化组播组到 VNI 的分配,有两种常见方法:
- 随机选择 VNIs 并分配到组播组,导致一些隐式共享。
- 将组播组本地化到一组 VTEP,确保它们共享相同的二层 VNIs 集合。不过,第二种方法可能缺乏所需的灵活性,因为它限制了工作负载分配到一组 VTEP 下的服务器集合。
3.2 使用入口复制
底层的组播配置虽然直接,但并非所有人都熟悉或愿意使用。根据平台能力,第二种处理多目的地流量的方法是利用入口或头端复制,这是一种单播方法。入口复制(IR)和头端复制(HER)可以互换使用。IR/HER 是基于单播的模式,不采用基于网络的复制。入口或源 VTEP 会为每个 BUM 数据包制作 N - 1 个副本,并将它们作为单独的单播发送到具有关联 VNI 成员资格的 N - 1 个 VTEP。IR/HER 的复制列表可以静态配置或通过 BGP EVPN 控制平面动态确定。RFC 7432 的第 7.3 节定义了包含性组播以太网标签(IMET)路由,即路由类型 3(RT - 3)。为了实现 IR/HER 的最佳效率,最佳实践是使用 BGP EVPN 进行动态分发。
每个 VTEP 通告一个特定的路由,其中包括 VNI 以及对应其自身地址的下一跳 IP 地址,从而构建动态复制列表。当 VTEP 上的 VNI 配置发生变化时,列表会更新。一旦复制列表构建完成,当 BUM 流量到达入口/源 VTEP 时,数据包会在 VTEP 处进行复制,然后作为单独的单播发送到网络中 VNI 内的每个 VTEP。由于不使用网络集成的组播复制,入口复制会产生额外的网络流量。
下面通过一个示例比较组播和单播模式下的流量负载:
假设一个二层 VNI 存在于所有 256 个托管 VTEP 的边缘设备上,并且每个边缘设备的 48 个以太网接口上都有一个 VLAN 进行 BUM 流量复制。每个本地边缘设备的以太网接口接收 0.001% 的标称接口速度的 BUM 流量。对于 10G 接口,这会在边缘设备的面向主机的以太网接口上产生 0.0048 Gbps(4.8 Mbps)的 BUM 流量。在组播模式下,BUM 流量的理论速度保持在该速率。在单播模式下,复制取决于 VTEP 上的出口/目的地活动。在有 255 个相邻 VTEP 的示例中,这会在网络结构上产生约 1.2 Gbps 的 BUM 流量。这个示例清楚地表明,随着网络中多目的地流量的增加,单播模式会产生巨大的开销,组播模式的效率不可低估。
需要注意的是,在将组播组范围限定到 VNIs 时,对于给定的二层 VNI,必须在整个基于 VXLAN 的架构中配置相同的组播组。此外,所有 VTEP 必须遵循相同的多目的地配置模式(单播或组播),并且在组播模式下,必须遵循相同的组播协议(如 PIM ASM、PIM BiDir),否则会导致多目的地流量转发中断。
3.3 多目的地流量处理方法对比
| 处理方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 组播复制 | 高效转发 BUM 流量,网络内每条线路/链路只保留一个副本 | 配置相对复杂,可能存在不必要的流量接收 | 对流量效率要求高,网络规模较大且对组播配置熟悉的场景 |
| 入口复制 | 无需组播配置,适合不熟悉组播的用户 | 会产生额外的网络流量,开销较大 | 网络规模较小,对组播配置有困难的场景 |
3.4 多目的地流量处理流程
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px
A([开始]):::startend --> B{选择处理方法}:::decision
B -->|组播复制| C(配置 IP 组播):::process
B -->|入口复制| D(确定复制列表):::process
C --> E(映射 VNI 到组播组):::process
E --> F(发送组播加入消息):::process
F --> G(转发 BUM 流量):::process
D --> H(制作 BUM 数据包副本):::process
H --> I(发送单播副本):::process
G --> J([结束]):::startend
I --> J
4. VXLAN BGP EVPN 增强功能
4.1 ARP 抑制
地址解析协议(ARP)负责 IP 网络中 IPv4 地址到 MAC 地址的映射。ARP 通过发送 ARP 广播请求来获取端点的 MAC 地址信息,该广播请求被视为多目的地流量,通常会被 VXLAN 封装并发送到属于相应二层 VNI 的每个 VTEP 或边缘设备。ARP 请求的响应通常作为单播数据包发送给请求者。ARP 流量的范围限定在二层 VNI 表示的广播域内。
当端点需要解析默认网关时,会向配置的默认网关发送 ARP 请求。ARP 操作允许本地边缘设备或 VTEP 填充本地连接端点的 IP/MAC 映射。除了在边缘设备上填充 MAC 到 IP 表外,所有 MAC 信息都会填充到 BGP EVPN 控制平面协议中。
通常,端点发出的所有 ARP 广播请求都会被复制到路由器并转发。只要端点发出某种类型的 ARP 请求,本地边缘设备就会了解该端点。当端点想要与同一子网中的另一个端点通信时,会发出 ARP 请求来确定目标端点的 IP 到 MAC 绑定。ARP 请求会被泛洪到属于该二层 VNI 的所有端点。
ARP 窥探结合 BGP EVPN 控制平面信息可以避免对已知端点的泛洪。通过使用 ARP 窥探,端点发出的所有 ARP 请求都会被重定向到本地连接的边缘设备。边缘设备会提取 ARP 有效负载中的目标 IP 地址,并根据 BGP EVPN 控制平面中的已知端点信息进行查询。如果目标是已知的,边缘设备会代表目标端点执行 ARP 代理,发送带有已解析的目标端点 MAC 地址的单播 ARP 响应。这种方式将所有对已知端点的 ARP 请求在最早的可能点(本地连接的边缘设备、VTEP 或叶子节点)终止,这就是 ARP 抑制。
ARP 抑制与代理 ARP 不同,代理 ARP 中边缘设备或路由器可能使用自己的路由器 MAC 作为目标端点的代理。ARP 抑制通过利用 BGP EVPN 控制平面信息减少 ARP 广播流量,并且是按二层 VNI 启用的。
如果目标端点在 BGP EVPN 控制平面中未知(即静默或未发现的端点),ARP 广播需要通过 VXLAN 网络发送。ARP 窥探会拦截 ARP 广播请求到本地连接的边缘设备,由于查找目标端点失败,边缘设备会将 ARP 广播请求重新注入网络,并进行适当的源过滤,以确保它不会返回到最初接收 ARP 请求的源端口。当被查询的端点响应 ARP 请求时,会生成 ARP 响应。单播 ARP 响应也会受到 ARP 窥探行为的影响,被发送到目标直接连接的远程边缘设备。远程边缘设备会更新控制平面,并将 ARP 响应发送回原始请求端点,完成端到端的 ARP 发现过程。
4.2 未知单播抑制
为了完全禁用由于未知单播流量向 VXLAN 网络的任何泛洪,引入了未知单播抑制功能。这个独立功能按二层 VNI 启用。启用该功能后,当任何二层流量的 DMAC 查找失败时,流量会在本地泛洪,但不会通过 VXLAN 泛洪。因此,如果不存在静默或未知主机,BGP EVPN VXLAN 网络中的泛洪可以得到最小化。
4.3 优化的 IGMP 窥探
在 VXLAN 网络中,二层组播流量被视为广播或未知单播流量,因为组播流量会在底层泛洪。并非所有平台都能区分不同类型的二层泛洪,如组播或未知单播。如果平台支持,IGMP 窥探功能是转发二层组播流量的最佳方式。
Cisco NX - OS 的默认配置会导致二层组播流量在本地和 VTEP 接口上泛洪,这意味着所有具有相同 VNI 映射的参与 VTEP 和该二层 VNI 中的所有端点都会接收该二层组播流量,无论该端点是否为感兴趣的接收者。
使用 VXLAN 时,可以像在传统以太网网络中一样实现 IGMP 窥探。主要区别在于 VTEP 接口会选择性地允许为位于远程 VTEP 后面的感兴趣接收者转发二层组播流量。如果远程 VTEP 后面没有感兴趣的接收者,从源端点接收到的二层组播流量不会发送到 VXLAN 网络。只要有至少一个感兴趣的接收者位于某个远程 VTEP 后面,二层组播流量就会转发到所有远程 VTEP。VTEP 接口是参与 IGMP 窥探的组播路由器端口,允许二层组播转发,这取决于端点为二层 VNI 中的给定组播组发送的 IGMP “加入” 消息。
启用 VXLAN VNIs 的 IGMP 窥探后,可以实现组播的真正好处:流量仅转发到感兴趣的接收者端点。如果在同一 VNI 中某个 VTEP 后面没有给定组播组的感兴趣接收者,二层组播流量会被静默丢弃而不泛洪。在远程 VTEP 解封装后,二层组播流量会根据本地 IGMP 窥探状态进行转发。IGMP 加入消息用于选择性地启用某些二层组播流量的转发。
4.4 增强功能对比
| 增强功能 | 作用 | 启用方式 | 优点 |
|---|---|---|---|
| ARP 抑制 | 减少 ARP 广播流量,避免对已知端点的泛洪 | 按二层 VNI 启用 | 提高网络效率,减少不必要的流量泛洪 |
| 未知单播抑制 | 禁用未知单播流量向 VXLAN 网络的泛洪 | 按二层 VNI 启用 | 最小化网络中的泛洪,提高网络性能 |
| 优化的 IGMP 窥探 | 选择性地转发二层组播流量到感兴趣的接收者 | 平台支持时启用 | 提高组播流量的转发效率,减少不必要的流量 |
4.5 增强功能处理流程
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px
A([开始]):::startend --> B{流量类型}:::decision
B -->|ARP 请求| C(ARP 窥探):::process
B -->|未知单播流量| D(检查未知单播抑制):::process
B -->|二层组播流量| E(检查 IGMP 窥探):::process
C --> F{目标是否已知}:::decision
F -->|是| G(发送单播 ARP 响应):::process
F -->|否| H(泛洪 ARP 请求):::process
D --> I{未知单播抑制是否启用}:::decision
I -->|是| J(本地泛洪):::process
I -->|否| K(泛洪到 VXLAN 网络):::process
E --> L{IGMP 窥探是否启用}:::decision
L -->|是| M(检查是否有感兴趣接收者):::process
L -->|否| N(泛洪组播流量):::process
M -->|有| O(转发到感兴趣接收者):::process
M -->|无| P(丢弃组播流量):::process
G --> Q([结束]):::startend
H --> Q
J --> Q
K --> Q
O --> Q
P --> Q
N --> Q
5. 总结
VXLAN BGP EVPN 在网络流量转发方面提供了多种处理多目的地流量的方法,包括利用底层网络的组播复制和使用入口复制。同时,还具备一系列增强功能,如 ARP 抑制、未知单播抑制和优化的 IGMP 窥探,这些功能可以提高网络效率,减少不必要的流量泛洪。在实际应用中,需要根据网络的具体情况选择合适的处理方法和启用相应的增强功能。
6. 分布式 IP 任播网关
6.1 原理与功能
分布式 IP 任播网关是 VXLAN BGP EVPN 中用于三层转发的重要机制。在 VXLAN BGP EVPN 网络里,为实现三层转发或路由,第一跳默认网关是必不可少的。分布式 IP 任播网关通过将端点的默认网关分布到所有可用的边缘设备(即 VTEP),极大地增强了第一跳网关的功能。
它借助集成路由和桥接(IRB)功能来实现。这样做能确保从端点进出的桥接和路由流量,始终可以依据 BGP EVPN 所通告的可达性信息,在网络内以可预测的延迟进行最优转发。由于采用了这种分布式的二层/三层边界处理方式,通过在 BGP EVPN 中运用特殊的与移动性相关的功能,从网络的角度能够无缝处理虚拟机的移动问题。
分布式任播网关保证了无论终端主机在网络中的哪个位置或发生移动,默认网关的 IP - MAC 绑定都不会改变。而且,在主机移动事件发生后,进出端点的路由流量不会出现 “hair - pinning”(流量迂回)的情况。BGP EVPN 控制平面协议中的主机路由粒度,有助于在任何时候都能高效地路由到端点所在的 VTEP。
6.2 优势体现
| 优势 | 具体描述 |
|---|---|
| 流量优化 | 基于 BGP EVPN 可达性信息,实现流量的最优转发,减少延迟。例如,在大型数据中心网络中,不同区域的虚拟机之间通信时,能快速找到最佳路径。 |
| 移动性支持 | 无缝处理虚拟机移动,保证 IP - MAC 绑定不变,避免流量中断。比如,当虚拟机从一个物理服务器迁移到另一个时,网络连接不会受到影响。 |
| 避免流量迂回 | 防止路由流量在网络中不必要的迂回,提高网络效率。例如,避免了流量从源端到网关再折返到目的端的情况。 |
6.3 分布式 IP 任播网关工作流程
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px
A([端点发起流量]):::startend --> B{流量类型}:::decision
B -->|二层流量| C(二层转发处理):::process
B -->|三层流量| D(查找默认网关):::process
D --> E(分布式任播网关响应):::process
E --> F(根据可达性信息路由):::process
F --> G([流量到达目的端]):::startend
C --> G
7. 双归属部署中的任播 VTEP 实现
7.1 双归属部署的必要性
数据中心需要各层和组件都具备高可用性,同样,数据中心架构必须提供冗余和动态路由分发功能。VXLAN BGP EVPN 从多个角度提供了冗余性。在 VXLAN 边缘设备或 VTEP 之间的三层路由底层,提供了弹性和多路径功能。通过多机箱链路聚合或虚拟端口通道(vPC)连接经典以太网端点,实现了双归属功能,确保即使 VTEP 发生故障,网络也能保持容错能力。
7.2 任播 VTEP 实现方式
在双归属部署中,任播 VTEP 的实现确保了在 VTEP 出现故障时,网络流量能够顺利切换,保证服务的连续性。具体实现过程中,多个 VTEP 可以使用相同的 IP 地址作为任播地址。当一个 VTEP 出现故障时,流量可以自动切换到其他正常工作的 VTEP。
7.3 任播 VTEP 实现的优势
| 优势 | 具体描述 |
|---|---|
| 高可用性 | 在 VTEP 故障时,流量自动切换,避免服务中断。例如,当一个 VTEP 硬件出现故障时,流量可以无缝转移到其他 VTEP 上。 |
| 负载均衡 | 多个 VTEP 共同承担流量,提高网络的整体性能。比如,在高峰时段,流量可以均匀分布到各个 VTEP 上。 |
| 简化配置 | 多个 VTEP 使用相同的任播地址,减少了配置的复杂性。例如,管理员不需要为每个 VTEP 单独配置不同的 IP 地址和路由规则。 |
7.4 双归属部署中任播 VTEP 工作流程
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px
A([流量进入网络]):::startend --> B{VTEP 状态}:::decision
B -->|正常| C(当前 VTEP 处理流量):::process
B -->|故障| D(切换到备用 VTEP):::process
C --> E([流量转发]):::startend
D --> E
8. DHCP 处理
8.1 DHCP 在 VXLAN BGP EVPN 中的作用
通常,动态主机配置协议(DHCP)服务用于为端点动态分配 IP 地址。在 VXLAN BGP EVPN 架构中,DHCP 处理有其特殊要求。
8.2 配置要求
在 VXLAN BGP EVPN 架构中,需要在每个分布式任播网关点配置 DHCP 中继,并且 DHCP 服务器配置必须支持 DHCP 选项 82。这样做的目的是为了实现端点在 VXLAN BGP EVPN 架构中的无缝 IP 配置服务。
8.3 DHCP 处理步骤
- 客户端发起请求 :端点(客户端)发送 DHCP 发现请求,该请求被本地的 VTEP(分布式任播网关点)接收。
- 中继转发请求 :VTEP 作为 DHCP 中继,将请求转发给 DHCP 服务器。在转发过程中,会添加 DHCP 选项 82 信息。
- 服务器响应 :DHCP 服务器接收到请求后,根据配置和可用 IP 地址池,为客户端分配一个 IP 地址,并发送 DHCP 提供消息。
- 客户端确认 :客户端接收到 DHCP 提供消息后,发送 DHCP 请求消息进行确认。
- 服务器确认分配 :DHCP 服务器接收到客户端的确认消息后,发送 DHCP 确认消息,完成 IP 地址的分配。
8.4 DHCP 处理流程
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px
A([客户端发起 DHCP 请求]):::startend --> B(本地 VTEP 接收):::process
B --> C(添加 DHCP 选项 82):::process
C --> D(转发给 DHCP 服务器):::process
D --> E(服务器分配 IP 地址):::process
E --> F(发送 DHCP 提供消息):::process
F --> G(客户端确认):::process
G --> H(服务器发送 DHCP 确认消息):::process
H --> I([完成 IP 地址分配]):::startend
9. 总结与展望
9.1 总结
VXLAN BGP EVPN 在网络流量转发方面展现出了强大的功能和灵活性。通过多种方式处理多目的地流量,如利用底层网络的组播复制和入口复制,能够根据不同的网络环境和需求选择合适的方法。同时,一系列增强功能,如 ARP 抑制、未知单播抑制和优化的 IGMP 窥探,有效提高了网络效率,减少了不必要的流量泛洪。分布式 IP 任播网关和双归属部署中的任播 VTEP 实现,保证了网络的高可用性和流量的优化转发。在 DHCP 处理方面,通过特定的配置要求,实现了端点的无缝 IP 配置服务。
9.2 展望
随着网络技术的不断发展,VXLAN BGP EVPN 可能会在以下方面得到进一步的发展和完善:
-
性能优化
:进一步提高网络的转发性能,降低延迟,以满足对实时性要求更高的应用场景。
-
安全增强
:加强网络的安全性,防止各种网络攻击,保护数据的安全传输。
-
与其他技术的融合
:与软件定义网络(SDN)、网络功能虚拟化(NFV)等技术进行更深入的融合,实现更灵活、智能的网络管理。
-
简化部署和管理
:开发更加自动化、智能化的部署和管理工具,降低网络管理员的工作难度和工作量。
在未来的网络建设中,VXLAN BGP EVPN 有望继续发挥重要作用,为构建高效、可靠、安全的网络环境提供有力支持。
14

被折叠的 条评论
为什么被折叠?



