BGP(边界网关协议)小记

BGP的概念

BGP(Border Gateway Protocol)的中文名为边界网关协议。维基百科给出的定义是:

Border Gateway Protocol (BGP) is a standardized exterior gateway protocol designed to exchange routing and reachability information among autonomous systems (AS) on the Internet. The protocol is classified as a path vector protocol. The Border Gateway Protocol makes routing decisions based on paths, network policies, or rule-sets configured by a network administrator and is involved in making core routing decisions.
—— Border Gateway Protocol - Wikipedia

简单来说,BGP是使互联网生效的一种路由方法,是互联网的一个核心的自治路由协议。它的目的是去中心化,以达到各个网络自治。
这里就需要引出几个相关的概念:

BGP的作用

早期的互联网只是一个很小范围的网络,各个网络节点之间的通信量非常少,路由基本为静态的。但随着网络的不断扩大,互联网合并了越来越多的网络,这就需要一个动态的路由系统,于是EGP应运而生,它基于树状(即分层)拓扑结构。

在这种网络结构中,假若D或E要到达F或G,必须经过B→A→C。

而后随着互联网的继续扩展,跟踪从一个网络到另一个网络的所有路由变得越来越困难,解决方案是过渡到自治系统(AS)架构,在这种类型的网络体系结构中,每个自治系统控制一组连接的路由前缀,这些路由前缀表示一系列IP地址。然后由它确定网络内部的路由策略。
这种功能架构的出现使EGP的缺点变得非常明显,它的分层结构阻碍了可伸缩性,使其难以以有效的方式连接新网络。因此,有必要定义一个新的外部路由协议,该协议将提供增强和可扩展的功能。于是在1989年6月,该新路由协议的第一个正式版本被称为“边界网关协议”,即BGP协议。

每个BGP发言人(Peer)都以网络前缀声明的形式与其相邻的对等方交换路由信息。这样,一个AS无需连接到另一个AS即可知道其网络前缀。BGP决策机制会分析所有数据,并将其对等节点之一设置为下一站,以转发特定目的地的数据包。每个对等方管理一个表,其中包含它对每个网络了解的所有路由,并将该信息传播到其相邻的自治系统。这样,BGP允许AS从其相邻的自治系统收集所有路由信息,并进一步广播该信息。每个对等方都在其自己的自治系统内部内部传输信息。

这里可以举个例子来说明:

友人A组建了一个网络节点,他想要让这个节点与互联网取得联系,只需要通过路由器的NAT(Network Address Translation)将节点的私网IP转换成ISP(Internet Service Provider,互联网服务提供商)提供的公网IP,设置ISP为默认路由地址,把所有的IP包发送给ISP,进而发送到互联网。

友人A想要通过互联网与这个网络节点取得联系,他需要通过端口转发(Port Forwarding)将这个节点的一个端口映射到公网IP的一个端口,这部分路由工作是在节点处的路由器中完成的。

这时引出了2个问题:

  1. 节点每开放一个端口都需要映射一次。
  2. 公网IP的端口是有限的(0-65535)。

于是为了解决问题,友人A直接向ISP申请了一些公网IP给这个节点使用,于是通过互联网访问这个节点只需要直接访问ISP给这个节点分配的IP即可。
这时又引出2个问题:

  1. 节点所使用的是ISP分配的公网IP地址,若需要与互联网取得联系,只能使用ISP的路由。
  2. 从其它ISP接入互联网的用户想要访问这个节点,只能由这个节点所接入ISP的路由指向节点,相当于经过了多个ISP。

于是为了解决新的问题,友人A直接向IANA(Internet Assigned Numbers Authority,互联网数字分配机构)申请了自己的IP池,并且申请了属于自己的AS。于此同时,友人A另外买了其它的ISP线路接入自己的AS。这样即使是原先的ISP不幸断线了,也可以通过新买的ISP线路接入互联网。

这时又又引出2个问题:

  1. 原先的和新接入的ISP并不知道友人A所申请的IP。
  2. 友人A的AS的路由应该设置到原先的ISP还是新的ISP?

于是,友人A需要用到BGP了,通过BGP将自己AS中的的IP与路由信息广播给ISP与其它AS。与EGP不同的是,在全网状拓扑中,节点之间有许多相互可达的路径。它的工作原理是基于路径矢量协议(Path Vector Protocol)实现的,所有访问友人A网络的用户,都会通过自己所处AS的路由表,根据广播信息建立最优的路径连接。

Top