華爲--BGP邊界網關協議 原理and實驗

何爲BGP

邊界網關協議(BGP)是運行於 TCP 上的一種自治系統的路由協議。 BGP 是唯一一個用來處理像因特網大小的網絡的協議,也是唯一能夠妥善處理好不相關路由域間的多路連接的協議。 BGP 構建在 EGP 的經驗之上。 BGP 系統的主要功能是和其他的 BGP 系統交換網絡可達信息。網絡可達信息包括列出的自治系統(AS)的信息。這些信息有效地構造了 AS 互聯的拓樸圖並由此清除了路由環路,同時在 AS 級別上可實施策略決策。

一、BGP基本概念

1、BGP的工作場景
BGP是一種運行在AS與AS之間的動態路由協議,主要作用是在AS之間自動交換無環路由信息
以此來構建AS的拓撲圖,從而消除路由環路並實施用戶配置的路由策略。目前公網網絡條目衆多,
IGP協議無法承載,而BGP可以輕鬆應對,通常BGP協議用於ISP和ISP之間或跨域地域總、分公司之間
的路由信息交換。
在這裏插入圖片描述

1.1、AS的概念

• 自治系統(Autonomous System,AS),指的是在同一個組織管理下、使用相同策略的設備的集合。
• 不同AS通過AS號區分,AS號取值範圍1-65535,其中64512-65535是私有AS號。IANA負責AS號的分發。
• 中國電信163 AS號:4134。
• 中國電信CN2 AS號:4809。
• 中國網通AS 號:9929。

2、 BGP概述

• 邊界網關協議(Border Gateway Protocol,BGP)是一種實現自治系統AS之間的路由可達,並選擇最
佳路由的矢量性協議。早期發佈的三個版本分別是BGP-1(RFC1105)、BGP-2(RFC1163)和BGP- 3(RFC1267),1994年開始使用BGP-4(RFC1771),2006年之後單播IPv4網絡使用的版本是BGP-4(
RFC4271),其他網絡使用的版本是MP-BGP(RFC4760)。

2.1 BGP的特點
• BGP能夠承載大批量的路由信息,能夠支撐大規模網絡。
• BGP能夠支撐MPLS/VPN的應用,傳遞客戶VPN路由。
• BGP提供了路由聚合和路由衰減功能用於防止路由振盪,有效提高了網絡的穩定性。
• BGP使用TCP作爲其傳輸層協議(端口號爲179),並支持BGP與BFD聯動、BGP Tracking、BGP
Auto FRR和BGP GR和NSR,提高了網絡的可靠性。
• BGP使用TCP爲傳輸層協議,TCP端口號179。路由器之間的BGP會話基於TCP連接而建立。
• 運行BGP的路由器被稱爲BGP發言者(BGP Speaker),或BGP路由器。
• 兩個建立BGP會話的路由器互爲對等體(Peer)。BGP對等體之間交換BGP路由表。
• BGP路由器只發送增量的BGP路由更新,或進行觸發更新(不會週期性更新)。
• BGP具有豐富的路徑屬性和強大的路由策略工具。
• BGP能夠承載大批量的路由前綴,用於大規模的網絡中。

3、BGP的路徑矢量特徵

• BGP通常被稱爲路徑矢量路由協議(Path-Vector Routing Protocol)。
• 每條BGP路由都攜帶着多種路徑屬性(Path attribute),在各種路徑屬性中,AS_Path屬性是非常關鍵
的一個。AS_Path屬性記錄了BGP路由傳遞過程中所經過的AS號,實際上它是一個AS號的列表。
• BGP路由器不接受AS_Path中包含其自身AS號的路由更新。AS_Path屬性值的長短(AS號的個數)會
作爲一個比較的依據,影響BGP路由選擇的決策。在這裏插入圖片描述

4、BGP報文類型

在這裏插入圖片描述

Open :協商BGP鄰居的各項參數,建立鄰居關係。
BGP對等體之間需先建立TCP連接,如果TCP連接成功,那麼BGP向對等體發送Open報文。

Update: 用於發送BGP路由信息。
連接建立後,有路由需要發送或路由變化時,發送UPDATE通告對端路由信息。

Notification :報告錯誤,中止對等體關係。
當BGP在運行中發現錯誤時,要發送NOTIFICATION報文通告BGP對端。

Keepalive: 維持BGP對等體關係。 定時發送Keepalive報文以保持BGP對等體關係的有效性。

Route-refresh:用於在改變路由策略後請求對等體重新發送路由信息。只有支持路由刷新能力的BGP設備會發送和響應此報文。
當路由策略發生變化時,觸發請求對等體重新通告路由。

5、BGP的狀態機

Idle :嘗試建立TCP連接 開始準備TCP的連接並監視遠程peer啓動TCP連接,啓用BGP時,要準備足夠的資源。
Connect: 發TCP包,正在進行TCP連接,等待完成中,認證都是在TCP建立期間完成的。如果TCP連接建立失敗則進入Active狀態,反覆嘗試連接
Active :發TCP包 TCP連接沒建立成功,反覆嘗試TCP連接。
OpenSent :發Open包 TCP連接建立已經成功,開始發送Open包,Open包攜帶參數協商對等體的建立
OpenConfirm :發Keepalive包 參數、能力特性協商成功,自己發送Keepalive包,等待對方的Keepalive包。
Established :發Update包已經收到對方的Keepalive包,雙方能力特性經協商發現一致,開始使用Update通告路由信息。
在這裏插入圖片描述

6、BGP Peer

• 運行BGP的路由器被稱爲BGP發言者,或者BGP路由器。
• BGP對等體也叫BGP鄰居,與OSPF、RIP等協議不同,BGP的會話是基於TCP建立的。建立BGP對等
體關係的兩臺路由器並不要求必須直連。
• BGP存在兩種對等體關係類型:EBGP及IBGP。針對這兩種對等體類型,BGP處理路由的操作存在較
大差異。在這裏插入圖片描述

6.1•EBGP(External BGP):
位於不同自治系統的BGP路由器之間的BGP鄰接關係。
• 兩臺路由器之間要建立EBGP對等體關係,必須滿足兩個條件:
• 兩個路由器所屬AS不同(也即AS號不同)。
• 在配置BGP時,Peer命令所指定的對等體IP地址要求路由可達,並且TCP連接能夠正確建立。

6.2IBGP(Internal BGP**):
位於相同自治系統的BGP路由器之間的BGP鄰接關係。
• 兩臺路由器之間要建立IBGP對等體關係,必須滿足兩個條件:
• 兩個路由器所屬AS需相同(也即AS號相同)。 • 在配置BGP時,Peer命令所指定的對等體IP地址要求路由可達,並且TCP連接能夠正確建立。

7、傳輸AS中的路由黑洞問題

在傳輸AS(TransitAS)65102中,BCDE四臺路由器運行了OSPF,確保AS內部路由實現互通。 B與E運行BGP,並且兩者建立IBGP對等體關係(兩者並非直連,但是對於BGP,這是允許的,僅需
確保兩者之間能夠正確建立TCP連接即可)。C與D並未運行BGP在這裏插入圖片描述

A將本地路由1.1.1.0/24通告到BGP,最終F能夠通過BGP學習到該條路由。C、D由於並未運行BGP,因此無
法通過BGP學習到1.1.1.0/24路由。
如此一來,F發往1.1.1.0/24網絡的數據包在到達C/D後將被丟棄,在C及D路由器這裏,就出現了黑洞。在這裏插入圖片描述

7.1爲了避免黑洞問題我們需要怎麼做?
• 若路由器從IBGP對等體學習到一條BGP路由,它不能使用該條路由,更不能將路由傳遞給自己的EBGP
對等體,除非它又從IGP學習到該條路由,這就是BGP的同步規則。
• 同步規則的存在,可以防止數據在傳輸AS內由於轉發設備沒有目標網絡的路由而被丟棄的問題,也就
是所謂的黑洞問題。
• 爲了使得BGP路由能夠正常交互,我們就不得不在該傳輸AS內所有路由器上都運行BGP,且構建全互
聯的IBGP對等體關係;或者在AS邊界上將BGP路由引入IGP。顯然這兩種方法各有利弊,尤其是後者,
盲目地將BGP路由引入IGP是非常危險的。
• 同步規則的存在意義是避免出現黑洞問題,而如果AS內路由問題已經解決,那麼同步規則也就沒有必
要再開啓了。華爲路由交換產品缺省關閉同步規則

傳輸AS中的黑洞問題 解決辦法1 • 將BGP路由引入到IGP,並關閉同步規則。在這裏插入圖片描述

傳輸AS中的黑洞問題 解決辦法2 • 傳輸AS內所有路由器均運行BGP,實現BGP對等體關係的全互聯,並關閉同步規則。在這裏插入圖片描述

8、IBGP水平分割規則

• BGP路由在AS之間的防環依賴於AS_Path路徑屬性,當路由器收到BGP路由後,發現該路由所攜帶的
AS_Path屬性中出現了其自己所處的AS號,則路由器認爲出現了路由環路,它將忽略該條路由。
• AS_Path屬性僅在路由離開AS時纔會被更改,而BGP路由在AS內部傳遞時,路由的AS_Path屬性值不
會發生改變,如此一來,IBGP路由的防環就無法依賴AS_Path了。
• 爲了防止BGP路由在AS內部傳遞時發生環路,BGP要求:“路由器不能將自己從IBGP對等體學習到的
路由再傳遞給其他IBGP對等體”,這就是IBGP水平分割規則。
• 由於IBGP水平分割原則的存在,BGP要求AS內須保證IBGP對等體關係的全互聯,因爲只有這樣,才能夠確保每一個路由器都能學習到路由。

C從E學習到的IBGP路由,由於水平分割規則的限制,不能夠傳遞給B路由器,這將導致B
無法學習到F通告的BGP路由。在這裏插入圖片描述

• 考慮到IBGP水平分割規則的限制,爲了使得AS內的路由器都能夠正常學習到BGP路由,我們不得不建
立一個全互聯的IBGP對等體關係(如圖所示)。
• 然而在AS內的所有BGP路由器之間維護全互聯的IBGP對等體關係是需要耗費大量資源的,網絡的可擴
展性、可維護性也非常差。解決方案:
• 路由反射器
• 聯邦在這裏插入圖片描述

9、BGP路由通告規則

• 當存在多條路徑時,路由器只選取最優(Best)的BGP路由來使用(沒有激活負載均衡的情況下)。
• BGP只把自己使用的路由,也就是自己認爲最優的路由傳遞給對等體。
• 路由器從EBGP對等體獲得的路由會傳遞給它所有的BGP對等體(包括EBGP和IBGP對等體)。
• 路由器從IBGP對等體獲得的路由不會傳遞給它的IBGP對等體(存在反射器RR的情況除外)。
• 路由器從IBGP對等體獲得的路由是否通告給它的EBGP對等體要視IGP和BGP同步的情況來決定。

BGP相關的幾張表在這裏插入圖片描述

這裏的命令都是華爲ensp軟件的
BGP鄰居表在這裏插入圖片描述

BGP路由表在這裏插入圖片描述

二、BGP基礎配置實驗

1、大體思路

• 啓動BGP進程,並指定BGP Router-ID:
[Router] bgp as-num
[Router-bgp] router-id x.x.x.x
• As-num參數爲設備所處的AS號;
• 爲了增加網絡的可靠性,建議將BGP Router-ID手工配置爲設備Loopback接口的地址。如果沒有配
置,則BGP會自動選取系統視圖下的Router-ID作爲BGP協議的Router-ID。系統視圖下的Router-ID
選擇規則,請參見命令router-id中的描述。

1.1配置BGP對等體:
[Router-bgp] peer x.x.x.x as-number as-num
• Peer關鍵字後面的x.x.x.x爲對等體的IP地址,本設備與該IP地址之間必須路由可達。
• 在BGP中,對等體需要通過peer命令手工指定,無法像IGP那樣通過協議自動發現。
• AS號碼決定了與對等體建立的是EBGP會話還是IBGP會話。
• (可選)指定用於建立BGP會話(也就是TCP連接)的源接口或源地址:
[Router-bgp] peer x.x.x.x connect-interface intf [ ipv4-src-address ] • 缺省情況下,BGP使用報文出接口的IP地址作爲與對等體建立會話的源地址

1.2引入到BGP路由表
• 需注意的是:BGP本身不發現路由,因此需要將其他路由引入到BGP路由表。
• BGP引入路由時支持Import和Network兩種方式:
• Import方式是按協議類型,將RIP、OSPF、ISIS等協議的路由引入到BGP路由表中。Import方式還
可以引入靜態路由和直連路由。
• Network方式是逐條將IP路由表中已經存在的路由引入到BGP路由表中。
• BGP在引入IGP的路由時,可以使用路由策略進行路由過濾和路由屬性設置。

1.3使用network命令將路由通告到BGP
[router-bgp] network ipv4-address [ mask | mask-length ] • 使用network命令將路由表中的路由通告到BGP。路由必須存在於路由表中才能夠被成功通告到
BGP。 • 如果上述命令沒有指定mask或mask-length參數,則按有類地址處理。指定了mask,則僅當路由選
擇表中有與該網絡完全匹配的條目時才被通告出去。 • BGP中的network命令與IGP中的network是大不相同的,BGP中的network命令用於將路由通告到
BGP,而不是在接口上激活BGP。 • 在執行上述命令時,可以關聯route-policy從而更爲靈活的控制所引入的路由。

2、BGP基本配置

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

<Huawei>sys	
<Huawei>system-view 
Enter system view, return user view with Ctrl+Z.
[Huawei]sys r1
[r1]int g 0/0/0
[r1-GigabitEthernet0/0/0]ip add 12.0.0.1 30
[r1-GigabitEthernet0/0/0]
[r1-GigabitEthernet0/0/0]int g 0/0/1
[r1-GigabitEthernet0/0/1]ip add 15.0.0.1 30
[r1-GigabitEthernet0/0/1]int  loo 0
[r1-LoopBack0]ip add 1.1.1.1 32
[r1-LoopBack0]
[r1]ospf 1
[r1-ospf-1]a 0
[r1-ospf-1-area-0.0.0.0]betw	
[r1-ospf-1-area-0.0.0.0]netw	
[r1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0
[r1-ospf-1-area-0.0.0.0]ne	
[r1-ospf-1-area-0.0.0.0]network 15.0.0.0 0.0.0.3
[r1-ospf-1-area-0.0.0.0]network 15.0.0.0 0.0.

在這裏插入圖片描述

interface GigabitEthernet0/0/0
 ip address 12.0.0.2 255.255.255.252 
#
interface GigabitEthernet0/0/1
 ip address 23.0.0.1 255.255.255.252 
#
interface GigabitEthernet0/0/2
#
interface LoopBack0
 ip address 2.2.2.2 255.255.255.255 
[r2]bgp 100
[r2-bgp]q
[r2]router i	
[r2]router id 2.2.2.2
[r2]bgp 100
[r2-bgp]peer 3.3.3.3 as-number 200
[r2-bgp]peer 3.3.3.3 ebgp-max-hop 2      允許它們之間2跳建立TCP連接
[r2-bgp]peer 3.3.3.3 connect-interface loo 0
[r2-bgp]peer 1.1.1.1 as-number 100
[r2-bgp]peer 1.1.1.1 connect-interface loo 0
[r2-bgp]peer 5.5.5.5 as-number 100
[r2-bgp]peer 5.5.5.5 connect-interface loo 0
[r2-bgp]
[r2]rip 1
rip 1
 version 2
 network 23.0.0.0
#
return
[r2-rip-1]network 2.0.0.0

在這裏插入圖片描述

[Huawei]sysname R3
[R3]int g0/0/1
[R3-GigabitEthernet0/0/1]ip add 23.0.0.2 30
[R3-GigabitEthernet0/0/1]un sh
[R3-GigabitEthernet0/0/1]int loo 0
[R3-LoopBack0]ip add 3.3.3.3 32
[R3-LoopBack0]q
[R3]bgp 200
[R3-bgp]peer 2.2.2.2 as-n	
[R3-bgp]peer 2.2.2.2 as-number 100
[R3-bgp]peer 2.2.2.2 ebgp-max-hop 2       允許它們之間2跳建立TCP連接
[R3-bgp]peer 2.2.2.2 connect-interface loo 0
[R3]router id 3.3.3.3
[R3]rip 1
[R3-rip-1]v 2
[R3-rip-1]net	
[R3-rip-1]network 3.0.0.0
[R3-rip-1]ne	
[R3-rip-1]network 23.0.0.0
[R3-rip-1]q

在這裏插入圖片描述

[Huawei]sys r4
[r4]int g 0/0/1
[r4-GigabitEthernet0/0/1]ip add 15.0.0.2 30
[r4-GigabitEthernet0/0/1]
[r4-LoopBack0]ip add 5.5.5.5 32
[r4-LoopBack0]int loo 1
[r4-LoopBack1]ip add 202.0.0.1 24
[r4-LoopBack1]int loo 2
[r4-LoopBack2]ip add 202.0.1.1 24
[r4]ospf 1 router-id 5.5.5.5
[r4-ospf-1]netw	
[r4-ospf-1]networ	
[r4-ospf-1]a 0
[r4-ospf-1-area-0.0.0.0]ne	
[r4-ospf-1-area-0.0.0.0]network 5.5.5.5 0.0.0.0
[r4-ospf-1-area-0.0.0.0]network 202.0.0.0 0.0.0.3
[r4-ospf-1-area-0.0.0.0]network 202.0.0.0 0.0.0.255
[r4-ospf-1-area-0.0.0.0]network 202.0.1.0 0.0.0.255
[r4-ospf-1]import-route direct       /引入直連路由
[r4-ospf-1]q
[r4]bgp 100
[r4-bgp]peer 1.1.1.1 as-n	
[r4-bgp]peer 1.1.1.1 as-number 100    ###環回口建鄰居,環回口地址不會掉
[r4-bgp]peer 1.1.1.1 con	
[r4-bgp]peer 1.1.1.1 connect-interface loo 0    ###我用自己的環回口和你建鄰居
[r4-bgp]peer 2.2.2.2 as-n	
[r4-bgp]peer 2.2.2.2 as-number 100
[r4-bgp]peer 2.2.2.2 con	
[r4-bgp]peer 2.2.2.2 connect-interface loo0
[r4]router id 5.5.5.5

3. 實驗驗證

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

4.實驗結束

更多精彩,請繼續關注我!

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