3. BGP EVPN对等体与地址族工程

在Arista的BGP EVPN控制平面中,真正决定“哪些邻居能交换EVPN路由、以什么身份交换、下一跳如何被改写”的,并不是EVPN本身,而是BGP对等体与地址族的工程化设计。EVPN只是BGP的一个地址族(AFI=25,SAFI=70),它必须依附在已建立的BGP会话之上。因此本节的核心问题是:如何激活L2VPN EVPN地址族、如何用对等体组收敛配置、如何安排路由反射器角色,以及iBGP/eBGP在选路与下一跳处理上的差异。

一、L2VPN EVPN地址族的激活

在Arista EOS中,BGP邻居默认只协商IPv4单播地址族。要让邻居交换EVPN路由,必须在邻居或对等体组下显式激活EVPN地址族。典型配置如下:

router bgp 65001
   router-id 10.0.0.1
   neighbor EVPN-PEERS peer group
   neighbor EVPN-PEERS remote-as 65001
   neighbor EVPN-PEERS update-source Loopback0
   neighbor EVPN-PEERS next-hop-self
   neighbor EVPN-PEERS send-community extended
   neighbor 10.0.0.2 peer group EVPN-PEERS
   !
   address-family evpn
      neighbor EVPN-PEERS activate

这里有两个关键点。第一,send-community extended必须开启,因为EVPN的Route Type 2(MAC/IP通告)依赖扩展团体属性携带ESI、Router's MAC等信息,关闭后对端无法正确解析。第二,address-family evpn下的activate才是真正让该邻居参与EVPN NLRI交换的开关;仅在邻居层配置remote-as并不会自动激活EVPN。验证时可用show bgp evpn summary查看邻居状态,用show bgp evpn确认是否收到Type 2/Type 3路由。

二、对等体组设计

EVPN场景下邻居数量随Leaf数量增长,逐邻居配置极易出错。对等体组(peer group)把公共属性集中定义,邻居只引用组名。建议按角色划分:

  • SPINE-EVPN:用于Leaf与Spine之间的iBGP EVPN会话,统一update-source Loopback0、next-hop-self、send-community extended。
  • LEAF-EVPN:用于Spine侧指向Leaf的会话,属性与上组对称。
  • DC-EDGE:用于跨数据中心或DCI的eBGP EVPN会话,通常需要ebgp-multihop与allowas-in。

对等体组设计的原则是“属性进组、邻居只留地址”。这样当需要新增一个Leaf时,只需在Spine上增加一行neighbor x.x.x.x peer group SPINE-EVPN,无需重复配置团体属性与下一跳策略。

三、路由反射器角色

在iBGP全互联模型中,N个Leaf需要N×(N-1)/2条会话,扩展性差。EVPN通常采用Spine作为路由反射器(RR)。RR不修改AS_PATH,只反射路由,因此Leaf之间无需直连iBGP。配置上,Spine在address-family evpn下对客户端执行neighbor EVPN-PEERS route-reflector-client。需要注意:RR只反射,不改变下一跳;若Leaf收到的EVPN路由下一跳是远端Leaf的Loopback,而Spine未做next-hop-self,则Leaf可能因无法到达该Loopback而丢弃路由。因此RR场景下通常仍建议在Spine上对EVPN邻居启用next-hop-self,或确保底层IGP已通告所有Loopback。

四、iBGP/eBGP选路与下一跳处理

iBGP与eBGP在EVPN中的差异主要体现在三处:

维度iBGP EVPNeBGP EVPN
AS_PATH不追加每跳追加AS号
下一跳默认保留,需next-hop-self默认改为自身
选路优先级低于eBGP高于iBGP
典型场景Spine-Leaf同ASDCI跨AS

下一跳处理是EVPN最容易出问题的环节。以Type 2路由为例,Leaf-A通告的MAC/IP路由下一跳为Leaf-A的Loopback。若Spine作为RR未做next-hop-self,Leaf-B收到的下一跳仍是Leaf-A的Loopback。此时Leaf-B必须能通过IGP到达该Loopback,否则路由虽在BGP表中,却无法安装到EVPN表。判断依据是show bgp evpn route-type mac-ip中下一跳是否可达,以及show ip route中是否存在对应Loopback的IGP路由。

在Spine-Leaf同AS的iBGP EVPN中,推荐在Spine上对EVPN邻居统一配置next-hop-self,使Leaf收到的下一跳为Spine的Loopback,简化底层可达性要求。

五、工程检查要点

完成配置后,建议按以下顺序验证:

  1. show bgp evpn summary:确认邻居State为Established,且EVPN地址族已激活。
  2. show bgp evpn:确认收到Type 2(MAC/IP)与Type 3(IMET)路由。
  3. show bgp evpn route-type mac-ip:检查下一跳是否可达、扩展团体是否携带。
  4. show ip route:确认下一跳Loopback有IGP路由。
BGP EVPN 对等体与地址族工程示意 Spine / RR AS 65001 · Loopback0 10.0.0.1 Leaf-A AS 65001 · Loopback0 10.0.0.2 EVPN-PEERS 组 Leaf-B AS 65001 · Loopback0 10.0.0.3 EVPN-PEERS 组 iBGP EVPN iBGP EVPN RR 反射 Type 2 / Type 3 路由 下一跳处理 next-hop-self → Spine Loopback address-family evpn neighbor activate send-community extended 携带 ESI / Router-MAC

综上,EVPN对等体工程的关键在于:地址族激活是前提,对等体组是收敛手段,RR是扩展性方案,而下一跳处理是连通性保障。四者缺一不可,任何一环配置不当都会导致EVPN路由“可见但不可用”。