01_5_BGP Reflector(BGP反射器)

因为BGP在将路由发给eBGP邻居时,会将自己的AS号码添加到AS-path中,所以可以以此来防止环路,而在将路由发给iBGP时,是不会往AS-path添加AS号码的,因此在iBGP之间传递路由时,没有防止环路的机制。考虑到为iBGP之间的路由传递也加入防环机制,因而强制将BGP路由在AS内部只传一跳,导致一台BGP路由器从eBGP邻居收到路由时,发给iBGP邻居之后,iBGP邻居收到就不再传给其它任何iBGP邻居了,而只能传递给eBGP邻居,最终使得AS内部邻居过多时,很难保证每台路由器都能收到所有路由。


如上图环境中,R1从eBGP邻居R5收到路由后,可以传递给iBGP邻居R2,而R2为了防止环路,不能将从iBGP邻居R1收到的路由传递给iBGP邻居R3,最后导致BGP路由器R3和R4都不能拥有完整的BGP路由表。

为了解决AS内,不能将从iBGP邻居收到的路由发给iBGP邻居的问题,通过创建全互联的邻居关系,将所有iBGP邻居都与拥有eBGP邻居的路由器建立邻居。这种方法工作繁琐且消耗系统资源,如上图,需要所有路由器都与R1建立邻居,从而使R1成为单点故障。

除了创建全互联的BGP邻居关系外,还可以使用BGP Reflector(BGP反射器)的方式来将从iBGP邻居学习到的路由传递给其它iBGP邻居。

BGP Reflector可以将自己的任何BGP路由反射给自己的client,从而可以突破iBGP路由传递的限制,具体规则为:

★从eBGP邻居学习到的路由会发送给所有client和所有非client,也就是发给所有邻居。

★从非client学习到的路由将发送给所有client。

★从client学习到的路由将发送给所有client和所有非client,也就是发给所有邻居。

BGP Reflector和自己的Client称为一个cluster,如下图:


我们将R2配置为BGP Reflector,将R3配置为client,那么R2和R3就是一个cluster。在配置BGP Reflector时,只需要在Reflector上配置参数,而不需要在client做任何配置,所以client并不知道自己是client,因此一个cluster的client,同样还可以配置成另一个cluster的Reflector,类似于嵌套,如下图:


在Cluster 1中,R2为Reflector,R3为client,因为R3并不知道自己是client,所以又将R3配置成了Cluster 2中的Reflector,并将R4配置成为Cluster 2中的client。最终因为Reflector R2收到了R1的路由,将所有路由发给client R3,又因为R3也是Reflector,再将路由发给client R4,并将所有从R4的路由也发送给R2,最后所有路由器都拥有全网的路由。

一个AS中可以有多个Cluster,所以为了防止环路,引入了类似于AS_Path的技术,一个Cluster拥有一个唯一的Cluster ID,这个Cluster ID默认就是Reflector的Router-ID,也可以随意设置,并且一个Cluster中可以有多个Reflector互为备份,所以当一个Cluster中有多个Reflector时,Cluster ID必须手工设置。Reflector在将路由反射出去时,都会写入自己的Cluster ID,在路由发送到其它Cluster后,其它Reflector在写入自己的Cluster ID时,还会保留之前的Cluster ID,就像保留AS_Path一样,如果收到一条路由带有与自己相同的Cluster ID,就说明路由发回了原来的Cluster,则认为环路产生,将接收到的路由丢失,以此来防止环路。

除了Cluster ID外,路由还带有Originator ID,这个Originator ID是产生这条路由的路由器的Router-ID,发回起源路由器,也认为环路产生,则被丢弃。在路由是从别的AS发过来时,Originator ID就是AS边界接收的第一台BGP路由器。

配置BGP Reflector


以上图环境为例,配置BGP Reflector

说明:

上图中所有路由器都配有Loopback地址,地址分别为:

R1  Loopback 0  1.1.1.1/32      Loopback 11  11.1.1.1/24
R2  Loopback 0  2.2.2.2/32      Loopback 22  22.2.2.2/24
R3  Loopback 0  3.3.3.3/32      Loopback 33  33.3.3.3/24
R4  Loopback 0  4.4.4.4/32      Loopback 44  44.4.4.4/24
R5  Loopback 0  5.5.5.5/32      Loopback 55  55.5.5.5/24

所有路由器之间运行OSPF,并将Loopback 0的地址发布到OSPF中,保证全网Loopback 0之间是可以通信的。

1.IGP保证全网Loopback 0互通

说明:此步略,请参见之前配置。

2.全网配置BGP

(1)配置R5的BGP

r5(config)#router bgp 5
r5(config-router)#bgp router-id 5.5.5.5
r5(config-router)#neighbor 1.1.1.1 remote-as 1
r5(config-router)#neighbor 1.1.1.1 update-source loopback 0
r5(config-router)#neighbor 1.1.1.1 ebgp-multihop
r5(config-router)#network 55.5.5.0 mask 255.255.255.0

(2)配置R1的BGP

r1(config)#router bgp 1
r1(config-router)#bgp router-id 1.1.1.1
r1(config-router)#neighbor 5.5.5.5 remote-as 5
r1(config-router)#neighbor 5.5.5.5 update-source loopback 0
r1(config-router)#neighbor 5.5.5.5 ebgp-multihop
r1(config-router)#neighbor 2.2.2.2 remote-as 1
r1(config-router)#neighbor 2.2.2.2 update-source loopback 0
r1(config-router)#network 11.1.1.0 mask 255.255.255.0

(3)配置R2的BGP

r2(config)#router bgp 1
r2(config-router)#bgp router-id 2.2.2.2
r2(config-router)#neighbor 1.1.1.1 remote-as 1
r2(config-router)#neighbor 1.1.1.1 update-source loopback 0
r2(config-router)#neighbor 3.3.3.3 remote-as 1
r2(config-router)#neighbor 3.3.3.3 update-source loopback 0
r2(config-router)#network 22.2.2.0 mask 255.255.255.0

(4)配置R3的BGP

r3(config)#router bgp 1
r3(config-router)#bgp router-id 3.3.3.3
r3(config-router)#neighbor 2.2.2.2 remote-as 1
r3(config-router)#neighbor 2.2.2.2 update-source loopback 0
r3(config-router)#neighbor 4.4.4.4 remote-as 1
r3(config-router)#neighbor 4.4.4.4 update-source loopback 0
r3(config-router)#network 33.3.3.0 mask 255.255.255.0

(5)配置R4的BGP

r4(config)#router bgp 1
r4(config-router)#bgp router-id 4.4.4.4
r4(config-router)#neighbor 3.3.3.3 remote-as 1
r4(config-router)#neighbor 3.3.3.3 update-source loopback 0
r4(config-router)#network 44.4.4.0 mask 255.255.255.0

3.查看BGP路由情况

(1)查看R5的BGP路由情况

r5#sh ip bgp
BGP table version is 4, local router ID is 5.5.5.5
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
*> 11.1.1.0/24      1.1.1.1                  0             0 1 i
*> 22.2.2.0/24      1.1.1.1                                0 1 i
*> 55.5.5.0/24      0.0.0.0                  0         32768 i
r5#

说明:因为R2无法将R3和R4的路由33.3.3.0和44.4.4.0发给R1,所以导致R5路由表不完整。

(2)查看R1的BGP路由情况

r1#sh ip bgp
BGP table version is 4, 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
*> 11.1.1.0/24      0.0.0.0                  0         32768 i
*>i22.2.2.0/24      2.2.2.2                  0    100      0 i
*> 55.5.5.0/24      5.5.5.5                  0             0 5 i
r1#

说明:因为R2无法将R3和R4的路由33.3.3.0和44.4.4.0发给R1,所以导致R1路由表不完整。

(3)查看R2的BGP路由情况

r2#sh ip bgp
BGP table version is 5, 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
*>i11.1.1.0/24      1.1.1.1                  0    100      0 i
*> 22.2.2.0/24      0.0.0.0                  0         32768 i
*>i33.3.3.0/24      3.3.3.3                  0    100      0 i
*>i55.5.5.0/24      5.5.5.5                  0    100      0 5 i
r2#

说明:因为R3无法将R4的路由44.4.4.0发给R2,所以导致R2路由表不完整。

(4)查看R3的BGP路由情况

r3#sh ip bgp
BGP table version is 4, local router ID is 3.3.3.3
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
*>i22.2.2.0/24      2.2.2.2                  0    100      0 i
*> 33.3.3.0/24      0.0.0.0                  0         32768 i
*>i44.4.4.0/24      4.4.4.4                  0    100      0 i
r3#

说明:R3只能收到R2和R4的直连路由。

(5)查看R4的BGP路由情况

r4#sh ip bgp
BGP table version is 3, local router ID is 4.4.4.4
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
*>i33.3.3.0/24      3.3.3.3                  0    100      0 i
*> 44.4.4.0/24      0.0.0.0                  0         32768 i
r4#

说明:R4只能收到R3的直连路由。

4.配置BGP Reflector

(1)配置R2为BGP Reflector

r2(config)#router bgp 1
r2(config-router)#neighbor 3.3.3.3 route-reflector-client

说明:配置R2为BGP Reflector,R3为Client。

(2)查看R3的路由情况

r3#sh ip bgp
BGP table version is 8, local router ID is 3.3.3.3
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
*>i11.1.1.0/24      1.1.1.1                  0    100      0 i
*>i22.2.2.0/24      2.2.2.2                  0    100      0 i
*> 33.3.3.0/24      0.0.0.0                  0         32768 i
*>i44.4.4.0/24      4.4.4.4                  0    100      0 i
*>i55.5.5.0/24      5.5.5.5                  0    100      0 5 i
r3#

说明:R2将R1和R5的路由都发来了,R3的路由表已经完整。

(3)查看R1的路由情况

r1#sh ip bgp
BGP table version is 5, 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
*> 11.1.1.0/24      0.0.0.0                  0         32768 i
*>i22.2.2.0/24      2.2.2.2                  0    100      0 i
*>i33.3.3.0/24      3.3.3.3                  0    100      0 i
*> 55.5.5.0/24      5.5.5.5                  0             0 5 i
r1#

说明:因为从client学习到的路由将发送给所有client和所有非client,所以R1收到了R2发来的所有路由,但不包括R4的路由。

(4)查看R2的路由情况

r2#sh ip bgp
BGP table version is 7, 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
*>i11.1.1.0/24      1.1.1.1                  0    100      0 i
*> 22.2.2.0/24      0.0.0.0                  0         32768 i
*>i33.3.3.0/24      3.3.3.3                  0    100      0 i
*>i55.5.5.0/24      5.5.5.5                  0    100      0 5 i
r2#

说明:因为R3不能将iBGP R4的路由发给任何iBGP邻居,所以R2也没有R4的路由。

(5)在R3上查看R4发来的路由44.4.4.0

r3#sh ip bgp 44.4.4.0
BGP routing table entry for 44.4.4.0/24, version 4
Paths: (1 available, best #1, table Default-IP-Routing-Table)
  Not advertised to any peer
  Local
    4.4.4.4 (metric 2) from 4.4.4.4 (4.4.4.4)
      Origin IGP, metric 0, localpref 100, valid, internal, best
r3#

说明:R4发给R3的路由为正常路由,所以没有不同。

(6)在R3上查看R2发来的路由55.5.5.0

r3#sh ip bgp 55.5.5.0
BGP routing table entry for 55.5.5.0/24, version 8
Paths: (1 available, best #1, table Default-IP-Routing-Table)
  Not advertised to any peer
 5
    5.5.5.5 (metric 4) from 2.2.2.2 (2.2.2.2)
      Origin IGP, metric 0, localpref 100, valid, internal, best
      Originator: 1.1.1.1, Cluster list: 2.2.2.2
r3#

说明:因为R2是Reflector,所以发出的路由带有Cluster ID,即为自己的Router-ID 2.2.2.2,还有个Originator ID,就是AS 边界第一台路由器R1的Router-ID。

(7)改变Reflector路由器R2对Client的下一跳属性

r2(config)#router bgp 1
r2(config-router)#neighbor 3.3.3.3 next-hop-self

(8)再次查看R3的路由情况

r3#sh ip bgp
BGP table version is 8, local router ID is 3.3.3.3
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
*>i11.1.1.0/24      1.1.1.1                  0    100      0 i
*>i22.2.2.0/24      2.2.2.2                  0    100      0 i
*> 33.3.3.0/24      0.0.0.0                  0         32768 i
*>i44.4.4.0/24      4.4.4.4                  0    100      0 i
*>i55.5.5.0/24      5.5.5.5                  0    100      0 5 i
r3#

说明:可以看到,从R2反射过来的R5的路由55.5.5.0的下一跳还是R5,所以在Reflector环境中,下一跳属性是不能被改变的。

5.配置Cluster 2

(1)查看R4的路由情况

r4#sh ip bgp
BGP table version is 3, local router ID is 4.4.4.4
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
*>i33.3.3.0/24      3.3.3.3                  0    100      0 i
*> 44.4.4.0/24      0.0.0.0                  0         32768 i
r4#

说明:由于R3不能将任何从iBGP接收到的路由发给R4,导致R4只有R3和R4两台路由器的路由。

(2)将R3配置为另一个Cluster的Reflector

r3(config)#router bgp 1
r3(config-router)#neighbor 4.4.4.4 route-reflector-client

说明:将R3配置为Reflector,R4配置为Client。

(3)查看R4的路由情况

r4#sh ip bgp
BGP table version is 8, local router ID is 4.4.4.4
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
*>i11.1.1.0/24      1.1.1.1                  0    100      0 i
*>i22.2.2.0/24      2.2.2.2                  0    100      0 i
*>i33.3.3.0/24      3.3.3.3                  0    100      0 i
*> 44.4.4.0/24      0.0.0.0                  0         32768 i
*>i55.5.5.0/24      5.5.5.5                  0    100      0 5 i
r4#

说明:R3将所有路由反射给client R4,最后R4拥有了全部的路由。

(4)查看R4从Reflector反射过来的路由信息

r4#sh ip bgp 55.5.5.0
BGP routing table entry for 55.5.5.0/24, version 8
Paths: (1 available, best #1, table Default-IP-Routing-Table)
  Not advertised to any peer
    5.5.5.5 (metric 5) from 3.3.3.3 (3.3.3.3)
      Origin IGP, metric 0, localpref 100, valid, internal, best
      Originator: 1.1.1.1, Cluster list: 3.3.3.3, 2.2.2.2
r4#

说明:路由从一个cluster发到另外一个cluster,cluster ID会像AS_Path一样被保留累积。

(5)在R3上修改cluster ID

r3(config)#router bgp 1
r3(config-router)#bgp cluster-id 123

说明:R3上修改cluster ID为0.0.0.123。

(6)查看R4从Reflector反射过来的路由信息

r4#sh ip bgp 55.5.5.0
BGP routing table entry for 55.5.5.0/24, version 11
Paths: (1 available, best #1, table Default-IP-Routing-Table)
Flag: 0x800
  Not advertised to any peer
  5
    5.5.5.5 (metric 5) from 3.3.3.3 (3.3.3.3)
      Origin IGP, metric 0, localpref 100, valid, internal, best
      Originator: 1.1.1.1, Cluster list: 0.0.0.123, 2.2.2.2
r4#

说明:R3已经将cluster ID改为0.0.0.123。

Work Blog » 01_5_BGP Reflector(BGP反射器)
分享到:
赞(0) 打赏

评论抢沙发

评论前必须登录!

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏