BGP 同步

IBGP:邻居的AS号和自身的AS号相同,建立的BGP邻居叫做IBGP邻居。
EBGP:邻居的AS号和自身的AS号不同,建立的BGP邻居叫做EBGP邻居。
Idle状态是BGP初始状态。在Idle状态下,BGP拒绝邻居发送的连接请求。也不会向邻居发送TCP syn,只有32s之后才会向邻居发送TCP syn 并且将邻居转为connect状态.
卡在idle状态的原因:本地没有去往邻居的路由。
在Connect状态下,BGP启动连接重传定时器(Connect Retry),等待TCP完成连接。
       如果TCP连接成功,那么BGP向对等体发送Open报文,并转至opensent状态。
       如果TCP连接失败,那么BGP转至Active状态。
       如果连接重传定时器超时,BGP仍没有收到BGP对等体的响应,那么BGP继续尝试和其他BGP对等体进行TCP连接,停留在Connect状态。
       如果TCP syn没有收到邻居的响应,将会卡在connect状态,总是尝试与BGP邻居建立TCP连接。
  常见卡在connect状态的原因:1、邻居没有启用BGP协议;
                                                        2、沿途路径存在流量过滤将TCP SYN拒绝了。
                                                        3、EBGP邻居建立没有配置多跳。

在Active状态下,BGP总是在识图建立TCP连接。
       如果TCP连接成功,那么BGP向对等体发送open报文,关闭连接重传定时器,并转至openSent状态。
       如果TCP连接失败,那么BGP停留在Active状态。
       如果连接重传定时器超时,BGP仍没有收到BGP对等体的响应,那么BGP转至Connect状态。
在OpenSent状态下,BGP等待对等体的open报文,并对收到的open报文中的AS号、版本号、认证码等进行检查。
       如果收到的open报文正确,那么BGP发送Keepalive报文,并转至openconfirm状态;
       如果发现收到的open报文有错,那么BGP发送Notification报文给对等体,并转至Idle状态;

Open关键报文内容:
Version  :用于标识当前的BGP版本,向下兼容。
My   AS :用于标识自身所处的AS,邻居的open报文中My as 要和本地配置的一致;
HoldTime :默认为180s,即Keepalive时间的3倍,双方不一致将会协商使用一个小的;
Router ID:用于标识自身的BGP Router ID ,不能和邻居冲突。


地址簇必须要有一种协商成功。
默认情况下在华为设备携带了3个可协商能力:1、IPV4单播路由功能; 2、路由刷新能力; 3、4字节AS号支持能力
<AR2>refresh bgp all import  //要求所有BGP邻居重新给自身发送BGP路由

在Openconfirm状态下,BGP等待Keepalive或Notification报文。
       如果收到Keepalive报文,则转至Established状态;
       如果收到Notification报文,则转至Idle状态。
在Established状态下,BGP可以和对等体交换UPdate、Keepalive、Route-refresh报文和Notification报文。
       如果收到正确的Update或者Keepalive报文,那么BGP就人为对端处于正常运行状态,将保持BGP连接;
       如果收到错误的Update或者Keepalive报文,那么BGP发送Notification报文通知对端,并转至Idle状态;
       Route-refresh报文不会改变BGP状态;
       如果收到Notification报文,那么BGP转至Idle状态。
       如果收到TCP拆链通知,那么BGP断开连接,转至Idle状态。
建立IBGP邻居关系建议使用环回口,目的是更加稳定。
默认建立EBGP邻居关系的时候,发送报文的TTL=1
默认建立IBGP邻居关系的时候。发送报文的TTL=255
BGP路由的产生方式:
     1、通过network的方式,将本地路由中的路由发布出去;
     2、通过import-route的方式,将其他协议的路由引入到BGP协议中;
     3、通过手动聚合的方式,产生一条聚合路由(汇总);
     4、通过自动聚合的方式,产生一条聚合路由。

如何得到BGP路由呢?
       IBGP邻居给我传递;
       EBGP邻居给我传递;
       自身产生BGP路由.
BGP路由通告原则:BGP只会将有效路由中的最优的BGP路由通告给邻居。
       自身产生的BGP路由通告给所有的BGP邻居;
       从IBGP邻居收到的路由,不会传递给IBGP邻居;(防环)
       从IBGP邻居收到的路由,会传递给EBGP邻居;
       从EBGP邻居收到的路由,会传递给IBGP邻居;
       从EBGP邻居收到的路由,会传递给EBGP邻居。
BGP的防环原则:
       AS内的防环使用IBGP水平分割机制(只传一跳),即从IBGP邻居收到的路由不会传递给另一个IBGP邻居。
       AS之间的防环原则:利用了BGP的路由属性,即BGP将路由发送给EBGP邻居的时候会将自身的AS号添加到as-path列表中;并且规定
                                         从EBGP邻居收到的路由如果携带AS号,则不接受该路由。

BGP下一跳属性的特点:
       1、自身产生的路由发送给所有BGP邻居的时候,下一跳自动修改;
       2、从EBGP邻居接受的路由发送给IBGP邻居的时候,下一跳不会自动修改;
       3、从EBGP邻居接受的路由发送给EBGP邻居的时候,下一跳自动修改;
       4、从IBGP邻居接受的路由发送给EBGP邻居的时候,下一跳自动修改;
       5、从IBGP邻居接受的路由不存在发送给IBGP邻居的情况(防环)。

[AR2-bgp]peer 4.4.4.4 next-hop-local  //针对邻居配置下一跳自身。                                      //只需要在AS的边界设备上,针对本AS内的IBGP邻居配置;                                      //自动修改,指的是记将路由传递给该邻居的时候,下一跳修改为自身与该建立邻居的接口IP。

路由黑洞:
       BGP同步:用于防止BGP路由黑洞问题;
       BGP同步机制:即,从IBGP邻居接收的路由,需要在IGP表中存在,才会发送给EBGP邻居,
                                 如果IGP表中不存在,则不会发送给EBGP邻居。

undo synchronization 关闭BGP与IGP的同步功能。默认关闭,且不可更改。

为什么不使用BGP同步解决路由黑洞问题呢?
        1、BGP同步并不能完全解决路由黑洞问题。
        2、出现了更好的解决方案:
              AS内部采用全互联的IBGP邻居架构,让所有路由器都运行BGP协议,每台路由器都能学到BGP路由,防止黑洞产生;
              在ASBR上将BGP路由引入到IGP协议中(该方法已被淘汰);
              在ASBR之间建立GRE隧道,解决路由黑洞问题;(节约成本)
              通过LSP隧道解决路由黑洞问题。


手机扫描二维码访问