1. 课程导入与实验环境搭建
在数据中心网络从传统三层转发向“二层延伸 + 三层路由一体化”演进的过程中,BGP EVPN 已成为事实上的控制平面标准。它把 MAC/IP 地址的可达性信息封装进 BGP 路由,借助 MP-BGP 的扩展团体属性在 VTEP 之间同步,从而在 VXLAN 数据平面上实现按需泛洪、ARP 抑制和分布式网关。本课程以 SONiC 为软件载体,围绕“控制平面 BGP EVPN + 数据平面 VXLAN”这条主线,逐步搭建一个可运行、可抓包、可排障的叶脊(Spine-Leaf)实验环境。
学习目标与技术全景
完成本课程后,你应当能够独立完成以下任务:在 SONiC 上启用 FRR 作为 BGP 协议栈,配置 EVPN 地址族并建立 IBGP 或 EBGP 对等体;在 Leaf 上创建 VXLAN 隧道接口与 VLAN 到 VNI 的映射;配置分布式网关(SVI + anycast 网关 MAC/IP),使跨子网流量在 Leaf 本地完成路由;通过 show bgp evpn、show vxlan tunnel、show mac 等命令验证控制平面与数据平面的一致性;最后用 ping、traceroute 与抓包定位常见故障。
技术全景可以用一条“自下而上”的依赖链来理解:最底层是物理或虚拟链路与 IP 可达性,之上是 VXLAN 隧道(UDP 4789 封装),再之上是 EVPN 的 BGP 路由类型(Type-2 MAC/IP、Type-3 Inclusive Multicast、Type-5 IP Prefix),最上层才是租户的 VLAN、子网与网关。任何一层出问题,上层业务都会表现为“ping 不通”或“时通时断”,因此排障必须按层回溯。
典型拓扑与角色划分
本课程采用经典的双 Spine、双 Leaf 拓扑。两台 Spine 只做 IP 转发与 BGP 路由反射(或 EBGP 全互联),不参与 VXLAN 封装;两台 Leaf 既是 VTEP,也是分布式网关。每台 Leaf 下挂一台主机,主机属于同一租户的不同子网,用于验证跨子网通信。Underlay 使用 /31 或 /30 互联地址,运行简单的 BGP 或 OSPF 保证 Loopback 可达;Overlay 使用 IBGP,以 Spine 为路由反射器,Leaf 之间交换 EVPN 路由。
实验环境部署:容器与虚拟机两条路径
SONiC 的获取方式主要有两种。第一种是官方或社区提供的 VS(Virtual Switch)镜像,通常以 KVM/QEMU 虚拟机形式运行,镜像内已包含 sonic-vs.img,启动后通过管理口获取 IP,再用 SSH 登录。第二种是容器化方案,例如使用 docker-sonic-vs 或基于 sonic-buildimage 构建的容器,把 FRR、swss、syncd 等组件跑在容器内,适合快速验证配置语法与 BGP EVPN 控制平面,但数据平面通常依赖内核 VXLAN 而非 ASIC 模拟。
本课程推荐“虚拟机为主、容器为辅”的组合:用两台 Leaf 虚拟机验证 VXLAN 数据平面与分布式网关,用容器快速验证 EVPN 路由收发。若资源有限,也可用一台 Linux 主机配合 network namespace 模拟多台 SONiC,但需注意内核版本对 VXLAN 与 bridge 的支持。
以 KVM 为例,部署一台 Leaf 的关键步骤如下。先准备管理网桥与数据网桥,管理口用于 SSH,数据口用于 Underlay 互联。启动虚拟机后,登录 SONiC,确认 show version 与 show interface status 正常。随后配置管理地址与默认路由,确保能访问外部软件源。接着进入 config 模式,配置 Loopback 与物理口地址:
sudo config interface ip add Ethernet0 10.1.1.1/30
sudo config interface ip add Loopback0 10.0.0.11/32
sudo config interface startup Ethernet0
sudo config save -y
Underlay 可用静态路由或 BGP。为贴近生产,建议用 BGP 发布 Loopback:在 FRR 中配置 router bgp 65001,neighbor 10.1.1.2 remote-as 65000,并 network 10.0.0.11/32。验证命令为 show ip bgp summary 与 show ip route bgp,当看到对等体状态为 Established、Loopback 路由为有效时,Underlay 即就绪。
验证清单与常见问题
环境搭建完成后,建议按以下顺序验证,避免“一上来就配 EVPN”导致问题叠加。第一,检查管理面:SSH 可登录、show version 正常。第二,检查数据面:ip link 中 Ethernet 口为 UP,ping 直连对端地址通。第三,检查 Underlay:show ip bgp summary 对等体 Established,show ip route 能看到对端 Loopback。第四,检查 VXLAN 基础:ip -d link show vtep 能看到 VXLAN 接口与 VNI。第五,检查 EVPN:show bgp evpn summary 对等体正常,show bgp evpn route type macip 能看到本端与对端 MAC/IP 路由。
show bgp evpn summary 显示对等体 Idle,优先检查 Underlay 的 Loopback 是否可达、BGP 是否配置了 address-family l2vpn evpn 以及 neighbor ... activate。若 EVPN 路由已收到但主机不通,则回到数据面检查 VNI 映射、VLAN 成员口与网关 MAC 是否一致。vxlan 模块或缺少 bridge 支持,VXLAN 接口可能创建失败。可执行 modprobe vxlan 并确认 lsmod | grep vxlan 有输出。虚拟机方案中,注意网卡是否启用多队列与混杂模式,否则 VXLAN 封装包可能被丢弃。