关键词:BGP、AS、自治系统、eBGP、iBGP、外部网关协议、路径矢量、TCP 179

第81篇:BGP 基础:AS 与 eBGP/iBGP 基本概念

一、引言

在第80篇中,我们深入探讨了 IS-IS over SR-MPLS 的部署演进,理解了 IGP 如何在骨干网中分发 SID 和构建无状态转发架构。然而,IGP 只能管理 AS(自治系统)内部的路由。当流量需要跨越不同管理域的边界时,就需要 BGP(Border Gateway Protocol,边界网关协议)来承担 AS 间路由交换的重任。

BGP 是目前互联网中唯一能够胜任大规模路由交换的外部网关协议(EGP)。作为路径矢量协议,BGP 不只传递"到达某目的地的最优距离",而是传递完整的路径属性和策略信息,使每个自治系统能够基于本地策略做出自主的路由决策。

理解 BGP 的基本概念——AS(自治系统)、eBGP(外部 BGP)和 iBGP(内部 BGP)——是进入 BGP 世界的起点,也是后续所有 BGP 高级特性的基础。

二、核心概念

2.1 自治系统(AS)

自治系统是 BGP 路由体系的基本管理单元:

属性 说明
定义 由单一管理实体控制、采用统一路由策略的一组路由器和网络的集合
AS 编号 16 位(1-65535)或 32 位(65536-4294967295)
公有 AS 1-64511,由 IANA/RIR 统一分配,全球唯一
私有 AS 64512-65535(16位)/ 4200000000-4294967294(32位)
保留 AS 0(保留)、65535(测试)

公有 AS 分配规则:

分配机构 范围 说明
IANA 保留 不直接分配
ARIN(北美) 分配段 如 7000-7999
RIPE NCC(欧洲) 分配段 如 2000-2999
APNIC(亚太) 分配段 如 4800-4899
LACNIC(拉美) 分配段 如 26000-26999

私有 AS 的使用场景:企业内网、测试环境、VPN 等不需要全球唯一标识的场景。私有 AS 的路由在离开本地 AS 时,其 AS 号会被替换为公有 AS 号。

2.2 eBGP 与 iBGP

BGP 根据对等体(Peer)是否在同一 AS 内,分为两种类型:

特性 eBGP(External BGP) iBGP(Internal BGP)
Peer 位置 不同 AS 同一 AS
TTL 默认值 1 255
Next_Hop 处理 自动修改为本端出口接口 IP 默认不修改(透传)
邻居关系 通常为直连接口 通常使用LoopBack接口建邻
路由传递 从 eBGP 学到的路由可传递给所有 Peer 从 iBGP 学到的不传给其他 iBGP Peer
AS_PATH 更新 在 AS_PATH 前追加本 AS 号 不修改 AS_PATH
默认路由过滤 不接受本地 AS originate 的路由 接受所有路由

eBGP 与 iBGP - 图示

2.3 BGP 的典型角色

角色 说明 典型设备
PE(Provider Edge) 运营商边缘路由器,终止客户连接,运行 BGP AR6140、NE40E
P(Provider Core) 核心路由器,仅负责高速转发,不运行 BGP NE8000、NE40E
CE(Customer Edge) 客户边缘路由器,连接运营商 AR6140、S6730
ASBR(AS Boundary Router) AS 边界路由器,建立 eBGP 会话 PE 路由器

三、技术细节

3.1 BGP 与 IGP 的本质区别

维度 IGP(OSPF/IS-IS) BGP
协议类型 链路状态/距离矢量 路径矢量(Path Vector)
选路标准 度量值(Cost/Metric) 多属性综合比较 + 策略
收敛速度 快(秒级) 慢(分钟级,可优化)
路由范围 AS 内部 AS 之间
环路防护 SPF 计算/跳数限制 AS_PATH 检查
策略控制 有限(Cost 调整) 极强(多属性、Community)
传输层 直接封装在二层/ICMP TCP(端口 179)
路由规模 数千条 数十万条(全量表 90万+)

3.2 BGP 的可靠性传输

BGP 使用 TCP 179 端口进行可靠传输,这是 BGP 与 IGP 的根本区别之一:

特性 说明
传输协议 TCP(端口 179)
可靠性 由 TCP 提供有序、无差错、不丢失的报文传递
持久连接 BGP 会话建立后保持长连接(Hold Timer 内)
Hold Timer 应用层心跳检测,默认 180 秒
Keepalive 间隔 Hold Time / 3,默认 60 秒
延迟通知 路由变化可批量合并,减少 Update 报文数

TCP 带来的优势: - BGP 无需自己实现可靠传输和重传机制 - 报文有序到达,避免了乱序路由导致的振荡 - TCP 窗口机制自动适配链路带宽

TCP 带来的限制: - BGP 依赖 IP 路由可达性才能建立会话(先有 IGP 路由,再有 BGP 会话) - TCP 半开连接(Half-Open)问题需要额外检测 - 对 NAT 不友好(AS 号在 TCP 负载中)

3.3 BGP 路由的传递规则

BGP 路由传递遵循以下核心规则:

  1. eBGP 学到的路由:可以传递给所有 eBGP 和 iBGP Peer
  2. iBGP 学到的路由:不能传递给其他 iBGP Peer(水平分割规则)
  3. 本地注入的路由(network/import-route):可以传递给所有 Peer
  4. Confederation eBGP 学到的路由:可传递给 Confederation 内所有 Peer

iBGP 水平分割的意义:防止 iBGP 域内路由环路。因为 iBGP 传递路由时不修改 AS_PATH(Peer 在同一 AS),仅靠 AS_PATH 无法检测 iBGP 域内环路,所以通过"不转发"来防环。这也是 iBGP 需要全互联或使用路由反射器/联邦的根本原因。

3.4 BGP 的四个核心数据表

数据表 说明
BGP 表(BGP Table) 存储所有从 Peer 学到的路由(含非最优路由)
Adj-RIBs-In 从 Peer 收到的原始路由(未经选路)
Adj-RIBs-Out 发送给 Peer 之前的路由(经出口策略处理)
Loc-RIB 经过 Best Path 选路后的最优路由

四、实战配置/案例分析

4.1 BGP 基础配置

# ===== R1(AS 100)基础配置 =====
sysname R1
interface GigabitEthernet 0/0/1
 ip address 10.1.1.1 30

# 启用BGP
bgp 100
 router-id 1.1.1.1

 # 配置eBGP邻居(AS 200)
 peer 10.1.1.2 as-number 200
 peer 10.1.1.2 connect-interface GigabitEthernet 0/0/1

 # 配置iBGP邻居(同一AS)
 peer 2.2.2.2 as-number 100
 peer 2.2.2.2 connect-interface LoopBack 0

 # 宣告网络
 network 10.1.1.0 24
 network 192.168.1.0 24

# ===== R2(AS 100,iBGP Peer)配置 =====
sysname R2
interface LoopBack 0
 ip address 2.2.2.2 32

bgp 100
 router-id 2.2.2.2

 # iBGP多跳(非直连)
 peer 1.1.1.1 as-number 100
 peer 1.1.1.1 connect-interface LoopBack 0
 peer 1.1.1.1 ebgp-router-id 1.1.1.1  # 同AS下使用LoopBack建邻时,覆盖"同AS不能建eBGP"的限制

 # iBGP Peer非直连时:需配置 ebgp-router-id + ttl 255(因为默认TTL=1)
 peer 1.1.1.1 ttl 255

4.2 查看 BGP 状态

# 查看BGP进程信息
display bgp routing-table summary
  BGP local router ID : 1.1.1.1
  Local AS number : 100
  Total number of peers : 2,    peers in established state : 2

  Peer            V         AS  MsgRcvd  MsgSent  OutQ  Up/Down  State
  10.1.1.2       4         200     1234     1567     0  01:23:45  Established
  2.2.2.2        4         100      890      891     0  01:20:30  Established

# 查看BGP路由表
display bgp routing-table
  Network          NextHop            MED  LocPrf    PrefVal Path/Ogn
  *>192.168.1.0/24 0.0.0.0               0     100         0  i
  *>10.1.1.0/24    10.1.1.2              0     100         0  200i

# 查看单条路由的详细信息
display bgp routing-table 10.1.1.0 verbose

4.3 案例分析:iBGP 水平分割导致的路由缺失

故障现象:AS 100 内有三台路由器 R1、R2、R3。R1 与 R2 建立了 iBGP 邻居,R2 与 R3 建立了 iBGP 邻居,但 R1 与 R3 之间没有 iBGP 邻居关系。R1 通过 eBGP 从 AS 200 学习到 172.16.0.0/16 路由,但 R3 无法学习到该路由。

案例分析:iBGP 水平分割导致的路由缺失 - 图示

分析过程:

  1. R1 通过 eBGP 学到 172.16.0.0/16,AS_PATH 为 200
  2. R1 将路由通过 iBGP 传递给 R2(允许:eBGP 学到的路由可以传给 iBGP Peer)
  3. R2 收到该路由,来源为 iBGP(从 R1 学到的)
  4. 根据 iBGP 水平分割规则,R2 不能将该路由再传递给 R3(同为 iBGP Peer)
  5. R3 的 BGP 表中不存在 172.16.0.0/16,无法转发到达该目的地的流量

解决方案:

方案 配置示例 适用场景
全互联 R1 与 R3 也建立 iBGP 邻居 路由器数量少(≤10)
路由反射器 将 R2 配置为 RR,R1/R3 为 Client 大规模部署(推荐)
联邦 将 AS 100 拆分为子 AS AS 合并过渡场景
# 方案1:建立全互联
[R2] bgp 100
[R2-bgp] peer 3.3.3.3 as-number 100

# 方案2:R2作为路由反射器
[R2] bgp 100
[R2-bgp] peer 1.1.1.1 reflector-client
[R2-bgp] peer 3.3.3.3 reflector-client

五、总结

概念 核心要点
AS BGP路由的基本管理单元,16位或32位编号,公有/私有之分
eBGP 不同AS之间的BGP会话,TTL=1,修改Next_Hop,追加AS号到AS_PATH
iBGP 同一AS内的BGP会话,TTL=255,不修改Next_Hop和AS_PATH
iBGP水平分割 从iBGP学到的路由不传给其他iBGP Peer,防止域内环路
TCP 179 BGP使用TCP提供可靠传输,BGP自身专注路由策略和路径决策
路径矢量 BGP传递完整AS路径,而非单纯度量值,支持策略化选路

思考

  1. 为什么 BGP 选择 TCP 作为传输协议,而 OSPF/IS-IS 直接在二层封装?这种设计对 BGP 的部署和故障排查各有什么影响?
  2. iBGP 水平分割规则的核心目的是防止环路,但为什么 eBGP 不需要这条规则?两种会话的防环机制有何本质不同?
  3. eBGP 的 TTL 默认为 1,这意味着什么安全含义?在什么场景下需要修改 eBGP 的 TTL(如 eBGP Multi-Hop)?

下篇预告:第82篇:BGP 报文类型:Open、Update、Keepalive、Notification