7.6 BGP
BGP(Border Gateway Protocol),边界网关协议,是用于连接不同组织机构(或者说不同自治系统)的一种协议,其属于EGP(外部网关协议),我们在7.2节中了解过。
更具体一些,BGP主要用于ISP之间相连接的部分。
只有BGP、RIP、OSPF共同进行路由控制,才能够进行整个互联网的路由控制。
首先要说明的是,BGP作为上层EGP的协议之一,其不像作用于下层IGP的RIP与OSPF一样是利用IP的网络地址部分进行路由控制,而是放眼于整个互联网进行路由控制。
BGP的路由控制表有网络地址和下一站的路由器组来表示,不过他会根据所要经过的AS个数进行路由控制。
ISP、区域网络等会将每个网络编配成一个个自治系统进行管理。它们为每个自治系统分配一个16比特的AS编号(该编号仍由各国的NIC组织进行管理)。BGP就是根据这个编号进行相应的路由控制。
有了AS编号的域,相当于一个独立的“国家”。AS代表可以决定AS内部的网络运营和相关决策,与其他AS项链的时候,像一个外交官一样签署合约后再进行连接(或者对接Peering)。
如下图所示,为了使AS1和AS3之间可以进行通信,需要有AS2或者AS4与AS5组合起来的两者中之一,进行数据中转(或者转接Transit)才能够实现。而两者是否愿意中转也是由自己决定的。
接下来,我们假设它们两者都是愿意中转的,详细介绍BGP协议。
图中可见,根据BGP交换路由控制信息的路由器叫做BGP扬声器,其需要与所有的AS建立对等的BGP连接,才可以在AS之间交换BGP信息。且一个AS内部有多个BGP扬声器。为了使AS内部可以交换BGP信息,就需要建立BGP连接。
BGP中数据包送达目标网络时,会生成一个中途经过的所有AS的编号列表。这个表格叫做AS路径信息访问列表(AS Path List)。如果针对同一个目标地址出现多条路径时,BGP会从该列表中选择一个较短的路由。
读到这里应该能有所发觉,BGP使用AS作为度量单位。让我们回顾一下,RIP的度量为路由器个数,OSPF中则为成本,即每条链路的总代价。BGP虽然基于AS之间的合约进行数据包转发,但是仍要遵循各个AS之间签约的细节进行更细烈度的路由选择。
AS路径信息访问列表中,不仅包含转发方向的距离,还包括途径所有AS的编号,因此不可以成为距离向量型协议。此外,网络构造仅用一元化(AS编号)表示,也不能算作链路状态型协议。像BGP这种根据所要经过的路径信息访问列表进行路由控制的协议属于路径向量(Path Vector)型协议
。让我们再回顾一下,距离向量型的RIP因为无法检测出环路,所以可能发生无限计数的问题。而路径向量型则类似链路状态型,由于可以检测出环路,避免了无限计数的问题,令网络更容易进入一个稳定的状态。同时,其还具有支持**策略路由(指发送数据包时,可以选择或指定多要通过的AS的意思)**的优势。
整个过程如下图所示:
本篇小结
本篇介绍的是属于EGP的边界网关协议,用于控制不同AS之间的路由信息。
根据BGP交换路由控制信息的路由器叫做BGP扬声器,其需要与所有的AS建立对等的BGP连接。
BGP属于路径向量协议,其使用AS作为度量单位。数据包在送达目标网络时,会生成一个中途经过所有AS的编号列表,也称为AS路径信息访问列表,BGP会从中选择一条较短的路由,用以生成路由控制表。
另外,路径向量型协议可以检测出环路,可以避免无限计数的问题,网络更容易进入一个稳定的状态,同时支持策略路由。
不过本篇仍有一些问题没有交代清楚,比如BGP是否犹如OSPF一样可以更新AS的状态,发送包又是如何得知到达目标网络的所有路径的等。但是AS也不像网络一样,会经常出现“掉线”的问题,所以这些问题就待我阅读更为深刻的书籍后做出解答,或者愿意抢先一步了解的同学给出回复。