1.引言

  外部网关协议BGP称为边界网关协议,为什么外部网关不使用内部网关协议?主要是BGP使用的环境不同。主要因为一下两个原因:

  第一、 因特网的规模太大,使得AS之间路由选择非常困难。想一想如果运用OSPF需要建立一个非常大的数据库,这显然不现实。

  第二、 AS之间的路由选择必须考虑有关策略。比如安全问题,或者路径上的路由不允许其非该AS的数据报通过等等。

  所以BGP只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由。BGP采用路径向量路由选择协议,与距离向量协议和链路状态协议不同。

  2.BGP

  在配置BGP时,每一个自治系统的管理员要选择至少一个路由器作为该自治系统的“BGP发言人”。一个BGP发言人与其他AS的BGP发言人要交换路由信息,就要先建立TCP连接,然后在此连接上交换BGP报文以建立BGP会话,利用BGP交换路由信息。如下图:

20130805101751348.jpeg


  这里的每个BGP发言人除了必须运行BGP协议外,还必须运行该自治系统所使用的内部网关协议,如OSPF或RIP。

  BGP所交换的网络可达性的信息就是要到达某个网络所经过的一系列自治系统。当BGP发言人相互交换了网络可达性信息之后,各BGP发言人就从收到的路由信息中找到到达各自治系统的较好路由。

  BGP发言人构造出来的自治系统连通图是树状结构,不存在回路,如下图:

20130805101751497.jpeg


  下图给出了一个BGP发言人交换路径向量的例子。自治系统AS2的BGP发言人通知主干网的BGP发言人:“要到达网络N1、N2、N3和N4可经过AS2。”主干网在收到这个通知之后就发出通知:“要到达网络N1、N2、N3和N4可沿路径(AS1,AS2)。”同理主干网还发出通知:“要到达网络N5、N6和N7可沿路径(AS1,AS3)。”这里采用了路径向量信息所以可以有效避免兜圈子的现象。比如如果一个BGP发言人收到其他BGP发言人发来的路径通知,它就要检查一下本自治系统是否在此路径中。如果在此路径之中就不能采用这条路径。

20130805101751297.jpeg


  这就可以看出,BGP交换的路由信息的结点数量的数量级是自治系统个数的量级,这样比自治系统中的网络数少很多。同时搜索正确的路径就是寻找正确的BGP发言人。

  3.BGP报文

  在BGP刚刚运行的时候,BGP的临站是交换整个的路由表。但以后只需要在发生变化时更新有变化的部分。这样做节省了网络带宽的消耗。BGP有四种报文格式:

  ①OPEN(打开)报文——用来与相邻的另一个BGP发言人建立关系,是通信初始化。

  ②UPDATE(更新)报文——用来通告某一路由的信息,以及列出要撤销的多条路由。

  ③KEEPALIVE(保活)报文——用来周期性的验证邻站的连通性(与TCP保活比较)。

  ④NOTIFICATION(通知)报文——用来发送检测到的差错。

  如果一个BGP发言人希望和另一个BGP发言人周期×××换信息,那么首先得建立关系,因为可能另一个BGP负载已经很重所以不希望建立关系。建立关系就发送OPEN报文,另外一个BGP回复KEEPALIVE报文。

  一旦关系建立就需要继续维护,维护就是发送KEEPALIVE报文。

  UPDATE报文可以撤销以前通知过的路径,也可以增加新的路径。

  4.RIP、OSPF、BGP比较

  RIP使用UDP,OSPF使用IP,BRP使用TCP。这样做有何优点?为什么?RIP周期性与邻站交换信息而BGP为什么不这样做?

  RIP只和邻站交换信息,UDP虽不保证可靠交付,但UDP开销小,可以满足RIP的要求,并且由于使用UDP,RIP周期性地与邻站交换信息。来克服UDP不可靠的缺点。

  OSPF使用可靠的洪泛法,所以直接使用IP,好处就是灵活性好开销小。

  RIP需要交换整个路由表和更新信息,所以要保证正确,运用TCP,由于RIP使用TCP所以已经能够保证可靠交付,用不着继续周期×××互信息。