关键词:BGP、联邦、Confederation、子AS、iBGP扩展、联邦eBGP、联邦iBGP、AS_PATH

第89篇:联邦(Confederation)解决 IBGP 扩展问题

一、引言

在前两篇中,我们深入学习了路由反射器(RR)如何解决 iBGP 全互联问题。RR 是目前最主流的 iBGP 扩展方案,但在 RR 出现之前,联邦(Confederation)是解决 iBGP 扩展问题的标准方案。

联邦将一个大型 AS 划分为多个子 AS(Sub-AS),子 AS 之间运行特殊的"联邦 eBGP"(Confederation eBGP),子 AS 内部运行标准的 iBGP。虽然现代网络中 RR 更为普遍,但联邦仍然在某些特定场景下具有独特的优势——特别是运营商合并后的过渡期。

理解联邦的原理和配置,对于全面掌握 BGP 扩展技术仍然必要。

二、核心概念

2.1 联邦的基本架构

联邦将一个大型 AS 逻辑划分为多个子 AS,但对外仍然表现为一个单一的 AS:

联邦的基本架构 - 图示

联邦的组成:

组件 说明
Confederation AS 对外的公有 AS 号(如 65000)
Sub-AS 内部的私有 AS 号(如 65001、65002),仅在 Confederation 内部有效
Confederation eBGP 子 AS 之间的特殊 eBGP 会话(Confed-eBGP)
Confederation iBGP 子 AS 内部的标准 iBGP 会话

2.2 联邦与 RR 的对比

特性 联邦(Confederation) 路由反射器(RR)
实现方式 将AS划分为多个Sub-AS,Sub-AS间运行Confed-eBGP 在现有AS内引入RR反射路由
AS_PATH 影响 Sub-AS号以序列形式加入AS_PATH(方括号内),离开Confederation时移除 不影响AS_PATH,仅添加Originator_ID和Cluster_List
配置复杂度 较高(需要重新规划AS结构) 较低(在现有AS内增加RR角色)
部署灵活性 需要重新规划AS结构 在现有AS内灵活部署
对外影响 Sub-AS号可能泄露到外部(配置错误时) 无外部影响
iBGP传递规则 Confed-eBGP学到的路由可传给Confed-iBGP(打破水平分割) RR反射机制打破水平分割
适用场景 合并多个AS后的过渡期、超大AS分层管理 通用场景,现代主流方案

2.3 联邦 eBGP 与标准 eBGP 的区别

特性 标准 eBGP 联邦 eBGP(Confed-eBGP)
TTL 默认值 1 1(通常)
AS_PATH 处理 添加本 AS 号到 AS_PATH 添加 Sub-AS 号到 AS_PATH 的 Sub-AS 序列(方括号)中
Next_Hop 修改为本地 eBGP 接口 IP 修改为本地 IP
路由传递 正常 eBGP 传递 Confederation iBGP 学到的路由可传递给 Confederation eBGP Peer
环路检测 检查 AS_PATH 中的 AS 号 检查 AS_PATH 中的 Sub-AS 号
外部可见性 AS 号对外可见 Sub-AS 号在离开 Confederation 时被移除

关键区别:Confederation eBGP 学到的路由可以传递给 Confederation iBGP Peer,这打破了标准 iBGP 的水平分割规则。这也是联邦能够解决 iBGP 全互联问题的根本原因。

三、技术细节

3.1 联邦中的 AS_PATH 处理

联邦 eBGP 在 AS_PATH 中使用特殊的序列格式(AS_SEQUENCE with Sub-AS)表示 Sub-AS:

联邦内部视角:
AS_PATH: 300 [65001 65002]
          ↑     ↑ Sub-AS序列(方括号)
     外部AS号

联邦外部视角:
AS_PATH: 300 65000
          ↑     ↑ Confederation的公有AS号
     外部AS号

关键规则:

  1. Sub-AS 号在 AS_PATH 中用方括号 [] 或专门的 AS_SEQUENCE 编码表示
  2. 当路由离开 Confederation(传递给外部 eBGP Peer)时,Sub-AS 序列从 AS_PATH 中移除,替换为 Confederation 的公有 AS 号
  3. 外部 AS 看到的 AS_PATH 只包含 Confederation 的公有 AS 号,对内部 Sub-AS 划分不可见

联邦中的 AS_PATH 处理 - 图示

3.2 联邦的路由传递规则

来源 传递给 Confederation iBGP 传递给 Confederation eBGP 传递给外部 eBGP
标准 eBGP ✓ ✓ ✓
Confederation iBGP ✗(水平分割仍然生效) ✓ ✓
Confederation eBGP ✓(打破水平分割) ✓ ✓

关键区别:Confederation eBGP 学到的路由可以传递给 Confederation iBGP Peer,这打破了标准 iBGP 的水平分割规则。因此,在联邦架构中: - 每个 Sub-AS 内部的 iBGP 仍然需要全互联或 RR - Sub-AS 之间通过 Confederation eBGP 传递路由 - 跨 Sub-AS 的路由传递不受 iBGP 水平分割限制

3.3 联邦的配置要素

配置项 说明 命令示例
Confederation Identifier Confederation 的公有 AS 号 confederation identifier 65000
Confederation Member AS 子 AS 号列表 confederation member-as 65001 65002
Peer AS Number 子 AS 内的 Peer 使用子 AS 号 peer x.x.x.x as-number 65001

四、实战配置/案例分析

4.1 联邦完整配置

# ===== Sub-AS 65001 中的路由器 R1 配置 =====
sysname R1
interface GigabitEthernet 0/0/1
 ip address 10.1.1.1 30
interface LoopBack 0
 ip address 1.1.1.1 32

bgp 65001                # 本地Sub-AS号
 router-id 1.1.1.1
 confederation identifier 65000    # Confederation公有AS号
 confederation member-as 65001 65002  # 所有子AS列表

 # 子AS内的iBGP Peer(全互联)
 peer 2.2.2.2 as-number 65001
 peer 2.2.2.2 connect-interface LoopBack 0
 peer 2.2.2.2 description iBGP-in-Sub-AS-65001

 peer 3.3.3.3 as-number 65001
 peer 3.3.3.3 connect-interface LoopBack 0
 peer 3.3.3.3 description iBGP-in-Sub-AS-65001

 # 与Sub-AS 65002的Confed-eBGP Peer
 peer 4.4.4.4 as-number 65002
 peer 4.4.4.4 connect-interface GigabitEthernet 0/0/1
 peer 4.4.4.4 description Confed-eBGP-to-Sub-AS-65002

 # 外部eBGP Peer
 peer 10.10.10.10 as-number 300
 peer 10.10.10.10 connect-interface GigabitEthernet 0/0/2
 peer 10.10.10.10 description eBGP-to-AS-300

 # 宣告路由
 network 10.1.1.0 24

# ===== Sub-AS 65002 中的路由器 R4 配置 =====
sysname R4
interface GigabitEthernet 0/0/1
 ip address 10.1.1.2 30
interface LoopBack 0
 ip address 4.4.4.4 32

bgp 65002
 router-id 4.4.4.4
 confederation identifier 65000
 confederation member-as 65001 65002

 # 子AS内的iBGP Peer
 peer 5.5.5.5 as-number 65002
 peer 5.5.5.5 connect-interface LoopBack 0

 # 与Sub-AS 65001的Confed-eBGP Peer
 peer 3.3.3.3 as-number 65001
 peer 3.3.3.3 connect-interface GigabitEthernet 0/0/1

# ===== 查看联邦信息 =====
display bgp confederation
display bgp routing-table verbose
  AS_PATH: 300 [65001]     # 内部视角,含Sub-AS
  # 外部AS看到的: AS_PATH: 300 65000

4.2 案例分析:AS 合并后的联邦部署

场景:两家运营商合并,各自拥有独立的 AS(AS 100 和 AS 200)。合并后需要对内统一为一个 AS,但对外仍需要一定的过渡期。同时,两个原 AS 内部已经有大量的 BGP 配置和路由策略,短期内无法全部统一。

方案:使用联邦将 AS 100 和 AS 200 合并为一个 Confederation。

案例分析:AS 合并后的联邦部署 - 图示

外部视角: - 上游 ISP(AS 500、AS 600)看到的 AS_PATH 中只包含 AS 65000 - 内部的 Sub-AS 划分(100 和 200)对外部完全不可见 - 上游 ISP 认为 Confederation 就是一个普通的 AS

部署步骤: 1. 在所有路由器上配置 confederation identifier 65000 2. 原 AS 100 的路由器配置 BGP 进程号为 100,confederation member-as 100 200 3. 原 AS 200 的路由器配置 BGP 进程号为 200,confederation member-as 100 200 4. 在两原 AS 的边界路由器之间建立 Confederation eBGP 会话 5. 验证路由传递和 AS_PATH 的 Sub-AS 序列

4.3 案例分析:联邦中 Sub-AS 号泄露

故障:外部 AS 在 AS_PATH 中看到了 Confederation 内部的 Sub-AS 号,导致路由策略匹配异常。

排查:

  1. 检查外部 AS 收到的 AS_PATH:
# 在外部AS 300上查看
AS_PATH: 65000 [65001] 100
 # Sub-AS号65001泄露到了外部!
  1. 根因:Confederation 边界路由器在将路由传递到外部 eBGP Peer 时,未正确移除 Sub-AS 序列。这可能是:
  2. 边界路由器未配置 confederation identifier
  3. 边界路由器配置了错误的 Confederation AS 号
  4. 路由策略修改了 AS_PATH,干扰了 Sub-AS 移除逻辑

  5. 修复:

# 确认边界路由器正确配置了confederation identifier
[R3] bgp 65001
[R3-bgp] confederation identifier 65000
[R3-bgp] confederation member-as 65001 65002

# 检查AS_PATH相关路由策略,确认没有干扰Sub-AS移除
[R3-bgp] display current-configuration | include as-path
 # 如果没有异常的as-path策略,则问题在于confederation配置
  1. 验证修复后外部视角的 AS_PATH:
修复后: AS_PATH: 65000 100
 # Sub-AS号已正确移除,外部只看到Confederation的公有AS号65000

五、总结

特性 联邦(Confederation) 路由反射器(RR) 推荐度
配置复杂度 高(需重新规划AS) 低(现有AS内增加RR) RR 更优
对外影响 Sub-AS可能泄露(配置错误时) 无外部影响 RR 更优
AS_PATH 影响 内部含 Sub-AS 序列 无 AS_PATH 影响 RR 更优
适用场景 AS 合并过渡期 通用大规模扩展 RR 为主
部署难度 需要整体 AS 规划 灵活增量部署 RR 更优
子域扩展 每个 Sub-AS 仍需全互联或 RR 单层或分层 RR 各有千秋

联邦的现代定位:联邦已不再是 iBGP 扩展的首选方案。现代网络几乎全部采用路由反射器。联邦的典型使用场景仅限于: - 运营商合并后的过渡期(短期使用) - 某些遗留网络的改造(无法引入 RR 时) - 学术研究和技术理解

思考

  1. 联邦 eBGP 与标准 eBGP 在 AS_PATH 处理上的主要区别是什么?为什么 Confederation 边界路由器需要在路由离开 Confederation 时移除 Sub-AS 号?
  2. 在联邦架构中,Confederation iBGP 的水平分割规则是否仍然生效?如果是,联邦是如何解决跨 Sub-AS 的 iBGP 全互联问题的?
  3. 为什么现代网络更倾向于使用路由反射器而非联邦?在什么场景下联邦仍然是不可替代的选择?

下篇预告:第90篇:BGP 聚合与 AS_SET 属性