4. BGP EVPN控制平面核心机制
在SONiC数据中心网络中,BGP EVPN承担的是控制平面角色:它不直接搬运业务报文,而是通过BGP在VTEP之间交换“谁在哪里、属于哪个VNI、下一跳是谁”的可达性信息。数据平面则依据这些信息建立VXLAN隧道并转发。理解BGP EVPN,核心是理解三类路由、两个标识符(RD/RT)、VNI映射,以及对等体建立与路由通告的完整链路。
一、三类EVPN路由:各司其职
EVPN在BGP中引入新的地址族,用NLRI(网络层可达信息)承载不同语义的路由。最常用的三类如下:
- Type-2(MAC/IP Advertisement Route):通告主机MAC与IP的可达性,是二层转发表和ARP/ND抑制的基础。关键字段包括RD、ESI、Ethernet Tag、MAC地址长度、MAC地址、IP地址长度、IP地址、VNI、下一跳。它让远端VTEP知道“某MAC在某VNI下,位于哪个VTEP之后”。
- Type-3(Inclusive Multicast Ethernet Tag Route):用于建立BUM(广播、未知单播、组播)流量的复制列表,即VTEP之间的泛洪隧道。它携带RD、Ethernet Tag、IP地址长度、源IP、VNI。收到Type-3后,VTEP把对端加入该VNI的泛洪列表,实现头端复制。
- Type-5(IP Prefix Route):通告IP前缀路由,用于L3 VXLAN场景下的跨子网转发。它携带RD、ESI、Ethernet Tag、IP前缀长度、IP前缀、GW IP、VNI。Type-5让不同子网的主机可以经过VTEP进行三层转发,而不必依赖集中式网关。
三类路由的分工可以概括为:Type-3建泛洪、Type-2学主机、Type-5通子网。实际部署中,二层VNI主要依赖Type-2和Type-3,三层VNI则依赖Type-5。
二、RD与RT:区分与导入导出
RD(Route Distinguisher)用于在BGP中唯一标识一个EVPN实例,解决不同VNI或不同租户使用相同MAC/IP前缀时的地址重叠问题。RD本身不决定路由导入导出,只参与NLRI的构造。常见格式为ASN:NN或IP:NN,例如65001:100。
RT(Route Target)是BGP扩展团体属性,决定路由被哪些EVPN实例导入。发送端为路由附加Export RT,接收端用Import RT匹配。RT通常与VNI关联,例如VNI 100对应RT 65001:100。若两端RT不匹配,即使BGP邻居建立成功,路由也不会进入本地EVPN表。
三、VNI映射:L2 VNI与L3 VNI
VNI是VXLAN的网络标识,分为L2 VNI和L3 VNI。L2 VNI对应一个二层广播域,通常与VLAN一一映射;L3 VNI对应一个VRF,用于跨子网路由。在SONiC中,VNI映射关系通过vxlan相关配置和evpn配置共同表达,例如VLAN 100映射到VNI 10100,VRF Vrf-red映射到VNI 50100。
Type-2路由中的VNI字段告诉对端该MAC属于哪个L2 VNI;Type-5路由中的VNI字段则指向L3 VNI。若映射错误,可能出现“路由收到但转发失败”的现象。
四、对等体建立与路由通告流程
BGP EVPN对等体通常建立在VTEP的Loopback接口之间,底层由IGP或静态路由保证Loopback可达。建立过程为:TCP 179三次握手 → Open报文交换能力,确认支持l2vpn evpn地址族 → Keepalive维持 → Established。随后进入EVPN地址族的路由交换。
以两台VTEP(VTEP-A、VTEP-B)为例,典型通告流程如下:
- VTEP-A本地学习到主机H1(MAC 00:11:22:33:44:55,IP 10.1.1.10,VLAN 100,VNI 10100)。
- VTEP-A生成Type-2路由,RD为65001:100,RT为65001:100,下一跳为VTEP-A Loopback 1.1.1.1。
- VTEP-A同时发送Type-3路由,携带VNI 10100,用于建立BUM泛洪列表。
- VTEP-B收到后,用Import RT匹配本地EVPN实例,将Type-2写入MAC转发表,将Type-3写入泛洪列表。
- VTEP-B若配置L3 VNI 50100,还会通告Type-5前缀路由,使跨子网流量可经VTEP-A转发。
在SONiC中,可通过show bgp l2vpn evpn summary查看邻居状态,通过show bgp l2vpn evpn查看EVPN路由,通过show evpn mac和show evpn vni核对本地学习与VNI映射。
五、关键检查点与常见问题
实际部署中,控制平面不通通常集中在几个点:一是Loopback不可达导致TCP 179无法建立;二是Open报文中未协商l2vpn evpn地址族;三是RD/RT配置不一致,路由被丢弃;四是VNI映射错误,路由收到但转发失败。建议按“邻居状态 → 地址族能力 → RT匹配 → VNI映射 → 转发表项”的顺序逐层排查。
掌握三类路由的语义、RD/RT的作用、VNI映射关系以及对等体建立流程,就抓住了BGP EVPN控制平面的主干。后续的数据平面转发、分布式网关和跨租户互通,都建立在这套控制信息之上。