1. 程式人生 > 其它 >BGP選路規則

BGP選路規則

 

醉過才知酒濃

愛過才知情重

你不能做我的詩

正如我不能做你的夢   ---胡適

 

一、BGP的路徑屬性介紹

二、公認強制屬性

三、如何使用本地優先順序屬性和MED屬性

四、BGP選路分流實驗

 

一、BGP路徑屬性介紹

1、BGP不會執行負載均衡

  預設情況下,到達同一目標地址,BGP只走單條路徑,不會再多跳路徑之間執行負載均衡。

2、BGP選擇最優路徑

  BGP選路需要比較路由條目中的Path Attributes;

  有時候,路由器依靠預設屬性協商出來的”最優路徑“不一定是最好的路徑。

3、BGP的每條路由都帶有路徑屬性

4、BGP路徑屬性分為4類

  公認強制屬性

  公認自選

  可選可傳遞

  可選不可傳遞

5、公認屬性是所有BGP路由器都必須識別的屬性

  公認強制屬性---所有BGP路由器都可以識別,且必須存在於Update訊息中。如果缺少這種屬性,路由資訊就會出錯。代表:Original,AS-Path,Next-Hop

  公認任意屬性---所有BGP路由器都可以識別,但不要求必須存在Update訊息中,可以根據具體情況來決定是否新增到Update訊息中。代表:Local-Preference,Atomic-Aggregate

6、可選屬性不需要都被BGP路由器所識別

  可選可傳遞屬性---BGP路由器可以選擇是否在Update訊息中攜帶這種屬性。接受者路由器如果不識別這種屬性,可以轉發給鄰居路由器,鄰居路由器可能會識別並使用這種屬性。代表Community;

  可選不可傳遞屬性---BGP路由器可以選擇是否在Update訊息中攜帶這種屬性。在整個路由器釋出路徑上,如果部分路由器不能識別這種屬性,可能導致該屬性無法發揮作用。因此接受的路由器如果不識別這種屬性,將丟棄該屬性,不必轉發給鄰居路由器。代表:MED;

常見的BGP路徑屬性

屬性名稱 描述 性質  
Original 起源屬性 公認強制  
AS-Path AS路徑 公認強制  
Hext-Hop 下一跳地址 公認強制  
MED 多出口辨別(調整Metric值) 可選不可傳遞  
Local-Pref 本地優先順序 公認屬性  
Community 一般團隊屬性 可選可傳遞  
Weight 權重值(cisco私有屬性) 可選可傳遞  

 

二、公認強制屬性與其選路規則

Orignal(起源屬性)

  使用network釋出的路由,起源屬性為:i

  重分發到BGP中的路由,起源屬性為:?

 

下一調屬性(Next-Hop)

  到達目標網路的下一跳地址,不一定是直連鄰居地址,只要在IGP路由中下一跳可達也可以。

  如果下一跳地址不與當前路由器直連,則BGP在將資料包發往下一跳時,通常需要採用遞迴查詢在IGP路由表中查詢該下一跳地址。

  一臺BGP路由器將路由傳遞給EBGP鄰居時,會將Next-hop屬性改為自己的地址,也就是和對方建立鄰居所使用的地址。而將路由傳遞給IBGP鄰居時,不會改變下一跳屬性。所以必須對IBGP鄰居強制修改next-hop屬性為本地更新源。

 

AS_PATH屬性

  AS_Path中包含了BGP路由器到達目的地所經過的所有AS號碼的集合。

  AS_Path中包含了多少個AS號碼,號碼多少,邏輯上反映了到達目的地的遠近。

  AS_Path還能細分為:

    AS_Sequence(有序的AS號碼,即有序號碼在AS_Path中是按一定順序排列的)

    AS_SET (無序的AS號碼,即AS號碼在AS_Path中的排列是沒有順序的,通常是將多條擁有不同AS_Path的路由彙總後產生的)

    當BGP路由表中到達同一目的地存在多條路徑時,會優選AS-Path最短的路徑

    AS-Path屬性內的AS號碼可以重複

使用預設的AS_PATH屬性可能無法選出最優路徑

可以通過加長AS_PATH的列表長度,從而影響選擇

三、如何使用本地優先順序屬性和MED屬性

本地優先順序屬性(Local-Preference)

 Local-Preference只在本AS內有效(公認任意屬性)

  本地優先順序預設值都是100,越大越優先

  一般用於AS內部往外部流量選擇多個ASBR或RR的時候使用(收路由用)

MED屬性(Multi-Exit-DISC)

  MED是可選不可傳遞屬性,類似於Metric屬性,數值越小越優先。

  向EBGP鄰居傳送時使用。

  區別到達同一鄰居AS的多條入口鏈路(MED值越小,鏈路越優先)。

  MED值只能在AS間傳遞

  所有發給IBGP鄰居的路由MED值都為0

預設情況下,只有當去往目的地的多個下一跳EBGP鄰居為相同AS時,才比較MED值。

調整路徑屬性的方式

p prefix-list命令用來配置一個IPv4地址字首列表表項。

undo ip prefix-list命令用來刪除一個IPv4地址字首列表或其某個表項。

【命令】

ip prefix-list prefix-list-name [ index index-number ] { deny permit ip-address mask-length [ greater-equal min-mask-length ] [ less-equal max-mask-length ]

undo ip prefix-list prefix-list-name [ index index-number ]

# 定義一條名為p1的IPv4地址字首列表,只允許10.0.0.0/8網段的,掩碼長度為17或18的路由通過。

<Sysname> system-view

[Sysname] ip prefix-list p1 permit 10.0.0.0 8 greater-equal 17 less-equal 18

# 建立一個名為policy1的路由策略,其節點序列號為10,匹配模式為permit。定義一個if-match子句,允許下一跳地址匹配已存在的地址字首列表p1的路由資訊通過。

<Sysname> system-view

[Sysname] route-policy policy1 permit node 10

[Sysname-route-policy-policy1-10] if-match ip next-hop prefix-list p1

 

BGP選路規則

  1、最高Local_Pref值

  2、本地發起路由

  3、最短AS_PATH

  4、最低Origin型別

  5、最小MED值

  6、EBGP由於IBGP

 

四、BGP選路分流實驗