3. 多租户网络模型设计
在 MX 系列平台上承载 EVPN 多租户业务时,真正决定“租户之间是否真正隔离、路由是否可控、后续扩容是否顺畅”的,并不是某一条 EVPN 命令,而是前期完成的多租户网络模型设计。它要回答四个问题:租户之间隔离到什么程度、每个租户的 VRF 如何与 EVPN 实例对应、路由目标(RT)与路由区分符(RD)如何规划、租户命名与资源如何分配。本节围绕这四个问题展开,并给出可直接参考的规划示例。
一、租户隔离需求:先定隔离级别,再定技术手段
多租户隔离不是“隔离或不隔离”的二值选择,而是分层级的。工程上通常按三个维度描述:路由隔离(不同租户能否互相学到路由)、转发隔离(数据面是否共享同一张转发表)、地址隔离(不同租户能否使用重叠 IP 地址段)。
在 EVPN 承载场景中,隔离主要依靠 VRF 实例实现:每个租户的每个三层业务对应一个独立 VRF,其路由表、ARP/ND 表、转发表相互独立。若两个租户使用相同的 10.10.0.0/24 地址段,只要分属不同 VRF,就不会冲突。若业务需要租户间互通(如共享服务区),则通过路由泄漏(route leaking)或外部防火墙受控引入,而不是让两个 VRF 直接合并。
隔离需求还应明确“租户内多站点”的模型:同一租户在不同 PE 上的同一业务,应属于同一个 EVPN 实例,通过 EVPN 的 Type-2/Type-3 路由实现跨站点二层/三层互通;而不同租户即使 VLAN ID 相同,也必须映射到不同 EVPN 实例,避免误互通。
二、VRF 与 EVPN 实例映射:一对一为主,按需多对一
在 Junos 中,EVPN 实例通过 routing-instances 下的 instance-type evpn(或 vrf 配合 EVPN 相关配置)定义,并与 VRF 表关联。推荐的映射原则是:一个租户的一个三层业务 = 一个 VRF = 一个 EVPN 实例,即一对一映射。这样 RD/RT、路由表、接口、策略都归属清晰,排障时定位简单。
当租户业务量很小、且确定不需要独立路由策略时,才考虑多对一(多个小租户共用一个 EVPN 实例,用不同 VLAN 或不同 RT 区分)。但多对一会削弱隔离与可观测性,一般不作为默认方案。
映射关系还需要落到接口层:接入侧通常用 vlan-id 或 vlan-id-list 绑定到 EVPN 实例,核心侧通过 BGP EVPN 地址族发布。下面给出一个典型映射示例(示例参数,非实测):
routing-instances {
TENANT-A-L3VPN {
instance-type vrf;
interface ge-0/0/1.100;
route-distinguisher 65000:1001;
vrf-target target:65000:1001;
vrf-table-label;
}
TENANT-B-L3VPN {
instance-type vrf;
interface ge-0/0/1.200;
route-distinguisher 65000:1002;
vrf-target target:65000:1002;
vrf-table-label;
}
}
其中 vrf-target 同时承担 import 与 export 的 RT 作用;若需要非对称策略,可分别写 vrf-target import 与 vrf-target export。
三、RD 与 RT 规划:全局唯一与按需导入
RD(Route Distinguisher)的作用是让不同 VRF 中相同的 IPv4 前缀在 BGP 中成为不同路由,它只影响路由标识,不影响导入导出。规划原则是:全网唯一、可读、可扩展。常用格式为 ASN:nn 或 IP:nn。建议用“ASN + 租户编号 + 业务编号”编码,例如 65000:1001 表示租户 A 的三层业务 1。
RT(Route Target)决定路由的导入导出关系,是控制租户互通的关键。规划原则是:默认每租户独立 RT,禁止跨租户导入;需要共享服务时,额外增加一个共享 RT,并只对特定 VRF 开放。RT 建议与 RD 使用同一编号体系,便于对照,但二者语义不同,不能混用。
下表给出一个可参考的规划示例(示例数据):
| 租户 | 业务 | VRF/EVPN 实例 | RD | RT(import/export) | 地址段 |
|---|---|---|---|---|---|
| TENANT-A | 办公 | TENANT-A-L3VPN | 65000:1001 | target:65000:1001 | 10.10.0.0/24 |
| TENANT-A | 生产 | TENANT-A-PROD | 65000:1002 | target:65000:1002 | 10.20.0.0/24 |
| TENANT-B | 办公 | TENANT-B-L3VPN | 65000:2001 | target:65000:2001 | 10.10.0.0/24 |
| 共享服务 | DNS | SHARED-SVC | 65000:9000 | target:65000:9000 | 172.16.0.0/24 |
注意 TENANT-A 与 TENANT-B 的办公业务都使用 10.10.0.0/24,但 RD 与 RT 不同,因此互不干扰;共享服务通过额外 RT 被各租户按需导入。
四、租户命名与资源分配策略
命名应做到“看名字知归属”。推荐格式:TENANT-<租户>-<业务>-<类型>,例如 TENANT-A-L3VPN、TENANT-A-PROD。接口描述、路由策略名、防火墙过滤器名沿用同一前缀,便于批量检索与自动化。
资源分配要提前规划三类资源:VLAN ID(接入侧)、RD/RT 编号段(控制面)、地址段(业务面)。建议按租户划分连续编号段,例如租户 A 使用 1000–1999,租户 B 使用 2000–2999,共享服务使用 9000 段。这样新增租户时只需分配新号段,不会与既有配置冲突。
五、模型落地:从需求到配置的对应关系
把上述设计串起来,可以得到一条清晰的映射链:租户隔离需求 → VRF/EVPN 实例 → RD/RT → 接口与 VLAN → BGP EVPN 发布。下图展示了这一映射关系与数据流向,帮助理解各要素之间的对应与约束。
从图中可以看到,租户 A 与租户 B 虽然都使用 10.10.0.0/24,但由于 VRF、RD、RT 均不同,控制面与转发面完全隔离;共享服务则通过独立的 RT 被各租户按需导入,实现“隔离为主、共享受控”的模型。实际部署时,只要保证 RD 全网唯一、RT 按租户独立、命名与编号段可追溯,多租户 EVPN 业务就能在 MX 平台上稳定扩展。