边界网关协议 (BGP) 是 Internet 的邮政服务。当有人将信件放入邮箱时,邮政服务会处理该邮件并选择一条快速有效的路线将该信件投递给收件人。类似地,当有人通过 Internet 提交数据时,BGP 负责查看数据可以传输的所有可用路径并选择最佳路由,这通常意味着在自治系统之间跳转。
BGP 是通过启用数据路由使 Internet 工作的协议。当新加坡的用户加载带有香港服务器的网站时,BGP 是使该通信能够快速有效地进行的协议。
什么是自治系统?
互联网是网络的网络。它被分解成数十万个称为自治系统 (ASes)的较小网络。这些网络中的每一个本质上都是由单个组织运行的大型路由器池。
如果我们继续将 BGP 视为 Internet 的邮政服务,那么 AS 就像单个邮局分支机构。一个城镇可能有数百个邮箱,但这些邮箱中的邮件必须先通过当地邮政支局,然后才能路由到另一个目的地。AS 内的内部路由器就像邮箱。他们将出站传输转发到 AS,然后 AS 使用 BGP 路由将这些传输发送到目的地。
上图说明了 BGP 的简化版本。在这个版本中,Internet 上只有六个 AS。如果 AS1 需要将数据包路由到 AS3,它有两种不同的选择:
跳到 AS2,然后跳到 AS3:
AS2 → AS3
或者跳到 AS6,然后跳到 AS5、AS4,最后跳到 AS3:
AS6 → AS5 → AS4 → AS3
在这个简化的模型中,决定似乎很简单。AS2 路由比 AS6 路由需要更少的跳数,因此它是最快、最有效的路由。现在假设有数十万个 AS,而跳数只是复杂路由选择算法的一部分。这就是互联网上 BGP 路由的现实。
互联网的结构在不断变化,新系统不断涌现,现有系统变得不可用。因此,每个 AS 都必须及时了解有关新路由和过时路由的信息。这是通过对等会话完成的,其中每个 AS 通过TCP/IP连接连接到相邻的 AS,以共享路由信息。使用此信息,每个 AS 都可以正确路由来自内部的出站数据传输。
这就是我们的类比的一部分崩溃的地方。与邮局分支机构不同,自治系统并不完全属于同一组织。事实上,它们通常属于相互竞争的企业。为此,BGP 路由有时会考虑业务因素。AS 通常会相互收费以通过其网络传输流量,并且访问价格可以作为最终选择的路由的因素。
谁操作 BGP 自治系统?
AS 通常属于 Internet 服务提供商 (ISP) 或其他大型组织,例如科技公司、大学、政府机构和科学机构。每个希望交换路由信息的AS必须有一个注册的自治系统号 (ASN)。互联网号码分配机构 (IANA) 将 ASN 分配给区域互联网注册管理机构 (RIR),然后由后者将它们分配给 ISP 和网络。ASN 是介于 1 和 65534 之间的 16 位数字和介于 131072 和 4294967294 之间的 32 位数字。截至 2018 年,全球约有 64,000 个 ASN 在使用。只有外部 BGP 需要这些 ASN。
外部BGP和内部BGP有什么区别?
使用外部 BGP (eBGP) 交换路由并通过 Internet 传输流量。自治系统还可以使用内部版本的 BGP 通过其内部网络进行路由,这称为内部 BGP (iBGP)。需要注意的是,使用内部 BGP 并不是使用外部 BGP 的要求。自治系统可以从许多内部协议中进行选择,以连接其内部网络上的路由器。
外部 BGP 就像国际航运。在国际上运送邮件时需要遵循某些标准和准则。一旦该邮件到达其目的地国家,它必须通过目的地国家的本地邮件服务才能到达其最终目的地。每个国家/地区都有自己的内部邮件服务,不一定遵循与其他国家/地区相同的准则。类似地,每个自治系统都可以有自己的内部路由协议,用于在自己的网络内路由数据。
BGP 缺陷以及如何解决这些缺陷
2004 年,一家名为 TTNet 的土耳其 ISP 意外地向其邻居通告了错误的 BGP 路由。这些路由声称 TTNet 本身是 Internet 上所有流量的最佳目的地。随着这些路线越来越远地扩展到更多的自治系统,发生了大规模的中断,造成了一天的危机,世界各地的许多人无法访问部分或全部互联网。
同样,2008 年,巴基斯坦一家 ISP 试图使用 BGP 路由阻止巴基斯坦用户访问 YouTube。然后,ISP 意外地向其相邻的 AS 通告了这些路由,并且该路由迅速在 Internet 的 BGP 网络中传播。这条路线将尝试访问 YouTube 的用户送入了死胡同,导致 YouTube 有几个小时无法访问。
这些是称为BGP 劫持的做法的示例,这种做法并不总是意外发生。2018 年 4 月,攻击者故意创建了错误的 BGP 路由来重定向原本用于亚马逊DNS服务的流量。通过将流量重定向到自己,攻击者能够窃取价值超过 100,000 美元的加密货币。
此类事件可能发生,因为 BGP 的路由共享功能依赖于信任,而自治系统隐式信任与其共享的路由。当对等点宣布不正确的路由信息(有意或无意)时,流量会到达不应该到达的地方,可能会产生恶意结果。
幸运的是,在保护 BGP 方面取得了一些进展。最值得注意的是,2008 年引入了称为资源公钥基础设施 (RPKI) 的路由安全框架。RPKI 使用称为路由源授权 (ROA) 的加密签名记录来验证允许哪个网络运营商使用 BGP 公布组织的 IP 地址。这确保只有授权方才能公布组织的前缀。
但仅有 RPKI 的存在是不够的。如果大型网络不部署 RPKI,它们可以传播大规模劫持攻击。目前,超过 50% 的顶级互联网提供商在一定程度上支持 RPKI,但要完全保护 BGP 还需要更多的支持。网络运营商可以通过实施 RPKI 和使用Cloudflare 路由泄漏检测等网络警报技术来保护他们的网络。此功能通过让客户知道未授权方何时通告其前缀来帮助防止 BGP 劫持攻击。推荐相关阅读:《什么是BGP线路》