IP 地址与网络

BGP (边界网关协议)

约 5 分钟阅读

什么是 BGP

BGP (Border Gateway Protocol,边界网关协议) 是互联网上不同网络 (称为自治系统,AS) 之间交换路由信息的协议。互联网由数万个 AS 相互连接而成,BGP 在各个连接点传递「通过哪条路径可以到达哪个网络」的信息。

当你访问一个网站时,数据包会经过多个 ISP 和运营商的网络才能到达目的地。决定这条路径的就是 BGP。如果 BGP 无法正常工作,数据包将无法到达目的地,整个互联网都会陷入瘫痪。BGP 被称为「互联网的路标」,是支撑全球路由的最重要协议之一。

AS 号码与路由选择机制

AS (Autonomous System,自治系统) 是由单一管理实体运营的网络集合。每个 AS 都拥有一个唯一的 AS 号码 (ASN)。ASN 采用分层管理:IANA 将号码段分配给各地区互联网注册管理机构 (RIR),再由 RIR 分配给本地区的组织;日本所在的亚太地区由 APNIC 负责。例如,Google 拥有 AS15169,Amazon 拥有 AS16509。

BGP 路由器通过 TCP 端口 179 与相邻 AS 的 BGP 路由器建立连接,通告自己可达的网络前缀 (IP 地址范围)。接收方根据 AS 路径长度、本地优先级、MED (多出口鉴别器) 等属性,从多条候选路由中选择最优路径。

AS 路径长度
经过的 AS 数量,越短越优先。AS 路径预置技术可以故意增加路径长度来降低特定路由的优先级。
本地优先级
在 AS 内部设置的优先级值,值越大越优先。常用于优先选择对等互联路由而非付费转接路由。
MED
向相邻 AS 表达「请使用这个入口」的属性。在存在多个互联点时用于控制流量入口。

BGP 的路由选择不是简单的最短路径算法,而是反映了商业关系 (对等互联、转接)、成本和流量工程策略。

BGP 劫持 - 路由被盗用时会发生什么

BGP 劫持是指攻击者通过 BGP 非法通告不属于自己的 IP 前缀,从而截获流量的攻击方式。由于 BGP 在设计上不验证路由通告的合法性,恶意通告会原样传播到整个互联网。

  • 2008 年 YouTube 事件:巴基斯坦的一家 ISP 以更精确的路由 (/24) 通告了 YouTube 的 IP 前缀,导致全球的 YouTube 流量被引导至巴基斯坦。YouTube 在全球范围内约 2 小时无法访问。
  • 2018 年 Amazon Route 53 事件:BGP 劫持将 Amazon DNS 服务的流量引导至攻击者,某加密货币钱包服务的用户被重定向到钓鱼网站,资产被盗。
  • 2021 年 Facebook 大规模故障:Facebook 误撤回了自身的 BGP 路由通告,导致 Facebook、Instagram、WhatsApp 在全球范围内约 6 小时无法访问。

BGP 劫持不仅是蓄意攻击,也经常因运维人员的配置失误 (路由泄露) 而意外发生。2019 年,中国某 ISP 的配置错误导致欧洲流量被绕道中国。

RPKI - 路由的加密验证

RPKI (Resource Public Key Infrastructure,资源公钥基础设施) 是一种通过加密方式验证 BGP 路由通告是否来自授权 AS 的机制。IP 前缀持有者签发 ROA (路由来源授权),声明「允许通告此前缀的 AS 是哪个」。

BGP 路由器将收到的路由通告与 ROA 进行比对,分为以下三种状态:

Valid (有效)
与 ROA 匹配,作为合法通告接受。
Invalid (无效)
与 ROA 矛盾,很可能是非法通告,建议丢弃。
Not Found (未验证)
不存在 ROA,按传统方式接受,但无法享受验证保护。

Cloudflare、Google、Amazon 等大型服务商已实施 Invalid 路由丢弃。但 RPKI 的保护只覆盖已签发 ROA 的前缀,没有 ROA 的路由会被判定为 Not Found 并按传统方式接受。因此只要 ROA 的签发范围仍然有限,仅靠来源验证就无法完全阻止劫持。

除 RPKI 之外,还有 BGPsec (对整条路径进行签名验证) 和基于 IRR (互联网路由注册库) 的过滤等手段,建议组合多种对策。网络运维人员应像对待防火墙CDN 的配置一样,把 BGP 安全视为日常运维的基本要素。

BGP 与日常互联网体验

普通用户不会直接操作 BGP,但 BGP 的运行对互联网体验有重大影响。ISP 是否优化了 BGP 路由,会影响同一宽带套餐下访问海外网站的速度。

traceroute 命令显示的各跳 IP 地址与 whois 或 AS 信息查询结果对照,就能追溯数据包经过的 AS。经过的 AS 越多,延迟通常越高,这直观地说明了 BGP 路由选择对性能的直接影响。

当发生大规模 BGP 故障时,特定地区或服务可能从互联网上「消失」。2021 年 10 月的 Facebook 大规模故障中,Facebook 误撤回了自家的 BGP 路由通告,导致 Facebook、Instagram 和 WhatsApp 在全球范围内约 6 小时无法访问。这一事例说明了 BGP 对互联网可用性有多么关键。

BGP 路由数据通过 RIPE RIS 和 RouteViews 等项目实时公开,任何人都可以查看。这些数据也被用于检测网络故障和劫持事件,是支撑互联网透明性的重要基础设施。

常见误解

BGP 决定互联网速度
BGP 决定的是「走哪条路」,而不是连接的带宽或速度。不过,路由选择会间接影响延迟和吞吐量,因为它决定了数据包经过多少个 AS 以及这些网络的质量。
BGP 劫持需要高超的技术能力
拥有 AS 号码的网络运营者在技术上可以轻松执行 BGP 劫持,只需发送非法路由通告即可。BGP 在设计上不验证通告的合法性。实际上,许多 BGP 劫持是运维人员的配置失误造成的意外事故。
部署 RPKI 就能完全防止 BGP 劫持
RPKI 验证的是路由来源 (Origin AS) 的合法性,无法检测 AS 路径本身的篡改。没有签发 ROA 的前缀不在验证范围内。RPKI 是重要的防御层,但单独使用无法提供完全保护。
分享

相关术语

相关文章