一、大規模BGP網絡所遇到的問題
BGP對等體眾多,配置繁瑣,維護管理難度大
BGP路由表龐大,對設備性能提出挑戰
IBGP全連接,應用和管理BGP難度增加,鄰居數量過多
路由變化頻繁,導致路由更新頻繁
二、解決大規模BGP網絡所遇到的問題
1、BGP對等體眾多
對等體組(Peer Group)
BGP團體(Community )
2、BGP路由表龐大
BGP路由聚合
3、IBGP全連接(鄰居數量太多)
BGP路由反射(Route Reflection)
BGP聯盟(Confederation)
4、路由變化頻繁(了解)
BGP路由衰減(Route Dampening)
三、對等體組
定義:BGP 對等體組(Peer Group)是一些具有某些相同屬性的對等體的集合。通過對等體組可以簡化配置
特點:根據對等體所在的AS,對等體組可分為IBGP對等體組和EBGP對等體組。
建鄰要求:
EBGP:R1-R2
IBGP:R2分別于R3/R4/R5
注意:配置EBGP對等體組--------一般不常用,因為只有同一個AS中的EBGP鄰居才能加入一個對等體組,如果EBGP鄰居分布在多個AS,則需要給每個AS的EBGP鄰居,配置一個對等體組。比較麻煩
配置IBGP對等體組
[R2-bgp]group in internal
[R2-bgp]peer 3.3.3.3 group in
[R2-bgp]peer 4.4.4.4 group in
[R2-bgp]peer 5.5.5.5 group in
[R2-bgp]peer in connect-interface l0
[R2-bgp]peer in next-hop-local
[R3-bgp]peer 2.2.2.2 as 200
[R3-bgp]peer 2.2.2.2 connect-interface l0
R4和R5上做和R3相同的配置
配置EBGP對等體組
四、BGP路由聚合
作用:減小路由表規模
1、自動聚合:
只能對引入的IGP的路由進行聚合;
只能將明細路由匯總到主類,這會造成路由黑洞;
華為設備默認關閉自動聚合功能;
只能在始發路由器上進行配置;
[r1-bgp]summary automatic 開啟自動聚合
自動聚合后,會出現狀態碼S(suppressed),代表被抑制的路由信息不會再加表和傳遞了
實驗演示1:只針對重發布的路由條目生效,不對自身宣告的路由生效
在R3上加幾個環回口172.16.0.1 24和172.16.1.1 24,并做BGP宣告
[R3-bgp]summary automatic ?開啟自動聚合
實驗演示2:引入直連
[R3-bgp]import-route direct
[R3-bgp]summary automatic
2、手工聚合:
可實現精確匯總:[R1-bgp]aggregate 172.16.0.0 16
可以在任何路由器上對BGP路由進行聚合;
出現問題:明細路由依然被通告,有形成環路的隱患
解決方法:[R1-bgp]aggregate 172.16.0.0 16 detail-suppressed ?//抑制明細路由
此命令不通過明細路由;
實驗演示1:
[R3-bgp]network 172.16.1.1 24
[R3-bgp]network 172.16.0.1 24
[R3-bgp]aggregate 172.16.0.0 23
測試:查看路由表,聚合成功,但明細路由也存在,并沒有達到縮小路由表規模的情況
抑制明細路由。達到了縮小路由表的規模
常見匯總命令:
[R1-bgp]aggregate 172.16.0.0 16 detail-suppressed as-set ?匯總的路由可繼承明細路由的路徑屬性,其中AS_PATH屬性最關鍵。
[R1-bgp]aggregate 172.16.0.0 16 suppress-policy ‘路由策略名字’通告匯總路由,并有選擇性的抑制明細路由
五、路由反射器
1、定義:
BGP反射器能把從IBGP鄰居學習的路由反射給其他IBGP鄰居(打破IBGP水平分割的限制)
2、作用:
用于替代IBGP全連接,減少IBGP鄰居數量;解決BGP路由黑洞問題;
3、角色:
RR(router ?reflect):路由反射器
反射器角色:
? ? ? ? client:RR客戶機
? ? ? ? 非客戶機
注:將一臺BGP路由器指定為RR的同時,還需要指定其Client。至于Client本身,無需做任何配置,它并不知曉網絡中存在RR
思考:為啥不把一個AS內的所有路由器都變成客戶機?還有非客戶機的存在?(RTE\RTF)
答案:因為一個AS就是一個城域網。一個城市的城域網中有好多路由器,一個城域網怎么可能只有一個反射器。比如:高新區選一個反射器,不可能讓他給雁塔區啊、長安區啊提供反射服務。一個反射器給他特定的客戶機提供反射服務。我們可以在 這些區各選一個反射器,讓他們給本區的路由器提供反射服務。也就是說可以在一個AS內建立多個路由器反射群。兩個反射群之間需要建立鄰居關系。它們之間需要傳遞路由。
4、反射規則
從非反射客戶端接受的路由,僅反射給客戶端;
從客戶端接受到的路由,反射給所有客戶端和非客戶端,路由始發者除外;
從EBGP接收的路由,反射給所有的客戶端和非客戶端;
注:一個反射群里的所有反射客戶端只需與反射器建立IBGP鄰居關系
5、反射集群:
由反射器和客戶端組成的網絡范圍;
如果存在多個反射器,配置相同的cluster_id
思考:當RR故障后,會發生啥?怎么解決?
思考:RR之間需要建立鄰居關系?------當然需要
但是這樣的組網容易形成環路。(一條路由從客戶機1傳到RR,RR傳到備用RR,備用RR再反射給客戶機1)
6、路由反射存在問題:使得IBGP水平分割原則失效,會導致環路的產生
7、解決方法:
通過兩個路徑屬性來避免環路
(1)cluster_list(集群列表):
類似AS_PATH,每個RR都有一個Cluster id,默認為路由器的router id,可手工修改;
同一個AS內的Cluster id必須相同,才能有防環作用。
路由傳遞過程中,把經過的反射器的Cluster_id一次記錄在Cluster_list中;
Cluster_list用于反射器防環,當反射器收到BGP路由時,如果本機的Cluster_id出現在Cluster_list中,則丟棄該路由;
(例如:一條路由從客戶機1傳到RR,RR會將Cluster id為1.1.1.1這個屬性寫給這個路由,RR再傳到備用RR,會檢查自身的Cluster id,發現學到的路由Cluster id與自己一樣,就直接丟棄)
Cluster-list用于路由優選,短的優先
特殊情況:不受Cluster-list防環機制的約束,依然形成環路
思考:一條路由從客戶機3傳到備用RR,再傳到rr,rr會不會傳給客戶機3?
答案:會,解決方法用originator_ID
(2)originator_ID:起源ID
由路由器反射器反射一條路由時產生,會在反射出去的路由中增加originator_ID,它就是本地AS路由器的BGP路由器的router-id;
即使這條反射路由經過多個RR,當BGP路由器收到一條攜帶Originator_ID屬性的IBGP路由,并且Originator_ID屬性值與自身的Router ID相同,則它會忽略關于該條路由的更新。
originator_ID用于路由優選,短的優先
8、總結BGP的防環機制
(1)AS_PATH:解決AS之間的環路問題
(2)IBGP的水平分割:解決一個AS內部IBGP鄰居之間環路問題
(3)當一個反射群中存在多個反射器時,通過Cluster-list防環,(BGP反射器)
(4)originator_ID:在多個反射群之間,通過originator_ID防環,(BGP反射器)
9、注意事項
反射路由無法使用策略去更改路由屬性
10、實驗配置
[R2-bgp]peer 3.3.3.3 reflect-client ?????//在反射器上配置其反射客戶機
[R2-bgp]reflector cluster-id 2.2.2.2 ???//配置反射器的集群id
11、實驗作業 ----- BGP路由反射器實驗
六、BGP聯盟
1、定義:
處理AS內部的IBGP網絡連接激增的另一種方法,間接避免了IBGP環路問題
2、原理:
聯盟將一個自治系統劃分為若干個子自治系統,每個子自治系統內部的IBGP對等體建立全連接關系,子自治系統之間建立聯盟內部EBGP連接關系。
3、注意點:
子AS使用私有AS編號;
其他真實AS的路由器仍然和聯盟AS建立EBGP鄰居;
跨越子AS的EBGP鄰居仍然需要更改下一跳為本機;
每個聯盟里有一臺路由器和其他聯盟中一個路由器建立鄰居關系就行;
實際場景中一般不用聯盟,因為他會改變鄰居關系
4、配置命令:
[R2]bgp 65001 ???????//進入子AS編號
[R2-bgp]confederation id 200 ???//申明自己的大號
[R2-bgp]confederation peer-as 65002 ?//申明自己的聯盟同伴
[R2-bgp]peer 100.1.1.1 as-number ?100 ??????指定EBGP鄰居
[R2-bgp]peer 3.3.3.3 as-number 65001
[R2-bgp]peer 100.2.2.5 as-number 65002
[R2-bgp]peer 3.3.3.3 connect-interface LoopBack 0
[R2-bgp]peer 3.3.3.3 next-hop-local
[R2-bgp]peer 100.2.2.5 next-hop-local ??//跨越子AS的EBGP鄰居仍然需要更改下一跳為本機;不然從R1傳過去的網段,R5收不到
子AS之間的EBGP環回口建鄰
七、BGP團體屬性(community)
(1)定義:
相當于路由的標記,一組具有相同特征的目的地的集合,可針對特定的路由設置特定的community屬性值
問題:網段不連續,ACL寫起來比較麻煩。
解決方法:在每個分部的市場部路由的出口設備上,打上100:1的團體屬性。
(2)社團屬性表達方法:
本質由32位二進制構成,擁有多種表達格式,
比如:可使用10進制;
或者16位二進制,前16位一般是本地AS的AS號,后16位是自定值;
(3)公認的社團屬性:
Internet:抓取的BGP流量,默認情況下都屬于Internet,可以被通告給所有的BGP對等體;
no-advertise:路由信息無法發送給自己的IBGP對等體或EBGP對等體;
no-export:路由信息可以發給自己的BGP對等體,但對等體不能離開這個AS,無法發給自己的EBGP;但可以發給自己的聯邦EBGP對等體;
no-export-subconfed:路由信息可以發給自己的BGP對等體,但對等體不能離開這個AS,無法發給自己的EBGP;也不可以發給自己的聯邦EBGP對等體;
注:目前大部分廠商默認在傳遞BGP路由信息時是不傳遞社團屬性的,如果需要傳遞社團屬性,則需要通過命令開啟
(4)配置演示
配置步驟:
抓取流量
[R1]acl 2000
[R1-acl-basic-2000]rule permit source 192.168.1.0 0.0.0.255
配置路由策略,打上團體屬性
[R1]route-policy com permit node 10
[R1-route-policy]if-match acl 2000
[R1-route-policy]apply community no-export
[R1]route-policy com permit node 20
調用路由策略
[R1]bgp 100
[R1-bgp]peer 100.1.1.2 route-policy com export
[R1-bgp]peer 100.1.1.2 advertise-community ?????//通告團體屬性,使其他鄰居學到
[R2]dis bgp routing-table 192.168.1.0 24 ??//查看一條路由的詳細信息
八、聯盟和團體屬性實驗
九、BGP綜合實驗
實驗報告冊見下一篇文章哦~?