前言
前面介绍了RIP协议、OSPF协议,它们是内部网关协议,本文介绍外部网关协议,即AS之间使用协议即BGP协议。
1 BGP协议
BGP协议是外部网关协议,目前使用最多的版本是BGP-4,通常简写为BGP。
由于互联网规模太大,使得自治系统AS之间路由选择非常困难。目前在互联网主干路由器中,一个路由表的项目早已经超过5万个网络前缀,如果使用链路状态协议,则每个路由器必须维持一个很大的链路状态数据库,对于这个大的主干网使用Dijkstra算法计算最短路径需要花费的时间会太长。可见,对于自治系统AS之间的路由选择,要使用OSPF协议那样代价作为度量来寻找最佳路由是不现实的。
比较合理的做法是在自治系统之间交换“可达性”信息。例如,告知相邻路由器:达到目的网路N可经过自治系统ASx。
基于上述情况,外部网关协议BGP 只能是力求寻找一条能够达到目的网络且比较好的路由,而并非最佳路由。BGP采用了路径向量路由选择协议。
2 BGP特点
(1) 和谁交换:与其他AS的邻站BGP发言人交换信息。
在配置BGP时,每一个自治系统的管理员要选择至少一个路由器作为该自治系统的“BGP发言人”,这里所谓的发言人就是该路由器可以代表整个自治系统与其他自治系统交互路由信息。BGP发言人往往就是BGP边界路由器。
(2) 交换什么信息:交换的网络可达性的信息,即要达到某个网络所要经过的一系列AS。
当BGP发言人相互交换了网络可达性信息后,各BGP发言就根据所采用的策略从收到的路由信息中找出到达各自治系统的较好路由。
(3) 多久交换:发生变化时更新有变化的部分。
在BGP刚运行时,BGP的邻站是交换整个的BGP路由表。但是以后只需要在发生变换时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销都有好处。
如对于上图,自治系统AS2的BGP发言人通知主干网的BGP发言人:“要到达网络N1、N2、N3和N4”可以经过AS2。主干网在收到这个通知后,就发出通知:“要达到N1、N2、N3和N4可沿路径(AS1,AS2)。”同理,主干网还可发出通知:“要到达网络N5、N6、N7可沿路径(AS3,AS2,AS1)”
从上面的讨论可以看出,BGP协议交换路由信息的节点数量级是自治系统个数的量级,这就比自治系统中的网络数少很多。要在许多自治系统之间寻找一条较好的路径,就是寻找正确的BGP发言人(或边界路由器),而在每个自治系统中BGP发言人的数目就很少。
此外,BGP支持无分类域间路由选择CIDR,因此BGP路由表中包括目的网络前缀,下一跳路由器,以及达到该目的网络所要经过的自治系统序列。
4 BGP的四种报文
一个BGP发言人与其他自治系统中的BGP发言人要交换信息,首先需要建立TCP连接(端口号179),然后在此连接上交换BGP报文以建立BGP会话,利用BGP会话交换路由信息。
所以,BGP协议是应用层协议,借助TCP传送。
四种报文:
(1) OPEN(打开)报文:用来与相邻的另一个BGP发言人建立关系,并认证发送方。
两个邻站数据不同的AS,其中一个邻站打算和另一个邻站定期交换路由信息,就必须发送一个OPEN报文,如果邻站接受(如果邻站路由器已经负荷很重可能就会拒绝),就用KEEPALIVE报文响应。这样,两个BGP发言人的邻站关系就建立。
(2) UPDATE(更新)报文:通告新路径或撤销原路径。
UPDATE报文是BGP协议的核心内容,BGP发言人可以用UPDATE报文撤销它以前曾经通知过的路由,也可以宣布增加的新的路由。
(3) KEEPALIVE(保活)报文:在无UPDATE时,用来周期性证实邻站的连通性,也作为OPEN的确认。
一旦邻站关系建立,就要维持这种关系的建立。为此,两个BGP发言人彼此要周期性地交换保活报文。保活报文很小,不会造成太大的网络开销。
(4) NOTIFICATION(通知)报文:用来发送检测到的错误,或者用于关闭连接。
如果接收到的一个报文有问题,就可以使用通知报文告知发送方。
BGP可以很容易的解决距离向量路由选择算法中的“坏消息传得慢”的问题。当某个路由器或链路出故障时,由于BGP发言人可以从不止一个邻站获得路由信息,因此很容易选择出新的路由。
5 三种路由协议比较
RIP是一种分布式的基于距离向量的内部网关路由选择协议,通过UDP报文来交换路由信息,是应用层协议。
OSPF是一种基于链路状态协议的内部网络路由选择协议,交换的信息量大,所以不使用传输层协议,而直接采用IP数据报传送,是网络层协议。
BGP是一个基于路径向量协议的外部网关协议,在不同的自治系统之间交换路由协议,采用TCP报文交换路由协议,是应用层协议。