第87篇:IBGP 全互联要求与路由反射器(RR)

关键词

BGP、iBGP、全互联、路由反射器、RR、RR Client、扩展性


一、iBGP 的核心问题

1.1 iBGP 水平分割规则

BGP 有一条关键规则:从 iBGP 对等体学到的路由,不会传递给其他 iBGP 对等体。

AS 100
  RouterA ── iBGP ── RouterB
    │                    │
    └── iBGP ── RouterC ──┘

RouterA 从 RouterB 学到一条 iBGP 路由
  → 不会传给 RouterC(违反水平分割)

后果:RouterC 无法从 RouterA 学到这条路由。

1.2 全互联解决

要解决这个问题,最简单的方案是 iBGP 全互联(Full Mesh)——AS 内所有 BGP 路由器之间都建立 iBGP 连接。

AS 100(3 台路由器)
  RouterA ── iBGP ── RouterB
    │   ╲      iBGP      ╱  │
    │    iBGP ── RouterC ── iBGP
    └─────────────────────────┘

连接数 = 3(3 台设备需要 3 条连接)

1.3 全互联的扩展性问题

路由器数量 所需 iBGP 连接数
3 3
5 10
10 45
50 1,225
100 4,950

公式:N × (N-1) / 2

当网络扩大到 100 台路由器时,接近 5000 条 iBGP 会话——这显然不可行。


二、路由反射器(RR)

2.1 RR 的思路

路由反射器(Route Reflector,RR) 打破 iBGP 水平分割规则,允许 RR 将 iBGP 路由反射给其他 iBGP 对等体。

       AS 100(使用 RR)
         ┌──────┐
         │  RR  │ ← 中心节点
         └──┬───┘
      ┌─────┼─────┐
      │     │     │
    Client Client Client

2.2 角色定义

角色 说明
RR(路由反射器) 负责反射 iBGP 路由的中心节点
Client(客户端) 与 RR 建立 iBGP 的普通路由器
Non-Client(非客户端) 与 RR 建立 iBGP 但不是 Client 的路由器

2.3 RR 的反射规则

RR 基于以下规则决定哪些路由反射给谁:

从 Client 学到的路由:
  → 反射给所有其他 Client 和 Non-Client
从 Non-Client 学到的路由:
  → 反射给所有 Client
  → 不反射给其他 Non-Client

从 eBGP 学到的路由:
  → 反射给所有 Client 和 Non-Client

2.4 配置示例

# RR 配置(RouterA)
bgp 100
 router-id 1.1.1.1
 peer 10.0.12.2 as-number 100
 peer 10.0.12.2 reflect-client      # 指定该邻居为 RR 客户端
 peer 10.0.13.3 as-number 100
 peer 10.0.13.3 reflect-client

# Client 配置(RouterB)——普通 iBGP 配置即可
bgp 100
 router-id 2.2.2.2
 peer 10.0.12.1 as-number 100      # 只与 RR 建立 iBGP

三、RR 的反射示例

Client A ── iBGP ── RR ── iBGP ── Client B
                       │
                    iBGP
                       │
                    Non-Client

Client A 通告路由 172.16.0.0/16:
  RR 从 Client A 收到(Client 来源)
  → 反射给 Client B ✅
  → 反射给 Non-Client ✅

Non-Client 通告路由 10.0.0.0/8:
  RR 从 Non-Client 收到(Non-Client 来源)
  → 反射给 Client A ✅
  → 反射给 Client B ✅
  → 不反射给其他 Non-Client ❌

四、RR 环境的配置要点

4.1 全互联的需求变化

部署方式 连接需求
无 RR N × (N-1) / 2
单 RR N(每个路由器只连 RR)
多 RR 约 2N(每个路由器连两个 RR)

4.2 Client 配置

Client 的配置非常简单——只需要与 RR 建立 iBGP 对等体:

# Client RouterB——只需要一条 iBGP 配置
bgp 100
 peer 10.0.12.1 as-number 100     # 指向 RR

4.3 RR 高可用——使用多个 RR

     RR1 ─── iBGP ─── RR2
      │                │
    iBGP              iBGP
      │                │
      └── Client ──────┘
            (连两个 RR)

Client 配置:
bgp 100
 peer 10.0.12.1 as-number 100     # 连 RR1
 peer 10.0.12.2 as-number 100     # 连 RR2

五、RR 的优势与局限性

5.1 优势

优势 说明
减少配置量 从全互联变为星型拓扑
降低运维成本 新增设备只需要连 RR
提高扩展性 支持数百台路由器

5.2 局限性

局限性 说明
单点故障 RR 故障影响所有 Client(需多 RR)
次优路径风险 RR 可能反射非最优路径
配置复杂度 需要规划 RR 层级和 Cluster

六、总结

方案 连接数(N=50) 配置复杂度 适用场景
全互联 1,225 小规模(N < 10)
单 RR 50 中型网络
多 RR ~100 大型网络

现实选项:中大型 AS 内必须使用 RR。


七、思考

  1. 什么是 iBGP 水平分割规则?它为什么会限制 iBGP 的扩展性?
  2. 100 台路由器的 AS 内,全互联需要多少条 iBGP 连接?使用 RR 后呢?
  3. RR 的三种角色(RR、Client、Non-Client)分别是什么?
  4. RR 从 Client 学到的路由会反射给哪些对象?
  5. 为什么生产环境中通常需要部署至少两台 RR?

下篇预告:第88篇《RR 反射规则与 Cluster_List 防环》——深入理解 RR 的防环机制。