BGP之邻居关系建立

BGP邻居关系
前言:对于BGP而言,有以下两种邻居关系:
IBGP:指运行在同一个AS内部的BGP
EBGP:指运行在不同AS内部的BGP
BGP之邻居关系建立_第1张图片

  • 邻居关系配置实验(基于ensp)
    BGP之邻居关系建立_第2张图片
    ·进行实验,在进行实验前,如果在AS内进行IBGP关系建立,首先要保证IGP内部是可以互通的,ping的时候记得用ping -a 源地址 目的地址的形式来,因为我们要保证进行BGP关系建立的两个环回口是可以通信的。
    ·IBGP中通常我们是使用环回口去创建BGP关系的(当然使用直连接口也可以),因为环回口是一直UP的状态,比如现在如果链路出现问题了,但是我们由于有链路冗余的技术,又因为用的是环回口而不是直连接口,因此不会影响BGP关系。但是如果使用直连接口可能就会出现问题。
    在IBGP中进行指定的时候有一条指令不能忘记
    例如:Peer 2.2.2.2 connect-interface loopback 0 //代表的意思是如果去指定router id为2.2.2.2的路由器的话,出接口是loopback0
    BGP之邻居关系建立_第3张图片
    建立AR2与AR4的IBGP邻居关系
    ·考虑问题:如果AR4与AR5之间想要使用环回口创建EBGP可以吗?
    答案:当然我们不能考虑使用IGP让它们相连,因此我们可以使用静态路由去指定(不用缺省,直接指定精确即可),然后能连通了以后,我们采用在AR4以及AR5上,按照IBGP里面创建BGP关系的方式去创建,但是使用display bgp peer发现邻居关系迟迟没有extablished起来,原因是什么?因为TTL值。在IGB内部,如果创建BGP邻居,默认跳数为255跳,但是如果在EBGP下进行BGP关系创建,默认跳数为1跳,因此TTL为0时就会丢弃,解决方法如下:
    例如在AR5与AR5之间创建EBGP邻居关系:↓
    BGP多跳:
    例如在AR4上,多加一条配置
    peer x.x.x.x(所属AR5与AR4直连的接口地址) ebgp-max-hop 5 //EBGP跳数设置为5条,如果不填默认为最大255跳

【如果没有配置Router ID,BGP路由器会按一定规则自动选举Router ID,选举规则如下:
①路由器在它的所有LoopBack接口上选择数值最高的IP地址;
②如果没有LoopBack接口,路由器会在它的所有物理接口上选择数值最高的IP地址。】

建立EBGP邻居关系时,一般使用直连接口的IP地址;建立IBGP邻居关系时,一般使用Loopback接口的IP地址

BGP邻居关系建立
BGP之邻居关系建立_第4张图片

  • BGP通过报文的交互完成邻居建立、路由更新等操作,共有Open、Update、Notification、Keepalive和Route-refresh等5种报文类型。
    Open报文:是TCP连接建立后发送的第一个报文,用于建立BGP邻居之间的连接关系。BGP邻居在接收到Open报文并协商成功后,将发送Keepalive报文确认并保持连接的有效性。确认后,BGP邻居间可以进行Update、Notification、Keepalive和Route-refresh报文的交换。
    Update报文:用于在BGP邻居之间交换路由信息。Update报文可以发布多条属性相同的可达路由信息,也可以撤销多条不可达路由信息。
    一条Update报文可以发布多条具有相同路由属性的可达路由,这些路由可共享一组路由属性。所有包含在一个给定的Update报文里的路由属性适用于该Update报文中的NLRI(Network Layer Reachability Information)字段里的所有目的地(用IP前缀表示)。
    一条Update报文可以撤销多条不可达路由。每一个路由通过目的地(用IP前缀表示),清楚地定义了BGP路由器之间先前通告过的路由。
    一条Update报文可以只用于撤销路由,这样就不需要包括路径属性或者NLRI。相反,也可以只用于通告可达路由,就不需要携带撤销路由信息了。
    Notification报文:当BGP路由器检测到错误状态时,就向邻居发出Notification报文,之后BGP连接会立即中断。
    Keepalive报文:BGP路由器会周期性的向邻居发出Keepalive报文,用来保持连接的有效性。
    Route-refresh报文:Route-refresh用于在改变路由策略后请求对等体重新发送路由信息。

BGP路由器报文交互过程:Idle状态是BGP初始状态。在Idle状态下,BGP路由器拒绝邻居发送的连接请求。只有在收到本设备的Start事件后(设备开启BGP),BGP路由器才开始尝试与其邻居进行TCP连接,并转至Connect状态。
在Connect状态下,BGP路由器启动连接重传定时器(Connect Retry),等待TCP完成连接。
如果TCP连接成功,那么BGP路由器向邻居发送Open报文,并转至OpenSent状态。
如果TCP连接失败,那么BGP路由器转至Active状态。
如果连接重传定时器超时,BGP路由器仍没有收到邻居的响应,那么BGP路由器继续尝试与其邻居进行TCP连接,停留在Connect状态。
在Active状态下,BGP路由器总是在试图建立TCP连接。
如果TCP连接成功,那么BGP路由器向邻居发送Open报文,关闭连接重传定时器,并转至OpenSent状态。
如果TCP连接失败,那么BGP路由器停留在Active状态。
如果连接重传定时器超时,BGP路由器仍没有收到邻居的响应,那么BGP路由器转至Connect状态。
在OpenSent状态下,BGP路由器等待邻居的Open报文,并对收到的Open报文中的AS号、版本号、认证码等进行检查。
如果收到的Open报文正确,那么BGP路由器发送Keepalive报文,并转至OpenConfirm状态。
如果发现收到的Open报文有错误,那么BGP路由器发送Notification报文给邻居,并转至Idle状态。
在OpenConfirm状态下,BGP路由器等待Keepalive或Notification报文。如果收到Keepalive报文,则转至Established状态,如果收到Notification报文,则转至Idle状态。
在Established状态下,BGP路由器可以和邻居交换Update、Keepalive、Route-refresh报文和Notification报文。

你可能感兴趣的:(网络)