第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。
七、思考
- 什么是 iBGP 水平分割规则?它为什么会限制 iBGP 的扩展性?
- 100 台路由器的 AS 内,全互联需要多少条 iBGP 连接?使用 RR 后呢?
- RR 的三种角色(RR、Client、Non-Client)分别是什么?
- RR 从 Client 学到的路由会反射给哪些对象?
- 为什么生产环境中通常需要部署至少两台 RR?
下篇预告:第88篇《RR 反射规则与 Cluster_List 防环》——深入理解 RR 的防环机制。