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隔离原理:同一物理设备内的多套路由/转发表 Nexus 9000 物理设备(单台) VRF:TENANT_A RIB_A:10.10.10.0/24 → 静态/OSPF FIB_A:硬件转发表项 ARP_A / 邻接表 接口:Eth1/1.10(VLAN 10) VRF:TENANT_B RIB_B:10.10.10.0/24 → 静态/OSPF FIB_B:硬件转发表项 ARP_B / 邻接表 接口:Eth1/1.20(VLAN 20) 路由域硬隔离:相同前缀互不冲突

二、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-LiteMPLS 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策略,这属于后续章节的内容。

判断隔离是否成功的三个观察点:① 两个VRF的show ip route输出互不包含对方明细;② 跨VRF ping不通;③ 同VRF内ping通且ARP表项正确。三者同时满足,才说明VRF隔离配置完整生效。

总结来说,VRF的核心价值在于用“多套表”换取“多租户共存”,而Nexus NX-OS通过vrf context、vrf member两条主线命令即可完成创建与绑定。掌握VRF-Lite与MPLS VRF的适用边界,再配合规范的实验验证,就能为后续更复杂的租户路由域设计打下坚实基础。