2. VRF核心机制与路由隔离

在EVPN多租户网络中,租户之间的隔离并不是靠“把接口划进不同VLAN”就自动完成的。VLAN解决的是二层广播域隔离,而三层可达性、路由表项、EVPN路由的导入导出,必须由VRF(Virtual Routing and Forwarding,虚拟路由转发)实例来承载。理解VRF,本质上要理解四件事:路由表如何独立、路由前缀如何被区分、路由如何被有选择地共享、以及管理面与业务面如何分离。

一、VRF表:每个租户一张独立的三层转发表

VRF实例在设备内部创建了一套独立的三层转发上下文。它包含自己的路由表(RIB)、转发表(FIB)、ARP/ND表、接口集合以及路由协议实例。同一台PE上,租户A的VRF-A和租户B的VRF-B可以同时存在10.10.10.0/24这个前缀,彼此互不冲突,因为查表时先绑定VRF,再查该VRF内的前缀。

从数据面看,报文进入PE后,先根据入接口或子接口绑定关系确定所属VRF,再在该VRF的FIB中查找目的地址,最后封装VXLAN或MPLS标签转发。控制面则通过BGP EVPN地址族,把本VRF内的MAC/IP路由、IMET路由、IP前缀路由发布出去。因此,VRF不是一张“额外的表”,而是把接口、路由协议、路由表、转发表、EVPN实例打包在一起的逻辑路由器。

判断一个租户是否真正隔离,不能只看接口是否绑定了不同VRF,还要确认:该VRF是否绑定了独立的EVPN实例、是否只导入本租户RT、是否存在误配的默认路由泄漏。

二、RD与RT:一个负责“唯一标识”,一个负责“导入导出”

RD(Route Distinguisher,路由区分符)和RT(Route Target,路由目标)经常被混淆,但职责完全不同。

RD附加在EVPN路由前缀之前,使不同VRF中相同的IP前缀在BGP表中成为不同路由。例如VRF-A的10.10.10.0/24携带RD 65000:100,VRF-B的同一前缀携带RD 65000:200,BGP可以同时保留两条路由而不互相覆盖。RD只影响路由的唯一性,不决定谁能接收。

RT是BGP扩展团体属性,分为Export RT和Import RT。本端VRF发布路由时附加Export RT,对端VRF收到后,只有其Import RT集合中包含该RT值,才会把路由导入自己的VRF路由表。RT才是控制路由泄漏范围的关键开关。

典型配置中,VRF-A可设置:

vrf definition VRF-A
 rd 65000:100
 address-family ipv4
  route-target export 65000:100
  route-target import 65000:100
  route-target import 65000:999   ! 用于共享服务路由

这里65000:100实现租户A内部站点互通,65000:999则用于从共享服务VRF导入DNS或网关路由。RT的导入导出集合可以不对称,这正是路由泄漏和共享服务的基础。

三、路由泄漏:有控制的跨VRF共享

路由泄漏(Route Leaking)指路由从一个VRF进入另一个VRF。它不等于隔离失败,而是有明确策略的受控共享。常见场景包括:多个租户访问同一套共享服务(DNS、NTP、防火墙、负载均衡),或管理VRF需要访问各业务VRF的设备接口。

实现方式有两种。第一种是RT匹配法:共享服务VRF导出RT 65000:999,各租户VRF的Import RT中加入65000:999,于是共享服务前缀被导入各租户。第二种是本地VRF间导入:在PE上直接把VRF-A的某条静态路由导入VRF-B,适用于单台设备内的管理访问。

需要特别注意的是泄漏方向。若只希望租户访问共享服务,而不希望租户之间互访,则共享服务VRF导出65000:999,租户VRF导入65000:999,但租户VRF之间不互相导入对方的RT。若双向都导入,就会形成租户间可达,破坏隔离目标。

VRF路由隔离与受控泄漏关系图 PE 设备内部 VRF-A(租户A) RD: 65000:100 Export RT: 65000:100 Import RT: 65000:100 Import RT: 65000:999 10.10.10.0/24 VRF-B(租户B) RD: 65000:200 Export RT: 65000:200 Import RT: 65000:200 Import RT: 65000:999 10.10.10.0/24 VRF-SVC(共享服务) RD: 65000:999 Export RT: 65000:999 Import RT: 65000:999 DNS / NTP / FW 172.16.0.0/24 隔离 无RT互导 RT 65000:999 导入 导入 管理VRF(MGMT) 独立路由表,承载带外管理、SSH、SNMP、NETCONF、Telemetry 与业务VRF默认不互通,避免业务流量影响管理通道 通过RT 65000:999或本地导入,按需访问各VRF设备接口 管理地址示例:192.168.100.0/24 数据面 数据面 租户间隔离 RT受控泄漏 业务数据面 管理面

四、管理VRF与数据VRF分离

管理VRF(MGMT VRF)与数据VRF分离,是生产网络中非常关键的设计。管理VRF承载设备自身的带外管理流量,包括SSH登录、SNMP采集、NETCONF配置下发、Telemetry上报、NTP同步和Syslog输出。数据VRF承载租户业务流量。两者分离的核心价值有三点:

  • 故障域隔离:业务VRF出现路由震荡、表项溢出或流量拥塞时,管理通道仍可独立可达,运维人员不会失去对设备的控制。
  • 安全边界清晰:管理地址不暴露在业务VRF中,租户无法通过业务路由直接访问设备管理接口。
  • 路由策略独立:管理VRF可以只保留一条默认路由指向带外网关,不需要参与EVPN路由交换,减少不必要的路由泄漏风险。

在配置上,管理VRF通常不绑定EVPN实例,也不发布EVPN路由。设备管理接口(如GigabitEthernet0/0或Mgmt0)划入管理VRF,配置独立IP地址和默认网关。若需要从管理VRF访问某个业务VRF的设备接口,可通过本地导入或RT匹配实现单向泄漏,而不是把管理VRF直接并入业务VRF。

五、工程检查要点

在实际部署中,建议按以下顺序核查VRF隔离是否成立:

  1. 确认每个租户有独立VRF,接口或子接口绑定正确,且VRF内路由表只包含本租户前缀和允许泄漏的前缀。
  2. 确认RD在全局唯一,避免不同VRF使用相同RD导致BGP路由冲突。
  3. 确认Export RT与对端Import RT精确匹配,不多不少。多一个RT就可能多导入一批不该出现的路由。
  4. 确认路由泄漏方向为单向或按需双向,避免租户间无意互访。
  5. 确认管理VRF独立于业务VRF,管理接口不参与EVPN路由发布,管理路由不泄漏进业务VRF。
常见错误:把管理接口直接放在业务VRF中,或把管理VRF的Export RT误配为业务RT,导致租户可以学到管理网段。排查时应先看show ip route vrf <name>和show bgp l2vpn evpn route-type 5,确认路由来源和RT属性。

总结来说,VRF提供隔离容器,RD保证前缀唯一,RT控制导入导出,路由泄漏实现受控共享,管理VRF与数据VRF分离保障运维通道独立。这五个机制共同构成EVPN多租户网络的路由隔离基础。理解它们之间的分工,才能在配置和排障时快速定位问题出在哪一层。