3、Fabric隔离机制:VRF、VLAN与VXLAN的租户隔离模型
聊到Fabric网络,隔离机制是绕不开的核心话题。说白了,没有隔离就没有多租户,没有多租户,Fabric的价值就少了一大半。我这些年做过的项目里,因为隔离没做好导致生产事故的案例,一只手都数不过来。今天咱们就掰开揉碎了,把VRF、VLAN、VXLAN这几个隔离手段讲透。
3.1 VRF:虚拟路由转发的底层逻辑
VRF,全称Virtual Routing and Forwarding,中文叫虚拟路由转发。它的本质是什么?我习惯这么理解:在一台物理路由器上,切出多个逻辑上完全独立的路由表。
每个VRF实例拥有自己独立的路由表、独立的转发表、独立的接口绑定。流量进了哪个VRF,就只能查那个VRF的路由表,跟别的VRF毫无关系。这就好比一栋楼里住了好几户人家,每家都有自己的门牌号和信箱,互不干扰。
VRF的核心特征:
- 路由隔离:每个VRF维护独立的路由表,路由条目不共享
- 接口隔离:接口只能属于一个VRF,不能跨VRF转发
- 转发隔离:数据包在VRF内部完成转发,不会泄漏到其他VRF
我在一个金融客户的项目里遇到过这样的场景:他们要求生产环境和测试环境共用同一套物理网络设备,但路由必须完全隔离。当时我给出的方案就是VRF。生产环境跑在VRF-A里,测试环境跑在VRF-B里,两个VRF之间通过路由泄露(Route Leaking)做有限互通,其他流量一概不通。这个方案跑了三年,没出过问题。
避坑指南:我曾经在配置VRF时犯过一个低级错误——忘了把Loopback接口划进正确的VRF。结果BGP邻居死活起不来,排查了整整两个小时。记住:所有参与路由协议的接口,包括Loopback,都必须明确绑定到对应的VRF。
3.2 VLAN vs VXLAN:二层隔离的两种思路
VRF解决的是三层隔离问题。那二层隔离呢?这就轮到VLAN和VXLAN登场了。
VLAN(Virtual Local Area Network)大家都很熟悉,它通过802.1Q标签在同一个物理网络上划分多个广播域。VLAN ID的范围是1-4094,嗯,只有4094个可用。这在小型网络里够用,但在大规模数据中心里,4094个VLAN根本不够分。
VXLAN(Virtual Extensible LAN)就不一样了。它用24位的VNI(VXLAN Network Identifier)来标识网络段,理论上支持1600万个隔离网络。而且VXLAN把二层帧封装在UDP包里,可以跨越三层网络传输。这意味着什么?意味着你可以把分布在不同机房的服务器,划进同一个二层网络里。
| 对比维度 | VLAN | VXLAN |
|---|---|---|
| 标识符长度 | 12位(VLAN ID) | 24位(VNI) |
| 最大隔离数 | 4094 | 约1600万 |
| 传输范围 | 二层网络内 | 可跨三层网络 |
| 封装开销 | 4字节(802.1Q) | 50字节(VXLAN + UDP + IP) |
| 典型场景 | 园区网、小规模DC | 大规模数据中心、多云互联 |
你想想看,VLAN的4094个ID,在公有云场景下,一个租户可能就需要几百个VLAN。几十个租户一上来,VLAN ID就枯竭了。VXLAN的1600万VNI,基本上可以做到每个租户、每个业务都分配独立的VNI,完全不用担心资源耗尽。
注意:VXLAN虽然强大,但也不是银弹。50字节的封装开销意味着MTU必须调整。我见过不少团队上线VXLAN时忘了调MTU,结果大包被分片,性能直接腰斩。建议把物理链路的MTU设置为1600字节以上,给VXLAN头部留足空间。
3.3 租户隔离模型:从理论到落地
讲完了VRF、VLAN、VXLAN各自的原理,咱们来看看它们怎么组合起来,构建一个完整的租户隔离模型。
我一般把租户隔离模型分为三个层次:
- 物理层隔离:每个租户独占物理设备或端口。最安全,但成本最高。
- 逻辑层隔离:通过VRF + VXLAN实现。租户共享物理设备,但路由和二层网络完全隔离。
- 混合层隔离:关键业务用物理隔离,普通业务用逻辑隔离。
在实际的Fabric部署中,最常用的是逻辑层隔离。具体怎么做?
- 每个租户分配一个独立的VRF实例
- 每个租户的二层网络使用独立的VNI
- VRF和VNI之间通过L3VNI(Layer 3 VNI)打通
举个例子。假设我们有三个租户:A、B、C。每个租户都有自己的Web、App、DB三层架构。在Fabric里,我会这样配置:
租户A:
VRF: Tenant-A-VRF
L2VNI: 10001 (Web), 10002 (App), 10003 (DB)
L3VNI: 10000
租户B:
VRF: Tenant-B-VRF
L2VNI: 20001 (Web), 20002 (App), 20003 (DB)
L3VNI: 20000
租户C:
VRF: Tenant-C-VRF
L2VNI: 30001 (Web), 30002 (App), 30003 (DB)
L3VNI: 30000
这样配置之后,租户A的Web服务器和DB服务器之间可以通过L3VNI做三层路由,但租户A的流量绝对不会跑到租户B的网络里。每个租户都感觉自己独占了一套网络设备。
关键点:L3VNI是打通VRF内部不同VXLAN网络的关键。每个VRF只需要一个L3VNI,所有该租户的二层VNI都通过这个L3VNI完成跨子网路由。这个设计大大简化了配置复杂度。
下面这张图展示了租户隔离模型的核心逻辑:
从这张图可以看得很清楚:物理网络是共享的,Spine-Leaf架构为所有租户提供统一的转发平台。但在逻辑层面,每个租户都有自己的VRF和VXLAN VNI,互不干扰。这就是Fabric隔离的精髓——共享物理资源,隔离逻辑视图。
我的经验:在规划租户隔离模型时,我建议先画一张类似上面的图,把每个租户的VRF、L2VNI、L3VNI都标清楚。这样做的好处是,配置的时候不会搞混VNI,排查问题的时候也能快速定位。我曾经在一个项目里因为VNI规划混乱,导致两个租户的二层网络意外打通,虽然没造成数据泄漏,但运维团队被吓得不轻。
最后说一句:隔离机制的选择没有绝对的对错,关键看场景。小规模园区网,VLAN + VRF就够用了。大规模数据中心,VXLAN + VRF是标配。混合云场景,可能还需要加上EVPN来控制VXLAN的控制平面。嗯,这些内容后面的章节会详细展开。