論如何解決BGP的路由黑洞問題

BGP的路由黑洞

1>圖解BGP路由黑洞

2>路由黑洞解決方案

我們在配置BGP時最容易遇到的就是路由黑洞問題,簡單的說, 它會默默的將數據包丟棄,使所有數據包有去無回。 對BGP來說由於存在IBGP水平分割規則,從一個IBGP鄰居學到的路由條目不會傳遞給下一個IBGP鄰居,這是一種AS內的防環機制,所以在BGP的設計上有些設備就不會運行BGP。BGP可以非直連建鄰,所以路由傳遞是沒有問題的,但是數據包的路由卻是有問題的。通常我們可以看到的現像是IBGP鄰居關係可以正常建立,也就是說控制平面看起來是正常的,但是數據平面確不可達。

1.圖解BGP路由黑洞問題

在這裏插入圖片描述

在圖中:

  • R1-R2-R3之間起OSPF路由協議,且將環回地址宣告進入OSPF(環回地址命名,例:R1->loopback0 1.1.1.1)
  • R1使用環回地址loopback0與R3建立IBGP鄰居關係,同時R3也一樣
  • R1上將 loopback1(10.1.1.1) 宣告進入BGP,R3將loopback1(10.3.3.3)宣告進入BGP

2.解決方法

2.1 聯盟【Confederations】

聯盟(Confederations)是一組將大的自治系統分成子自治系統的一種方法,主要用於解決IBGP水平分割問題,通常與RR反射器聯用,爲了更好的控制IBGP對等關係

  • 每一個聯盟分配一個聯盟ID,對於外端而言此聯盟ID代表的是整個聯盟的AS號,聯盟其實質是對自治系統的再次細分
  • AS_PATH中加入AS_CONFED_SEQUENCE和AS_CONFED_SET用法和AS_SEQUENCE和AS_SET一致
  • 聯盟環境下,所有路由器必須支持聯盟
  • 用預留的AS(64512~65535) 作爲聯盟中的AS編號是一種通用做法
  • 選路優先級,普通EBGP>聯盟EBGP>IBGP
  • 聯盟內部可以不修改next-hops、MED值,直接傳遞給其他AS成員,且可傳遞本地優先級Local_Pref

在這裏插入圖片描述

R1配置
R1(config)#no router bgp 100
**配置聯盟**
R1(config)#router bgp 64513
R1(config-router)#bgp router-id 1.1.1.1
R1(config-router)#neighbor 2.2.2.2 remote-as 64513 
R1(config-router)#neighbor 2.2.2.2 update-source loopback 0
R1(config-router)#neighbor 2.2.2.2 next-hop-self 
R1(config-router)#network 10.1.1.1 mask 255.255.255.255
**在聯盟內聲明大AS號**
R1(config-router)#bgp confederation identifier 100
R1(config-router)#exit
R2配置
R2(config)#no router bgp 100
**配置聯盟**
R2(config)#router bgp 64513
R2(config-router)#bgp router-id 2.2.2.2
**R1-R2聯盟內IBGP鄰居關係**
R2(config-router)#neighbor 1.1.1.1 remote-as 64513
R2(config-router)#neighbor 1.1.1.1 update-source loopback 0
R2(config-router)#neighbor 1.1.1.1 next-hop-self 
**R2-R3 EBGP鄰居關係**
R2(config-router)#neighbor 3.3.3.3 remote-as 100
R2(config-router)#neighbor 3.3.3.3 update-source loopback 0
R2(config-router)#neighbor 3.3.3.3 ebgp-multihop 
**在聯盟內聲明大AS號**
R2(config-router)#bgp confederation identifier 100
R2(config-router)#bgp confederation peers 100
R3配置
R3(config)#router bgp 100
R3(config-router)#bgp router-id 3.3.3.3
R3(config-router)#neighbor 2.2.2.2 remote-as 64513
R3(config-router)#neighbor 2.2.2.2 update-source loopback 0
R3(config-router)#neighbor 2.2.2.2 ebgp-multihop 
R3(config-router)#bgp confederation identifier 100
R3(config-router)#bgp confederation peers 64513
R3(config-router)#network 10.3.3.3 mask 255.255.255.255
R3(config-router)#end

2.2 路由反射器【Route Reflector】

IBGP的路由傳遞原則可以認爲只傳遞一跳(IBGP的水平分割),在實際的網絡中,設備非常多,網絡連接非常負載,不太可能每個AS內的設備都有鄰居關係,但是路由又必須傳遞下去,爲了解決這一麻煩,產生了反射器技術,大量減少配置,減少鄰居路由條目,減輕設備CPU負擔,在實際網絡環境中被大量使用,因爲反射器配置非常簡單。

RR反射器傳遞原則:

  • RR收到的EBGP路由,會將其發送給所有EBGP鄰居和IBGP鄰居,包含反射器羣成員及非成員
  • RR收到RRC(客戶端)的路由,會將其發送給所有EBGP鄰居,所有的RRC和Non-RRC(非客戶端)
  • RR收到一條Non-RRC(非客戶端)路由,會將其發送給所有的EBGP鄰居及RRC(客戶端),不傳遞給其他Non-RRC

在這裏插入圖片描述

R1配置
R1(config)#router bgp 100
R1(config-router)#bgp router-id 1.1.1.1
R1(config-router)#neighbor 2.2.2.2 remote-as 100
R1(config-router)#neighbor 2.2.2.2 update-source loopback 0
R1(config-router)#neighbor 2.2.2.2 next-hop-self 
R1(config-router)#network 10.1.1.1 mask 255.255.255.255
R1(config-router)#exit 
R2配置
R2(config)#router bgp 100
R2(config-router)#bgp router-id 2.2.2.2
R2(config-router)#neighbor 1.1.1.1 remote-as 100
R2(config-router)#neighbor 1.1.1.1 update-source loopback 0
R2(config-router)#neighbor 1.1.1.1 next-hop-self 
R2(config-router)#neighbor 3.3.3.3 remote-as 100
R2(config-router)#neighbor 3.3.3.3 update-source loopback 0
R2(config-router)#neighbor 3.3.3.3 next-hop-self 
**定義反射器,本地爲RR**
R2(config-router)#neighbor 1.1.1.1 route-reflector-client 
R2(config-router)#neighbor 3.3.3.3 route-reflector-client 
R2(config-router)#exit 
R3配置
R3(config)#router bgp 100
R3(config-router)#bgp router-id 3.3.3.3
R3(config-router)#neighbor 2.2.2.2 remote-as 100
R3(config-router)#neighbor 2.2.2.2 update-source loopback 0
R3(config-router)#neighbor 2.2.2.2 next-hop-self 
R3(config-router)#network 10.3.3.3 mask 255.255.255.255
R3(config-router)#exit 

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

2.3 BGP導入IGP【實驗環境】

這種方法僅適用於實驗環境,在實驗環境中BGP路由條目少,IGP可以承擔起對於BGP路由的計算,但是在真實環境中,BGP的路由往往是一個AS,甚至於不同AS的路由條目,路由非常之多,IGP協議不足以承擔起如此大路由計算

原理: 利用底層IGP傳遞BGP的路由條目
在這裏插入圖片描述

R1配置
R1(config)#router bgp 100
R1(config-router)#bgp router-id 1.1.1.1
R1(config-router)#neighbor 2.2.2.2 remote-as 100
R1(config-router)#neighbor 2.2.2.2 update-source loopback 0
R1(config-router)#neighbor 2.2.2.2 next-hop-self 
R1(config-router)#network 10.1.1.1 mask 255.255.255.255
R1(config-router)#exit 
**BGP導入IGP**
R1(config)#router ospf 1
R1(config-router)#redistribute bgp 100 subnets

在這裏插入圖片描述

R2配置
R2(config)#router bgp 100
R2(config-router)#bgp router-id 2.2.2.2
R2(config-router)#neighbor 1.1.1.1 remote-as 100
R2(config-router)#neighbor 1.1.1.1 update-source loopback 0
R2(config-router)#neighbor 1.1.1.1 next-hop-self 
R2(config-router)#neighbor 3.3.3.3 remote-as 100
R2(config-router)#neighbor 3.3.3.3 update-source loopback 0
R2(config-router)#neighbor 3.3.3.3 next-hop-self 
R2(config-router)#exit

在這裏插入圖片描述

R3配置
R3(config)#router bgp 100
R3(config-router)#bgp router-id 3.3.3.3
R3(config-router)#neighbor 2.2.2.2 remote-as 100
R3(config-router)#neighbor 2.2.2.2 update-source loopback 0
R3(config-router)#neighbor 2.2.2.2 next-hop-self 
R3(config-router)#network 10.3.3.3 mask 255.255.255.255
R3(config-router)#exit 
**BGP導入IGP**
R3(config)#router ospf 1
R3(config-router)#redistribute bgp 100 subnets

在這裏插入圖片描述

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