第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 路由,携带标签 |
八、思考
- VRF、RD、RT 三者分别解决什么问题?
- VPNv4 地址为什么需要 RD?如果两个 VPN 使用相同 IP 段,没有 RD 会怎样?
- RT 如何控制 VPN 的拓扑结构?举例说明 Full Mesh 和 Hub & Spoke 的 RT 配置差异。
- MPLS L3VPN 中的 CE、PE、P 各承担什么角色?
- 为什么 PE 之间使用 MP-BGP 而不是普通 BGP 来传播 VPN 路由?
下篇预告:第164篇《MP-BGP 在 L3VPN 中的角色》——深入 MP-BGP 的 VPNv4 地址族,理解它如何在 PE 之间传递 VPN 路由和标签。