解决BGP路由黑洞

解决BGP路由黑洞

 

 

   R2、R3和R4之间运行ospf协议,并在R2和R三、R3和R4之间使用回环口创建IBGP邻居。
R1的配置
router bgp 100
 no synchronization
 bgp router-id 1.1.1.1
 bgp log-neighbor-changes
 network 1.1.1.0 mask 255.255.255.0
 neighbor 192.1.12.2 remote-as 234
 no auto-summary
 
R2的配置
router bgp 234
 no synchronization
 bgp router-id 2.2.2.2
 bgp log-neighbor-changes
 neighbor 3.3.3.3 remote-as 234
 neighbor 3.3.3.3 update-source Loopback0
 neighbor 3.3.3.3 next-hop-self
 neighbor 192.1.12.1 remote-as 100
 no auto-summary
 
R3的配置
router bgp 234
 no synchronization
 bgp router-id 3.3.3.3
 bgp log-neighbor-changes
 neighbor 2.2.2.2 remote-as 234
 neighbor 2.2.2.2 update-source Loopback0
 neighbor 4.4.4.4 remote-as 234
 neighbor 4.4.4.4 update-source Loopback0
 no auto-summary
 
R4的配置
router bgp 234
 bgp router-id 4.4.4.4
 bgp cluster-id 3288400129
 bgp log-neighbor-changes
 neighbor 3.3.3.3 remote-as 234
 neighbor 3.3.3.3 update-source Loopback0
 neighbor 3.3.3.3 next-hop-self
 neighbor 192.1.45.5 remote-as 500
 
R5的配置
router bgp 500
 no synchronization
 bgp router-id 5.5.5.5
 bgp cluster-id 3221302533
 bgp log-neighbor-changes
 network 5.5.5.0 mask 255.255.255.0
 neighbor 192.1.45.4 remote-as 234
 no auto-summary
R1的1.1.1.0这条路由能够传递给R2和R3,可是R4却收不到?
r3#sh ip bgp
BGP table version is 2, local router ID is 3.3.3.3
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal
Origin codes: i - IGP, e - EGP, ? - incomplete
 
   Network          Next Hop            Metric LocPrf Weight Path
*>i1.1.1.0/24        2.2.2.2                  0    100      0 100 i
 
r3#
r4#sh ip bgp
想想为何呢?
主要因为ibgp遵循水平分割的原则,即从一个ibgp邻居学习到的路由不会再传给另外一个ibgp邻居,这样就造成了路由黑洞,怎么去解决呢?
方法有三种:
(1)在r一、r2和r3之间创建full mesh(全互联)的ibgp邻居关系,这样就会创建大量的IGBP邻居关系,会消耗设备的大量资源,配置复杂,不推荐。
(2)使用联邦AS(有些书上也叫BGP联盟:bgp confederation)
为了解决创建大量的IBGP邻居关系,可使用联邦AS。能够这样理解联邦as,联邦as是由一组子自治系统组成,它们共享一个联邦AS号,该联邦AS号被联邦以外的对等体视为整个联邦的名字(AS号),外部的对等体是没法看见联邦的内部结构的。
针对本例,能够在AS 234内划分两个小的AS,将r2和R3组成AS 65012,R4组成AS 65014,创建联邦AS时一般会使用私有的AS
 

具体配置以下:ide

R1的配置oop

router bgp 100学习

 no synchronizationthis

 bgp router-id 1.1.1.1spa

 bgp cluster-id 167838721设计

 bgp log-neighbor-changes3d

 network 1.1.1.0 mask 255.255.255.0code

 neighbor 192.1.12.2 remote-as 234orm

 no auto-summaryrouter

R2的配置

router bgp 65012

 no synchronization

 bgp router-id 2.2.2.2

 bgp cluster-id 2886730753

 bgp log-neighbor-changes

 bgp confederation identifier 234

 neighbor 3.3.3.3 remote-as 65012

 neighbor 3.3.3.3 update-source Loopback0

 neighbor 3.3.3.3 next-hop-self

 neighbor 192.1.12.1 remote-as 100

 no auto-summary

R3的配置

router bgp 65012

 no synchronization

 bgp router-id 3.3.3.3

 bgp cluster-id 3232236289

 bgp log-neighbor-changes

 bgp confederation identifier 234

 bgp confederation peers 65014

 neighbor 2.2.2.2 remote-as 65012

 neighbor 2.2.2.2 update-source Loopback0

 neighbor 4.4.4.4 remote-as 65014

 neighbor 4.4.4.4 ebgp-multihop 255

 no auto-summary

R4的配置

router bgp 65014

 no synchronization

 bgp router-id 4.4.4.4

 bgp cluster-id 3288400129

 bgp log-neighbor-changes

 bgp confederation identifier 234

 bgp confederation peers 65012

 neighbor 3.3.3.3 remote-as 65012

 neighbor 3.3.3.3 ebgp-multihop 255

 neighbor 3.3.3.3 update-source Loopback0

 neighbor 3.3.3.3 next-hop-self

 neighbor 192.1.45.5 remote-as 500

 no auto-summary

R5的配置

router bgp 500

 no synchronization

 bgp router-id 5.5.5.5

 bgp cluster-id 3221302533

 bgp log-neighbor-changes

 network 5.5.5.0 mask 255.255.255.0

 neighbor 192.1.45.4 remote-as 234

 no auto-summary

在配置过程当中r2r1创建邻居和r4r5创建邻居会收到以下信息:

r2(config-router)#

00:28:45: %BGP-3-NOTIFICATION: received from neighbor 192.1.12.1 2/2 (peer in wrong AS) 2 bytes FDF4

 

r4(config-router)#

00:30:27: %BGP-3-NOTIFICATION: received from neighbor 192.1.45.5 2/2 (peer in wrong AS) 2 bytes FDF6

缘由在于联盟中的路由器还不识别联盟,须要打上如下命令:

bgp confederation identifier 234

3)第三种方法:使用路由反射器(Router Reflector)

路由反射器对于解决AS内创建大量IBGP邻居时很是有用。

路由反射器和其客户端共同组成路由反射簇。能够把路由反射簇当作一个单独的路由器,对于客户端只须要与路由反射器创建邻居便可,不须要与每台ibgp路由器创建邻居。

一个自治系统内能够建立多个路由反射簇。

路由反射器的规则:对于路由反射器来讲

一、  从一个客户端传递的路由条目会反射给另外一个客户端,会反射给非客户端,会反射给EBGP邻居。

二、  从一个非客户端传递的路由条目会反射给另外一个客户端,会反射给EBGP邻居,但不会传递给别一个非客户端

三、  EBGP传递的路由条目会反射给另外一个客户端,会反射给EBGP邻居,会反射给非客户端

 

对于本案例配置命令以下:

neighbor 2.2.2.2 route-reflector-client

配置以后邻居会重置

总结:

1)路由反射器在拓扑设计和命令配置上实现相对简单一些。

2)对于联盟来讲,要求全部的路由器都必需要支持和识别,而路由反射只须要路由反射器理解路上反射机制便可,客户端将与RR之间的链接都视为普通的IBGP链接。

相关文章
相关标签/搜索