2. VRF核心机制与Nexus实现
VRF(Virtual Routing and Forwarding,虚拟路由转发)是多租户网络中最基础、也最关键的一张“隔离底牌”。它并不是把一台物理设备切成多台虚拟机,而是在同一台交换机内部,把三层路由与转发的“数据库”复制出多份:每份拥有独立的路由表、ARP表、转发表和路由协议实例。接口一旦绑定到某个VRF,该接口收到的报文就只会在该VRF的表中查表转发,绝不会“串”到其他租户的表中去。理解这一点,是后续所有租户路由域划分、路由泄漏和跨VRF互通设计的前提。
一、VRF隔离的本质:三张表被“复制”了
在未启用VRF的传统三层设备上,全局只有一张路由表(RIB)和一张转发表(FIB)。RIB由路由协议或静态路由写入,FIB由RIB下发,硬件据此转发。启用VRF后,NX-OS会为每个VRF维护独立的RIB与FIB,同时还有独立的ARP表和邻接表。因此,即使两个租户使用完全相同的IP地址段(例如都使用10.10.10.0/24),只要它们分属不同VRF,就不会冲突——因为查表时根本不在同一张表里。
需要特别强调的是:VRF隔离的是“路由域”,而不是“物理链路”。同一条Trunk链路上可以承载多个VRF的流量,靠的是VLAN与VRF的映射关系。VLAN负责二层隔离,VRF负责三层隔离,两者配合才构成完整的租户边界。
二、VRF-Lite与MPLS VRF的对比
VRF-Lite是“纯IP”的VRF实现:每台设备为每个VRF维护独立路由表,VRF之间的路由通过物理接口或子接口(通常配合VLAN)逐跳传递。它不依赖MPLS标签,配置直观,适合中小规模、跳数不多的园区或数据中心接入层。缺点是每增加一个租户,就要在沿途每台设备上配置对应的子接口和路由,扩展性受限于接口数量和配置量。
MPLS VRF(也称L3VPN)则把VRF信息通过MP-BGP扩展团体属性携带,在PE之间用标签转发,P设备只需转发标签、不感知租户路由。它的优势是租户路由只在PE上存在,中间设备无需为每个租户配置接口,扩展性极强,适合大型骨干和跨广域的多租户场景。代价是引入了MPLS、MP-BGP、RD/RT等概念,排障链路更长。
| 对比维度 | VRF-Lite | MPLS VRF(L3VPN) |
|---|---|---|
| 转发依据 | IP逐跳查表 | MPLS标签交换 |
| 租户路由可见范围 | 沿途每台设备 | 仅PE设备 |
| 扩展性 | 受接口/配置量限制 | 强,P设备无感知 |
| 典型场景 | 园区、DC接入 | 骨干、跨域多租户 |
| 关键配置 | 子接口+VRF绑定 | RD/RT+MP-BGP |
三、NX-OS中创建VRF并绑定接口
在Nexus上,VRF的创建与接口绑定非常直接。下面以两个租户为例,给出可参考的配置样例(参数为教学示例,实际部署请按规划替换):
! 创建VRF
vrf context TENANT_A
description Tenant_A_Production
vrf context TENANT_B
description Tenant_B_Production
! 创建VLAN并绑定VRF
vlan 10
name TENANT_A_VLAN
vlan 20
name TENANT_B_VLAN
! 配置SVI并绑定VRF
interface Vlan10
no shutdown
vrf member TENANT_A
ip address 10.10.10.1/24
interface Vlan20
no shutdown
vrf member TENANT_B
ip address 10.10.10.1/24
! 物理接口放行VLAN
interface Ethernet1/1
switchport mode trunk
switchport trunk allowed vlan 10,20
注意两个SVI使用了相同的网段10.10.10.0/24,这正是VRF隔离能力的直接体现:它们分属不同VRF,因此互不冲突。配置完成后,可用以下命令验证:
show vrf
show ip route vrf TENANT_A
show ip route vrf TENANT_B
show ip interface vrf TENANT_A brief
若在show ip route vrf TENANT_A中能看到10.10.10.0/24直连路由,而在TENANT_B的路由表中看不到TENANT_A的明细,说明隔离生效。反之,如果两个VRF的路由表出现互相“串入”的情况,应检查接口是否误绑、SVI是否落在同一VRF,以及是否存在路由泄漏配置。
四、租户路由域划分实验思路
一个可落地的实验可以这样设计:两台Nexus(或一台Nexus加两台Linux主机模拟租户终端),规划TENANT_A使用VLAN 10、网段10.10.10.0/24,TENANT_B使用VLAN 20、网段10.10.10.0/24。目标有三个:第一,验证同VRF内主机可互通;第二,验证跨VRF同网段主机不可互通;第三,验证VRF路由表相互独立。
实验步骤建议:先在Nexus上完成上述VRF与SVI配置;再将两台终端分别接入对应VLAN;随后在TENANT_A终端ping同网段另一台终端,应通;从TENANT_A终端ping TENANT_B终端(即使IP相同),应不通或超时;最后在Nexus上分别查看两个VRF的路由表和ARP表,确认条目各自独立。若需要跨VRF互通,则必须显式配置路由泄漏(route leaking),例如通过静态路由指向对方VRF的下一跳,或使用import/export策略,这属于后续章节的内容。
show ip route输出互不包含对方明细;② 跨VRF ping不通;③ 同VRF内ping通且ARP表项正确。三者同时满足,才说明VRF隔离配置完整生效。总结来说,VRF的核心价值在于用“多套表”换取“多租户共存”,而Nexus NX-OS通过vrf context、vrf member两条主线命令即可完成创建与绑定。掌握VRF-Lite与MPLS VRF的适用边界,再配合规范的实验验证,就能为后续更复杂的租户路由域设计打下坚实基础。