
一、实验说明
更适合小白食用
这篇主要是记录一下我做的一个 H3C EVPN VXLAN 分布式网关实验,涉及 4 台设备:RTA、RTB、RTC、RTD。
整体看下来,RTA 和 RTB 更像是接入侧 VTEP,主要负责二层业务接入、VSI 和 VXLAN 的绑定、分布式网关这些内容; RTC 这台更偏三层侧,主要看业务路由引入和三层互通;RTD 则是整个实验里的 EVPN 路由反射器(RR),负责把控制面路由组织起来。
这套实验我感觉挺适合拿来入门 EVPN VXLAN,尤其是把 RR、VTEP、二层 VNI、三层 VNI 这些概念串起来看,会比单独背命令顺很多。
二、设备角色说明
- RTA: 接入侧 VTEP,主要看二层业务、VXLAN 映射和分布式网关。
- RTB: 也是接入侧 VTEP,可以理解成和 RTA 对称的一侧,用来做跨 VXLAN 的二层互通。
- RTC: 这台更偏三层网关侧,重点看路由引入、L3 VNI 和三层互通。
- RTD: EVPN RR,也就是路由反射器,负责把几台设备的 EVPN 路由反射出去。
三、设备配置查看
下面把几台设备的原始配置也放上来,点击文件名可以直接在当前页面弹窗查看,不用跳转:
四、阅读建议
如果是第一次看这套配置,我建议不要一上来就直接从头到尾硬读,不然很容易被一堆命令绕进去。
- 先看 RTD,先把 RR 的邻居关系看清楚,知道谁和谁建了 EVPN 邻居,谁负责反射。
- 再看 RTA 和 RTB,重点看 VSI、VNI、VTEP、分布式网关这些内容。
- 最后看 RTC,把三层网关、L3 VNI、VPN 实例和业务互通串起来理解。
我自己看这类配置的时候,一般也是按这个顺序,不然很容易只见命令,不见整体逻辑。
五、补充说明
下面这些点,是我觉得这套实验里最值得单独拎出来说的几个地方。很多时候不是命令难,而是概念容易混在一起。 所以这里我尽量按“人话”来整理一下,也方便后面自己回头看。
1、group evpn internal 是什么意思
这个命令放在 BGP 下面看,其实就比较好理解了。
group evpn,可以理解成先建了一个名字叫 evpn 的邻居组; internal 表示这个组里的邻居都是 IBGP 邻居,也就是和本设备在同一个 AS 里。
我的理解是,这个东西本质上就是为了省配置、也为了后面扩展方便。 比如有几台设备都要做 EVPN 邻居,很多公共属性其实是一样的,那就没必要一台一台单独敲,直接先建个组, 再把邻居拉进来就行。
所以这里的重点不是“这条命令很神秘”,而是要明白:它本质上就是一个 IBGP 邻居模板组。
2、peer evpn reflect-client 是干什么的
这个命令就很好理解了,关键点就两个字:反射。
RTD 在这里扮演的是 RR,也就是 EVPN 路由反射器。 peer evpn reflect-client 的意思,就是把这个邻居组里的设备都当成 RR Client。
这样一来,RTA、RTB、RTC 不需要彼此全互联,它们只要都和 RTD 建邻就行。 某台设备把 EVPN 路由发给 RTD,RTD 再把这些路由反射给其他客户端。
这个设计的好处很明显:
- 设备少的时候可能感受不明显;
- 设备一多,如果全互联,邻居关系会非常乱;
- 有了 RR 之后,控制面拓扑就清晰很多,扩容也方便。
所以我自己看这条命令的时候,通常不会死记“reflect-client”这个词,而是直接理解成: RTD 负责帮大家转发 EVPN 路由信息。
3、vxlan tunnel mac-learning disable 的意义
这条命令如果只看字面,很容易觉得有点抽象。其实它想表达的意思很简单: 不要再依赖 VXLAN 隧道里的数据面报文去学习远端 MAC 了。
传统 Flood-and-Learn 的思路,很多时候是靠报文来了再学; 但 EVPN 的思路更偏控制面,也就是通过 BGP EVPN 直接去分发 MAC/IP 可达信息。
所以把这个功能关掉,可以理解成网络在明确告诉你:
- 远端 MAC 的学习,尽量别靠“听流量猜”;
- 更希望通过 EVPN 控制面来学;
- 这样泛洪会少一些,收敛和可控性也会更好一些。
这个点我觉得是 EVPN VXLAN 和传统 VXLAN 一个挺重要的区别。 你会发现,越往 EVPN 方向走,越强调“控制面提前知道”,而不是“数据面来了再学”。
4、VSI / BD / VNI 到底是什么关系
这三个概念,是很多人一开始最容易混的地方。
我现在更习惯这么理解:
- VNI:就是 VXLAN 里的那个业务编号,可以理解成“隧道里带着走的标签”;
- VSI:设备本地的一个二层业务实例,理解成“这台设备上的一个虚拟交换域”就行;
- BD:桥接域,很多厂商会更常说这个词,本质上也是一个二层广播域的概念。
如果说得再直白一点:
VSI / BD 更像是设备本地怎么看这个二层业务,VNI 更像是这个业务放到 VXLAN 隧道里之后对应的编号。
所以很多时候,你会看到某个 VSI 下面去绑一个 VXLAN VNI。 这其实就是在说:把这个本地二层业务域,映射到某个 VXLAN 网络编号上。
至于 VSI 和 BD,到底是不是完全一样,不同厂商实现会有些表达差异。 但在学习和看实验配置的时候,你完全可以先把它们都理解成“二层广播域”。
5、二层 VNI 和三层 VNI 的区别
这个点真的很重要,很多时候一旦这里理顺了,后面的分布式网关、租户三层互通就顺了。
(1)二层 VNI
二层 VNI 主要负责承载 二层业务。 你可以把它理解成:把同一个二层网段,通过 VXLAN 的方式延伸到不同设备上。
- 它对应的是二层广播域;
- 更关注 MAC、ARP、主机二层可达;
- 适合“同一网段跨设备延伸”的场景。
(2)三层 VNI
三层 VNI 就不一样了,它对应的已经不是简单的二层广播域,而是 一个租户的三层转发域。
- 它更偏向 VPN 实例、租户路由表这些概念;
- 承载的是三层转发逻辑;
- 适合不同子网之间的互通。
(3)我自己的记法
二层 VNI 管“同网段怎么延伸”,三层 VNI 管“不同网段怎么互通”。
这么记我觉得最省脑子,也最不容易混。
(4)再说得再通俗一点
- 二层 VNI:更像是把一个 VLAN 的二层范围,通过 VXLAN 扩展到了别的设备;
- 三层 VNI:更像是给一个租户准备了一套路由空间,让不同网段之间可以在 VXLAN 网络里转起来。
6、分布式网关和这些概念之间是什么关系
分布式网关这个东西,如果单独背定义,其实挺容易越背越绕。
我自己的理解就是一句话:
让终端无论接到哪台 VTEP,上面都像有“同一个网关”在本地等着它。
这样做的好处是,终端流量不用先绕去远端设备找网关,而是可以本地就完成网关转发。
它通常会和这些东西一起配合:
- 二层 VNI:负责租户二层网段的延伸;
- 三层 VNI:负责跨网段的三层转发;
- EVPN:负责把 MAC/IP 和路由信息发出去;
- VTEP:负责封装和解封装 VXLAN 报文。
所以整体逻辑可以简单理解成:
终端先接入本地 VTEP → 同网段流量靠二层 VNI 互通 → 跨网段流量在本地分布式网关做三层转发 → 再通过三层 VNI 和 EVPN 控制面把流量和路由带到对端。
7、最后说一下我自己看这套配置时会重点盯哪些地方
如果后面我自己再回头看这套实验,我觉得最值得重点盯的还是下面这些点:
- BGP EVPN 邻居关系:先看谁和谁建邻,谁是 RR,谁是 Client;
- VSI 配置:看每个业务二层域是怎么建的;
- VNI 绑定关系:看哪些是二层 VNI,哪些是三层 VNI;
- 网关接口:看分布式网关地址是怎么落的;
- VPN 实例:看租户路由表是怎么组织的;
- EVPN 控制面:看 MAC/IP 和路由信息到底是怎么发布和学习的。
对我自己来说,这样去看会比只盯着单条命令更有效,因为命令本身其实只是表象,真正要弄明白的还是整套网络是怎么联动起来的。