因为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。
文章目录
评论抢沙发