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

关键词

MP-BGP、VPNv4、地址族、下一跳、标签分配、BGP 扩展属性、路由反射器


一、MP-BGP 为什么是 L3VPN 的核心

1.1 传统 BGP 的局限

普通 BGP(BGP-4)只能传递 IPv4 单播路由,无法解决 L3VPN 的核心需求:

需求 传统 BGP 是否支持 问题
传递 VPNv4(RD+IPv4)地址 BGP 只识别 IPv4 地址
携带 MPLS 标签 BGP 没有标签字段
携带 VPN 属性(RT) BGP 标准属性中无 RT
区分多个地址族 只有一个 IPv4 单播地址族

1.2 MP-BGP 的扩展

MP-BGP(Multiprotocol BGP) 通过 RFC 4760(Multi-Protocol Extensions)扩展了 BGP,使其能够:

  1. 支持多种地址族——通过 AFI/SAFI 字段
  2. 传递 VPNv4 路由——AFI=1, SAFI=128
  3. 携带 MPLS 标签——通过 MP_REACH_NLRI 中的标签
  4. 携带扩展团体属性——RT 是扩展团体属性的一种
BGP Update 报文(MP-BGP for VPNv4):
┌──────────────────────────────────────────────┐
│  MP_REACH_NLRI(0x0E)                       │
│  ├─ AFI=1(IPv4)                            │
│  ├─ SAFI=128(MPLS Labeled VPN)              │
│  ├─ Next Hop(PE 的 Loopback 地址)            │
│  └─ NLRI = [Label: VPN 标签][RD][IPv4 Prefix]│
│                                                │
│  Extended Communities(RT)                    │
│  └─ RT: 100:1                                 │
│                                                │
│  Other BGP Attributes:AS Path, Local Pref... │
└──────────────────────────────────────────────┘

二、VPNv4 地址族

2.1 AFI/SAFI 组合

AFI SAFI 说明
1(IPv4) 1(Unicast) 传统 IPv4 单播
1(IPv4) 128(MPLS VPN) VPNv4(L3VPN 使用)
2(IPv6) 128(MPLS VPN) VPNv6
25(L2VPN) 70(EVPN) EVPN

2.2 华为设备上的 VPNv4 配置

# 在 PE 之间建立 VPNv4 对等体
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                       # 使能 VPNv4 邻居
  peer 2.2.2.2 label-route-capability       # 携带 MPLS 标签
  peer 2.2.2.2 route-reflector-client       # RR 客户端(可选)

2.3 验证 VPNv4 邻居

<PE1> display bgp vpnv4 all peer

 BGP local router ID : 1.1.1.1
 Local AS number : 100
 Total number of peers : 1
 Peers in established state : 1

  Peer            V          AS  MsgRcvd  MsgSent  OutQ  Up/Down  State
  2.2.2.2         4         100      123      145     0 00:12:34 Established

三、MP-BGP 中的标签分配

3.1 标签分配机制

在 L3VPN 中,MP-BGP 为每条 VPNv4 路由分配一个VPN 标签(内层标签)

PE1 生成 VPNv4 路由:

  VPNv4 路由:100:1:10.0.0.0/24
  内层标签:15392(PE1 本地分配的 VPN 标签)
  RT:100:1
  下一跳:1.1.1.1(PE1 的 Loopback)

PE1 通过 MP-BGP Update 发送给 PE2

3.2 双层标签转发

数据包从 CE1 到 CE2:

CE1 → PE1(普通 IP 包)
  │
PE1(Ingress PE):
  │  查 VRF-A 路由 → 下一跳 PE2
  │  查找 PE2 的 VPN 标签 → 15392(内层标签)
  │  查找 PE2 的 LDP 标签 → 300(外层标签)
  │  Push 标签栈:{300(LDP), 15392(VPN)}
  │
P(核心路由器):
  │  只交换外层 LDP 标签
  │  内层 VPN 标签完全透明
  │
PE2(Egress PE):
  │  PHP 弹出外层标签 → 看到内层标签 15392
  │  查标签 → 对应 VRF-A
  │  弹出 VPN 标签 → 恢复 IP 包
  │  查 VRF-A 路由 → 转发到 CE2
  │
CE2(普通 IP 包)

3.3 标签分配 vs LDP

对比 LDP MP-BGP(VPN 标签)
标签用途 外层隧道标签 内层 VPN 标识标签
分发范围 所有 LSR PE 之间
对应 FEC IGP 路由 VPNv4 路由
标签空间 平台/接口标签空间 VRF 标签空间

四、下一跳处理

4.1 下一跳属性

L3VPN 中,MP-BGP 的下一跳属性设置为发布该路由的 PE 的 Loopback 地址

PE1 发布的 VPNv4 路由:
  RD:100:1:10.0.0.0/24
  Next Hop: 1.1.1.1(PE1 Loopback)  ← 不是 CE 的 IP
  Label: 15392

PE2 收到后:
  - 下一跳是 1.1.1.1(PE1)
  - 需要一条到 1.1.1.1 的 LDP LSP
  - LDP LSP 提供外层标签

4.2 为什么下一跳必须是 PE 的 Loopback

原因 1:MPLS 转发需要
  PE2 → PE1 的流量需要走 MPLS LSP
  Loopback 地址是 LSR ID,关联 LDP 标签

原因 2:避免 BGP 路由黑洞
  如果下一跳是 CE 的接口 IP
  P 路由器可能没有到该 IP 的路由
  → 黑洞

原因 3:高可用
  Loopback 地址不受单个接口故障影响
  即使 PE1 的某个接口 Down,Loopback 依然可达

五、路由反射器(RR)在 L3VPN 中的应用

5.1 为什么需要 RR

在全网状 MP-BGP 环境中,N 个 PE 之间需要建立 N(N-1)/2 个 IBGP 会话:

4 个 PE:需要 6 个 IBGP 会话
10 个 PE:需要 45 个 IBGP 会话
50 个 PE:需要 1225 个 IBGP 会话 → 不可扩展!

使用 路由反射器(RR) 解决:

      ┌─────────┐
      │   RR    │
      └────┬────┘
     /  |   |   \
    /   |   |    \
PE1 PE2 PE3 PE4

每个 PE 只与 RR 建立一个 IBGP 会话 RR 负责将路由反射给所有客户端

5.2 RR 配置示例

# RR 配置
bgp 100
 peer 1.1.1.1 as-number 100
 peer 2.2.2.2 as-number 100
 peer 3.3.3.3 as-number 100
 peer 4.4.4.4 as-number 100
 #
 ipv4-family vpnv4
  peer 1.1.1.1 enable
  peer 1.1.1.1 route-reflector-client     # 标记为 RR 客户端
  peer 2.2.2.2 enable
  peer 2.2.2.2 route-reflector-client
  peer 3.3.3.3 enable
  peer 3.3.3.3 route-reflector-client
  peer 4.4.4.4 enable
  peer 4.4.4.4 route-reflector-client

5.3 RR 的防环机制

RR 通过 Originator IDCluster List 属性防环:

         ┌─────────┐
         │  RR(Cluster 1) │
         └────┬────┘
              │
         ┌────┴────┐
         │  PE1    │
         └────┬────┘
              │  Originator ID = PE1
              │
         ┌────┴────┐
         │  RR     │
         │ (Cluster 2) │
         └─────────┘

RR 收到路由后:
  检查 Cluster List 是否包含自己的 Cluster ID
  包含 → 丢弃(防环)
  不包含 → 添加自己的 Cluster ID → 转发

六、MP-BGP 的属性在 L3VPN 中的应用

6.1 标准 BGP 属性

属性 在 L3VPN 中的用途
AS_Path 防环 + 选路
Local Preference VPN 站点路由优先级
MED 多出口选择
Community 路由标记(配合 RT 使用)
Next Hop PE 的 Loopback 地址

6.2 L3VPN 特有的扩展属性

属性 含义 作用
Route Target VPN 导入/导出策略 控制路由分发
Site of Origin 路由起源标识 防环(站点级)
Label MPLS VPN 标签 标识 VPN
Source AS CE 侧 AS 多 AS 场景防环

七、MP-BGP L3VPN 的选路过程

PE2 从两个 PE 收到同一 VPNv4 路由:

         PE1 ────── 10M 链路 ────── PE3
          │                          │
          │  路由: 100:1:10.0.0.0/24│
          │  AS Path: 65001         │
          │  Local Pref: 100        │
          │  MED: 100               │
          │                          │
          │  路由: 100:1:10.0.0.0/24│
          │  AS Path: 65001         │
          │  Local Pref: 200        │  ★ 更高 Local Pref → 选 PE3
          │  MED: 50                │
          │                          │
          └──────────────────────────┘

PE2 选路:
  1. 忽略不可达的下一跳
  2. 比较 Local Preference(越大越优):200 > 100 → 选 PE3
  3. 如果 Local Pref 相同 → 比较 AS Path 长度
  4. 如果仍相同 → 比较 MED(越小越优)

八、总结

知识点 核心要点
MP-BGP 支持多地址族,通过 AFI/SAFI 标识路由类型
VPNv4 SAFI SAFI=128,用于 MPLS L3VPN
VPN 标签 MP-BGP 为每条 VPNv4 路由分配的标签
下一跳 PE 的 Loopback 地址,关联 LDP LSP
双层标签 外层 LDP + 内层 VPN,P 节点只交换外层
RR 路由反射器,减少 IBGP 会话数量
扩展属性 RT、SoO、Label 等,L3VPN 特有属性

九、思考

  1. MP-BGP 与普通 BGP 的核心区别是什么?AFI 和 SAFI 的作用是什么?
  2. VPNv4 地址族对应的 AFI/SAFI 值是多少?
  3. MP-BGP 为什么需要为 VPNv4 路由分配标签?这个标签在转发中起什么作用?
  4. 为什么 MP-BGP 的下一跳要设置为 PE 的 Loopback 地址?
  5. 路由反射器(RR)在 L3VPN 中解决了什么问题?它的防环机制是什么?

下篇预告:第165篇《PE-CE 路由协议选择:静态/OSPF/BGP》——PE 和 CE 之间如何交换路由?各种路由协议的适用场景和优缺点分析。