美文网首页
【HCIP】3BGP协议-2.4.2实验:BGP邻居关系的建立

【HCIP】3BGP协议-2.4.2实验:BGP邻居关系的建立

作者: 周山 | 来源:发表于2021-08-05 22:58 被阅读0次

    前期回顾

    我们上节,做了实验,现在再来梳理几个点,之前AS1和AS234进行互联线路(R1-->R2)中,我们并没有将R2的g0/0/0接口加入到IGP协议中,然后我们在R2、3、4路由配置ISIS协议,并且将R2和R4安置在AS234的BGP环境中,R3不运行BGP协议。AS之间走EBGP,以此来模拟EBGP、IBGP、IGP之间的联系。
    R1创建一条环回口路由,利用network发布到BGP,此时R1的BGP路由表中插入了一条关于该路由的最优标识,利用

    BGP的通告原则1:仅将自己的最优路由发布给邻居。

    R2的BGP路由表也可以查看到该路由。
    R2在路由表中查看有去往该路由下一跳的唯一路由,所以该路由在R2的BGP路由表中名副其实的也是带*>的有效最优路由,符合

    BGP通告原则2:通过EBGP获得的最优路由发布给所有BGP邻居。

    R4于此同时也可以收到R1产生的这条路由,但是这条路由在路由表中是否是最优的?还有待商榷。
    我们查看R4路由表发现BGP路由表中该路由的下一跳并不在IGP路由表中,因此它在存放时没有有效符号标识更谈不上最优,由此对外的表现就是当这条路由到R4在路由表中命中的时候,会查询该路由的下一跳,发现下一跳竟然还是10.1.12.1,查询路由表,并没有找到相关记录,下一跳不可达就无法转发。原来我们少了解了一个原则,从EBGP邻居传过来的路由传给IBGP邻居时,下一跳默认不变。为什么会出现这种情况呢,这和我们开头做的限制也有一定的关系,就是我们并没有将R2的g0/0/0接口加入到IGP协议中,如果我们把R2 g0/0/0加入到IGP协议中,那么同在IGP协议下的R4的g0/0/0就可以算出到R2g0/0/0的路由,这样就不会产生这个下一跳不可达的现象。其实在生产环境中也是如此,我们默认在EBGP的AS之间的互联口不加入IGP协议。
    解决方案1:
    路由不可达,我们就做一条路由让它可达,也就是在R4上将这个下一跳指向自己的g0/0/0接口配置的10.1.34.4,这样通过IBGP协议我们就可以轻松的进行路由选择。
    缺陷:BGP路由一般是十万条起步,这么庞大的路由我们无法进行逐条的手工配置。
    解决方案2:
    我们可以利用R2这个路由,针对IBGP邻居做一条next-hop-local

    [R2]bgp 234
    [R2-bgp]peer 4.4.4.4 next-hop-local 
    

    该命令仅对IBGP邻居生效,将从EBGP邻居得到的路由传递给指定的IBGP邻居时,下一跳修改为自身向该IBGP邻居发送BGP报文的源地址,
    再次查看R4、R5的BGP路由表,如预想的一般。


    图片.png
    图片.png

    我们看R2的路由,发现虽然R4收到了R2发过来的最优路由,但是并没有向R2再次发送,这样就避免了产生环路,!!!也就是

    BGP的通告原则3:通过IBGP获得的最优路由不会发布给其他的IBGP邻居

    图片.png

    继续我们的猜想,R4通过EBGP将最优的路由传递给了它的BGP邻居。R5上现在可以从BGP路由表中查到去往1.1.1.0的路由,而且下一跳也是对的。

    BGP路由传递给EBGP邻居时,下一跳自动修改为向该EBGP邻居发送BGP报文的源地址。

    此时我们以为现在总可以访问R1的环回口了吧,我们进行ping命令,wac为啥不通???
    我们往上查,看下R4是否可以ping通。R4此时也不可以,为什么会出现这个原因呢?
    我们看它的下一跳所在路由表的路由,发现了一切

    图片.png
    它是通过2.2.2.2转发,而2.2.2.2的路由指向了10.1.34.3,我们立即定位,知道了,R3并没有去往1.1.1.0的路由。这样很像我们之前的一个案例:路由黑洞
    图片.png
    回顾一下

    路由黑洞

    图片.png

    在这个拓扑图中,BGP传播路由是可以跨路由器传递的,A路由器可以将路由通过EBGP传递给B,B可以通过IBGP传递给D,因为B路由器到D路由器有运行OSPF协议,路由可达,D再次通过EBGP传递给E。
    但是C路由器上却没有A路由器100.0.o.o的路由,因为C路由器没有运行BGP协议。
    这样就会导致E路由器在回包的时候,将100.0.o.o的路由先发送给D,D继续转发给C,C直接丢弃。这就出现了BGP的路由黑洞。最终导致R3上没有去往1.1.1.0的路由。
    对的!路由黑洞了,这个时候我们会想起来,
    哦哦,我们需要进行

    BGP的通告原则4:BGP与IGP的同步

    我们在R2上做一个同步
    第一种方案,我们将BGP引入到IGP协议中,


    图片.png

    此时我们继续测试ping 1.1.1.1 发现还是不通,
    观察R4BGP的配置,发现其中有一个命令是,


    图片.png
    undo synchronization
    

    其实,同步功能在华为设备中一直都是关闭的状态,没有开启的命令,同步同步并不影响R4的BGP路由1.1.1.1传递给R5.

    此时我们在R5上也创建一个环回口

    [R5]int l0
    [R5-LoopBack0]ip add 5.5.5.5 24
    [R5-LoopBack0]q
    [R5]bgp 5
    [R5-bgp]network 5.5.5.0 24
    

    R4:与R1 的1.1.1.0一样,利用next-hop-local 将R4发往R2的下一跳改变,
    peer 2.2.2.2 next-hop-local
    isis协议中引入BGP
    [R4-isis-1]dis this
    [V200R003C00]

    isis 1
    is-level level-2
    network-entity 49.0004.0000.0000.0004.00
    import-route bgp

    向所有BGP邻居手动触发路由更新
    <R4>refresh bgp all export

    我们通过R5

    <R5>ping -a 5.5.5.5 1.1.1.1
    PING 1.1.1.1: 56  data bytes, press CTRL_C to break
    Reply from 1.1.1.1: bytes=56 Sequence=1 ttl=252 time=30 ms
    Reply from 1.1.1.1: bytes=56 Sequence=2 ttl=252 time=50 ms
    Reply from 1.1.1.1: bytes=56 Sequence=3 ttl=252 time=30 ms
    Reply from 1.1.1.1: bytes=56 Sequence=4 ttl=252 time=40 ms
    Reply from 1.1.1.1: bytes=56 Sequence=5 ttl=252 time=40 ms
    

    总结:

    1、同步功能只能通过bgp路由黑洞检测机制,但是并不是解决路由黑洞。
    2、这种方法目前已经被淘汰,如果BGP路由表产生振荡,会对IGP造成影响。
    第二种方案:
    我们将R2、R4上引入配置IGP配置取消

    [R2-isis-1]undo import-route bgp
    

    R4同

    [R2]bgp 234
    [R2-bgp]peer 3.3.3.3 as-number 234
    [R2-bgp]peer 3.3.3.3 connect-interface LoopBack 0
    [R2-bgp]peer 3.3.3.3 next-hop-l 
    

    R3\ R4自己配
    三条命令缺一不可


    图片.png

    总结:

    只要解决路由黑洞问题,BGP同步检查功能开启或者关闭无足轻重。
    我们再做个小测试,我们现在可以通过1.1.1.1 访问到5.5.5.5,
    是因为在几个BGP AS中,路由是通的,但是1.1.1.1 可以访问4.4.4.4 么?
    测试之后 发现不可以。为什么呢?因为在BGP AS:234中4.4.4.4并没有发布出去
    所以BGP路由访问的基本逻辑,你要是想别人能访问你,你就要把这条路由发布出去,然后再避免路由黑洞。我们发布出去,ping 4.4.4.4 1.1.1.1 还是不通,我们就需要自己再思考思考了

    相关文章

      网友评论

          本文标题:【HCIP】3BGP协议-2.4.2实验:BGP邻居关系的建立

          本文链接:https://www.haomeiwen.com/subject/gpcmvltx.html