第163篇:MPLS L3VPN 基础——VRF、RD、RT

关键词

MPLS L3VPN、VRF、RD(Route Distinguisher)、RT(Route Target)、PE、CE、P、VPNv4 路由


一、什么是 MPLS L3VPN?

1.1 业务需求

假设一个运营商为多家企业客户提供网络服务:

       ┌─────────────┐
       │  运营商骨干  │
       │  MPLS 网络  │
       └─────────────┘
      /       |        \
     /        |         \
企业A 企业B 企业C

需求: 1. 路由隔离——企业 A 不能看到企业 B 的路由 2. IP 地址可重叠——不同企业可以用相同的私有 IP 段(如 10.0.0.0/8) 3. 跨站点连通——同一企业的多个站点可以互通

MPLS L3VPN 就是为满足这些需求而设计的解决方案。

1.2 L3VPN 的架构

                MPLS 骨干网
CE1 ──── PE1 ──── P ──── PE2 ──── CE2
(企业A │ │ (企业A
站点1) │ (VRF-A) (VRF-A) │ 站点2)
└─────────────────────────┘

关键角色:

角色 全称 位置 职责
CE Customer Edge 客户侧 连接运营商,运行标准路由协议
PE Provider Edge 运营商边缘 处理 VPN 路由,维护 VRF
P Provider 运营商核心 纯 MPLS 转发,不感知 VPN

二、VRF(Virtual Routing and Forwarding)

2.1 什么是 VRF

VRF 是 PE 上为每个 VPN 客户维护的独立路由表和转发表

PE1 的路由体系:

              ┌─────────────────────────┐
              │  全局路由表(Global RIB) │
              │  - 运营商内部路由         │
              │  - MPLS 骨干路由         │
              └─────────────────────────┘
                        │
                        │
VRF-A RD: 100:1 10.0.0.0/8→CE1 10.1.0.0/16→PE2 VRF-B RD: 100:2 172.16.0.0/12→CE ... VRF-C RD: 100:3 192.168.0.0/16 ...

每个 VRF 内: - 可以和其他 VRF 使用相同的 IP 地址段(地址重叠) - 有自己的独立路由表、转发表、接口绑定 - 流量完全隔离

2.2 VRF 的绑定

# 华为设备创建 VRF
ip vpn-instance VRF-A
 route-distinguisher 100:1                # 配置 RD
 vpn-target 1:1 export-extcommunity      # 导出 RT
 vpn-target 1:1 import-extcommunity      # 导入 RT
!
# 将接口绑定到 VRF
interface GigabitEthernet0/0/0.100        # 子接口连接 CE1
 ip binding vpn-instance VRF-A            # 绑定到 VRF-A
 ip address 10.1.1.1 255.255.255.252
!
interface GigabitEthernet0/0/1.100
 ip binding vpn-instance VRF-A
 ip address 10.1.2.1 255.255.255.252

2.3 VRF 的隔离效果

# 查看 VRF 路由表
<PE1> display ip routing-table vpn-instance VRF-A

Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Table : VRF-A
         Destinations : 3        Routes : 3

Destination/Mask    Proto   Pre  Cost      NextHop         Interface
      10.0.0.0/24   BGP     255  0         2.2.2.2         Tunnel1
      10.0.1.0/30   Direct  0    0         10.1.1.1        GE0/0/0.100
      10.0.1.1/32   Direct  0    0         127.0.0.1       InLoopBack0

# VRF-A 中看不到 VRF-B 的任何路由
# VRF-A 中的 10.0.0.0/24 与全局路由表的 10.0.0.0/24 不会冲突

三、RD(Route Distinguisher)

3.1 为什么需要 RD

问题:不同 VPN 客户可能使用重叠的 IP 地址(如都是 10.0.0.0/24)。

VPN-A 的路由:10.0.0.0/24
VPN-B 的路由:10.0.0.0/24

BGP 无法区分它们——传统的 BGP 路由表中目的地是唯一键!

RD 的解决方案:给每个 VPN 路由添加一个 RD 前缀,使其在 BGP 中成为全局唯一的 VPNv4 地址

3.2 VPNv4 地址

VPNv4 地址 = RD(8 字节)+ IPv4 前缀(4 字节)

示例:
  VPN-A 的 10.0.0.0/24:
    100:1:10.0.0.0/24  ← IPv4 地址前加上 RD

  VPN-B 的 10.0.0.0/24:
    100:2:10.0.0.0/24  ← 不同的 RD,在 BGP 中被视为不同的路由

3.3 RD 的格式

格式 说明 示例
Type 0:2字节:4字节 ASN:自编号 100:1(AS 100,编号 1)
Type 1:4字节:2字节 IP 地址:编号 10.1.1.1:1(Loopback:编号)
Type 2:4字节:2字节 4 字节 ASN:编号 65536:1(大 ASN)
# 配置 RD
ip vpn-instance VRF-A
 route-distinguisher 100:1              # Type 0 格式
!
ip vpn-instance VRF-B
 route-distinguisher 10.1.1.1:2         # Type 1 格式

四、RT(Route Target)

4.1 RT 的作用

RT 控制 VPN 路由的导入/导出策略,决定: - 哪些路由可以从 VRF 中导出(发到 MP-BGP) - 哪些路由可以导入到哪些 VRF 中

RT 是构建 VPN 拓扑的关键工具。

4.2 RT 的工作原理

    PE1                       PE2
VRF-A RT in: 100:1 RT out: 100:1 VRF-A RT in: 100:1 RT out: 100:1
│ │
│ export RT 100:1 │ export RT 100:1
▼ ▼
┌─────────────────────────────────────┐
│ MP-BGP 路由更新 │
│ 路由: 100:1:10.0.0.0/24 │
│ RT: 100:1 │
│ 下一跳: PE1 │
└─────────────────────────────────────┘

PE2 收到路由后: 检查 RT = 100:1 → 匹配 VRF-A 的 import RT → 导入 VRF-A

4.3 RT 控制 VPN 拓扑

通过 RT 的设计,可以实现各种 VPN 拓扑:

全网状(Full Mesh)VPN:

所有站点:export RT = 100:1, import RT = 100:1
结果:每个站点可以到达所有其他站点

Hub & Spoke VPN:

Spoke 站点:
  export RT = 100:1(发送给 Hub)
  import RT = 100:2(只能从 Hub 学习)

Hub 站点:
  export RT = 100:2(发送给所有 Spoke)
  import RT = 100:1(学习所有 Spoke 的路由)

结果:Spoke 之间不能直接通信,必须经过 Hub

重叠 VPN(Extranet):

企业 A 的 VRF:export RT = A:1, import RT = A:1 B:1
企业 B 的 VRF:export RT = B:1, import RT = B:1 A:1

结果:A 和 B 可以互相访问,同时各自内部依然隔离

五、VRF、RD、RT 的关系

概念 作用范围 核心功能 类比
VRF PE 本地 路由隔离 一个独立的"路由器"
RD MP-BGP 全局 地址唯一性 名字空间前缀
RT VPN 拓扑 路由分发控制 标签(Tag)
三者的关系:

VRF(隔离空间)
  │
  ├─ 内部的路由通过 RD 变成 VPNv4 地址(唯一标识)
  │
  ├─ 通过 RT 控制路由的导入/导出(构建拓扑)
  │
  └─ MP-BGP 跨 PE 传播 VPNv4 路由

没有 VRF  → 无法隔离
没有 RD   → 地址重叠导致冲突
没有 RT   → 无法控制路由流向

六、配置示例:基本 L3VPN

6.1 PE1 配置

# 创建 VRF
ip vpn-instance VRF-CustomerA
 route-distinguisher 100:1
 vpn-target 1:1 export-extcommunity
 vpn-target 1:1 import-extcommunity
!
# 连接 CE 的接口
interface GigabitEthernet0/0/0.100
 ip binding vpn-instance VRF-CustomerA
 ip address 192.168.1.1 255.255.255.252
!
# 与 CE 建立 BGP 邻居
bgp 100
 ipv4-family vpn-instance VRF-CustomerA
  peer 192.168.1.2 as-number 65001          # CE 侧 AS
!
# 与对端 PE 建立 MP-BGP 邻居
bgp 100
 peer 2.2.2.2 as-number 100
 peer 2.2.2.2 connect-interface LoopBack0
 ipv4-family vpnv4                          # VPNv4 地址族
  peer 2.2.2.2 enable
  peer 2.2.2.2 label-route-capability       # 启用标签能力

6.2 CE 配置

# CE1(企业客户)
interface GigabitEthernet0/0/0
 ip address 192.168.1.2 255.255.255.252
!
bgp 65001
 peer 192.168.1.1 as-number 100
 network 10.0.0.0 255.255.255.0

6.3 验证

# 查看 VRF 导入的 VPN 路由
<PE1> display ip routing-table vpn-instance VRF-CustomerA

# 查看 VPNv4 路由
<PE1> display bgp vpnv4 all routing-table

# 查看跨 PE 的 VPN 标签
<PE1> display mpls lsp include 100:1:10.0.0.0/24

七、总结

知识点 核心要点
VRF PE 上为每个 VPN 客户维护的独立路由表
RD 8 字节前缀,使 IPv4 地址在 MP-BGP 中全局唯一
RT 控制 VPN 路由的导入/导出,构建 VPN 拓扑
VPNv4 地址 RD + IPv4 前缀,在 MP-BGP 中传播
CE-PE 路由 可以是静态、OSPF、BGP 等
PE-PE 路由 MP-BGP 传播 VPNv4 路由,携带标签

八、思考

  1. VRF、RD、RT 三者分别解决什么问题?
  2. VPNv4 地址为什么需要 RD?如果两个 VPN 使用相同 IP 段,没有 RD 会怎样?
  3. RT 如何控制 VPN 的拓扑结构?举例说明 Full Mesh 和 Hub & Spoke 的 RT 配置差异。
  4. MPLS L3VPN 中的 CE、PE、P 各承担什么角色?
  5. 为什么 PE 之间使用 MP-BGP 而不是普通 BGP 来传播 VPN 路由?

下篇预告:第164篇《MP-BGP 在 L3VPN 中的角色》——深入 MP-BGP 的 VPNv4 地址族,理解它如何在 PE 之间传递 VPN 路由和标签。