你点开 YouTube 看一段视频,数据包要从 YouTube 的服务器出发,穿过 Google 的全球骨干网,跨过太平洋海缆,进入中国电信的骨干网、城域网,最后到达你家里的光猫。这一路上,每一个转发节点都要做同一个决定:下一步该往哪里走?这个决定不是写死的,是每台路由器实时和邻居路由器协商出来的。这套协商机制就是 BGP——Border Gateway Protocol,边界网关协议。

什么是自治系统

要理解 BGP,先要理解“自治系统”(AS,Autonomous System)。自治系统是互联网中一个独立的网络运营单位,由单一组织管理,对外有统一的路由策略。一个中国电信是一个 AS,一个中国联通也是一个 AS,一个 Google 是一个 AS,一个 Cloudflare 也是一个 AS。整个互联网由大约 10 万多个 AS 组成。

每个 AS 有一个全球唯一的编号,叫做 ASN(Autonomous System Number)。ASN 就像身份证号一样,让全世界每台 BGP 路由器都能识别“谁是谁”。中国电信 ChinaNet 的 ASN 是 4134,CN2 是 4809,Cloudflare 是 13335,Google 是 15169,AWS 是 16509。

BGP 的基本逻辑:宣告路由

BGP 的核心机制很简单:每个 AS 都向邻居宣告“我能到达哪些 IP 段”。比如中国电信的 AS 4134 宣告“我能到达 1.0.1.0/24、1.0.2.0/24……这些 IP”,这些宣告会通过 BGP 协议传播到全球所有愿意接收的路由器。

当一个数据包需要从 A 走到 B 时,每台中间的路由器都会查自己的 BGP 表——“我从哪条路径能到达 B?”——然后选择一条最佳路径转发。这种“宣告 + 选择”的机制让整个互联网能够动态适应网络变化:某条路径断了,路由器会自动选择另一条。

BGP 是互联网唯一能够处理“互联网规模”的协议。它能扩展到 10 万多个 AS、90 多万个 IPv4 路由前缀,靠的不是复杂算法,而是“路由宣告 + 路径选择”这两套简单的机制。

EBGP 和 IBGP:内外有别

BGP 分为两种会话:EBGP(External BGP)用于不同 AS 之间的路由交换,IBGP(Internal BGP)用于同一 AS 内部路由器之间的路由同步。当中国电信和中国联通交换路由时,用的是 EBGP;中国电信内部的几千台路由器同步路由表时,用的是 IBGP。

EBGP 是互联网“外交官”,它决定跨运营商的流量走向。每个 AS 通过 EBGP 告诉对方“我的网络里有这些 IP 段”,对方把这些宣告加入自己的全局路由表。IBGP 是 AS 的“内部会议”,它确保一个 AS 内部的所有路由器都有一致的路由视图。

路径属性:选择路由的依据

当一条 IP 段有多个可能路径时,BGP 用“路径属性”(Path Attributes)决定哪条最优。常见的属性包括:

AS_PATH:数据包要经过哪些 AS.AS_PATH 越短,路径越优(这是 BGP 最著名的规则)。LOCAL_PREF:本地优先级,AS 内部的策略权重。MED(Multi-Exit Discriminator):多出口区分器,告诉邻居 AS “如果走我这个出口”。NEXT_HOP:下一跳路由器的 IP 地址。

这些属性的组合让 AS 可以实现非常精细的路由策略。比如 Cloudflare 就可以通过设置 LOCAL_PREF 让来自某些 ISP 的流量优先走某个 PoP 节点,从而优化访问速度。

BGP 的脆弱性:曾经发生的真实事故

BGP 协议诞生于 1989 年,年代久远,安全机制相对薄弱。它基于“信任”——每个 AS 都默认相信邻居 AS 宣告的路由是真实的。这种“信任”在互联网早期没问题,但随着 AS 数量爆炸式增长,BGP 路由劫持事件时有发生。

2008 年,巴基斯坦电信(AS 17557)意外宣告了 YouTube 的 IP 段(208.65.153.0/24),结果导致全球 YouTube 用户在两小时内无法访问——因为巴基斯坦本地 ISP 错误地认为 YouTube 的 IP 在自己境内,应该走自己的路径。2018 年,亚马逊的 DNS 服务 Route 53 也遭遇过 BGP 劫持,导致部分用户的 DNS 查询被劫持到恶意 IP。

这些事故让业界开始推动 RPKI(Resource Public Key Infrastructure,资源公钥基础设施)和 BGPsec(BGPSecurity)等新一代安全机制。RPKI 通过密码学方式验证 IP 段的所有权,BGPsec 给 BGP 路由签名。截至 2026 年,RPKI 已经在全球主要运营商中部署,但完整覆盖还需要数年。

BGP 与你的下载体验

BGP 路径选择直接决定了你下载 GitHub release 文件时的实际速度。比如你在中国下载 GitHub,路径可能是 GitHub → 美国骨干网 → 太平洋海缆 → 中国电信骨干网 → 上海城域网 → 你家。这条路径上的每一跳都是 BGP 决策的结果。

当中国电信通过 BGP 宣告“我能到达 GitHub”,你的 ISP 就知道要把流量转给中国电信。Cloudflare 在全球 337 个城市部署节点,也是为了让 BGP 路径更短——用户从最近的 PoP 下载,不必绕道美国。

你的任何下载都跑在 BGP 之上

当你打开任何网站、下载任何文件、观看任何视频,BGP 都在背后默默工作,把你的请求转发到全球某个角落的服务器,再把响应原路送回来。这种“全球自动寻路”的能力是互联网区别于电话网络、邮政网络的核心特性——它没有任何中心节点,但任何两个端点都能找到连接彼此的路径。

下一篇我们要看的,是 BGP 路径上真正的“骨干”——中国三大运营商的国家级骨干网。中国电信的 ChinaNet、联通的 UNINET、移动的 CMNET,这三张大网是理解国内互联网流量的关键。

参考资料