BGP (Border Gateway Protocol)
3 秒看懂
BGP 是互联网的”外交协议”——它让 17 万多个自治系统(AS)彼此交换路由信息,决定了你发出的每一个数据包在全球骨干网中走哪条路。 没有 BGP,互联网不复存在。
3 分钟产业解释
BGP 解决什么问题?
互联网不是一张统一的网,而是由数以万计的独立网络(运营商、云厂商、企业、CDN)拼接而成。每个网络称为一个自治系统(Autonomous System, AS),拥有自己的 AS 编号(ASN)。BGP 就是这些 AS 之间互相宣告”我能到达哪些 IP 地址段,走我的路径是什么”的协议。
为什么重要?
- 路由选路的唯一标准:全球互联网的域间路由几乎 100% 依赖 BGP-4。
- 云与 AI 的底层依赖:AWS、Azure、GCP 的每个可用区都通过 BGP 对等互联(peering)接入全球互联网;AI 训练集群的跨区域数据同步、模型分发(CDN)均经过 BGP 路由的路径。
- 安全与主权博弈焦点:BGP 本身缺乏内置认证机制,路由劫持(hijack)、路由泄漏(route leak)事件频发,是国家级网络安全博弈的核心战场。
产业角色:
| 角色 | 代表实体 | 与 BGP 的关系 |
|---|---|---|
| Tier-1 运营商 | Lumen(CenturyLink)、NTT、Cogent 等 | 全表路由,相互免结算对等 |
| 超大规模云厂商 | AWS、Azure、GCP、阿里云 | 自建 AS,积极对等,推动 RPKI 部署 |
| 路由器/网络设备商 | Cisco、Juniper、Nokia、华为 | BGP 协议栈实现的核心载体 |
| IXP 互联网交换点 | DE-CIX、AMS-IX、Equinix IX | 集中对等枢纽,承载巨量 BGP 会话 |
| 互联网治理机构 | IETF、IANA、各 RIR(APNIC/ARIN 等) | ASN 分配、RFC 标准化、RPKI 框架 |
15 分钟专家深入
一、协议定位与版本演进
BGP 是**路径向量(Path Vector)**协议——它既不是纯距离向量(如 RIP),也不是链路状态(如 OSPF/IS-IS)。每个 BGP 路由更新携带完整的 AS 路径(AS_PATH),使得接收方可以据此做出策略选路并检测环路。
| 版本 | 对应文档 | 发布时间 | 关键变化 |
|---|---|---|---|
| BGP-1 | RFC 1105 | 1989 | 初始定义 |
| BGP-2 | RFC 1163 | 1990 | 修正与扩展 |
| BGP-3 | RFC 1267 | 1991 | 改进错误处理 |
| BGP-4 | RFC 4271 | 2006(取代 RFC 1771) | 当前在用标准;BGP-4 相对于 BGP-3 引入 CIDR 支持 |
BGP-4 自 1994 年 RFC 1654 提出以来,核心协议框架已 30 年未发生根本性改变,但通过大量扩展文档(RFC)不断叠加能力。
二、核心工作机制
1. 会话建立
- 两个 BGP 路由器(称为 BGP Speaker)通过 TCP 端口 179 建立连接。
- 先交换 OPEN 消息协商参数(AS 号、Hold Timer、BGP Identifier 等)。
- 建立后周期性发送 KEEPALIVE 维持连接;Hold Timer 默认 180 秒(未收到任何消息则断开)。
2. 消息类型(共四种)
| 消息类型 | 作用 |
|---|---|
| OPEN | 建立邻居关系,协商参数 |
| UPDATE | 通告新路由或撤销已有路由 |
| NOTIFICATION | 报告错误并关闭连接 |
| KEEPALIVE | 维持会话存活 |
3. 路由通告与撤销
UPDATE 消息中:
- NLRI(Network Layer Reachability Information):被通告的 IP 前缀。
- Path Attributes(路径属性):下一跳、AS_PATH、度量值、团体属性等。
- Withdrawn Routes:需要撤销的前缀。
4. 路由决策过程(简化版)
BGP 的路由选择是一个确定性的分步比较过程,核心优先级从高到低(RFC 4271 + 实践共识):
1. 最高 WEIGHT(Cisco 私有,仅本地有效)
2. 最高 LOCAL_PREF(本地优先级,iBGP 域内传播)
3. 本地始发优先(本地下发 > 从邻居学到)
4. 最短 AS_PATH
5. 最低 ORIGIN 类型(IGP < EGP < Incomplete)
6. 最低 MED(多出口鉴别器,仅在同一下游 AS 间比)
7. eBGP 路由优于 iBGP 路由
8. 到 BGP NEXT_HOP 最低 IGP 度量的路径
9. ...(后续为 Tie-Breaker:Router ID 等)
注意:这是策略优先的协议,运营商根据商业关系(客户、对等、供应商)设定 LOCAL_PREF 等属性,而非纯粹追求最短路径。
三、eBGP 与 iBGP
| 维度 | eBGP | iBGP |
|---|---|---|
| 定义 | 不同 AS 之间 | 同一 AS 内部 |
| TTL 默认 | 1(单跳,常被修改为 255 用于多跳) | 255 |
| AS_PATH 环路检测 | 收到包含自身 AS 号则拒绝 | 依赖水平分割(不将 iBGP 学到的路由再发给 iBGP 邻居),因此需要 Full Mesh 或 Route Reflector / Confederation |
| 典型用途 | 运营商对等、客户上联 | AS 内部路由分发 |
iBGP 扩展性挑战:N 个路由器 Full Mesh 需要 N×(N-1)/2 条会话。实际网络普遍使用**路由反射器(Route Reflector, RR)来减少会话数量,或使用联盟(Confederation)**将大 AS 划分为子 AS。
四、关键路径属性(Path Attributes)
| 属性 | 类型 | 传播范围 | 说明 |
|---|---|---|---|
| AS_PATH | Well-Known Mandatory | 全局 | AS 序列,路径经过的 AS 编号列表;也用于环路检测 |
| NEXT_HOP | Well-Known Mandatory | 逐跳 | 下一跳 IP 地址 |
| ORIGIN | Well-Known Mandatory | 全局 | 路由来源(IGP/EGP/Incomplete) |
| LOCAL_PREF | Well-Known Discretionary | iBGP 域内 | 本地优先级,值越大越优先(默认 100) |
| MED | Optional Non-Transitive | 相邻 AS 间 | 建议上游选路的度量,值越小越优先 |
| COMMUNITY | Optional Transitive | 按策略 | 标签机制,用于路由策略标记(如 NO_EXPORT、各 ISP 自定义值) |
| ATOMIC_AGGREGATE | Well-Known Discretionary | 全局 | 声明路由已被聚合,可能丢失精确信息 |
| AGGREGATOR | Optional Transitive | 全局 | 聚合者 AS 号和 Router ID |
技术原理
一、协议架构图
┌─────────────────────────────────────────────────────┐
│ BGP Speaker │
│ │
│ ┌──────────┐ ┌──────────────┐ ┌───────────┐ │
│ │ Policy │◄──►│ Adj-RIB-In │───►│ Decision │ │
│ │ Engine │ │ (邻居原始路由) │ │ Process │ │
│ │(路由策略) │ └──────────────┘ │ (选路计算) │ │
│ └──────────┘ └─────┬─────┘ │
│ ▲ │ │
│ │ ▼ │
│ ┌────┴──────┐ ┌──────────────┐ ┌───────────┐ │
│ │ Config │ │ Loc-RIB │ │ Adj-RIB- │ │
│ │ (策略配置) │ │ (最优路由表) │ │ Out │ │
│ └───────────┘ └──────┬───────┘ │(对外通告) │ │
│ │ └─────┬─────┘ │
│ ▼ │ │
│ ┌───────────┐ │ │
│ │ IP RIB / │ │ │
│ │ FIB (转发表)│ │ │
│ └───────────┘ │ │
└─────────────────────────────────────────────┼───────┘
│
┌────────────────┘
▼
┌──────────────┐
│ TCP/179 │
│ Transport │
│ (对端 BGP │
│ Speaker) │
└──────────────┘
BGP 的三张 RIB(路由信息库):
- Adj-RIB-In:从邻居收到的原始路由(未经策略过滤)。
- Loc-RIB:经过决策过程选出的最优路由。
- Adj-RIB-Out:经策略过滤后准备通告给邻居的路由。
二、路径选择算法深度解析
BGP 的决策是字典序逐级比较,在某一级分出胜负即停止:
Step 1: 最高 WEIGHT (仅Cisco本地)
└─ 未决 ─► Step 2: 最高 LOCAL_PREF
└─ 未决 ─► Step 3: 本地始发 (network/aggregate > redistribute > 学到的)
└─ 未决 ─► Step 4: 最短 AS_PATH (AS_SET 算 1 跳)
└─ 未决 ─► Step 5: 最低 ORIGIN (i < e < ?)
└─ 未决 ─► Step 6: 最低 MED (仅同一下游AS比较)
└─ 未决 ─► Step 7: eBGP > iBGP
└─ 未决 ─► Step 8: 最低 IGP Metric 到 NEXT_HOP
└─ 未决 ─► Step 9: ... (可选 Tie-Breaker)
关键设计哲学:BGP 不是”找最短路径”的协议,而是”按策略选路”的协议。LOCAL_PREF 优先级高于 AS_PATH 长度,这意味着运营商可以人为偏好某条更长的路径(例如走付费对等而非免费对等)。
三、路由反射器(Route Reflector)原理
┌──────────────┐
│ Route Reflector│
│ (RR Client │
│ Manager) │
└──┬───┬───┬───┘
│ │ │
┌──────┘ │ └──────┐
▼ ▼ ▼
┌───────┐ ┌───────┐ ┌───────┐
│Client │ │Client │ │Client │
│ A │ │ B │ │ C │
└───────┘ └───────┘ └───────┘
反射规则:
- Client 路由 → 反射给其他 Client + 非 Client (IBGP Peer)
- Non-Client 路由 → 只反射给 Client
- Client 路由 → 选最佳反射(不反射回原 Client,除非启用了 EBGP 多路径)
四、BGP 与安全
BGP 的原始设计没有内置路由认证机制。 这意味着:
- 路由劫持(Hijack):任何 AS 都可以通告不属于自己的 IP 前缀,其他 AS 可能将流量错误地转发给劫持者。
- 路由泄漏(Route Leak):一个 AS 将从客户学到的路由错误地通告给对等或供应商,破坏流量工程意图(RFC 7908 定义了泄漏类型)。
缓解机制:
| 机制 | 层级 | 作用 |
|---|---|---|
| IRR(Internet Routing Registry) | 策略层 | 路由策略的公共数据库,可用于自动生成前缀过滤列表 |
| RPKI + ROA | 密码学 | 资源公钥基础设施,验证”哪个 AS 有权通告哪个前缀” |
| Route Origin Authorization (ROA) | RPKI 的核心对象 | 签名声明前缀-AS 绑定关系 |
| BGPsec(RFC 8205) | 扩展协议 | 为 AS_PATH 提供密码学完整性保护(尚未广泛部署) |
| MANRS(Mutually Agreed Norms) | 行业倡议 | 运营商间的路由安全最佳实践共识 |
RPKI 部署进展:截至约 2024 年,全球约 50% 左右的 IPv4 路由表前缀已有有效的 ROA 签发(估算值,来源:NIST/Cloudflare 等公开仪表盘),但实际执行 RPKI 验证并丢弃无效路由的 AS 比例仍有限。
技术演进史
1989 ── BGP-1 (RFC 1105) 发布,取代 EGP
1990 ── BGP-2 (RFC 1163)
1991 ── BGP-3 (RFC 1267)
1994 ── BGP-4 提出 (RFC 1654),引入 CIDR 无类别域间路由
1995 ── RFC 1771 成为 BGP-4 标准
1998 ── BGP 支持多协议扩展 (MP-BGP, RFC 2283)
→ 支持 IPv6、VPN、组播等地址族
1999 ── MPLS VPN 使用 MP-BGP 分发标签和 VPN 路由
2006 ── RFC 4271 (现行标准,取代 RFC 1771)
2008 ── 巴基斯坦电信劫持 YouTube 前缀事件,BGP 安全问题全球关注
2012 ── RPKI 框架基本成型 (RFC 6480-6488)
2014 ── BGP-LS (Link State, RFC 7752) 提出,用于 SDN 控制器获取网络拓扑
2017 ── RFC 8205 定义 BGPsec(AS_PATH 签名验证)
2020s── RPKI + ROA 部署加速;RPKI-to-Router (RTR) 协议普及
云厂商大规模实施 RPKI 验证策略
SD-WAN 与云网络推动 BGP 自动化编排
技术路线对比
BGP 并非孤立存在,需与其他路由协议对比理解其定位:
| 维度 | BGP | OSPF | IS-IS | EIGRP |
|---|---|---|---|---|
| 协议类型 | 路径向量 | 链路状态 | 链路状态 | 高级距离向量 |
| 运行层面 | 域间(AS 间) | 域内(IGP) | 域内(IGP) | 域内(IGP) |
| 传输 | TCP/179 | IP 协议 89(原始 IP) | IS-IS 帧(L2) | IP 协议 88(组播) |
| 可扩展性 | 极高(全球 100 万+ 前缀) | 中等(单区域数百路由器) | 高(大 ISP 常用) | 中等 |
| 策略能力 | 极强(属性丰富、策略灵活) | 弱 | 弱 | 弱 |
| 收敛速度 | 慢(默认定时器保守,分钟级) | 快(SPF 计算,秒级) | 快 | 较快 |
| 环路检测 | AS_PATH | LSA 拓扑计算 | LSP 拓扑计算 | DUAL 算法 |
| 多协议支持 | MP-BGP (AFI/SAFI) | OSPFv3 (IPv6) | 原生多协议 | 仅 IPv4/IPv6 |
| 典型用途 | ISP 间对等、VPN、数据中心 overlay | 企业内部 | 大型 ISP 核心 IGP | Cisco 企业网络 |
核心洞察:BGP 与 IGP 是互补关系。IGP 负责 AS 内部”怎么走到下一跳”,BGP 负责 AS 之间”去哪里、走哪条路”。在现代网络中,两者缺一不可。
上下游
上游依赖
BGP 的正常运行依赖于:
┌─────────────────────────────────┐
│ TCP/IP 协议栈 │ BGP 基于 TCP,依赖 IP 可达性
├─────────────────────────────────┤
│ IGP (OSPF/IS-IS/静态路由) │ BGP NEXT_HOP 必须通过 IGP 可达
├─────────────────────────────────┤
│ 物理网络基础设施 │ 光纤、交换机、路由器物理层
├─────────────────────────────────┤
│ ASN 资源分配 (IANA → RIR → NIR → LIR) │
├─────────────────────────────────┤
│ IP 地址资源 (同上分配层级) │
└─────────────────────────────────┘
下游应用
BGP 路由表的消费者:
┌─────────────────────────────────┐
│ IP 转发面 (FIB / 硬件转发表) │ 最终数据包转发依据
├─────────────────────────────────┤
│ MPLS/VPN (MP-BGP + MPLS) │ 运营商 VPN 服务的基础
├─────────────────────────────────┤
│ SD-WAN / 云网络 │ AWS Transit Gateway、Azure vWAN
│ │ 等使用 BGP 交换路由
├─────────────────────────────────┤
│ Anycast CDN / DNS │ Cloudflare、Google 等用 BGP Anycast
│ │ 将流量路由到最近节点
├─────────────────────────────────┤
│ 流量工程 (TE) │ 通过 LOCAL_PREF/COMMUNITY/MED 等
│ │ 控制流量分布
├─────────────────────────────────┤
│ 网络安全 (RPKI/Flowspec) │ 路由验证、分布式流量过滤
└─────────────────────────────────┘
关键指标
| 指标 | 说明 | 典型量级(估算) |
|---|---|---|
| 全球 BGP 路由表前缀数量 | IPv4 全表 | ~110 万条(2024 年估算,来源:CIDR Report / BGP.Tools) |
| 全球 BGP 路由表前缀数量 | IPv6 全表 | ~22-25 万条(同期估算) |
| 全球 AS 数量 | 已分配且活跃 | ~7.5-8 万个(估算) |
| BGP UPDATE 速率 | 全球每秒更新数 | 数百至数千条/秒(正常),突发可达万级 |
| BGP 收敛时间 | 从故障到路由恢复 | 秒级至分钟级(取决于定时器和路径多样性) |
| RPKI 有效覆盖率 | IPv4 前缀有有效 ROA 的比例 | ~50%(2024 年估算,持续增长) |
| Hold Timer 默认值 | 断开超时 | 180 秒(RFC 默认) |
| Keepalive Timer 默认值 | 保活间隔 | 60 秒(RFC 默认,Hold Timer 的 1/3) |
| TCP 端口 | BGP 会话端口 | 179 |
供需与市场数据
BGP 相关设备与服务市场
| 细分市场 | 规模估算 | 趋势 |
|---|---|---|
| 核心/边缘路由器(BGP 载体) | 全球路由器市场约 150-170 亿美元/年(估算,含企业+运营商) | 运营商骨干投资趋稳,数据中心交换路由增长 |
| SD-WAN / 云网络服务 | ~50-80 亿美元/年(2024 估算,多家研报口径不同) | 高速增长,BGP 是底层路由协议之一 |
| 网络安全(RPKI/路由安全) | 尚未单独成为大规模市场,多融入网络安全/云安全预算 | 政策驱动增长(美国行政令推动 RPKI 部署) |
需求驱动力
- 云服务与 AI 训练集群:跨 Region、跨云的网络互联高度依赖 BGP 路由策略。
- 5G 与边缘计算:MEC 节点部署需要灵活的 BGP 路由编排。
- IPv6 过渡:MP-BGP IPv6 前缀持续增长。
- 路由安全合规:美国 OMB M-23-10 等政策推动联邦网络实施 RPKI。
供给侧格局
- 路由器芯片:Broadcom Memory(如 Memory-S 系列)、Cisco Silicon One、Nokia FP5 等是 BGP 路由容量的硬件基础,FIB 表项数量直接制约全表收敛能力。
- BGP 软件栈:开源实现(FRRouting、BIRD、OpenBGPD)在云网络和 SDN 控制器中广泛使用。
代表公司与资本映射
| 公司 | BGP 相关业务 | 资本市场标的 |
|---|---|---|
| Cisco | IOS-XR/IOS-XE BGP 实现、高端运营商路由器(NCS 系列等)、Silicon One 芯片 | CSCO (NASDAQ) |
| Juniper (HPE) | Junos OS BGP 实现、MX/PTX 系列路由器、Apstra 自动化 | 已被 HPE 收购 (2024 完成) |
| Nokia | SR OS/SR Linux BGP 实现、FP5 路由器芯片 | NOK (NYSE) |
| 华为 | VRP BGP 实现、NetEngine 系列路由器 | 非上市(受地缘政治影响) |
| Arista Networks | EOS BGP 实现、数据中心交换路由(云厂商大量采用) | ANET (NYSE) |
| Cloudflare | 基于 BGP Anycast 的全球 CDN/安全网络,推动 RPKI 部署 | NET (NYSE) |
| Fastly | BGP Anycast CDN | FSLY (NYSE) |
| Equinix | 全球最大 IX 运营商,承载海量 BGP 对等会话 | EQIX (NASDAQ) |
| Lumen (原 CenturyLink) | Tier-1 运营商,全球骨干 BGP 全表 | LUMN (NYSE) |
| FRRouting (开源) | Linux Foundation 旗下,云网络广泛使用的 BGP 栈 | — (开源项目) |
投资逻辑
看多逻辑
- 云+AI 流量爆发驱动网络扩容:AI 训练/推理的跨数据中心流量激增,需要更大路由容量和更灵活的 BGP 策略编排,直接拉动高端路由器和 SDN 控制器需求。
- 路由安全政策红利:全球政府(特别是美国)开始强制要求 RPKI 部署,创造新的网络安全增量市场,利好具备 RPKI 集成能力的网络设备商和安全厂商。
- SD-WAN 渗透率提升:企业 WAN 加速向 SD-WAN 迁移,BGP 作为底层路由协议的使用频率和复杂度同步上升。
- 数据中心互联 (DCI) 增长:超大规模数据中心间需要高容量、低延迟的 BGP 路由交换。
风险与看空逻辑
- BGP 是公共协议,非专利技术:BGP 本身不产生直接收入,它是网络基础设施的一部分。投资标的需聚焦于”卖铲子”(路由器、SDN 平台)而非协议本身。
- 运营商资本开支周期性:Tier-1 运营商的骨干网升级受宏观经济和投资周期影响。
- 技术替代风险:部分场景下,SDN 控制器(如 ONOS、OpenDaylight)可能通过集中式路由计算减少对分布式 BGP 的依赖;Segment Routing (SR) 也在改变流量工程范式。
- BGP 协议演进缓慢:30 年未根本变革,渐进式改进难以催生爆发性技术投资机会。
关键跟踪指标
- 全球 BGP 路由表前缀增速(CIDR Report)
- RPKI 部署率(NIST RPKI Monitor、Cloudflare Radar)
- 超大规模云厂商 CAPEX(路由器采购的先行指标)
- BGP 劫持事件频率(BGPStream / MANRS 数据)
常见误读纠偏
误读 1:“BGP 是距离向量协议”
纠偏:BGP 是**路径向量(Path Vector)**协议,不是距离向量(Distance Vector)。两者的关键区别:
- 距离向量协议(如 RIP)只知道”到目的有多远”,不知道完整路径。
- BGP 携带完整的 AS_PATH,每个节点可以看到完整的路径信息,从而进行基于策略的选路和环路检测(如果 AS_PATH 中包含自己的 AS 号,则拒绝该路由)。
误读 2:“BGP 会自动找到最短/最优路径”
纠偏:BGP 的路由选择高度策略化。运营商通过设置 LOCAL_PREF、COMMUNITY、MED 等属性,可以人为选择一条”更长”或”经济上更优”的路径。例如:
- 一个 ISP 可能将付费客户的流量优先走专用链路,即使免费对等路径的 AS_PATH 更短。
- BGP 的 Step 4(最短 AS_PATH)优先级低于 LOCAL_PREF,意味着策略永远优先于路径长度。
误读 3:“BGP 太慢太老,会被 SDN 完全取代”
纠偏:
- BGP 在域间路由层面目前没有替代方案。SDN 控制器(如 BGP-LS + PCE 架构)通常读取 BGP 信息并辅助决策,而非取代 BGP。
- 在数据中心内部,确实可以使用 EVPN(基于 MP-BGP)等扩展来增强 SDN 能力,但底层仍是 BGP。
- BGP 的慢收敛是真实的,但可通过 BFD(双向转发检测)、BGP PIC(Prefix Independent Convergence)等优化至亚秒级。
误读 4:“全球互联网的路由表是统一的、每个人看到的都一样”
纠偏:每个 AS 的 BGP 路由表取决于其策略配置和对等关系。不同运营商根据自己的商业策略、过滤规则和 RPKI 验证策略,看到的路由表可能显著不同。全球路由表的”统一视图”是学术概念(如 RIPE RIS、RouteViews 等观测项目提供的统计汇合),实际每个节点的视图都有差异。
学习路径
入门(1-2 周)
- RFC 4271 重点阅读 Section 1-3(协议概述、消息格式、路由信息库),不需全文精读。
- 理解 AS、ASN、IP 前缀等基本概念。
- 推荐资源:《BGP Design and Implementation》(Cisco Press, Randy Zhang)前几章。
进阶(1-2 月)
- 动手实验:使用 GNS3/EVE-NG 搭建多 AS 拓扑,配置 eBGP/iBGP、Route Reflector、路由策略。
- MP-BGP 与 MPLS VPN:理解 AFI/SAFI、VPNv4 地址族、RD/RT 概念。
- RPKI 原理:阅读 RFC 6480(RPKI 架构),尝试使用 Routinator 或 Fort 等开源验证器。
- 监控工具实践:了解 BGPStream、RIPE RIS、BGP.Tools 等观测平台。
深入(持续)
- 阅读运营实践文档:RFC 7938(数据中心 BGP 设计)、RFC 7908(路由泄漏定义)。
- 跟踪 IETF IDR 工作组动态(BGP 协议演进的前沿)。
- 研究安全事件:分析历史 BGP 劫持案例(YouTube 2008、Rostelecom 2017、伊朗 2018 等)。
一句话总结
BGP 是互联网的”外交协议”——没有它就没有全球互联,但它的安全性严重依赖信任而非密码学,这是其 30 年来最大的结构性弱点,也是 RPKI 生态加速演进的根本动力。
延伸阅读与来源
核心 RFC
| 文档