4. 控制平面选型
VXLAN本身只定义了数据平面的封装格式:外层UDP、VXLAN头、原始以太网帧。它并没有规定VTEP之间如何互相发现、如何学习对端MAC地址、如何判断某个MAC到底在本地还是远端。这个“谁在哪里”的问题,必须由控制平面回答。工程上主要有两条路线:一是依赖数据平面泛洪的“泛洪学习”(Flood-and-Learn),二是引入BGP EVPN作为显式控制平面。理解两者的差别,是跨数据中心互联选型的起点。
泛洪学习为什么在DCI场景中不可接受
泛洪学习的工作方式是:VTEP收到未知单播、广播或组播帧时,向本VXLAN内所有远端VTEP复制一份。远端VTEP回包后,源VTEP才把“源MAC—源VTEP”写入本地转发表。它不需要额外协议,小规模下能跑通,但代价明显:
- 未知单播泛洪会周期性发生,MAC老化后再次泛洪,形成持续的“背景噪声”;
- ARP广播被复制到所有VTEP,跨数据中心时还要穿过DCI链路,放大带宽消耗;
- 无法表达“某MAC不可达”这类负向信息,只能靠老化超时,收敛慢;
- 多归属场景下,同一MAC可能从两个VTEP同时被学到,容易产生MAC漂移和转发环路。
跨数据中心互联通常跨越运营商链路或专线,带宽成本高、时延敏感,泛洪学习带来的广播放大和收敛不确定性会被显著放大。因此,DCI场景几乎默认选择EVPN作为控制平面。
EVPN作为VXLAN控制平面的核心优势
EVPN(Ethernet VPN)最初用于MPLS L2VPN,RFC 7432定义了其BGP扩展。把它用于VXLAN时,控制平面由MP-BGP承载,数据平面仍是VXLAN封装。其优势可以归纳为四点。
第一,控制平面与数据平面解耦。MAC/IP可达性通过BGP路由提前分发,VTEP在转发前就已知对端位置,未知单播泛洪被大幅抑制。ARP请求也可以通过EVPN的ARP代理或分布式网关机制在本地应答,广播域被有效收敛。
第二,天然支持多归属与全活转发。EVPN定义了以太网段(Ethernet Segment)和DF(Designated Forwarder)选举机制。同一台服务器双归到两台Leaf时,两台Leaf通过ES路由和DF选举决定谁转发BUM流量,避免重复泛洪;单播流量则可从两条路径同时转发,实现多活。
第三,支持对称IRB与分布式网关。EVPN可以同时发布MAC路由和IP路由(Type-2携带IP、Type-5携带前缀),使VXLAN内的分布式网关能够在每台Leaf上就近完成三层转发,跨子网流量不必绕行到集中式网关,路径更短、时延更低。
第四,收敛可预期、可运维。BGP路由的撤销、属性变化、下一跳失效都有明确的状态机,收敛时间可测量、可优化。配合BFD、BGP Add-Path、路由策略,可以做到故障快速感知和精确控制。
MP-BGP EVPN的五种路由类型
EVPN通过MP-BGP的EVPN地址族(AFI 25,SAFI 70)传递NLRI。每种路由类型解决一个具体问题,理解它们的分工比记住编号更重要。
| 类型 | 名称 | 关键字段 | 作用 |
|---|---|---|---|
| Type-1 | 以太网自动发现路由 | ESI、以太网标签 | 多归属成员发现、DF选举、快速收敛、别名(Aliasing) |
| Type-2 | MAC/IP通告路由 | MAC、IP、VNI、ESI | 发布MAC可达性;携带IP时支持ARP抑制和对称IRB |
| Type-3 | 包含多播以太网标签路由 | VNI、源VTEP IP | 建立BUM流量的 ingress replication 列表,替代泛洪 |
| Type-4 | 以太网段路由 | ESI、源IP | DF选举,决定哪个PE转发该ES的BUM流量 |
| Type-5 | IP前缀路由 | IP前缀、网关IP、VNI | 发布外部或三层前缀,支持L3VPN over VXLAN |
实际部署中,Type-2和Type-3是基础:前者让单播有路可走,后者让BUM有表可依。Type-1和Type-4在多归属场景下才真正发挥作用。Type-5用于把VXLAN域与外部IP网络打通,例如数据中心与广域网互联。
RR部署:为什么EVPN离不开路由反射器
EVPN基于BGP,而BGP要求IBGP全互联或使用路由反射器。在典型Spine-Leaf架构中,Leaf数量可能几十到上百台,如果每台Leaf都与其他Leaf建立IBGP会话,会话数按N×(N-1)/2增长,配置和状态维护都不可接受。因此,Spine通常兼任RR,Leaf只与Spine建立IBGP会话。
RR部署有几个关键点:
- RR与客户端同AS。EVPN通常运行在IBGP内,Spine作为RR,Leaf作为客户端。RR不修改下一跳,只反射路由。
- 下一跳保持。反射时使用
next-hop-unchanged或默认保留原下一跳,确保Leaf学到的VTEP地址是真实的远端VTEP,而不是RR地址。 - 冗余RR。至少两台Spine作为RR,Leaf与两台RR都建立会话,单台RR故障不影响路由反射。
- Add-Path。当同一前缀有多条路径时,RR默认只选最优一条反射,可能导致流量集中。启用Add-Path可让RR反射多条路径,Leaf侧做多路径负载。
- 路由策略。通过RT(Route Target)控制哪些VNI的路由被接收,避免无关路由进入Leaf,减少表项和收敛压力。
下面这张图展示了EVPN控制平面在Spine-Leaf架构中的路由分发关系:Leaf将本地MAC/IP和VNI信息通过Type-2/Type-3发布给RR,RR反射给其他Leaf,各Leaf据此建立远端VTEP转发表。
一个可参考的EVPN RR部署参数示例
以下参数属于教学示例,用于说明RR部署时通常需要关注的配置项,并非实测结果。实际部署需根据设备型号和网络规模调整。
! Spine-1 作为RR的EVPN相关配置示例
router bgp 65000
bgp router-id 10.0.0.1
neighbor 10.0.1.1 remote-as 65000
neighbor 10.0.1.1 update-source Loopback0
neighbor 10.0.1.2 remote-as 65000
neighbor 10.0.1.2 update-source Loopback0
neighbor 10.0.1.3 remote-as 65000
neighbor 10.0.1.3 update-source Loopback0
!
address-family l2vpn evpn
neighbor 10.0.1.1 activate
neighbor 10.0.1.1 route-reflector-client
neighbor 10.0.1.1 send-community extended
neighbor 10.0.1.2 activate
neighbor 10.0.1.2 route-reflector-client
neighbor 10.0.1.2 send-community extended
neighbor 10.0.1.3 activate
neighbor 10.0.1.3 route-reflector-client
neighbor 10.0.1.3 send-community extended
! 保留下一跳,确保Leaf学到真实VTEP地址
neighbor 10.0.1.1 next-hop-unchanged
neighbor 10.0.1.2 next-hop-unchanged
neighbor 10.0.1.3 next-hop-unchanged
exit-address-family
配置完成后,可以在Leaf上执行 show bgp l2vpn evpn summary 确认与两台RR的会话均为Established;执行 show bgp l2vpn evpn route-type 2 查看是否收到其他Leaf发布的MAC/IP路由;执行 show bgp l2vpn evpn route-type 3 确认BUM复制列表是否包含所有远端VTEP。如果Type-3路由缺失,BUM流量将无法正确复制到远端,表现为跨Leaf的广播或未知单播不通。
show bgp l2vpn evpn route-type 2 detail 中的RT值,再核对本地 vrf 或 evpn 配置下的 route-target import。总结来看,EVPN作为VXLAN控制平面的价值不在于“多了一个协议”,而在于把MAC/IP可达性从数据平面的泛洪行为中抽离出来,变成可策略、可观测、可收敛的路由信息。Type-2和Type-3解决基本转发,Type-1和Type-4解决多归属,Type-5解决外部互联。RR则是让这套机制在Spine-Leaf规模下可扩展的关键组件。理解这五类路由的分工和RR的反射逻辑,是后续跨数据中心EVPN部署和排障的基础。