第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 邻居、路由表

七、思考

  1. RD 和 RT 的核心区别是什么?为什么 EVPN 需要同时使用 RD 和 RT?
  2. 如果一个租户有 3 个 VNI(10001, 10002, 10003),3 台 Leaf 接入,请设计 RD 和 RT 方案。
  3. 在多租户场景中,RT 如何防止租户 A 的 Leaf 收到租户 B 的路由?如果 Leaf 配置了错误的 import RT 会怎样?
  4. 在 Hub-and-Spoke RT 设计中,分支 Leaf 之间为什么不能直接通信?这种设计的应用场景是什么?
  5. 在两个数据中心 DCI 互联场景下,如果 DC1 使用 AS 65001,DC2 使用 AS 65002,RT 如何规划才能让租户 A 的 VNI 10001 在两边互通?

下篇预告:第261篇《VXLAN over SR-MPLS 混合方案》——在已有 MPLS 网络中部署 VXLAN,VXLAN over SR-MPLS 的封装、转发与控制面。