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

关键词:L3VPN、VRF、RD、RT、VPNv4、路由隔离、PE、CE、MP-BGP

一、引言

MPLS L3VPN(Layer 3 Virtual Private Network)是运营商网络中最核心的业务之一。它通过在 MPLS 骨干网上为客户构建逻辑隔离的三层虚拟网络,使客户的站点可以跨越不同的地理位置实现互联互通,同时确保不同客户之间的路由和数据完全隔离。理解 VRF、RD 和 RT 这三个核心概念,是掌握 L3VPN 技术的关键。

二、核心概念

2.1 L3VPN 网络架构

L3VPN 网络由两种关键设备组成:

设备 英文全称 角色
CE Customer Edge 客户边缘设备, unaware of VPN,仅运行常规路由协议
PE Provider Edge 运营商边缘设备,终结 VPN 业务,维护 VRF 和 MP-BGP
P Provider 运营商核心设备,仅转发 MPLS 标签报文,不感知 VPN

L3VPN 网络架构 - 图示

2.2 VRF(Virtual Routing and Forwarding)

VRF 是 PE 上隔离客户路由的独立转发表。每个 VRF 包含: - 独立的 IP 路由表 - 独立的接口绑定 - 独立的转发表

核心问题:不同客户可能使用相同的 IP 地址段(如两个客户都使用 10.1.1.0/24)。VRF 实现了路由隔离,但还需要解决路由全局唯一性问题。

2.3 RD(Route Distinguisher,路由区分器)

RD 是 64 位的唯一标识符,附加到客户路由(IPv4 前缀)之前,形成全局唯一的 VPNv4 地址:

格式 组成 示例
Administrator:Assigned 2字节+4字节 10.1.1.1:100 → 0x0A010101:0x00000064
ASN:Assigned 2字节AS号+4字节 65001:100 → 0x0000FDE9:0x00000064

转换示例: - 客户路由:10.1.1.0/24 - RD:10.1.1.1:100 - VPNv4 路由:10.1.1.1:100:10.1.1.0/24(全局唯一)

两个不同的 VRF 可以为同一客户前缀分配不同 RD,从而在 MP-BGP 中区分: - VRF-A: RD=10.1.1.1:1 → 10.1.1.1:1:10.1.1.0/24 - VRF-B: RD=10.1.1.1:2 → 10.1.1.1:2:10.1.1.0/24

2.4 RT(Route Target,路由目标)

RT 用于控制 VPN 路由的导入和导出。它是 Extended Community 类型的一种属性:

操作 说明
Export RT PE 将 VRF 中的路由携带 RT 通过 MP-BGP 发布
Import RT PE 从 MP-BGP 接收路由,如果路由的 RT 匹配 Import RT,则导入到 VRF

RT 的灵活运用实现了 VPN 的互通控制:

场景 Export RT Import RT 结果
完全隔离 RT-A RT-A 仅VRF-A内部互通
完全互通 RT-Common RT-Common 所有VRF共享路由
Hub & Spoke 见下篇 见下篇 Hub全通, Spoke仅连Hub

三、技术细节

3.1 L3VPN 路由泄露流程

L3VPN 路由泄露流程 - 图示

3.2 VRF 与 RD/RT 的关系

属性 VRF RD RT
作用域 PE 本地 MP-BGP 全局 MP-BGP 全局
功能 路由隔离 路由全局唯一 路由导入/导出控制
数量 每 PE 多个 每 VRF 一个 每 VRF 多个(Import/Export)
类比 独立的"小路由器" 路由的"姓氏" 路由的"通行证"

3.3 VPNv4 地址族

VPNv4 是 MP-BGP 中承载 L3VPN 路由的地址族:

属性 说明
地址长度 128 位(64 位 RD + 32 位 IPv4 前缀 + 32 位掩码)
Next Hop PE 的 LoopBack 地址(4 字节)
标签属性 携带 MPLS 标签(用于数据平面转发)
Extended Community 携带 RT、Color 等扩展属性

四、实战配置/案例分析

4.1 华为 L3VPN 基础配置

# ========== PE1 配置 ==========
<NE40E> system-view
[NE40E] sysname PE1

# 1. 创建 VRF 实例
[PE1] vpn-instance VPN-A
[PE1-vpn-instance-VPN-A] rd 10.1.1.1:100
[PE1-vpn-instance-VPN-A] route-target export 100:100
[PE1-vpn-instance-VPN-A] route-target import 100:100

# 2. 配置 CE 接口并绑定 VRF
[PE1] interface GE 1/0/0
[PE1-GigabitEthernet1/0/0] ip binding vpn-instance VPN-A
[PE1-GigabitEthernet1/0/0] ip address 10.1.1.1 24

# 3. 配置 MP-BGP 发布 VPNv4
[PE1] bgp 65001
[PE1-bgp-65001] router-id 10.1.1.1
[PE1-bgp-65001] peer 10.1.2.1 as-number 65001
[PE1-bgp-65001] peer 10.1.2.1 connect-interface LoopBack 0
[PE1-bgp-65001] address-family vpnv4
[PE1-bgp-65001-vpnv4] peer 10.1.2.1 enable
[PE1-bgp-65001-vpnv4] peer 10.1.2.1 route-policy VPN-EXPORT export

# 4. 引入 VRF 路由到 BGP
[PE1-bgp-65001-vpnv4] import-route direct vpn-instance VPN-A

# ========== PE2 配置 ==========
[NE40E] sysname PE2
[PE2] vpn-instance VPN-A
[PE2-vpn-instance-VPN-A] rd 10.1.2.1:100
[PE2-vpn-instance-VPN-A] route-target export 100:100
[PE2-vpn-instance-VPN-A] route-target import 100:100

[PE2] interface GE 1/0/0
[PE2-GigabitEthernet1/0/0] ip binding vpn-instance VPN-A
[PE2-GigabitEthernet1/0/0] ip address 10.1.2.1 24

[PE2] bgp 65001
[PE2-bgp-65001] router-id 10.1.2.1
[PE2-bgp-65001] peer 10.1.1.1 as-number 65001
[PE2-bgp-65001] address-family vpnv4
[PE2-bgp-65001-vpnv4] peer 10.1.1.1 enable
[PE2-bgp-65001-vpnv4] import-route direct vpn-instance VPN-A

4.2 验证 L3VPN 状态

# 查看 VRF 路由表
<PE1> display ip routing-table vpn-instance VPN-A
  Route Flags: R - relay, D - download to fib
  Routing Tables: VPN-A
  To : 0.0.0.0/0
  Output Interface     NextHop         RouteFlags
  GE1/0/0             10.1.1.2        R

# 查看 VPNv4 BGP 路由
<PE1> display bgp vpnv4 all routing-table
  BGP local router ID : 10.1.1.1
  Status: *> valid, > best
  Network          NextHop          MED    LocPref    Path
  *> 10.1.2.1:100:10.1.2.0/24   10.1.2.1       0        100      i
  # RD=10.1.2.1:100, 前缀=10.1.2.0/24, 来自PE2

# 查看 VPN 标签
<PE1> display mpls vpn-label
  VPN-Label:
    RD: 10.1.2.1:100
    Prefix: 10.1.2.0/24
    Label: 16012
    Peer: 10.1.2.1

4.3 故障排查:VPN 路由未学习

故障场景:PE1 的 VRF 中看不到 PE2 侧 CE 的路由。

# Step 1: 检查 MP-BGP VPNv4 路由
<PE1> display bgp vpnv4 all routing-table
  # 无 VPNv4 路由条目

# Step 2: 检查 BGP 邻居状态
<PE1> display bgp vpnv4 all peer
  Peer: 10.1.2.1, AS: 65001, State: Established
  # BGP Session 正常

# Step 3: 检查 PE2 是否发布了 VPNv4 路由
<PE2> display bgp vpnv4 all routing-table
  # PE2本地也没有VPNv4路由
  # 说明PE2未将VRF路由导入BGP

# Step 4: 检查PE2的BGP配置
<PE2> display current-configuration | include import-route
  # 发现缺少: import-route direct vpn-instance VPN-A

# Step 5: 修正配置
[PE2-bgp-65001-vpnv4] import-route direct vpn-instance VPN-A

# Step 6: 检查 RT 匹配
<PE1> display vpn-instance VPN-A
  Route-target import/add: 100:100
  Route-target export/add: 100:100
<PE2> display vpn-instance VPN-A
  Route-target import/add: 100:100
  Route-target export/add: 100:100
  # RT 匹配, 确认无问题

五、总结

项目 要点
VRF PE 本地路由隔离,每个 VRF 有独立路由表和接口绑定
RD 64位标识符,附加到 IPv4 前缀形成全局唯一的 VPNv4 地址
RT Extended Community 属性,控制 VPN 路由的导入和导出
MP-BGP 承载 VPNv4 路由传播,携带 RD、RT 和 VPN 标签
CE 无感知 CE unaware of VPN,仅运行标准路由协议

思考

  1. 为什么 VRF 需要同时配置 RD 和 RT?如果只配 RD 不配 RT,VPN 路由能否在 PE 之间传播?
  2. RT 的 Import 和 Export 列表是否可以配置多个值?多个 RT 之间的匹配规则是什么(与 OR 关系)?
  3. 如果两个 VRF 使用相同的 RD 但不同的 RT,MP-BGP 中如何处理冲突的 VPNv4 路由?

下篇预告:第164篇:MP-BGP 在 L3VPN 中的角色