解決BGP路由黑洞

解決BGP路由黑洞

 

 

   R2、R3和R4之間運行ospf協議,並在R2和R3、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)在r1、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
 

具體配置如下:

R1的配置

router bgp 100

 no synchronization

 bgp router-id 1.1.1.1

 bgp cluster-id 167838721

 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 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路由器建立鄰居。

一個自治系統內可以創建多個路由反射簇。

路由反射器的規則:對於路由反射器來說

1、  從一個客戶端傳遞的路由條目會反射給另一個客戶端,會反射給非客戶端,會反射給EBGP鄰居。

2、  從一個非客戶端傳遞的路由條目會反射給另一個客戶端,會反射給EBGP鄰居,但不會傳遞給別一個非客戶端

3、  EBGP傳遞的路由條目會反射給另一個客戶端,會反射給EBGP鄰居,會反射給非客戶端

 

對於本案例配置命令如下:

neighbor 2.2.2.2 route-reflector-client

配置之後鄰居會重置

總結:

1)路由反射器在拓撲設計和命令配置上實現相對簡單一些。

2)對於聯盟來說,要求所有的路由器都必須要支持和識別,而路由反射只需要路由反射器理解路上反射機制即可,客戶端將與RR之間的連接都視爲普通的IBGP連接。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章