关键词: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 的路由 | 接受所有路由 |

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 路由传递遵循以下核心规则:
- eBGP 学到的路由:可以传递给所有 eBGP 和 iBGP Peer
- iBGP 学到的路由:不能传递给其他 iBGP Peer(水平分割规则)
- 本地注入的路由(network/import-route):可以传递给所有 Peer
- 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 无法学习到该路由。

分析过程:
- R1 通过 eBGP 学到 172.16.0.0/16,AS_PATH 为 200
- R1 将路由通过 iBGP 传递给 R2(允许:eBGP 学到的路由可以传给 iBGP Peer)
- R2 收到该路由,来源为 iBGP(从 R1 学到的)
- 根据 iBGP 水平分割规则,R2 不能将该路由再传递给 R3(同为 iBGP Peer)
- 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路径,而非单纯度量值,支持策略化选路 |
思考
- 为什么 BGP 选择 TCP 作为传输协议,而 OSPF/IS-IS 直接在二层封装?这种设计对 BGP 的部署和故障排查各有什么影响?
- iBGP 水平分割规则的核心目的是防止环路,但为什么 eBGP 不需要这条规则?两种会话的防环机制有何本质不同?
- eBGP 的 TTL 默认为 1,这意味着什么安全含义?在什么场景下需要修改 eBGP 的 TTL(如 eBGP Multi-Hop)?
下篇预告:第82篇:BGP 报文类型:Open、Update、Keepalive、Notification