边界网关协议

    作者:课课家教育更新于: 2017-03-27 16:33:37

      其实BGP还有挺多的内容没有讲到,因此我就在这里把它拿出来单独解析一下,以便大家更容易了解BGP。
      简介
      边界网关协议(BGP)是运行于 TCP 上的一种自治系统的路由协议。 BGP 是唯一一个用来处理像因特网大小的网络的协议,也是唯一能够妥善处理好不相关路由域间的多路连接的协议。 BGP 构建在 EGP 的经验之上。 BGP 系统的主要功能是和其他的 BGP 系统交换网络可达信息。网络可达信息包括列出的自治系统(AS)的信息。这些信息有效地构造了 AS 互联的拓朴图并由此清除了路由环路,同时在 AS 级别上可实施策略决策。
      BGP消息类型
      -- Open: 用于建立BGP对等体之间的连接关系
      -- Keepalive: 周期性地向BGP对等体发出Keepalive消息, 用来保持连接的有效性
      -- Update: 携带的是路由更新(删减、增加)信息
      -- Notification: 当BGP检测到错误状态时, 就向对等体发出Notification消息, 之后BGP连接会立即被关闭
      1.引言
      外部网关协议BGP称为边界网关协议,为什么外部网关不使用内部网关协议?主要是BGP使用的环境不同。主要因为一下两个原因:
      第一、 因特网的规模太大,使得AS之间路由选择非常困难。想一想如果运用OSPF需要建立一个非常大的数据库,这显然不现实。
      第二、 AS之间的路由选择必须考虑有关策略。比如安全问题,或者路径上的路由不允许其非该AS的数据报通过等等。
      所以BGP只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由。BGP采用路径向量路由选择协议,与距离向量协议和链路状态协议不同。
      2.BGP
      在配置BGP时,每一个自治系统的管理员要选择至少一个路由器作为该自治系统的“BGP发言人”。一个BGP发言人与其他AS的BGP发言人要交换路由信息,就要先建立TCP连接,然后在此连接上交换BGP报文以建立BGP会话,利用BGP交换路由信息。如下图:


    边界网关协议_TCP/IP_互联网技术_ICMP协议_课课家  这里的每个BGP发言人除了必须运行BGP协议外,还必须运行该自治系统所使用的内部网关协议,如OSPF或RIP。
      BGP所交换的网络可达性的信息就是要到达某个网络所经过的一系列自治系统。当BGP发言人相互交换了网络可达性信息之后,各BGP发言人就从收到的路由信息中找到到达各自治系统的较好路由。
      BGP发言人构造出来的自治系统连通图是树状结构,不存在回路,如下图:

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

    这里采用了路径向量信息所以可以有效避免兜圈子的现象。比如如果一个BGP发言人收到其他BGP发言人发来的路径通知,它就要检查一下本自治系统是否在此路径中。如果在此路径之中就不能采用这条路径。  这就可以看出,BGP交换的路由信息的结点数量的数量级是自治系统个数的量级,这样比自治系统中的网络数少很多。同时搜索正确的路径就是寻找正确的BGP发言人。
      3.BGP报文
      在BGP刚刚运行的时候,BGP的临站是交换整个的路由表。但以后只需要在发生变化时更新有变化的部分。这样做节省了网络带宽的消耗。BGP有四种报文格式:
      ①OPEN(打开)报文——用来与相邻的另一个BGP发言人建立关系,是通信初始化。
      ②UPDATE(更新)报文——用来通告某一路由的信息,以及列出要撤销的多条路由。
      ③KEEPALIVE(保活)报文——用来周期性的验证邻站的连通性(与TCP保活比较)。
      ④NOTIFICATION(通知)报文——用来发送检测到的差错。
      如果一个BGP发言人希望和另一个BGP发言人周期性交换信息,那么首先得建立关系,因为可能另一个BGP负载已经很重所以不希望建立关系。建立关系就发送OPEN报文,另外一个BGP回复KEEPALIVE报文。
      一旦关系建立就需要继续维护,维护就是发送KEEPALIVE报文。
      UPDATE报文可以撤销以前通知过的路径,也可以增加新的路径。
      4.BGP路由通告原则
      BGP在进行路由通告的时候,需要遵循以下原则:
      多条路径时,BGP Speaker只选最优的给自己使用(负载均衡和FRR除外)。
      BGP Speaker只把自己使用的路由(最优路由)通告给相邻体。
      BGP Speaker从EBGP获得的路由会向自己所有BGP相邻体通告(包括EBGP和IBGP)。
      BGP Speaker从IBGP获得的路由不向自己的IBGP相邻体通告(反射器除外)。
      BGP Speaker从IBGP获得的路由是否通告给自己的EBGP相邻体要根据IGP和BGP同步的情况来决定。
      当收到对端的refresh报文并且本端邻居支持refresh能力,BGP Speaker将把自己所 有BGP路由通告给对等体。
      GR过程中,主备倒换方在GR结束时BGP Speaker会把自己所有BGP路由通告给对等体。
      5.RIP、OSPF、BGP比较
      RIP使用UDP,OSPF使用IP,BRP使用TCP。这样做有何优点?为什么?RIP周期性与邻站交换信息而BGP为什么不这样做?
      RIP只和邻站交换信息,UDP虽不保证可靠交付,但UDP开销小,可以满足RIP的要求,并且由于使用UDP,RIP周期性地与邻站交换信息。来克服UDP不可靠的缺点。
      OSPF使用可靠的洪泛法,所以直接使用IP,好处就是灵活性好开销小。
      RIP需要交换整个路由表和更新信息,所以要保证正确,运用TCP,由于RIP使用TCP所以已经能够保证可靠交付,用不着继续周期性交互信息。
      关于BGP协议的几个要点我都在以上一一列出来讲解了,不知道对大家的学习是否有些许帮助呢?如果有什么内容没有讲到的,欢迎大家进行补充,课课家教育等着大家!

课课家教育

未登录

1