站点图标 Linux-技术共享

自治系统 AS 与 BGP 协议

1 回顾和问题引入

在上一节中,我们对全球互联网物理上的拓扑连接有了概念上的认识。

那么各个网络是如何找到较优的线路进行连接,而不是随机漫步的呢?另外,不同 ISP 的网络,逻辑上是怎么互相适应,共同组成我们现在庞大的 “互联网” 呢?

今天我们将涉及 自治系统 AS 和 BGP 协议,在逻辑上对互联网的组成进行探究。

 

2 自治系统与连接关系

2.1 自治系统

自治系统或自治域(英文:Autonomous system, AS)是指在互联网中,一个或多个实体管辖下的所有 IP 网络和路由器的组合,它们对互联网执行共同的路由策略。AS 必须具有一个公开且正式登记的自治系统编号(ASN)。ASN 编号是受由互联网地址分派机构(IANA, Internet Assigned Numbers Authority)统一管理的。

图 自治系统全球分布示意 [1]

 

我们熟知的互联网是由一个又一个的自治系统 AS 组成的。我们平时可能会对设备的 IP 地址比较关注。但是,无论我们使用的家庭宽带还是机房网络,设备都会连接到 1 个 AS。我们可以这样作比喻,IP 地址就是我们具体地址的门牌号。AS 更像是我们的管辖邮局。而 ASN 更像是受到统一规定的邮政编码。

这样解释可能仍然有点抽象,这里我从不同的规模,举几个具体的例子。

 

所属类型 ASN 名称 IPv4 IP 数量 IPv6 IP 数量
运营商 ISP AS3356 LEVEL3 - Level 3 Parent, LLC, US 29,798,832 73,301,954,048
互联网企业 AS15169 GOOGLE - Google LLC, US 14,223,104 103,096,123,392
互联网企业 / 云服务商 AS45090 TENCENT-NET-AP - Tencent 4,906,496  
大学 / 研究机构 AS7377 UCSD - University of California, San Diego, US 12,855,552 5,368,709,120

表 不同规模的 AS 例子

 

从上表中,我们可以看出,不同类型的机构都可以是作为一个 AS 存在于互联网上。

 

另外,每个 AS 都会控制一定数量的 IP 地址空间。这样,我们如果想要达到某一 IP 地址,就有迹可循了(之后我们会介绍 BGP)。

 

2.2 Internet Exchange Point (IXP)

定义和解释

Internet 交换点 (IXP) 是一个物理位置,Internet 服务提供商 (ISP) 和 CDN 等 Internet 基础设施公司通过它相互连接。这些位置位于不同网络的 “边缘”,并允许网络提供商在他们自己的网络之外共享传输。通过在 IXP 位置内部存在,公司能够缩短来自其他参与网络的传输路径,从而减少延迟,缩短往返时间,并可能降低成本。(Cloudflare)

 

 

图 一种典型的 IXP 结构 [3]

IXP 的作用很好理解:在物理结构上,假如我们有 AS1、AS2、AS3,如果我们要形成直接的互联关系,最暴力的方式两两互联形成星型结构,然而这么做是不经济的。如果有一个专业的机房,给我们提供了一个稳定量大的集换节点,许多 AS 都去接入这家节点,我们就能很方便地和各个 AS 做直接流量交换。—— 当然,实际的接入会考虑到成本问题,可以灵活地制定和数个 AS 的流量交换策略。

IXP 工作在 OSI 网络模型第二层,协议栈和我们家用的路由器没什么两样,重点在其规模。

 

例:Equinix MI1 Nap

只看文字解释可能仍然没有具体概念。我们来看被称作 “美洲网络接入点” 的 NAP of the Americas 设施。

图 Miami 的 Equinix MI1 数据中心

 在靠近拉丁美洲的 Miami,7 英寸厚的钢筋混凝土墙内或支撑三个巨大白色天线罩的屋顶的建筑就是一个 Equinix 的大型数据中心。其是来自拉丁美洲和加勒比地区 (LA&C) 的运营商对等和交换流量的地方。拉丁美洲有大量的岛屿和热带雨林,促进各个运营商在这个 IX 设施中交换流量。(豆知识:其也托管 DNS 的 K root 之一。)

 

 

3 AS 规模和连接关系

3.1 AS/ISP 层级关系

考虑连接关系之前,我们还是要考虑一些技术世界外的关系。

我们已经知道,不同 AS 之间的规模可能是不同的,那么 AS 之间的流量流入和流出可能也是不同的。这意味着,在商业关系上,AS 之间可以分为也意味着不同的结算关系。

 

 

图:不同层级的互联网提供商的关系 (Image by Ludovic.ferre)

这里仍然举几个例子。

Tier1 级别的运营商一般是有海底光缆、覆盖大的巨型运营商,如 AS3356 Level 3,AS3491 PCCW 等。

Tier2 Tier3 级别的运营商向下分销。这就意味着流量是和商业行为绑定的。

 

3.2 AS 连接关系

有许多对 AS 拓扑关系的研究工作。这里介绍 Caida.org 对 AS 关系的定义。

Transit

即我们刚才提到的 Provider 和 Customer 关系。由上层 ISP 提供向其和互联网其余部分的连接。Customer 向 Provider 付费。

Peering

AS 之间通过私有专线或者接入 IX 的方式,形成对等的连接。AS 之间互相的流量是对等的,所以才产生这种不结算的关系。

 

3.3 小结

本节介绍了 AS 的定义和层级连接关系。那么,在各家 AS 形成了连接后,是如何让互联网的路由是如何交换,让流量能够以成本较小的方式到达目的地呢?这就涉及到下面讲到的 BGP 协议了。

 

3 BGP 协议

边界网关协议(英语:Border Gateway Protocol,缩写:BGP)是互联网上一个核心的去中心化自治路由协议。它通过维护 IP 路由表或 “前缀” 表来实现自治系统(AS)之间的可达性,属于矢量路由协议 (wikipedia)。

我们这之前提到,AS 控制一定数量的 IP。换句话解释,BGP 会将 AS 自身的 IP 路由信息发送给邻居连接的 AS,并接受其他 AS 传递的 BGP 信息,

我们本节会对 BGP 的原理进行了解,去理解 BGP 是如何让我们全世界可达的。具体对 BGP 协议有兴趣的读者可以参阅相关的更深入的资料。

BGP 也分为 EBGP 和 IBGP。我们这里重点讨论的是 AS 之间的 EBGP(运行于不同 AS 之间的 BGP 称为 EBGP)。

 

3.1 BGP 的报文类型

BGP 协议工作在应用层,使用 TCP。我们先来例行看一下协议的状态。

 

3.2 BGP 的 AS Path

我们来看一组 AS 的简化模型。

图 多条 AS 路径 (By Cloudflare)

上面我们提到了,AS 会控制一定数量的 IP。BGP 的报文中包含原始 AS 和其 IP 的 prefix 信息。

如图中 AS3,可以通过 BGP 得知通往 AS1 的路线。一种最简单的方式是通过跳数选择最近的连接路线。但是实际上,连接回 AS1 的路线会有许多许多条。AS 内部会使用一定策略去控制自己的路由表信息。

至此,我们可以理解,从一个 AS 连接到另一个 AS,不是一种随机探索的方式,而是知道路径和目的地的流量传送。

退出移动版