深刻理解BGP的幾個路由特性(試讀連載六)

如下內容摘筆者編著,如今接受最優惠的7折預訂(並送特製的2011年臺歷),即將於11月8號首發上市的《路由器配置與管理徹底手冊——H3C篇》。本書完整目錄參見:http://winda.blog.51cto.com/55153/353767 網絡

其姊妹篇——《路由器配置與管理徹底手冊——Cisco篇》的完整目錄參見:http://winda.blog.51cto.com/55153/333804負載均衡

10.1.2 BGP的幾種主要路由屬性 ide

       BGP路由屬性是BGP 路由的核心概念。它是一組參數,在路由更新消息中一同被髮給鏈接對等體/對等體組。這些參數記錄了BGP路由信息,用於選擇和過濾路由。它們能夠被看做是選擇路由的度量(metric)。工具

      BGP路由屬性能夠分紅四類:公認強制(Well-known mandatory attributes)、公認自由選擇(Well-known discretionary attributes)、可選傳遞(Optional transitive attributes)和可選非傳遞(Optional nontransitive attributes)。學習

       公認的(Well-known)屬性對於全部的BGP路由器來講都是可辨別的;每一個路由更新消息中都必須包含強制(mandatory)公認屬性,而自由選擇的(discretionary)公認屬性則是可選的,可包括也可不包括。對於可選的(Optional)屬性,不是全部的BGP工具都支持它。當BGP不支持這個屬性時,若是這個屬性是過渡性的(transitive),則會被接受並傳給其餘的BGP對等體;若是這個屬性是非傳遞性的(nontransitive),則被忽略,不傳給其餘對等體。
       在技術文檔RFC1771定義了1~7號的BGP路由屬性,依次是:1,ORIGIN(產生該路由信息的AS);2,AS_PATH(包已經過的AS集或序列);3,NEXT_HOP(要到達該目的下一跳的IP地址,iBGP鏈接不會改變從EBGP發來的NEXT_HOP);4,MULTI_EXIT_DISC(MED,本地路由器使用,區別到其餘AS的多個出口);5,LOCAL-PREF(在本地AS內傳播,標明各路徑的優先級);6,ATOMIC_AGGREGATE;7,AGGREGATOR。在RFC1997中還定義了8,COMMUNITY。
this

      在上面這些屬性中,一、2號屬性是公認強制;三、五、6是公承認選;七、8是可選過渡(「過渡」的意思就是能夠傳播到其餘AS中);4是可選非過渡。這些屬性在路由的選擇中,考慮的優先級是不一樣的。僅就這8個屬性來講,其中優先級最高的是LOCAL-PREF,接下來是ORIGIN和AS_PATH。spa

      在配置BGP路由時,首先須要瞭解BGP路由的一些主要屬性,不然很難正確理解本章後面所要介紹的BGP路由配置步驟,由於儘管有些屬性從名字上看起來它與其餘路由屬性同樣,但內涵有着比較明顯的區別。blog

1. ORIGIN(源)屬性 接口

      這是公認強制的BGP屬性。Origin屬性指明瞭當前路由是從哪裏獲得的,用來標記一條路由的路由信息源。這在顯示BGP路由表時每條BGP路由信息中都會有體現的。它有如下三種類型:ip

clip_p_w_picpath001 IGP(i):是BGP用Network命令通告的IGP路由表中存在的路由,優先級最高,說明路由產生於本AS內。

clip_p_w_picpath001[1] EGP(e):是從eBGP鄰居那裏學習獲得的路由,優先級次之。

clip_p_w_picpath001[2] incomplete(?):優先級最低,它並非說明路由不可達,而是表示路由的來源沒法肯定。例如,引入的其它路由協議的路由信息。

2. AS_PATH(AS路徑)屬性

       這也是公認強制的BGP屬性。AS_PATH屬性是必定順序記錄了某條路由從本地到達目的地址,一路所通過的全部AS號,這就是「AS路徑」的含義。當BGP將一條路由通告到其餘AS時,便會把本地AS號添加在AS_PATH列表的最前面。收到此路由的BGP路由器根據AS_PATH屬性就能夠知道去目的地址所要通過的AS。離本地AS最近的相鄰AS號排在前面,其餘AS號按順序依次排列。經過觀察AS_PATH,BGP Speaker能夠找出路由是從哪一個自治系統產生的,以及這個路由傳遞通過了多少AS。最右邊的AS號就是路由的產生者,最左邊的AS號就是剛剛聲明瞭路由的那個相鄰的AS。處於AS_PATH中間的AS號是路由傳遞通過的AS。這樣的AS_PATH序列被稱爲AS_SEQUENCE,AS_PATH序列就處在它的維護的序列中。但一般狀況下,BGP不會接受AS_PATH中已包含本地AS號的路由,從而避免了造成路由環路的可能。也就是隻有在eBGP Peer之間通告路由時,纔會在AS_PATH列表中添加AS號,同一個AS中的通告不會添加AS號的。若是某臺BGP路由器從其外部Peer收到某條路由的AS_PATH列表中包含了本身的AS號,則該路由就知道出現了環路,於是丟棄該路由。

       如圖10-1中有兩條從AS 50區域中路由器到達目的網絡8.0.0.0的路由,根據箭頭所示的路由通告方向(通告方向是路由路徑的反方向)能夠看出,在AS_PATH列表中依次添加了所通過的AS號,而且是最近的處於最前面,其餘AS號按順序依次排列,中間以逗號分隔。如最後D=8.0.0.0(30,20,10)和D=8.0.0.0(40,10)。

clip_p_w_picpath003

圖10-1 AS_PATH屬性示例

       同時,AS_PATH屬性也可用於路由的選擇和過濾。在其餘因素相同的狀況下,BGP會優先選擇路徑較短的路由。好比在前面的圖10-1中,AS 50中的BGP路由器會優先選擇通過AS 40的路徑做爲到目的地址8.0.0.0的最優路由。

       在某些應用中,可使用路由策略來人爲地增長AS路徑的長度,以便更爲靈活地控制BGP路由路徑的選擇。經過配置AS路徑過濾列表,還能夠針對AS_PATH屬性中所包含的AS號來對路由進行過濾。這些具體將在本章後面介紹。

3. NEXT_HOP(下一跳)屬性

       這也是公認強制的BGP屬性。BGP是一個AS到AS的路由協議,並非一個路由器到路由器的路由協議。在BGP中,下一跳的意思並非指下一下路由器,而是指到達另外一個AS的IP地址。因此BGP路由的NEXT_HOP屬性中所描述的IP地址不老是鄰居路由器的IP地址。具體規則以下。

clip_p_w_picpath001[3] 若是發起路由的路由器與接收通告的路由器位於不一樣AS(它們之間是eBGP關係),那麼下一跳是通告路由的對應路由器接口。如圖10-2中的AS 100路由器產生到達8.0.0.0網絡的路由通告給AS 200路由器時,下一跳地址就是AS 100路由器與AS 2000路由器鏈接時所用的接口IP地址1.1.1.1/24。

clip_p_w_picpath001[4] 若是BGP Speaker把接收到的路由(並非由他發起的)發送給eBGP對等體時(它們之間也是eBGP關係),將把該路由信息的下一跳屬性設置爲轉發路由的對應路由器接口。如圖10-2中的AS 200向AS 300中左邊那臺路由器轉發從AS 100獲得的路由通告時,其路由的下一跳地址爲AS 200與AS 300中左邊那臺路由器相連時所用的接口的IP地址1.1.2.1/24。

clip_p_w_picpath005

圖10-2 BGP下一跳屬性示例

clip_p_w_picpath001[5] BGP Speaker把從eBGP鄰居獲得的路由轉發給iBGP鄰居時(它們之間是iBGP關係,但路由是來自其餘AS),不改變該路由信息的下一跳屬性,也就是路由中原來的下一跳是什麼地址就是什麼地址。如圖10-2中AS 300左邊那臺路由器轉發從AS 200得到的路由通告到相同區域中的右邊那臺路由器時,其下一跳沒有改變,仍爲AS 200與AS 300中左邊那臺路由器相連時所用的接口的IP地址1.1.2.1/24。若是配置了負載均衡,路由被髮給iBGP鄰居時則會修改下一跳屬性。

clip_p_w_picpath001[6] 若是通告路由的路由器與接收通告的路由器屬於同一個AS(它們之間是iBGP關係),且所通告的路由是本AS中的,則下一跳爲鄰居路由器的接口IP地址。只有這種狀況才與RIP、OSPF路由的下一跳是同樣的。

4. LOCAL_PREF(本地優先)屬性

      這是公認自選的BGP屬性。LOCAL_PREF屬性用於判斷流量離開AS時(後面將要介紹的MED屬性是進入AS時)的最優路由。LOCAL_PREF屬性僅在iBGP對等體之間交換和比較,不通告給其餘AS。它代表BGP路由器的優先級。

       當BGP的路由器經過不一樣的iBGP對等體獲得目的地址相同,但下一跳不一樣的多條路由時,將優先選擇LOCAL_PREF屬性值較高的路由。如圖10-3所示,在Router D上學習到了有兩條經過同一AS中的路由器路徑能夠到達Router A,這時就可使用本地優先級進行選路了,通過比較最終肯定從AS 20到AS 10的流量將選擇Router C做爲出口,由於Router C中的LOCAL_PREF屬性值爲200,高於Router B中的LOCAL_PREF屬性值100。

clip_p_w_picpath007

圖10-3 BGP LOCAL_PREF屬性示例

5. MED(MULTI_EXIT_DISC)屬性

       MED(Multi-Exit Discriminators,多出口區分)屬性是一個可選非過渡(也就是不能傳播到其餘AS中)屬性。MED屬性至關於IGP使用的度量值(metrics),用於判斷流量進入AS時的最優路由。MED屬性僅在相鄰兩個AS之間交換,收到此屬性的AS一方不會再將其通告給任何其餘第三方AS。當一個BGP路由器經過不一樣的eBGP對等體獲得目的地址相同,但下一跳不一樣的多條路由時,在其它條件相同的狀況下,將優先選擇MED值較小者做爲最優路由。如圖10-4所示,從AS 10到AS 20的流量將選擇Router B做爲入口,由於Router B中的MED值爲0,小於Router C中的MED值100。

clip_p_w_picpath009

圖10-4 BGP MED屬性示例

       通常狀況下,路由器只比較來自同一AS中多個eBGP鄰居路徑(也就是這些路徑來自同一個eBGP AS)的MED屬性,不比較來自不一樣AS的MED值。若非得要比較的話,則經過配置compare-different-as-med命令,能夠強制BGP比較來自不一樣AS的路由的MED屬性值。

6. COMMUNITY(團體)屬性

       Community屬性是一個可選過渡BGP屬性,是一組有相同特徵的目的地址的集合,用來簡化路由策略的應用和下降維護管理的難度。團體中具體集合的路由數量沒有物理上的邊界,與其所在的AS無關。公認的團體屬性有:

clip_p_w_picpath001[7] INTERNET:默認狀況下,全部的路由都屬於INTERNET團體。具備此屬性的路由能夠被通告給全部的BGP對等體。

clip_p_w_picpath001[8] NO_EXPORT:具備此屬性的路由在收到後,不能被髮布到本地AS以外。若是使用了聯盟,則不能被髮布到聯盟以外,但能夠發佈給聯盟中的其餘子AS。

clip_p_w_picpath001[9] NO_ADVERTISE:具備此屬性的路由被接收後,不能被通告給任何其餘的BGP對等體。

NO_EXPORT_SUBCONFED:具備此屬性的路由被接收後,不能被髮布到本地AS以外,也不能發佈到聯盟中的其餘子AS。

相關文章
相關標籤/搜索