什么是BGP?互联网路由基础完全解析

成千上万个各自独立运营的网络,究竟是如何互相告知路由、连接成一个整体的?

什么是BGP

BGP(边界网关协议)与家庭或办公室内部网络使用的路由方式不同,它专为不同组织各自运营的网络之间交换路由信息而设计。互联网其实并不是一个巨大的单一网络,而是由运营商、云服务商、大学、企业等运营的无数个独立网络,通过BGP互相连接而成的“网络的网络”。

什么是自治系统(AS)

运营商、大型云服务商、大学和大企业通常各自运营一个或多个自治系统,并由国际互联网注册机构分配一个全球唯一的AS编号(ASN)。严格来说,BGP交换的不是单个IP地址之间的路由信息,而是自治系统与自治系统之间的路由信息。

路由通告与最佳路径选择

当一个AS通告自己负责的IP地址段时,相邻的AS会将其记录在自己的路由表中,再继续传递给它自己的相邻AS。这样反复传播后,全球的路由器就会知道到达某个目的地需要经过哪些AS(AS路径);当存在多条候选路径时,会依据既定标准(例如经过的AS数量更少)选出一条。

对等互联与转接的关系

规模相近的大型运营商或内容提供商,常常会在互联网交换中心(IXP)直接互联,免费交换彼此的流量,这种关系称为“对等互联”(peering)。而没有自己长途骨干网络的中小型网络,则会向上层运营商付费,签订“转接”(transit)合同,从而获得通往整个互联网其余部分的路由。

什么是BGP劫持

BGP劫持是指某个网络因失误或恶意目的,通告了一段自己并不实际拥有的IP地址,把本应流向其他网络的流量引向了错误的方向。由于BGP的设计基本上默认信任相邻网络所通告的信息,一旦某个AS因配置失误或恶意行为通告了不属于自己的IP段,该段地址的部分流量就可能被错误路由。现实中,某个运营商的一次配置失误就曾多次导致流向大型服务的全球性流量瘫痪。

BGP为何以“信任”为前提设计

BGP诞生于1980年代末,当时接入互联网的组织数量相对较少,彼此之间保持一定程度的信任是合理的。因此,验证“某条通告是否真的来自该IP段合法所有者”的加密验证机制,并未被纳入最初的设计之中——这也成为延续至今的结构性安全弱点。

RPKI如何验证路由

RPKI(资源公钥基础设施)让地址注册机构可以提前用加密方式证明“某个AS有权通告某个IP段”。采用RPKI的网络可以将收到的BGP通告与这些证书进行比对,自动过滤掉来自未获授权来源的错误通告。不过并非所有网络都已采用RPKI,持续提高其普及率仍是互联网安全社区面临的课题。

为何一个小失误会引发全球性故障

如果某个AS因失误一次性通告了远超其实际拥有范围的IP地址段,或者泄露了错误的路由信息,相邻的AS会照单全收并继续向外传播,导致错误在几分钟之内迅速扩散到整个互联网。这也是为什么大型互联网服务或云服务商发生故障时,新闻中常常会提到“配置失误导致的BGP路由问题”这一原因。

BGP通告的地址段究竟是如何划分的

如果好奇AS通告IP地址段时使用的表示方法,可以了解一下CIDR表示法——这是简洁表达地址块及其大小的基础机制,理解它会让路由通告变得容易读懂得多。

真正在洲际之间承载流量的是什么

BGP决定的只是逻辑上的路径,而真正在各大洲之间物理传输数据的,是海底电缆。BGP的逻辑路由与实体电缆网络相结合,才构成了一个统一的全球互联网。

常见问题

我家里用的路由器也用到BGP吗?

不会。家庭或办公室的内部网络通常依靠静态路由,或DHCP分配的默认网关信息就足以正常运行。BGP专门用于拥有自己AS编号的组织——例如运营商、云服务商和大型企业——之间交换路由信息。

普通用户能察觉到BGP劫持正在发生吗?

普通用户通常只会感觉到某个网站突然变慢或无法访问,很难直接判断原因是否出在BGP上。多数情况下,是网络运营商或安全公司通过监控路由,在事后才确认BGP路由错误是根本原因。