文章目录

  • 1 回顾和问题引入
  • 2 自治系统与连接关系
  • 2.1 自治系统
  • 2.2 Internet Exchange Point (IXP)
  • 3 AS规模和连接关系
  • 3.1 AS/ISP层级关系
  • 3.2 AS连接关系
  • 3.3 小结
  • 4 BGP协议
  • 4.1 BGP的报文类型
  • 4.2 BGP 的AS Path
  • 参考资料


1 回顾和问题引入

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

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

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

2 自治系统与连接关系

2.1 自治系统

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

bgp as 私网 bgp/asn_网络


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

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

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

bgp as 私网 bgp/asn_运维_02


表1 不同规模的AS例子

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

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

2.2 Internet Exchange Point (IXP)

定义和解释

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

bgp as 私网 bgp/asn_运维_03


图2 一种典型的IXP结构

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

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

例:Equinix MI1 Nap

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

bgp as 私网 bgp/asn_IP_04


图3 Miami的Equinix MI1 数据中心

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

3 AS规模和连接关系

3.1 AS/ISP层级关系

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

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

bgp as 私网 bgp/asn_自治系统_05


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

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

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

3.2 AS连接关系

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

  • Provider和Customer
    即提供者与消费者的关系。商业关系上,是Customer向Provider付费。Customer为了连接更广泛的网络,会通过Provider访问互联网的其余部分(后文说的Transmit)
  • Customer和Provider
    即消费者与提供者的关系。商业关系上,是Provider向Customer收费。Provider向Customer提供更广泛的互联网访问。
  • Peer 和 Peer
    两家AS往往流量规模相当,他们不互相结算流量。这个连接关系只交换两家AS的内部流量。
  • Transit
    即我们刚才提到的Provider和Customer关系。由上层ISP提供向其和互联网其余部分的连接。Customer向Provider付费。
  • Peering
    AS之间通过私有专线或者接入IX的方式,形成对等的连接。AS之间互相的流量是对等的,所以才产生这种不结算的关系。

3.3 小结

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

4 BGP协议

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

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

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

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

4.1 BGP的报文类型

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

  • Open(code 1):TCP连接建立之后,BGP发送的第一个包。
  • Update(code 2):交换BGP route table
  • Notification(code 3):出错时发送的消息。
  • Keepalive(code 4):用来保持BGP连接。

4.2 BGP 的AS Path

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

bgp as 私网 bgp/asn_运维_06


图5 多条AS路径(By Cloudflare)

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

  • BGP报文中会描述一组AS Path,我们可以将它理解为记录一组路由顺序的矢量,用于表达可用的路径。
  • 每个AS接受了邻居的BGP通告后,会将自己加入到AS Path中,再去宣告到他的邻居节点。
  • 为了避免产生AS回环,如果BGP中的AS Path包含自己的AS号码,不会再转发这条报文。

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

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