4. EVPN多活网关技术
在传统数据中心三层网关设计中,通常采用VRRP或HSRP实现网关冗余,但同一时刻只有一台设备转发流量,备用网关长期闲置,且故障切换依赖协议收敛,切换期间会出现秒级中断。EVPN多活网关(Distributed Anycast Gateway,分布式任播网关)改变了这一模式:多台Leaf交换机同时作为同一网段的网关,使用相同的虚拟MAC地址和相同的网关IP,每台Leaf独立完成本地接入主机的三层转发,无需将流量绕行到某台主网关。这样既消除了单点瓶颈,也把故障切换时间压缩到接近本地链路收敛的水平。
分布式任播网关的核心机制
分布式任播网关的关键在于“同一IP、同一MAC、处处可达”。每台Leaf交换机上都配置相同的网关IP(例如VLAN 10对应192.168.10.1/24)和相同的虚拟MAC地址(例如00:00:5e:00:01:01)。当主机A(连接Leaf-1)访问主机B(连接Leaf-2)时,主机A的默认网关是192.168.10.1,它发出的ARP请求由Leaf-1直接应答,Leaf-1用自己的虚拟MAC作为应答MAC,随后主机A将数据帧发给Leaf-1,Leaf-1查EVPN路由表后通过VXLAN封装转发到Leaf-2。整个过程不需要任何一台“主网关”参与,每台Leaf都是本地主机的第一跳网关。
虚拟MAC地址的选择需要全网统一。通常使用一个本地管理位为0、组播位为0的普通单播MAC,例如00:00:5e:00:01:01,并确保该MAC不会与任何物理接口MAC冲突。所有Leaf上的VLAN网关接口(SVI)都配置相同的IP和MAC,形成任播(Anycast)语义。主机无论接入哪台Leaf,看到的网关MAC和IP完全一致,因此主机侧无需感知网关位置变化。
ARP/ND同步与EVPN MAC/IP路由
多活网关要正常工作,必须解决一个关键问题:主机A的ARP请求由Leaf-1应答,但主机B的MAC地址Leaf-1可能并不知道。传统方案依赖泛洪,而EVPN多活网关通过控制平面同步来解决。每台Leaf将本地学习到的主机MAC/IP信息通过BGP EVPN的Type-2路由(MAC/IP Advertisement Route)通告给其他Leaf。当Leaf-1收到主机A的ARP请求并需要转发到主机B时,它已经通过EVPN路由表知道主机B的MAC和所在VTEP,直接封装VXLAN单播转发,无需泛洪。
对于网关自身的ARP/ND,每台Leaf都维护一份本地ARP表,并只应答本地接入主机的ARP请求。当主机A发送“谁是192.168.10.1”的ARP请求时,Leaf-1直接用自己的虚拟MAC应答,主机A的ARP缓存中网关MAC为00:00:5e:00:01:01。如果主机A迁移到Leaf-2下,Leaf-2同样用相同虚拟MAC应答,主机A的ARP缓存无需更新,业务不中断。IPv6场景下ND(Neighbor Discovery)机制同理,通过EVPN Type-2路由携带IPv6地址信息实现同步。
网关故障切换机制
分布式任播网关的故障切换分为两种场景。第一种是Leaf设备整体故障:当Leaf-1宕机时,其下挂主机需要重新接入。如果主机采用双归接入(如MLAG或ESI多活),主机链路会切换到Leaf-2,Leaf-2继续用相同虚拟MAC和IP提供网关服务,主机侧无感知。如果主机单归接入Leaf-1,则主机链路中断,需要依赖主机侧多网卡或链路聚合恢复,此时网关本身不是瓶颈。
第二种是网关接口或VXLAN隧道故障:Leaf-1的SVI接口Down或VXLAN隧道不可达时,Leaf-1会撤销对应的EVPN路由,其他Leaf收到撤销后更新转发表。对于本地主机,Leaf-1的SVI Down意味着本地网关不可用,主机需要重新选择路径。实际部署中通常结合BFD(Bidirectional Forwarding Detection)实现毫秒级故障检测,BFD会话Down后触发EVPN路由快速撤销,收敛时间可控制在200ms以内。
多活网关部署实践
以下以一台Leaf-1为例,给出分布式任播网关的关键配置片段。假设VLAN 10对应VNI 1010,网关IP为192.168.10.1/24,虚拟MAC为00:00:5e:00:01:01,Leaf-1的VTEP地址为10.0.0.1,Leaf-2的VTEP地址为10.0.0.2。
! Leaf-1 分布式任播网关配置示例
vlan 10
vn-segment 1010
!
interface Vlan10
no shutdown
ip address 192.168.10.1/24
mac-address 0000.5e00.0101
fabric forwarding mode anycast-gateway
!
interface nve1
no shutdown
source-interface Loopback0
member vni 1010
ingress-replication protocol bgp
!
router bgp 65001
neighbor 10.0.0.2 remote-as 65001
neighbor 10.0.0.2 update-source Loopback0
address-family l2vpn evpn
neighbor 10.0.0.2 activate
advertise l2vpn evpn
!
evpn
vlan 10
rd auto
route-target both 65001:1010
配置完成后,通过以下命令验证多活网关状态。首先检查本地SVI和虚拟MAC是否生效:
Leaf-1# show interface Vlan10
Vlan10 is up, line protocol is up
Hardware is Ethernet SVI
Internet address is 192.168.10.1/24
MTU 1500 bytes, BW 1000000 Kbit
MAC address is 0000.5e00.0101 (bia 0000.5e00.0101)
然后检查EVPN路由表,确认已学习到Leaf-2下挂主机的MAC/IP路由:
Leaf-1# show bgp l2vpn evpn
Route Distinguisher: 10.0.0.2:1010
Network Next Hop Metric LocPrf Weight Path
[2]:[0]:[0]:[48]:[0050.5680.0002]:[32]:[192.168.10.20]
10.0.0.2 0 100 0 i
该输出表示Leaf-1已通过EVPN Type-2路由学习到主机B(MAC 0050.5680.0002,IP 192.168.10.20)位于VTEP 10.0.0.2。此时从主机A ping主机B,流量路径为:主机A → Leaf-1(本地网关)→ VXLAN封装 → Leaf-2 → 主机B,全程不经过任何主网关设备。
部署检查清单
| 检查项 | 预期结果 | 验证命令 |
|---|---|---|
| 虚拟MAC全网一致 | 所有Leaf的SVI MAC相同 | show interface Vlan10 |
| 网关IP一致 | 所有Leaf的SVI IP相同 | show interface Vlan10 |
| EVPN Type-2路由同步 | 能学到远端主机MAC/IP | show bgp l2vpn evpn |
| VXLAN隧道可达 | NVE peer状态Up | show nve peers |
| ARP本地应答 | 主机ARP缓存网关MAC为虚拟MAC | 主机侧arp -a |
| 故障切换收敛 | BFD Down后路由快速撤销 | show bfd neighbors |
总结来说,EVPN分布式任播网关通过“同IP同MAC”实现网关任播,通过EVPN Type-2路由实现ARP/ND同步,通过本地转发消除主备网关的流量绕行,通过BFD和EVPN路由收敛实现快速故障切换。部署时需重点关注虚拟MAC一致性、EVPN路由同步状态和主机双归接入设计,这三者共同决定了多活网关能否真正发挥高可用价值。