BGP協議總結(2)

南岸青梔*發表於2020-11-06

BGP 邊界閘道器路由協議

7.有條件打破水平分割

1.路由反射器

【1】路由反射器優點:

  • 聯邦中所有路由器都必須理解和支援聯邦功能,而路由反射技術只需要路由反射器理解路由反射機制。客戶路由器將與RR之間的連線僅僅視為普通IBGP連線
  • 配置命令和拓撲結構,路由反射實現更為簡單

用於解決AS內部BGP路由傳遞問題的技術。

將路由反射器及其他的客戶所構成的系統稱為:路由反射簇。

【2】路由反射的規則和工作機制

(1)如果路由反射器從自己的非客戶對等體學習到一條IBGP路由,它會將該路由反射給所有客戶

(2)如果路由反射器從自己客戶學習到一條IBGP路由,則它會將該路由反射器給所有非客戶以及除了該客戶之外的其他所有客戶。

(3)當路由反射器執行路由反射時,他只將自己使用的,最優的BGP路由進行反射。

【3】路由反射器防環機制

使用路由反射器的情況下,杜絕IBGP路由環路,設計了兩個路徑屬性,他們是originator_id和cluster_list。

  • originator_id:當RR收到客戶或是非客戶的路由資訊反射給它的其他客戶是加上originator_id屬性,一般是對端的BGP router-id。當路由器收到的originator_id是自己時就會把路由資訊丟棄來達到防環。
  • cluster_list:類似AS-PATH,當兩臺RR互為客戶時,當一臺RR向另外RR反射路由時會加上cluster_list屬性。如果RR收到路由資訊的cluster_list屬性與自己的cluster_id一直,就會將此路由丟棄,來防環。

【4】路由反射器配置

[r3-bgp]peer 2.2.2.2 reflect-client     鄰居2.2.2.2成為本地的客戶端,同時本地成為RR

2.聯邦

將一個AS邏輯的分為多個小AS;對外依然遵循大As號傳遞規則。但是小AS間為聯邦內的EBGP鄰居關係,可以向EBGP關係一樣傳遞路由,但是預設不對屬性進行修改。

配置規則:

(1)所有操作基於小AS好進行

(2)AS內所有裝置需要定義自己所在的大AS號

(3)小AS間的BGP裝置需要告知對端的小AS號。

聯邦配置

[r3]bgp 64512
[r3-bgp]router-id 3.3.3.3
[r3-bgp]confederation id 2   申明本地的大AS號
[r3-bgp]confederation peer-as 64513  告知本地直連的其他小AS號,若沒有直連到其他小AS不用配置
[r3-bgp]peer  2.2.2.2 as-number 64512
[r3-bgp]peer  2.2.2.2 connect-interface LoopBack 0
[r3-bgp]peer  4.4.4.4 as-number 64513
[r3-bgp]peer  4.4.4.4 connect-interface LoopBack 0
[r3-bgp]peer  4.4.4.4 ebgp-max-hop

8.BGP的基本配置

【1】BGP鄰居關係建立

1.直連的EBGP鄰居關係建立

*******************R1**********************	
[r1]bgp 1	啟動BGP協議,其中AS號為1
[r1-bgp]router-id 1.1.1.1  配置RID;若不配置自動生成,規則與ospf相同
[r1-bgp]peer 12.1.1.2 as-number 2	對端IP地址以及對端所在的AS編號
********************R2**********************
[r2]bgp 2
[r2-bgp]router-id 2.2.2.2	
[r2-bgp]peer 12.1.1.1 as-number 1

在這裡插入圖片描述

可以看出是R2主動建立TCP會話

在這裡插入圖片描述

2.EBGP鄰居間存在多條物理鏈路時,使用環回介面地址來建立

用環回建立的條件

(1)IP可達、建議使用靜態路由

(2)正常回環做源、目標IP地址建立鄰居關係

(3)預設IBGP鄰居間資料包的TTL值為255,EBGP鄰居間TTL為1;所以使用環回建立EBGP鄰居關係,必須修改TTL值,否則無法建立。

********************R3***********************
[r3]bgp 2
[r3-bgp]router-id 3.3.3.3
[r3-bgp]peer 4.4.4.4 as-number 3
[r3-bgp]peer 4.4.4.4 connect-interface lo0
[r3-bgp]peer 4.4.4.4 ebgp-max-hop 2
[r3]ip route-static 4.4.4.0 24 34.1.1.2
*********************R4*********************
[r4]ip route-static 3.3.3.0 24 34.1.1.1
[r4]bgp 3
 router-id 4.4.4.4
 peer 3.3.3.3 as-number 2 
 peer 3.3.3.3 ebgp-max-hop 2 
 peer 3.3.3.3 connect-interface LoopBack0
!!想要形成EBGP鄰居關係,在路由上必須可以通訊

在這裡插入圖片描述
3.IBGP鄰居建立

在一個AS內部,拓撲正常較為複雜,所以建議使用環回介面地址作為源目IP地址;

存在備份鏈路,同時可以多條物理鏈路傳遞

*******************R2************************
[r2]bgp 2	
[r2-bgp]peer 3.3.3.3 as-number 2
[r2-bgp]peer 3.3.3.3 connect-interface lo0
*******************R3************************
[r3]bgp 2
[r3-bgp]peer 2.2.2.2 as-number 2
[r3-bgp]peer 2.2.2.2 connect-interface lo0
!!想要IBGP鄰居關係建立,在路由上必須可以通訊,在一個AS內部一般會使用IGP協議

在這裡插入圖片描述

【2】BGP宣告

執行BGP協議的路由器可以宣告本地理由表中通過任何協議獲取到的路由條目;

本地通過BGP協議學習到的路由,只要在本地依然優,將繼續向本地的其他BGP鄰居傳輸。

[r1-bgp]network 1.1.1.0 24

在這裡插入圖片描述

狀態:

  •   ‘*’      可用
    *       ‘>’       優秀
    *       ‘*>’     同時存在(可加路由表);可以傳遞給本地的其他BGP鄰居
    

路由優的條件:

1.同步問題(預設不關注)

2.下一跳可達

AS-BY-AS規則:

條目在一個AS內部傳遞時將不修改條目屬性;導致通過IBGP鄰居學習到的BGP路由可能出現下一跳不可達,因此導致路由條目不優

所以執行EBGP的路由器將BGP路由傳遞給本地的IBGP鄰居時修改下一跳為自己就可以解決在一個AS內傳遞不優的問題。

[r2-bgp]peer 3.3.3.3 next-hop-local

在這裡插入圖片描述

EBGP之間不用修改下一跳為自己,因為傳遞給本地EBGP鄰居時,屬性將自動發生變化。

9.BGP的宣告問題

1.在BGP協議中每臺執行BGP的裝置上,宣告本地直連路由。

2.在BGP協議中執行BGP協議的裝置來宣告通過IGP學習到的、未執行BGP協議的裝置產生的路由。

在BGP協議中宣告本地路由表條目時,將攜帶本地到達這些目標的IGP度量值;傳遞到BGP鄰居處,使得其他AS裝置便於選擇離目標最近的EBGP鄰居。

若一臺BGP裝置在通過IBGP鄰居學習到的一條路由存在度量值;同時本地需要將這些路由傳輸給本地其他EBGP鄰居時,會將度量重洗為0,從而到時候選路參考值不優。所以在一個AS內所有執行BGP協議的裝置均宣告某條路由(便於其他AS選擇最佳的路由)

10.BGP的自動彙總

  • 預設關閉BGP自動彙總。
  • 自動彙總與正常BGP協議共享
  • 僅針對從IGP重發布到BGP的路由條目
  • BGP中將IGP重發布進BGP,可理解為批量的將IGP路由宣告到BGP協議中,但是兩種操作產生的路由條目氣源屬性不同,宣告優於重發布。
  • 建議不要開啟自動彙總:開啟自動彙總下,重發布進入的路由將不攜帶子網掩碼即(按主類掩碼進入)不攜帶本地到達目標的度量值,度量為0.

11.BGP的認證(鄰居間身份核實)

[r1-bgp]peer 12.1.1.2 password cipher huawei123

如果之前已經建鄰則不會立即斷開,當裝置關閉或者掉電重啟後,會發現此時鄰居不能建立,此時在R2路由器上配置對應的密碼

經測試又可以連線成功

在這裡插入圖片描述

12.BGP的聚合(彙總)

彙總方法:

1.利用BGP宣告的特徵來簡化彙總配置量;

詳細配置:

不逐條宣告明細路由,僅在更新源BGP裝置上配置一條到達距和地址的空介面防環路由,然後將其宣告到BGP協議中。

在實際過程中,由於AS之間一定存在大量的EBGP鄰居關係;因此僅彙總不能做到優選路徑,必須在傳遞聚合條目的同時再傳遞部分明細理由來進行選路控制。

2.標準的BGP聚合配置

逐條宣告所有的明細路由

再在更新源路由上進行聚合配置,自動產生空介面防環路由

[r5-bgp]aggregate 100.100.0.0 22   此時聚合與所有明細條目均傳遞
[r5-bgp]aggregate 100.100.0.0 22 detail-suppressed 僅傳遞聚合條目,所有明細路由被抑制

若需要在傳遞聚合條目的同時,再傳遞部分明細路由,需要進行路徑傳遞干涉選路。

3.路由傳遞干涉選路策略

(1)抑制列表 (先讓裝置將所有路由傳遞出去,再呼叫抑制策略)

[r5]ip ip-prefix a permit 100.100.1.0 24
[r5]route-policy a permit node 10
[r5-route-policy]if-match ip-prefix a
[r5-route-policy]q
[r5]bgp 3 
[r5-bgp]aggregate 100.100.0.0 22 suppress-policy a

(2)route—map (在BGP中將route-map當分發列表使用)

[r5]ip ip-prefix b permit 100.100.1.0 24      
[r5]route-policy b deny node 10
[r5-route-policy]if-match ip-prefix b
[r5-route-policy]q
[r5]route-policy b permit node 20
[r5-route-policy]q
[r5]bgp 3 
[r5-bgp]peer 4.4.4.4 route-policy b ?
  export  Specify export policy  控制層面的出項
  import  Specify import policy  控制層面的入向
[r5-bgp]peer 4.4.4.4 route-policy b export

(3)分發列表

[r5]ip ip-prefix c deny 100.100.1.0 24 
[r5]ip ip-prefix c permit 0.0.0.0 0 le 32
[r5]bgp 3
[r5-bgp]filter-policy ip-prefix c export(控制層面方向)

(4)前置列表

[r5]ip ip-prefix d deny 100.100.1.0 24
[r5]ip ip-prefix d permit 0.0.0.0 0 le 32
[r5]bgp 3 
[r5-bgp]peer  4.4.4.4 ip-prefix d export

13.BGP屬性(基礎屬性)

在這裡插入圖片描述

1.Preval(優先順序)

  • 傳播範圍 不傳播
  • 預設值 0-65535
  • 大/小 優 大

該屬性為私有屬性(華為)

[r3]bgp 2 
[r3-bgp]peer  4.4.4.4 preferred-value 1   
本地所有通過4.4.4.4鄰居學習到的BGP路由,優先順序全部修改為1;

負載分擔:訪問不同目標時,讓路由器選擇不同的路徑;起到所有路徑被使用的效果。

路由策略來實現—在BGP路由控制層面傳遞的過程中,抓取路由修改屬性
[r3]ip ip-prefix p permit 1.1.1.0 24   抓住網路號
[r3]route-policy p permit node 10    定製策略
[r3-route-policy]if-match ip-prefix p    匹配流量
[r3-route-policy] apply preferred-value 1   修改優先順序屬性
[r3-route-policy]q
[r3]route-policy p permit node 20    由於路由策略存在分發列表的功能,必須考慮空表
[r3-route-policy]q
[r3]bgp 2 
[r3-bgp]peer 4.4.4.4 route-policy p import   和鄰居傳遞路由的控制層面方向呼叫;
優先順序不傳播的特性,只能在本地的入方向呼叫;

2.Locprf(本地優先順序)

  • 傳播範圍 整個AS內部-IBGP鄰居間
  • 預設值 100(0-255)
  • 大/小 優 大

用於干涉IBGP鄰居關係下選路最常用屬性

[r4-bgp]default local-preference 1   本地傳遞路由給本地所有IBGP鄰居時,修改屬性為1;

負載分擔:
[r3]ip ip-prefix l permit 1.1.1.0 24
[r3]route-policy l permit node 10      
[r3-route-policy]apply local-preference 101
[r3-route-policy]if-match ip-prefix l
[r3-route-policy]q
[r3]route-policy l permit node 20
[r3-route-policy]q
[r3]bgp 2 
[r3-bgp]peer  4.4.4.4 route-policy l import    可以在IBGP鄰居關係間的出或入方向呼叫

3.優先本地下一跳

本地在BGP協議中宣告本地路由表中IGP路由時,在本地的BGP表中下一跳為0.0.0.0;而通過BGP從其他鄰居處學習到的路由,下一跳正常不為0.0.0.0;本地優選0.0.0.0的路由傳遞給本地的其他BGP鄰居。
在這裡插入圖片描述

4.AS-PATH(記錄條目經過的所有AS編號)

注:AS新增一定是在EBGP鄰居間進行。

作用:

  • 1.優選經過的AS號數量最少的路徑
  • 2.該屬性用於EBGP水平分割,接收到路由條目中若存在本地的As號將拒絕接收。
  • 3.可人為的在EBGP鄰居關係間,增加AS號的數量來干涉選路;改“臭”A路徑,以達到優選B路徑。(人為只能新增)
ip ip-prefix as index 10 permit 1.1.1.0 24

route-policy as permit node 10 
 if-match ip-prefix as 
 apply as-path 3 4 5 additive
#
route-policy as permit node 20

bgp 2
peer 12.1.1.1 route-policy as import

出向呼叫為  x 3 4 5   X代表實際經過過的AS
入向呼叫為  3 4 5 X   X代表實際經過過的AS
新增AS號處於列表的最左端;

注:以上配置方式,若網路後端真實存在AS3/4/5.那麼由於EBGP水平分割,將導致這些路由無法被學習;
解決方案:重複新增實際已經經過的AS編號來增加數量
[r2-route-policy]apply  as-path  1 1 1 additive

5.起源屬性(該路由的來源)

  • BGP宣告本地路由表中的路由 i
  • 將本地路由表中IGP路由重發布到BGP協議 ?
  • 將本地路由表中EGP路由器重發布到BGP e
  • i > e > ?

在這裡插入圖片描述

[r2]ip ip-prefix o permit 1.1.1.0 24
[r2]route-policy o permit node 10
[r2-route-policy]if-match  ip-prefix o 
[r2-route-policy]apply origin egp 2    編寫對端裝置的AS號
[r2-route-policy]q
[r2]route-policy o permit node 20
[r2-route-policy]q
[r2]bgp 2 
[r2-bgp]peer  3.3.3.3 route-policy o export
控制層面流量的入或出介面呼叫均可;

結果:

在這裡插入圖片描述

6.MED(多出口鑑別屬性)

multi-exit-discriminatrs

BGP協議預設沒有度量值(沒有cost);MED就是人為的在路由條目中編寫一個cost數值,用於干涉選路。

常常用於AS1干涉AS2對AS1的選路

<r1>ping -r -a 1.1.1.1 3.3.3.3
[r1]ip ip-prefix med permit 1.1.1.0 24
[r1]route-policy med permit node 10
[r1-route-policy]if-match ip-prefix med
[r1-route-policy]apply cost 2
[r1-route-policy]q
[r1]route-policy med permit node 20
[r1-route-policy]q
[r1]bgp 1 
[r1-bgp]peer  12.1.1.2 route-policy med export

14.BGP選路規則

比較前提,多條BGP路由目標相同,且均可優(下一跳可達、同步關閉),具有相同的優先順序(管理距離)

  • 優選Preference_Value值最高的路由(私有屬性,僅本地有效)。
  • 不傳遞 許可權最高屬性 可以干涉EBGP/IBGP選路
  • 優選本地優先順序(Local_Preference)最高的路由。
  • IBGP鄰居關係間傳遞 只能,最常干涉IBGP關係的選路
  • 優選手動聚合>自動聚合>network>import>從對等體學到的。
  • 優選AS_Path短的路由。
  • EBGP/IBGP關係均可被幹涉,但只能在EBGP鄰居間修改;
  • 起源型別IGP>EGP>Incomplete。
  • 起源屬性 i優於e優於?; 可在控制層面任意介面修改;
  • 對於來自同一AS的路由,優選MED值小的。
  • 預設為0,宣告或重發布(關閉自動彙總)路由時攜帶本地到達目標的cost
  • 最常用於干涉EBGP選路的屬性
  • 優選從EBGP學來的路由(EBGP>IBGP)。
  • 優選AS內部IGP的Metric最小的路由。
  • 優選Cluster_List最短的路由。
  • 優選Orginator_ID最小的路由。
  • 優選Router_ID最小的路由器釋出的路由。
  • 優選具有較小IP地址的鄰居學來的路由。

第0條

  • 1.下一跳是否可達,如果不可達則不參與選路

  • 2.BGP向IBGP對等體釋出import引入的IGP路由時,將下一跳屬性改為自己的介面地址,而非IGP中的下一跳地址。

  • 3.peer next-hop-invariable命令有以下作用:

    ​ (1)BGP speaker在向EBGP對等體釋出路由時不改變下一跳(該命令配置在EBGP對等體之間)

    ​ (2)BGP speaker在向IBGP對等體釋出引入的IGP路由時使用IGP路由的下一跳地址。

第1條

比較協議首選值PreVal ,數值高優選,本地始發和鄰居傳遞過來的都為0.該屬性本路由器有效,是華為私有屬性。

第2條

  • Local pref本地首選項(越大越優選),該引數在本AS內傳遞。
  • 始發路由器的Local pref值為空,傳遞給AS內IBGP鄰居後變為100;(本地優先順序屬性僅在IBGP對等體之間交換,不通告給其他AS
  • 如果路由沒有Local-pref值,BGP選路時將該路由按預設的Local-pref值100處理。
  • 使用命令為default local-preference本機向所有IBGP鄰居釋出的所有路由設定一個預設的Local_Pref
  • 使用命令為apply local-preference為本機向任意IBGP鄰居釋出的任意路由設定Local_Pref,並且可以為不同的路由設定不同的Local_Pref 。
  • 當路由同時應用default local-preference和apply local-preference命令時,apply local-preference命令的配置優先生效。

第3條

本地始發路由優先,優選順序:

手動聚合路由 > 自動聚合路由 > network宣告路由 > 重發布路由

第4條

AIGP(Accumulated Interior Gateway Protocol Metric):

用於傳遞並累加IGP Metric值,該屬性是可選非過渡屬性;

第5條

比較AS-PATH,長度短者優先,AS-PATH屬性有四種形式:

  • AS_Sequence
  • AS_Set
  • AS_Confed_Sequence
  • AS_Confed_Set

一個as-set被計數為1,而不管“set”中包含多少個as

忽略該條:bestroute as-path-ignore

第6條

比較路由起源屬性,IGP(0)>EGP(1)>Incomplete(3)

不完全的(Incomplete):路由資訊是從其他渠道學習到的。不完全路由並不是說該路由器有任何缺陷,只是確定該路由來源的資訊不完整而已。例如:BGP通過重發布學習到的路由將攜帶不完全路由來源屬性,因為沒有辦法確定該路由的來源。

第7條

比較MED值,越小越優先

一、MED值產生過程:

  • 1.通過network和import注入到BGP中,若路由為該路由器直連路由則MED值為0 ,傳遞給IBGP和EBGP鄰居也是0

  • 2.通過network和import命令注入到BGP中的路由為非直連IGP路由那麼MED值為IGP的cost值,傳遞給IBGP和EBGP鄰居也為IGP的cost值(只有在邊界路由器上network和import的路由在傳遞給EBGP鄰居時才會攜帶MED值)

  • 3.通過aggregate命令注入到BGP中的路由的MED值為空,傳遞給IBGP和EBGP鄰居也為空

    二、MED值傳播範圍:

  • 1.在本AS的邊辦路由器上宣告路由時傳遞給其他AS的EBGP鄰居後,在下一AS範圍內繼續傳遞,但不會再傳遞給第三個AS。

  • 2.在AS內BGP Speaker上通告的路由的MED值會在本AS內傳遞;當邊界路由器再通告給EBGP鄰居時會清除MED值,如果要強制邊界BGP路由器將從IBGP學來的路由通告給EBGP鄰居時攜帶MED值,需要在邊界路由器上配置route-policy並apply cost-type internal,然後邊界路由器會把本路由器上的BGP路由到下一跳的cost值作為MED值傳遞給EBGP鄰居,(而非當前邊界路由器上看到的的MED值)

三、其他:

1.預設情況下BGP路由器只比較來自相同AS的MED值,使用compare-different-as-med命令,BGP將強制比較來自不同AS的路由的MED值。 使用deterministic-med將消除路由接收順序對選路結果的影響。

import命令注入到BGP中的路由為非直連IGP路由那麼MED值為IGP的cost值,傳遞給IBGP和EBGP鄰居也為IGP的cost值(只有在邊界路由器上network和import的路由在傳遞給EBGP鄰居時才會攜帶MED值)

  • 3.通過aggregate命令注入到BGP中的路由的MED值為空,傳遞給IBGP和EBGP鄰居也為空

第8條

相關文章