• BGP cluster-id


    iBGP之间只可以发送自身产生的前缀信息,不可以转发接受自其他iBGP对等体的前缀信息,这是BGP的防环机制。
    解决IBGP间路由发送的限制一般有三种方法:
    1.       建立full-mesh的对等体连接
    2.       建立联盟
    3.       建立RR(路由反射器)
     
    在RR中引入了originator-id和cluster-id这两个属性来防止环路。
    Originator是指产生首发该路由的路由器的RID,cluster-id可以手工配置,也可以有系统默认生成(RR的RID)。
    系统为RR默认配置的cluster-id就是RR的RID。这样,当一个系统中有多个RR时,他们是同簇的。不同簇的RR会以一般的RR与非客户端对等体的反射原则来传递路由信息。
    那么,如果同一级别的RR拥有相同的cluster-id,那么,他们之间就不会反射路由信息了!
     
    下面的试验讨论的是同一个AS中,有多个同级RR时,路由传递的一些特性。
     
    拓扑如下:

    R1,R2,R3,R4在同一个AS中,其中R1和R2作为RR,R3,R4作为客户端对等体被两个RR共同拥有,R3与R4之间没有建立对等体。
     
    基本配置:
    R1
    R1#sh ip int b
    Interface                  IP-Address      OK? Method Status                Protocol
    FastEthernet0/0            unassigned      YES manual up                    up      
    FastEthernet0/0.12         12.1.1.1        YES manual up                    up      
    FastEthernet0/0.13         13.1.1.1        YES manual up                    up      
    FastEthernet0/0.14         14.1.1.1        YES manual up                    up      
    Loopback0                  10.1.1.1        YES manual up                    up      
    。。。。(omit)
     
    R1#sh run | b router 
    router bgp 1
     no synchronization
     bgp router-id 1.1.1.1
     bgp log-neighbor-changes
     network 10.1.1.0 mask 255.255.255.0
     neighbor 12.1.1.2 remote-as 1
     neighbor 13.1.1.3 remote-as 1
     neighbor 13.1.1.3 route-reflector-client
     neighbor 14.1.1.4 remote-as 1
     neighbor 14.1.1.4 route-reflector-client
     no auto-summary
     
    R2
    R2#sh ip int b
    Interface                  IP-Address      OK? Method Status                Protocol
    FastEthernet0/0            unassigned      YES manual up                    up      
    FastEthernet0/0.12         12.1.1.2        YES manual up                    up      
    FastEthernet0/0.23         23.1.1.2        YES manual up                    up      
    FastEthernet0/0.24         24.1.1.2        YES manual up                    up      
    Loopback0                  20.1.1.1        YES manual up                    up      
    ……(omit)
     
    R2#sh run | b router 
    router bgp 1
     no synchronization
     bgp router-id 2.2.2.2
     bgp log-neighbor-changes
     network 20.1.1.0 mask 255.255.255.0
     neighbor 12.1.1.1 remote-as 1
     neighbor 23.1.1.3 remote-as 1
     neighbor 23.1.1.3 route-reflector-client
     neighbor 24.1.1.4 remote-as 1
     neighbor 24.1.1.4 route-reflector-client
     no auto-summary
     
    R3
    R3#sh ip int b
    Interface                  IP-Address      OK? Method Status                Protocol
    FastEthernet0/0            unassigned      YES manual up                    up      
    FastEthernet0/0.13         13.1.1.3        YES manual up                    up      
    FastEthernet0/0.23         23.1.1.3        YES manual up                    up        
    Loopback0                  30.1.1.1        YES manual up                    up      
    …..(omit)
     
    R3#sh run | b router 
    router bgp 1
     no synchronization
     bgp router-id 3.3.3.3
     bgp log-neighbor-changes
     network 30.1.1.0 mask 255.255.255.0
     neighbor 13.1.1.1 remote-as 1
     neighbor 23.1.1.2 remote-as 1
     no auto-summary
     
    R4配置与R3基本一致,略。
     
    1.
    看看R1向R2反射了那些路由
    R1#sh ip b nei 12.1.1.2 advertised-routes 
    BGP table version is 9, local router ID is 1.1.1.1
    Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
                  r RIB-failure, S Stale
    Origin codes: i - IGP, e - EGP, ? - incomplete
     
       Network          Next Hop            Metric LocPrf Weight Path
    *> 10.1.1.0/24      0.0.0.0                  0         32768 i
    *>i30.1.1.0/24      13.1.1.3                 0    100      0 i
    *>i40.1.1.0/24      14.1.1.4                 0    100      0 i
     
    切到R2上,选取一条路由来研究,比如选了30.1.1.0/24这条路由
    R2#sh ip b 30.1.1.0 
    BGP routing table entry for 30.1.1.0/24, version 8
    Paths: (2 available, best #1, table Default-IP-Routing-Table)   #选取1号来源为最佳路由
      Advertised to non peer-group peers:
      12.1.1.1 24.1.1.4     #R2将这条前缀反射给了非对等体组成员R1和R4
      Local, (Received from a RR-client)
        23.1.1.3 from 23.1.1.3 (3.3.3.3)
          Origin IGP, metric 0, localpref 100, valid, internal, best
      Local
        13.1.1.3 (inaccessible) from 12.1.1.1 (1.1.1.1)
          Origin IGP, metric 0, localpref 100, valid, internal
          Originator: 3.3.3.3, Cluster list: 1.1.1.1   #两个RR防环属性属性
    R2收到两条关于30.1.1.0/24的更新,一条是来自于R3的,一条是来自于R1的。
     
    2.
    下面我们在R2上打开debug,然后在R1上软重启,看看路由更新的发送情况。
    R2#deb ip b up
    BGP updates debugging is on
    R2#
    *Mar  1 00:25:08.195: BGP(0): 12.1.1.1 rcvd UPDATE w/ attr: nexthop 12.1.1.1, origin i, localpref 100, metric 0
    *Mar  1 00:25:08.195: BGP(0): 12.1.1.1 rcvd 10.1.1.0/24...duplicate ignored
    *Mar  1 00:25:08.199: BGP(0): 12.1.1.1 rcvd UPDATE w/ attr: nexthop 14.1.1.4, origin i, localpref 100, metric 0, originator 4.4.4.4, clusterlist 1.1.1.1
    *Mar  1 00:25:08.199: BGP(0): 12.1.1.1 rcvd 40.1.1.0/24...duplicate ignored
    *Mar  1 00:25:08.199: BGP(0): 12.1.1.1 rcvd UPDATE w/ attr: nexthop 13.1.1.3, origin i, localpref 100, metric 0, originator 3.3.3.3, clusterlist 1.1.1.1
    *Mar  1 00:25:08.199: BGP(0): 12.1.1.1 rcvd 30.1.1.0/24...duplicate ignored
    如上所示,发送了三条更新。
     
    3.
    接下来在R1和R2上手动配置相同的cluster-id(前面说过了,默认情况下的cluster-id就是RR的RID)
    R1(config)#router b 1
    R1(config-router)#bgp clus
    R1(config-router)#bgp cluster-id 12.1.1.1
     
    R2(config)#router b 1
    R2(config-router)#b clus
    R2(config-router)#b cluster-id 12.1.1.1
     
    4.
    再来看看R1向R2发送了哪些更新
     
    R1#sh ip b nei 12.1.1.2 ad
    BGP table version is 9, local router ID is 1.1.1.1
    Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
                  r RIB-failure, S Stale
    Origin codes: i - IGP, e - EGP, ? - incomplete
     
       Network          Next Hop            Metric LocPrf Weight Path
    *> 10.1.1.0/24      0.0.0.0                  0         32768 i
    *>i30.1.1.0/24      13.1.1.3                 0    100      0 i
    *>i40.1.1.0/24      14.1.1.4                 0    100      0 i
     
    跟以前一样!
    是不是上面的命令不起作用呢?
    再来看看R2的路由表
    R2#sh ip b 
    BGP table version is 9, local router ID is 2.2.2.2
    Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
                  r RIB-failure, S Stale
    Origin codes: i - IGP, e - EGP, ? - incomplete
     
       Network          Next Hop            Metric LocPrf Weight Path
    *>i10.1.1.0/24      12.1.1.1                 0    100      0 i
    *> 20.1.1.0/24      0.0.0.0                  0         32768 i
    *>i30.1.1.0/24      23.1.1.3                 0    100      0 i
    *>i40.1.1.0/24      24.1.1.4                 0    100      0 i
     
    如上所示,并没有R1向它发送更新。这时还是要通过debug来看看
     
    R2#deb ip bgp up
    BGP updates debugging is on
    R2#
    *Mar  1 00:35:02.671: BGP(0): 12.1.1.1 rcvd UPDATE w/ attr: nexthop 12.1.1.1, origin i, localpref 100, metric 0
    *Mar  1 00:35:02.671: BGP(0): 12.1.1.1 rcvd 10.1.1.0/24...duplicate ignored
    *Mar  1 00:35:02.675: BGP: 12.1.1.1 RR in same cluster. Reflected update dropped
    *Mar  1 00:35:02.675: BGP(0): 12.1.1.1 rcv UPDATE w/ attr: nexthop 14.1.1.4, origin i, localpref 100, metric 0, originator 4.4.4.4, clusterlist 12.1.1.1, path , community , extended community 
    *Mar  1 00:35:02.675: BGP(0): 12.1.1.1 rcv UPDATE about 40.1.1.0/24 -- DENIED due to: reflected from the same cluster;
    *Mar  1 00:35:02.675: BGP: 12.1.1.1 RR in same cluster. Reflected update dropped
    R2#
    *Mar  1 00:35:02.675: BGP(0): 12.1.1.1 rcv UPDATE w/ attr: nexthop 13.1.1.3, origin i, localpref 100, metric 0, originator 3.3.3.3, clusterlist 12.1.1.1, path , community , extended community 
    *Mar  1 00:35:02.675: BGP(0): 12.1.1.1 rcv UPDATE about 30.1.1.0/24 -- DENIED due to: reflected from the same cluster;
    R2#
     
    这样就明白了吧!
    可能会有这样的疑问,10.1.1.0/24这个网段上面显示的也被拒绝了,为什么路由表里面还有?
    这是因为如果一个路由条目是RR自身发起的话,那么他不会在这个条目上创建cluster-id。而且,RR从外部对等体学习到的路由信息,在反射给自己的客户端或者为非客户端时,也不会为这前缀创建cluster-id。
    我们可以切到R3上来看看10.1.1.0/24这个信息被两个RR反射给R3时有携带的属性什么不同。
    R3#sh ip b 10.1.1.0
    BGP routing table entry for 10.1.1.0/24, version 7
    Paths: (2 available, best #2, table Default-IP-Routing-Table)
      Not advertised to any peer
      Local
        12.1.1.1 (inaccessible) from 23.1.1.2 (2.2.2.2)
          Origin IGP, metric 0, localpref 100, valid, internal
          Originator: 1.1.1.1, Cluster list: 12.1.1.1
      Local
        13.1.1.1 from 13.1.1.1 (1.1.1.1)
          Origin IGP, metric 0, localpref 100, valid, internal, best
     
    第一个是从R2发过去的,下面的一个是从R1发过去的。很明显,从R1发送过去的没有携带originator和cluster-id这两个属性。


     

  • 相关阅读:
    python中的特殊函数__call__
    python的内存机制
    tf.train.Saver()-tensorflow中模型的保存及读取
    修改过的bug
    JQuery的attr 与 val区别及使用
    多线程处理同一个List测试dome
    synchronized 使用总结
    oracle 自定义函数
    第一天写博客,分享下学习oracle存储过程的过程
    SqlServer
  • 原文地址:https://www.cnblogs.com/cyrusxx/p/12615717.html
Copyright © 2020-2023  润新知