0. 课件来源
IBGP 水平分割保证了 AS 内无环,但也导致路由无法在多个 IBGP 设备间传递。解决这个矛盾有两条路:联邦(Confederation) 和 路由反射器(RR)。RR 是现代互联网骨干网的标准方案。
1. 问题回顾:IBGP 水平分割之困
AS 234 拓扑:
AR1 ──(EBGP)── AR2 ──(IBGP)── AR3 ──(IBGP)── AR4 ──(EBGP)── AR5
AR1 发布的 172.16.1.0/24:
AR1 → AR2:✅ EBGP 收到
AR2 → AR3:✅ IBGP 转发(AR2 直连 AR3)
AR3 → AR4:❌ IBGP 水平分割!从 IBGP 学来的不能再传给其他 IBGP peer!
AR4 → AR5:❌ AR4 根本没学到 172.16.1.0/24IBGP 水平分割 = 从一个 IBGP peer 学到路由(标记为 i),不能再向其他 IBGP peer 发送。
2. BGP 路由的最优条件
BGP 路由表中每条路由有两个关键标记:
| 标记 | 含义 | 必须 |
|---|---|---|
*(valid) | 下一跳可达(路由表中能查表到达) | ✅ |
>(best) | 13 条选路原则中胜出 | ✅ |
<AR4> dis bgp routing-table 172.16.1.0
BGP routing table entry information of 172.16.1.0/24:
From: 10.1.2.2 (2.2.2.2)
Route Duration: 00h12m34s
Relay IP Nexthop: 10.1.24.2
Relay IP Out-Interface: GigabitEthernet0/0/1
Original nexthop: 172.16.12.1 ← 下一跳是 AR1-AR2 互联地址!
AS-path 100, origin igp, MED 0, pref-val 0, valid, external, best, select
# 问题:AR4 的 routing-table 中没有 172.16.12.0/24 → 下一跳不可达 → 无 * → 无 >2.1 next-hop-local
边界路由器对 IBGP peer 做下一跳替换:
AR2:
bgp 234
peer 10.1.24.4 next-hop-local # 发给 AR4 时将下一跳改为自己路由变为 best 后,会执行两个动作:
- 发送给我的所有 peer(除来源 peer 外)
- 提交给路由表(能否放入取决于 BGP preference 与其他协议比较)
3. 解决方案一:联邦(Confederation)
3.1 原理
将一个大的 AS 234,拆分成多个小的联邦子 AS(如 64523、64544)。子 AS 之间运行联邦 EBGP(本质仍是 IBGP,但用 AS-PATH 替代水平分割防环)。
AS 234(联邦 ID)
┌──────────────┼──────────────┐
│ │ │
AS 64523 AS 64544 ……
│ │
AR2 ──AR3── AR4 ──AR5──
(联邦 EBGP) (联邦 EBGP)3.2 配置
# 所有联邦路由器必须配置 confederation id
AR2, AR3, AR4:
bgp 64523 # 或 64544
confederation id 234 # 对外宣称 AS 234
# 对真正的 EBGP peer(AR1/AR5),正常配置
# 对联邦 EBGP peer → 需配置 confederation peer-as
AR3:
bgp 64523
confederation peer-as 64544 # 排除 64544:不发 AS 234,发 64523
peer 10.1.4.4 as-number 64544
peer 10.1.4.4 connect-interface LoopBack0
peer 10.1.4.4 ebgp-max-hop
AR4:
bgp 64544
confederation peer-as 64523 # 排除 64523:不发 AS 234,发 64544
peer 10.1.3.3 as-number 64523
peer 10.1.3.3 connect-interface LoopBack0
peer 10.1.3.3 ebgp-max-hop3.3 联邦 EBGP 的本质
⚠️ 联邦 EBGP ≠ 真正的 EBGP
| 行为 | 联邦 EBGP | 真正 EBGP |
|---|---|---|
| 防环 | AS-PATH(忽略子 AS 号) | AS-PATH |
| 下一跳 | 默认不修改(继承 IBGP 行为) | 默认修改 |
| AS-PATH | 联邦子 AS 号放在 ( ) 中 | 普通 AS-PATH |
联邦 EBGP 本质上是 IBGP,只是用 AS-PATH 代替水平分割来防环。
3.4 联邦优缺点
| 优点 | 缺点 |
|---|---|
| 解决 IBGP 水平分割 | 联邦子 AS 最多只有 2 台路由器,大型网络配置量大 |
| AS-PATH 防环 | 扩展性弱,不是最优方案 |
4. 解决方案二:路由反射器(RR)★ 互联网标准
4.1 核心术语
| 术语 | 含义 |
|---|---|
| RR(Route Reflector) | 路由反射器 = 服务端 |
| RR-Client | 路由反射器客户端 |
| Non-Client | 非客户端(普通 IBGP peer) |
| Cluster | 路由反射簇 = RR + 它的所有 Client 的逻辑集合 |
| Originator ID | 路由的原始通告者 RID(防环) |
| Cluster-List | 路由经过的 Cluster ID 列表(防环) |
💡 一个重要前提
RR 和 RR-Client 之间必须已经建立 IBGP peer 邻居关系。
4.2 反射规则:"非非不能传"
RR 收到路由后的转发规则:
来源 → 可转发给
─────────────────────────────────
从 Client 学来的 → Client、Non-Client、EBGP(都能发)
从 Non-Client 学来的 → Client、EBGP(不能发给 Non-Client)
从 EBGP 学来的 → Client、Non-Client、EBGP(都能发)
记忆口诀:"非非不能传"
→ RR 从 Non-Client 学来的路由,不能传给 Non-Client4.3 配置示例
# AR3 配置为 RR,AR2 和 AR4 为 Client
AR3:
bgp 234
peer 10.1.2.2 reflect-client # AR2 是 RR-Client
peer 10.1.4.4 reflect-client # AR4 是 RR-Client
# AR2 和 AR4 不需要任何特殊配置(它们只是普通的 IBGP peer)验证 AR1 ping AR5:
<AR1> ping -a 172.16.1.1 172.16.5.5
Reply from 172.16.5.5: bytes=56 Sequence=1 ttl=252 time=50 ms ✅4.4 RR 三条防环机制
| 机制 | 说明 |
|---|---|
| Originator ID | RR 反射路由时添加原始通告者 RID;收到含自己 RID 的路由丢弃 |
| Cluster-List | RR 反射路由时追加自己的 Cluster ID;收到含自己 Cluster ID 的路由丢弃 |
| AS-PATH | EBGP 防环依然有效 |
5. 联邦 vs RR 对比
| 对比项 | 联邦 | RR |
|---|---|---|
| 原理 | 将大 AS 拆成子 AS,联邦 EBGP | 打破水平分割,反射路由 |
| 防环 | AS-PATH | Originator ID + Cluster-List |
| 配置量 | 每台设备都要改 AS 号 | 仅在 RR 上配置 Client |
| 扩展性 | 大型网络配置量大 | 扩展性好(互联网标准方案) |
| 架构复杂度 | 改变 AS 结构 | 不改变 AS 结构 |
| 适用场景 | 较复杂网络 | 互联网骨干网首选 |
6. IBGP 组网演进总结
全互联(Full Mesh)
↓ 设备太多,连接数爆炸
部分互联 → 数据黑洞
↓
解决方案演进:
BGP 同步(注入 IGP) → 路由爆炸,已废弃
GRE 隧道 → 手工配置量大
MPLS LSP → 自动化,但需要 MPLS 基础设施
┌─ 联邦 → 扩展性有限
└─ RR ★ 互联网标准方案7. 易混淆点与考前速记
| 对比项 | 结论 |
|---|---|
| IBGP 水平分割 | IBGP 学到的不传其他 IBGP(防环) |
| 联邦本质 | 拆 AS,联邦 EBGP 本质是 IBGP,不修改下一跳 |
| 联邦配置 | confederation id + confederation peer-as |
| RR 反射规则 | "非非不能传":Non-Client → Non-Client 不能发 |
| RR 配置 | 仅在 RR 上 peer x.x.x.x reflect-client |
| RR 防环 | Originator ID + Cluster-List + AS-PATH |
| next-hop-local | 边界路由器替换下一跳为自己 |
| best 路由动作 | 发给所有 peer + 提交路由表 |
| *(valid) | 下一跳可达(路由表可达) |
| >(best) | 13 条选路原则中最优 |
考前速记 7 条:
IBGP 水平分割 → 全互联 / 联邦 / RR联邦:confederation id + confederation peer-as,本质是 IBGP联邦 EBGP 不改下一跳,AS-PATH 中联邦子 AS 在 ( ) 中RR 反射规则"非非不能传"(Non-Client → Non-Client 禁止)RR 防环三件套:Originator ID + Cluster-List + AS-PATHRR 配置只在 RR 上:peer x.x.x.x reflect-client互联网首选 RR,配置量最小、扩展性最好
🤖 AI 伴学
让 AI 帮你理解 IBGP 水平分割和 RR 的设计:
"请把 IBGP 水平分割比喻成'军队的保密条例':从一个 IBGP peer 学到的路由(军事机密),绝对不能传给其他 IBGP peer(防止泄密造成混乱=环路)。但这导致信息无法在组织内流通——所以有两种解决方案:联邦(Confederation)是'把一个大军区拆成几个小军区',小军区之间可以互相传情报(联邦 EBGP),但对外统一使用大军区编号(Confederation ID)。路由反射器(RR)更聪明——设立一个'情报中心(RR)'和若干'情报站点(Client)':情报中心可以自由分发情报给所有站点(打破水平分割),但附加了'情报来源编号(Originator ID)'和'传递路径记录(Cluster-List)',如果发现情报绕回来了(看到自己的编号),就丢掉——实现了无环。"
