天天看點

BGP理論基礎BGP理論基礎

BGP 的基本概念:

BGP基于TCP來承載,端口号為179,且無需周期性更新,路由更新 隻發送增量路由,通過周期性發送keepalive封包來保活。

1、 自治系統AS(Autonomous System):

AS号分為2位元組和4位元組——2位元組AS号範圍:1-65535,64511-65535為私有AS号碼;4位元組AS号範圍:2的32次方個。

2、 BGP分類:

1)、EBGP:運作于不同AS之間的BGP;(防環機制:通過as-path機制,即從EBGP鄰居學到的路由中,包含本地AS号的将被丢棄,可通過指令修改為不丢棄)(EBGP中TTL預設為1)

2)、IBGP:運作于同一AS内部的BGP;(防環機制:從IBGP對等體學到的路由不通告給其他的IBGP對等體)(IBGP中TTL預設為255)

3、 BGP的路由器号(Router ID):

用于辨別 BGP 裝置的 32 位的值,通常是 IPv4 位址的形式,在 BGP 會話建立時發送的 Open 封包中攜帶。對等體之間建立 BGP 會話時,每個 BGP 裝置都必須有唯一的

Router ID,否則對等體之間不能建立 BGP 連接配接。

4、 BGP的5種封包:

1)、open:用于建立BGP對等體連接配接;

2)、update:用于在對等體之間交換路由資訊(包括傳遞可達和不可達的路由資訊,不可達的路由資訊意思是需要撤銷掉這條路由);

3)、notification:用于中斷BGP連接配接,當BGP對等體檢測到錯誤的時候,就發送這個消息給對等體;

4)、keepalive:用于保持BPG連接配接(周期性發送);(間隔時間為60s,hold time時間為180s)

5)、route-refresh:用于在改變路由政策後請求對等體重新發送路由資訊。隻有支援路由重新整理能力的BGP裝置會發送和響應此封包

5、 BGP狀态機:

6 種狀态機:空閑狀态(Idle)、連接配接狀态(Connect)、活躍(Active)、 Open 封包已發送(OpenSent)、 Open 封包已确認(OpenConfirm)和連接配接已建立(Established)

BGP理論基礎BGP理論基礎

1)、Idle:BGP初始狀态,這個時候拒絕鄰居發送的連接配接請求。隻有收到本裝置的Start事件後(相當于我們隻要使能了BGP協定,就進入Idle狀态,Start就是我們配置BGP的過程)才開始嘗試與其他BGP對等體進行TCP連接配接并轉入Connect狀态。(收到 Notification 封包 或 TCP 拆鍊通知等 Error 事件後,BGP 會轉至 Idle狀态)

2)、Connect:建立TCP連接配接,并啟用重傳定時器。如果TCP三向交握建立成功,就向BGP對等體發送Open封包并轉入Opensent狀态;如果TCP三向交握建立失敗,就轉入Active狀态;如果在重傳定時器逾時後還沒收到對等體的響應(沒有收到對端的TCP響應),那麼就停留在Connect狀态并向其他BGP對等體建立TCP連接配接。

3)、Active:總是在嘗試建立TCP連接配接。如果TCP建立成功,就向對等體發送Open封包,關閉重傳定時器并轉入Opensent狀态;如果TCP建立不成功,就停留在Active狀态。

4)、Opensent:說明TCP連接配接已經正常并且已經發送了Open封包。等待對等體的Open封包,并且檢查所收到對端的Open封包中的AS号,版本,認證等資訊。如果正确,就發送keepalive封包,并轉入OpenConfirm狀态;如果錯誤,就發送Notification給對等體,并轉入Idle狀态。

5)、OpenConfirm:等待對等體的keepalive或者Notification封包,如果收到keepalive封包就轉入Estabilished狀态;如果收到Notification封包,就轉入Idle狀态。

6)、Estabilished:互動keepalive,Update,Route-refresh,Notification封包。

6、 BGP對等體互動原則:

1)、 從IBGP鄰居學到的路由,隻會發給EBGP鄰居,預設不會發給IBGP鄰居;(IBGP水準分割原則,可以通過路由反射器或聯盟解決)

2)、從EBGP鄰居擷取的路由,傳遞給IBGP鄰居時,預設不會修改下一跳;(可以修改為下一跳自我)

3)、BGP隻會把本地最優的路由傳遞給鄰居;

4)、路由更新時,隻會發送更新的BGP路由給鄰居。

7、 BGP認證:

1)、MD5認證:隻能對TCP連接配接設定認證;(BGP是通過TCP承載,是以BGP後續封包都有認證資訊)

2)、Keychain認證:可以為TCP連接配接設定認證,也可以對BGP協定封包設定認證。

8、 BGP GTSM:

檢測 IP 封包頭中的 TTL(time-to-live)值是否在一個預先設定好的特定範圍内,并對不符合 TTL 值範圍的封包進行允許通過或丢棄的操作,進而實作了保護 IP 層以上業務,增強系統安全性的目的

9、 BGP屬性:

1)、公認必遵(Well-known mandatory):所有路由器都認識,Update資訊必須有,否則會報錯;

2)、公認任意(Well-known discretionary):所有路由器都認識,Update資訊可有可無;

3)、可選傳遞(Optional transitive):路由器可以不認識,但是會接收此類屬性,并且傳遞給其他對等體;

4)、可選非傳遞(Optional non-transitive):路由器可以不認識,但如果不認識就會忽略此類屬性,并且不會傳遞給他的對等體。

10、 BGP選路政策:

1)、優選協定首選值(PrefVal)最高的路由。(華為私有屬性,僅在本地有效,預設為0)

2)、優選本地優先級(Local_Pref)最高的路由;(預設為100)

3)、依次優選手動聚合路由、自動聚合路由、 network 指令引入的路由、 import-route 指令引入的路由、從對等體學習的路由;

4)、優選 AS 路徑(AS_Path)最短的路由;

5)、依次優選 Origin 類型為 IGP、 EGP、 Incomplete 的路由;

6)、對于來自同一 AS 的路由,優選 MED(Multi Exit Discriminator)值最低的路由;(預設為0)

7)、ebgp>ibgp>localcross路由>remotecross路由;(PE上某個 ×××執行個體的 ×××v4路由的 ERT比對其他 ×××執行個體的 IRT後複制到該 ×××執行個體,稱為 LocalCross;從遠端 PE 學習到的 ×××v4 路由的 ERT 比對某個 ××× 執行個體的 IRT 後複制到該 ××× 執行個體,稱為 RemoteCross)

8)、優選到 BGP 下一跳 IGP 路徑成本(metric)最小的路由;

9)、是否支援負載均衡<maxmum load-balance>,前8條一樣,且as-path完全相同(都是聚合路由或都不是),如果配置了多路徑負載均衡的話,進行負載均衡(這裡預設IBGP和EBGP路由都參與負載均衡);

10)、優選cluster-list長度最小的;

11)、orinator-id越小越優;

12)、router-id越小越優;

13)、peer ip address位址低的優先。

11、 路由反射器原理及路由釋出規則:

1)、采用獨有的 Cluster_List 屬性和 Originator_ID 屬性防止路由環路;

2)、選路規則:

1.從Non-Client端的IBGP對等體學到的路由會發給所有的Client端;

2.從Client端學到的路由,釋出給所有的Client端(發起此路由的Client除外)和Non-Client;

3.從EBGP對等體學到的路由,釋出給所有的Client端和Non-Client;

4.從Non-Client端的IBGP對等體學到的路由不會發給Non-Client端對等體;

3)、Cluster-List和Originator-ID的工作原理:

1.當一個用戶端/非用戶端更新一條路由給RR時,RR首先給這個資訊打上Originator-ID,為這條路由始發的router-id;

2.之後RR給這個更新資訊打上自己簇的Cluster-ID放入Cluster-List裡面,并傳遞給他的客戶/非用戶端/另外一個RR;

3.當另外一個RR收到時,在原有的Cluster-List最前面再加上自己簇的Cluster-ID,Originator-ID如果有就不改變,如果沒有就建立;

4.這樣下去,Cluster-List裡面有所有經過RR的Cluster-ID,并且在Originator-ID裡面有路由始發的router-id;

5.當RR收到一個更新資訊時,檢查Cluster-List,如果裡面有自己的router-id,就丢棄,如果沒有,就添加并且轉發;

6.當一個非RR收到更新資訊時,檢查Originator-ID,如果發現和自己的router-id比對,就丢棄,否則就接收。 (注:Cluster-List是給RR防環用的,Originator-ID是給非RR防環用的,但都由RR添加)。

12、 BGP路由聚合:

聚合後的路由預設不會繼承明細路由的屬性,從路由表上看是彙聚者自己産生的聚合路由,這樣就會把聚合後的路由反傳給明細路由的始發者,這樣一方面浪費了資源,沒必要将彙聚後的路由傳遞給始發者,一方面造成了路由黑洞,因為當其中一條明細路由消失後,聚合不會消失(全部明細路由消失,聚合路由才會消失),這樣去往這個明細的資料包還是通過聚合路由發送過來。是以這個時候我們使用AS-SET,當打上這個屬性後,聚合路由的as-path就是所有明細路由as-path的集合。as-set中的as-path是無序的。 (AS-SET的缺點:當聚合後使用AS-SET指令後,明細路由的消失會導緻網絡的震蕩,因為聚合路由的as-path是所有明細的集合,是以當其中明細消失後,路由器都要通告給對等體,AS-PATH有改變。 AS-SET不僅繼承AS-PATH,也繼承起源屬性)

13、 BGP ORF:

ORF:根據本端的入口政策,建構對端的出口政策,本端需要哪些路由告訴對端,讓對端隻發送我所需要的這些路由。

繼續閱讀