什么是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路由问题”这一原因。