7*24小时值班咨询手机:15101073985(微信同号)   
CCIE
当前位置:网站首页>CCIE
思科认证培训知识点BGP Synchronization
发布日期:2019-09-11 10:37:41 发布者:
    BGP邻居之间的通信与交流运行在TCP的基础上,在两个节点之间,只要网络是通的,就能够建立TCP建立,网络的连通,可以是任何IGP路由协议,甚至是静态路由,总之,只要网络是通的,TCP连接就一定能够建立起来。只要让两台路由器之间连通,保证TCP能够正常连接,就能够保证BGP的通信。在一个AS中,除了需要建立BGP连接之外,同时还需要运行IGP协议,其中运行BGP的目的是为了在大型网络中传递庞大的路由表或路由信息,而运行IGP协议的目的可想而知,并不是为了传递庞大的路由信息,在AS中运行IGP的根本目的是为了让BGP路由器之间能够建立TCP连接,从而为BGP的通信服务。因此可以看出,BGP就像是一辆运货的卡车,BGP的路由就是卡车要运的货,而IGP协议就是为了在站与站之间铺平道路,如果没有IGP去让道路连通,那么BGP就无法在站与站之间运送货物。

    因为BGP在建立邻居时,BGP的源地址可以是任意地址,这些地址可以不是直连的,只要是能通信的,能建立TCP连接即可。当BGP在向邻居发送流量时,只要将流量发往邻居的对端地址,因为邻居的地址并不一定是直连的,所以要找到去往邻居地址的路径,可能需要查询IGP路由表,因为IGP为BGP的通信与连接提供了保证。由此可见,BGP要将数据发给邻居,BGP在查询去往邻居的路径时,采用的是递归查询,BGP查询去往邻居的过程中,可能要多次查询IGP路由表,只要在IGP路由表中找到了去往邻居地址的相应路径或相应下一跳,那么就会将数据发给这个下一跳。


思科认证培训


    在上图的网络中,R1与R4建立eBGP连接,R3与R5建立eBGP连接,而R1与R3建立iBGP连接。在R1与R3建立iBGP连接时,R1通过目标地址3.3.3.3找到邻居R3,R1的BGP源地址为1.1.1.1,而R3也通过目标地址1.1.1.1找到邻居R1,R3的BGP源地址为3.3.3.3,为了让1.1.1.1和3.3.3.3能够正常通信,从而建立TCP连接,R1、R2、R3之间启用了IGP协议OSPF,OSPF的目的只是为了使1.1.1.1能够与3.3.3.3通信,并不传递AS中庞大的路由信息。

    当AS 10中的R4将网段10.1.1.0/24通告给AS 20中的R1后,因为R1与R3之间是iBGP邻居,所以R1将路由10.1.1.0/24传递给R3,最终R3将路由10.1.1.0/24传递给AS 30中的R5。当R5将目的地为10.1.1.0/24的流量发给R3时,R3在查询路由表后得知,去往10.1.1.0/24的数据包需要发给iBGP邻居1.1.1.1才能够到达,于是R3便执行递归查询,查询如何去往1.1.1.1,正因为R1与R3之间的通信是靠OSPF提供的,所以R3得知去往1.1.1.1必须将数据包交给R2,即交给下一跳23.1.1.2,因为R2只运行了OSPF为BGP服务,所以R2没有BGP的路由10.1.1.0/24,当R2发现数据包的目标地址为10.1.1.0/24后,只能将数据包全部丢弃,这就类似于路由黑洞。

    从以上情况中可以看出,当BGP从iBGP收到路由时,因为邻居之间可能跨越了多台IGP路由器,所以BGP在将数据包发往目的地时,通常会发给一台只运行了IGP的路由器,而只运行IGP的路由器并没有BGP的路由,因而最终导致数据包丢失,造成路由黑洞。要杜绝此类问题的发生,其实答案很明了,就是让AS中只运行IGP的路由器同时也拥有BGP的路由表即可。由于以上原因,在BGP路由传递中,有以下一条规则:当BGP要将从iBGP邻居学习到的路由信息传递给其它邻居之前(这个邻居通常是eBGP邻居),这些路由必须在IGP路由表中也能学到,否则认为此路由无效而不能发给其它邻居。

    此规则称为iBGP与IGP路由同步。

    在上图环境中,在R3将从iBGP邻居R1学习到的路由传递给eBGP邻居R5之前,必须确定这条路由在自己的IGP路由表中也存在,否则不使用该路由。要查看路由在IGP路由表中是否存在,使用命令show ip route即可。

    注意,只有从iBGP邻居学习到的路由,才受iBGP与IGP路由同步规则的限制,如果路由是从eBGP邻居学习到的,则不受此规则限制,并且此规则可以手工开启或关闭。

    BGP 同步默认是开启的,在IOS 12.2(8)T 以及之后的版本默认都是关闭的。

微信