第260篇:BGP EVPN 的 RT/RD 规划
关键词
Route Distinguisher、Route Target、RD 规划、RT 规划、多租户隔离、EVPN 路由过滤、BGP 策略
一、RT/RD 的基本概念
1.1 RD(Route Distinguisher)
RD 用于区分不同 VNI/租户的路由,确保路由在 BGP 中的唯一性:
RD 的作用:
没有 RD 时的问题:
Leaf1 发布:192.168.1.10/32(VNI 10001,租户A)
Leaf1 发布:192.168.1.10/32(VNI 20001,租户B)
BGP 中两条路由的 NLRI 相同 → 冲突!
因为不同的 VNI 可能使用重叠的 IP 地址
加上 RD 后:
Leaf1 发布:10.1.1.1:10001:192.168.1.10/32(租户A)
Leaf1 发布:10.1.1.1:20001:192.168.1.10/32(租户B)
RD 使前缀不同 → 两条路由可共存
1.2 RT(Route Target)
RT 用于控制路由的收发,实现多租户隔离:
RT 的工作机制:
Export RT:发布路由时打上标签 Import RT:接收路由时匹配标签
┌─────────────────────────────────────┐ │ Leaf1(租户A) │ │ Export RT: 10001:10001 │ │ 发布路由时打上 RT 标签 │ └──────────┬──────────────────────────┘ │ ▼ ┌─────────────────────────────────────┐ │ Spine(RR) │ │ 反射路由给所有邻居 │ │ RT 标签保持不动 │ └──────────┬──────────────────────────┘ │ | | | | | --- | --- | --- | | ▼ ▼ | | | | ┌────────┐ ┌────────┐ | | | | Leaf2 Import 10001 ✓接收 | | Leaf3 Import 20001 ✗丢弃 |
1.3 RD 与 RT 的区别
RD RT
───────────────────────────────────────
路由标识(唯一性) 路由控制(过滤)
本地有意义 全局策略
每个 VNI/租户不同 控制谁能收到
不影响路由传播 按需收/发
不随路由变化 可 import/export 修改
只附加在 VPN 路由上 路由策略的核心工具
简单理解:
RD = 身份证号(唯一的身份标识)
RT = 门禁卡(控制谁能进入哪个房间)
二、RD 规划策略
2.1 RD 格式
RD 有两种格式(6 字节):
格式 1:IP:Number(推荐)
2 字节 Type + 4 字节 IP + 2 字节 Number
例子:10.1.1.1:10001
优点:IP 天然唯一,每 Leaf 不同
格式 2:ASN:Number
2 字节 Type + 4 字节 ASN + 2 字节 Number
例子:65001:10001
优点:ASN 可标识站点
问题:同一站点(相同 AS)不同 Leaf 无法区分
2.2 RD 规划方案
方案 A:每 VNI 每 Leaf 不同的 RD(推荐)
| Leaf | VNI | RD |
|---|---|---|
| Leaf1 Leaf1 Leaf1 | 10001 20001 30001 | 10.1.1.1:10001 10.1.1.1:20001 10.1.1.1:30001 |
| Leaf2 Leaf2 Leaf2 | 10001 20001 30001 | 10.1.1.2:10001 10.1.1.2:20001 10.1.1.2:30001 |
| Leaf3 Leaf3 | 10001 20001 | 10.1.1.3:10001 10.1.1.3:20001 |
规则:RD = VTEP_Loopback_IP : VNI 优点:天然唯一,易于排错
方案 B:每 VNI 全局统一的 RD
| Leaf | VNI | RD |
|---|---|---|
| All All | 10001 20001 | 10.0.0.1:10001 10.0.0.1:20001 |
问题:所有 Leaf 发布相同 RD 的路由 BGP 中路由冲突(相同 RD + Prefix) ← 不推荐
2.3 RD 自动化配置
# 华为 EVPN RD 自动化
evpn
router-id 10.1.1.1 # 本 Leaf 的 Router-ID
#
vpn-instance Tenant-A
route-distinguisher 10.1.1.1:10001 # IP:VNI 格式
#
#
# 或者使用自动 RD(基于 Router-ID)
evpn
router-id auto # 自动选择 Router-ID
#
vpn-instance Tenant-A
route-distinguisher auto # 自动生成 RD
#
三、RT 规划策略
3.1 RT 格式
RT 与 RD 格式相同(6 字节):
IP:Number:
import route-target 10.0.0.1:10001
export route-target 10.0.0.1:10001
ASN:Number:
import route-target 65001:10001
export route-target 65001:10001
推荐:使用 ASN:Number,因为 ASN 代表管理域
3.2 单租户 RT 规划
最简单的单租户场景:
RT = VNI 值
VNI 10001:
export route-target 10001:10001
import route-target 10001:10001
VNI 20001:
export route-target 20001:20001
import route-target 20001:20001
所有需要接收 VNI 10001 路由的 Leaf:
import route-target 10001:10001
配置示例:
ip vpn-instance Tenant-A
route-distinguisher 10.1.1.1:10001
vpn-target 10001:10001 export-extcommunity
vpn-target 10001:10001 import-extcommunity
vxlan vni 10001
3.3 多租户 RT 规划
多租户场景:每个租户有多个 VNI
租户 A:VNI 10001(生产),VNI 10002(开发) 租户 B:VNI 20001(生产),VNI 20002(开发)
方案:每个租户分配一个 RT 范围
| 租户/用途 | VNI | RT |
|---|---|---|
| 租户 A 生产 租户 A 开发 租户 B 生产 租户 B 开发 L3 VNI(共用) | 10001 10002 20001 20002 30000 | 10001:10001 10001:10002 20001:20001 20001:20002 30000:30000 |
租户 A 的 Leaf 配置: ip vpn-instance Tenant-A route-distinguisher 10.1.1.1:10001 vpn-target 10001:10001 export-extcommunity vpn-target 10001:10001 import-extcommunity vpn-target 10001:10002 import-extcommunity vpn-target 30000:30000 import-extcommunity vxlan vni 30000 # L3 VNI
3.4 多 RT 场景(Hub-and-Spoke)
Hub-and-Spoke RT 设计:
中心服务(出口 Leaf):需要接收所有 RT 分支 Leaf:只接收自己的 RT
| Leaf 角色 | Export RT | Import RT |
|---|---|---|
| 出口 Leaf (Hub) | 10000:10000 | 10001:10001 10002:10002 10003:10003 |
| Leaf1 (Spoke) | 10001:10001 | 10000:10000 (只收 Hub 路由) |
| Leaf2 (Spoke) | 10002:10002 | 10000:10000 |
效果: Leaf1 发布路由 → 出口 Leaf 收到(import 10001:10001) Leaf2 发布路由 → 出口 Leaf 收到(import 10002:10002) Leaf1 → Leaf2 不通(Leaf1 的 import 不包含 10002:10002) 所有流量必须经过出口 Leaf
适用场景:安全隔离、审计需求
四、RT/RD 规划原则
4.1 编码规则
推荐编码方案:
RT = ASN : VNI
ASN:企业 AS 号(私有 65000-65535) VNI:VXLAN 网络标识符
RD = VTEP_IP : VNI
VTEP_IP:Leaf 的 Loopback 地址 VNI:VXLAN 网络标识符
编码示例:
数据中心 A(AS 65001): | 租户/VNI | RD | RT | | --- | --- | --- | | 租户A VNI 10001 租户A VNI 10002 租户B VNI 20001 L3 VNI 30000 | 10.1.1.1:10001 10.1.1.1:10002 10.1.1.1:20001 10.1.1.1:30000 | 65001:10001 65001:10002 65001:20001 65001:30000 |
4.2 大规模场景的 RT 聚合
场景:100 个租户,每个租户 5 个 VNI
不聚合:500 条 import RT 配置(每 Leaf 500 条!)
聚合方案:使用 RT 通配符
# 华为 RT 通配符(隐含匹配)
ip vpn-instance Tenant-All
vpn-target 65001:10000-65001:20000 import-extcommunity
效果:自动匹配 RT 在 10000-20000 之间的所有路由
或使用 RT 过滤:
route-policy RT-FILTER permit node 10
if-match extcommunity rt-filter 65001:1*
匹配所有以 65001:1 开头的 RT
4.3 DCI 场景的 RT 处理
跨数据中心 RT 规划:
DC1(AS 65001) DC2(AS 65002)
────────────────────────────────────────────
租户 A VNI 10001 租户 A VNI 10001
RT: 65001:10001 RT: 65002:10001
问题:RT 不同 → DC1 Leaf 收不到 DC2 的路由
解决方案:双 RT(跨 DC 互相导入)
DC1 出口 Leaf:
export route-target 65001:10001
import route-target 65002:10001 ← 导入 DC2 路由
DC2 出口 Leaf:
export route-target 65002:10001
import route-target 65001:10001 ← 导入 DC1 路由
或者统一 RT:
两边都使用 65000:10001(统一的跨 DC RT)
但需要注意 RT 冲突风险
五、常见问题与排错
5.1 RT/RD 排错命令
# 查看 VPN 实例
display ip vpn-instance Tenant-A
VPN-Instance Name: Tenant-A
Route Distinguisher: 10.1.1.1:10001
VXLAN VNI: 10001
Export VPN Targets: 10001:10001
Import VPN Targets: 10001:10001
...
# 查看 EVPN 路由
display bgp evpn all routing-table
Route Distinguisher: 10.1.1.1:10001
Network Nexthop VNI RT
[2][0][48][...] 10.1.1.1 10001 10001:10001
[2][0][48][...] 10.1.1.2 10001 10001:10001
# 查看 RT 过滤
display bgp evpn routing-table rt-mismatch
类型:Import RT 不匹配的路由(应被丢弃)
如果路由显示在此,说明 Import RT 配置有问题
5.2 常见问题
问题 1:跨 Leaf 不能通信
现象:VM A(Leaf1)ping VM B(Leaf2)不通
排查:
1. display ip routing-table vpn-instance Tenant-A
Leaf2 下的 VM B 路由是否存在?
2. 检查 RT 配置:
Leaf1 的 import RT 是否包含 Leaf2 的 export RT?
3. 检查 BGP EVPN 邻居状态:
display bgp evpn peer
问题 2:路由表为空
现象:Leaf 上看不到任何 EVPN 路由
原因:
1. BGP EVPN 地址族未启用
2. RT 配置错误(import RT 不包含任何 export RT)
3. SPINE(RR)未配置 reflect-client
问题 3:路由重复/冲突
现象:BGP 日志中大量路由冲突
原因:
RD 重复(不同 Leaf 使用相同 RD)
解决方案:使用 Leaf IP:VNI 格式确保唯一
六、总结
| 知识点 | 核心要点 |
|---|---|
| RD 作用 | 路由唯一性标识,区分同名不同 VNI 的路由 |
| RT 作用 | 路由收/发控制,实现多租户隔离 |
| RD 格式 | IP:Number(推荐)或 ASN:Number |
| RT 格式 | ASN:VNI 推荐 |
| RD 规划 | VTEP_IP:VNI,每 Leaf 每 VNI 不同 |
| RT 规划 | ASN:VNI,按需 import/export |
| 多租户 | 不同租户用不同 RT,互不可见 |
| Hub-Spoke | 特殊 RT 设计,中心收所有,分支只收中心 |
| DCI 场景 | 跨 DC 互相 import 对方 RT |
| 排错 | 检查 VPN 实例 RT、BGP 邻居、路由表 |
七、思考
- RD 和 RT 的核心区别是什么?为什么 EVPN 需要同时使用 RD 和 RT?
- 如果一个租户有 3 个 VNI(10001, 10002, 10003),3 台 Leaf 接入,请设计 RD 和 RT 方案。
- 在多租户场景中,RT 如何防止租户 A 的 Leaf 收到租户 B 的路由?如果 Leaf 配置了错误的 import RT 会怎样?
- 在 Hub-and-Spoke RT 设计中,分支 Leaf 之间为什么不能直接通信?这种设计的应用场景是什么?
- 在两个数据中心 DCI 互联场景下,如果 DC1 使用 AS 65001,DC2 使用 AS 65002,RT 如何规划才能让租户 A 的 VNI 10001 在两边互通?
下篇预告:第261篇《VXLAN over SR-MPLS 混合方案》——在已有 MPLS 网络中部署 VXLAN,VXLAN over SR-MPLS 的封装、转发与控制面。