路由協議常見FAQ-V1.1

文檔名稱 文檔密級

2012-12-31 第 1 頁, 共 40 頁

路由協議 FAQ

Prepared by

整理

Date

日期

2012-12-28

Reviewed by

評審人

Date

日期

Approved by

批准

Date

日期

Authorized by

簽發

Date

日期

Huawei Technologies Co., Ltd. 華爲技術有限公司

文檔名稱 文檔密級

2012-12-31 第 2 頁, 共 40 頁

1 OSPF專題

1.1 OSPF Router-ID的作用,選舉規則?

OSPF的Router-ID是一臺路由器在自治系統中的唯一標識。OSPF的router-id可以手工指定,手工指定的router-id具有最高的優先級。命令如下:

[Router]OSPF 100 router-id 1.1.1.1

如果沒有通過手工指定router-id,系統會從當前接口的IP地址中自動選取一個作爲路由器的router-id。其選擇順序是:優先從Loopback地址中選擇最大的IP地址作爲路由器的ID號,如果沒有配臵Loopback接口,則在接口地址中選取最大的IP地址作爲路由器的ID號。

爲了保證router-id的穩定性,一旦通過選舉產生了router-id,即使有更優的地址出現(更大的loopback或物理接口地址)、刪除OSPF進程後再重新配臵OSPF進程、reset OSPF progress都不會重新選舉router-id,除非作爲原有router-id的IP地址本身被刪除或IP地址所在接口(邏輯接口、子接口)被刪除,並且reset OSPF progress。

1.2 OSPF特殊區域中的默認路由下發規則?

Stub區域:由於Stub區域不允許攜帶OSPF自治系統外部路由的4類和5類LSA泛洪到該區域(Stub區域不能有ASBR),所以Stub區域除了ABR外其他路由器都沒有OSPF自治系統外部路由,爲了解決該區域的路由器訪問OSPF自治系統外部網絡的需求,Stub區域的ABR會自動產生一條Link-id爲0.0.0.0,掩碼爲0.0.0.0的summary LSA(3類),並在通告到整個Stub區域。

Totally stub區域:Totally Stub區域和Stub區域的不同在於Totally Stub區域除了不允許攜帶OSPF自治系統外部路由的4類和5類LSA防洪到該區域,也不允許攜帶OSPF其他區域路由的3類LSA泛洪到Totally Stub區域.爲了解決Totally stub區域內的路由器訪問OSPF其他區域或訪問OSPF自治系統外部網絡的需求,Totally Stub區域的ABR會自動產生一條Link id爲0.0.0.0 網絡掩碼爲0.0.0.0的Summary LSA(3類),並且通告到整個Totally stub區域。

NSSA區域:NSSA區域和Stub區域相比的不同在於,NSSA區域允許有ASBR路由器,NSSA區域過濾的是通過OSPF骨幹區域學到的4類和5類LSA,不包括NSSA區域的ASBR學到的7類LSA.

文檔名稱 文檔密級

2012-12-31 第 3 頁, 共 40 頁

NSSA區域的ABR會自動產生一條Link-id爲0.0.0.0,掩碼爲0.0.0.0的summary LSA(3類),並在通告到整個NSSA區域,該缺省路由將作爲NSSA區域所有路由器的網絡出口。

Totally NSSA區域:Totally NSSA區域和NSSA區域不同之處在於,Totally NSSA不允許攜帶OSPF區域間的路由。

Totally NSSA區域的ABR也會自動下發一條Link-id爲0.0.0.0,掩碼爲0.0.0.0的summary LSA(3類),並通告到整個Totally NSSA區域,該缺省路由將作爲該區域所有路由器的網絡出口。

1.3 OSPF特殊區域中如果存在兩個ABR,那麼這兩個ABR都下發缺省路由,不是會形成環路嗎?

不會形成環路,當特殊區域中的ABR接收到同一區域ABR發來的帶有默認路由的SLA時,它只會將其放入LSDB(LSA Database)裏,但不會用其計算路由,從而避免環路。

如果OSPF路由器已經發布了含缺省路由的LSA,就不會再學習其它路由器發佈的相同類型的缺省路由LSA(路由計算時不再計算其它路由器發佈的相同類型的缺省路由LSA)。

1.4 如果在一個NSSA區域有兩個ABR,他們都會將Type7 LSA轉換成Type5 LSA嗎?

不會的,RFC3101中規定,當NSSA區域有多個ABR時,只有Router ID最大的ABR負責將Type7 LSA轉換成Type5 LSA。

1.5 OSPF有哪些種路由過濾方式,這些方式的區別是什麼?

OSPF的路由過濾方式很多,主要有filter-policy、filter、route-policy。

這幾種路由過濾方式的區別主要體現在兩點:

1、 Filter-policy和filter僅能實現路由的過濾,route-policy不僅可以實現路由過濾,還能實現給路由添加或修改標籤,添加或修改優先級等等。

2、 OSPF的路由過濾有兩種實現方式,一種是對路由表的過濾,這種方式僅對配臵過濾的路由器起作用,不會阻止LSA的產生和泛洪,所以也不會影響其他路由

文檔名稱 文檔密級

2012-12-31 第 4 頁, 共 40 頁

器產生路由,Filter-policy import OSPF 屬於這種方式。第二種方式是阻止LSA的產生,本機以及同區域或同自治系統的其他路由器產生相應的路由,除了filter-policy import OSPF 都屬於第二種方式。

1.6 Virtual-link和sham-link的區別是什麼?

Virtual-link是爲了解決OSPF的不規則區域問題而產生的,正常情況下OSPF的所有非骨幹區域都要直接和骨幹區域(area0)相連,如果由於前期規劃問題等原因導致某個非骨幹區域必須通過另一個非骨幹區域來連接骨幹區域的話,就要用到virtual-link。如下圖所示:爲了讓Area2能夠和骨幹區域相連,需要在R3和R2之間建立一條virtual-link。

OSPF的***配臵下,PE2通過從遠端PE1通過Mbgp學到的路由引入到OSPF後只能還原成3類/5類/7類LSA,如果CE之間存在後門鏈路,,作爲公網mpls鏈路的備份。則在CE上通過後門鏈路學到的路由是區域內路由,由於從MBGP學到的路由,這樣就導致了數據只能通過後門鏈路而不會優選MPLS鏈路,未解決此問題產生了sham-link,sham-link的主要作用是可以還原1類和2類LSA.

文檔名稱 文檔密級

2012-12-31 第 5 頁, 共 40 頁

1.7 OSPF幾種常用LSA的作用?

Router LSA(type 1):

每一臺路由器都會產生Router LSA,router lsa描述了該路由器的所有鏈路和接口,並指明瞭他們的狀態和每條鏈路出方向的cost,以及該鏈路上所有已知的OSPF鄰居。Router LSA只在區域內部進行泛洪。

Network LSA(type 2):

Network LSA由DR產生,用來描述一個MA(multiple access)網絡中所有路由器,Network LSA列出了MA網絡中與本路由器相連的所有路由器,包括DR本身。

Network summary LSA(type 3):

此類型LSA由ABR生成,用來通告區域間的路由,傳播範圍是除了Totally stub和Totally NSSA區域以外的OSPF區域。

ASBR Summary LSA(type 4):

由ABR產生,用來通告ASBR的位臵,傳播範圍是除了ASBR所在區域以及stub、totally stub、NSSA、totally NSSA區域以外的整個OSPF區域。之所以需要四類LSA是因爲5類LSA在傳播過程中,通告者字段始終是ASBR,所以除了本區域以外的路由器,其他區域的路由器都不知道通告者的位臵。而三類LSA在傳播過程中遇到ABR,通告者字段就會自動修改

文檔名稱 文檔密級

2012-12-31 第 6 頁, 共 40 頁

爲ABR的router-id,所以每個區域都知道通告者的位臵。四類LSA在傳播過程中遇到ABR,通告者字段就會自動修改爲ABR的router-id。

Autonomous system external LSA(type 5):

由ASBR產生,用來通告到達OSPF自治系統外部目的地址或者缺省路由的LSA,傳播範圍是整個OSPF區域。

NSSA EXTERNAL LSA(TYPE 7):

由ASBR產生,用來通告到達OSPF自治系統外部目的地址或缺省路由的LSA,只在NSSA區域內泛洪。之所以有7類LSA是因爲NSSA區域就是用來過濾遠端學到的4類和5類LSA的,但是本地產生或學到的外部路由不應該被過濾,所以起了一個產生了7類LSA。

1.8 Stub區域和NSSA區域的區別?

簡單的講就是Stub區域不能包含ASBR,NSSA區域可以包含ASBR.

1.9 OSPF支持多進程,那麼交換機的一個接口也可以屬於不同的OSPF進程嗎?

不能。OSPF支持多進程是指在同一臺交換機上可以運行多個不同的OSPF進程,它們之間互不影響,彼此獨立,不同OSPF進程之間的路由交互相當於不同路由協議之間的路由交

互。但是交換機的一個接口只能屬於某一個OSPF進程。

1.10 OSPF在建立或維持OSPF鄰居或鄰接關係之前,需要準備哪些參數?

運行OSPF協議的接口編號、發送Hello和Dead報文的時間間隔、OSPF的最大重傳次數、重傳LSA的時間間隔以及泛洪更新LSA的時間間隔。

1.11 OSPF協議路由的計算有那些過程?

OSPF 協議路由的計算過程可簡單描述如下:

a) 每臺OSPF 設備根據自己周圍的網絡拓撲結構生成鏈路狀態通告LSA(Link State Advertisement),並通過更新報文將LSA 發送給網絡中的其它OSPF 設備。

文檔名稱 文檔密級

2012-12-31 第 7 頁, 共 40 頁

b) 每臺OSPF 設備都會收集其它路由器發來的LSA,所有的LSA 放在一起便組成了鏈路狀態數據庫LSDB(Link State Database)。

c) OSPF 設備將LSDB 轉換成一張帶權的有向圖,這張圖便是對整個網絡拓撲結構的真實反映。

d) 每臺OSPF設備根據有向圖,使用SPF 算法計算出一棵以自己爲根的最短路徑樹,這棵樹給出了到自治系統中各節點的路由。

1.12 ABR和ASBR有什麼區別?

ABR可以同時屬於兩個以上的區域,但其中一個必須是骨幹區域。ABR用來連接骨幹區域和非骨幹區域,它與骨幹區域之間既可以是物理連接,也可以是邏輯上的連接。

ASBR是與其他AS 交換路由信息設備,它可能是區域內路由器,也可能是ABR。只要一臺OSPF 設備引入了外部路由的信息,它就成爲ASBR。

1.13 OSPF定義了哪幾種網絡類型?

OSPF定義了四種網絡類型,分別是點到點網絡,廣播型網絡,NBMA網絡和點到多點網絡。

點到點網絡是指只把兩臺路由器直接相連的網絡。

廣播型網絡是指支持兩臺以上路由器,並且具有廣播能力的網絡。

非廣播多路訪問(NBMA網絡)。在NBMA網絡上,OSPF模擬在廣播型網絡上的操作,但是每個路由器的鄰居需要手動配臵。NBMA方式要求網絡中的路由器組成全連接。

點到多點網絡是將整個非廣播網絡看成是一組點到點網絡。每個路由器的鄰居可以使用底層協議例如反向地址解析協議(Inverse ARP)來發現。對於不能組成全連接的網絡應當使用點到多點方式。點到多點網絡類型不是一種默認的網絡類型。

1.14 鄰居和鄰接關係的區別?

OSPF路由器啓動後,便會通過OSPF接口向外發送Hello報文。收到Hello報文的OSPF路由器會檢查報文中所定義的一些參數,如果雙方一致就會形成鄰居關係。

形成鄰居關係的雙方不一定都能形成鄰接關係。只有當雙方成功交換DD 報文,並交換

文檔名稱 文檔密級

2012-12-31 第 8 頁, 共 40 頁

LSA 之後,才形成真正意義上的鄰接關係。

1.15 在所有類型的OSPF網絡中都會產生DR和BDR嗎?

不是所有網絡類型都會產生DR和BDR,只有廣播型網絡和NBMA網絡中才有DR和BDR。

1.16 OSPF每種報文類型各自實現什麼功能?

OSPF共有五種報文類型。

Hello報文用於發現和維護鄰居關係,在廣播型網絡和NBMA網絡上Hello報文也用來選舉DR和BDR。

Database Description報文通過攜帶LSA頭部信息描述鏈路狀態摘要信息。

Link State Request報文用於發送下載LSA的請求信息,這些被請求的LSA是通過接收DD報文發現的,但是本路由器上沒有的。

Link State Update報文通過發送詳細的LSA來同步鏈路狀態數據庫。

Link State Ack報文通過泛洪確認信息確保路由信息的交換過程是可靠的。

除了Hello報文以外,其他所有報文只在建立鄰接關係的路由器之間發送。

1.17 OSPF 路由器分爲幾種類型?

OSPF路由器根據在AS中的不同位臵,可以分爲四類。

區域內路由器IR(Internal Routers):該類路由器的所有接口都屬於同一個OSPF區域。

區域邊界路由器ABR(Area Border Routers):該類路由器可以同時屬於兩個以上的區域,但其中一個必須是骨幹區域。ABR用來連接骨幹區域和非骨幹區域,它與骨幹區域之間既可以是物理連接,也可以是邏輯上的連接。

骨幹路由器BR(Backbone Routers):該類路由器至少有一個接口屬於骨幹區域。因此,所有的ABR和位於Area0的內部路由器都是骨幹路由器。

自治系統邊界路由器ASBR(AS Boundary Routers):與其他AS交換路由信息的路由器稱爲ASBR。ASBR並不一定位於AS的邊界,它可能是區域內路由器,也可能是ABR。

文檔名稱 文檔密級

2012-12-31 第 9 頁, 共 40 頁

1.18 OSPF路由分爲幾種類型?

OSPF將路由分爲4級,按優先順序來說分別是:

區域內路由(Intra Area):缺省情況下路由的協議優先級爲10,描述的是AS內部同一個區域網絡結構。

區域間路由(Inter Area):缺省情況下路由的協議優先級爲10,描述的是AS內部不同區域的網絡結構。

第一類外部路由(Type1 External):缺省情況下路由的協議優先級爲150,描述應該如何選擇到AS以外目的地址的路由。第一類外部路由的開銷=本路由器到相應的ASBR的開銷+ASBR到該路由目的地址的開銷。

第二類外部路由(Type2 External):缺省情況下路由的協議優先級爲150,描述應該如何選擇到AS以外目的地址的路由。第二類外部路由的開銷=ASBR到該路由目的地址的開銷。

1.19 OSPF GR

Graceful Restart指的是平緩重啓路由器的一種功能,可以保證流量轉發不中斷,網絡不會因爲路由器的短時間重啓而引起路由震盪。

路由器若不以Graceful Restart方式重啓OSPF協議,與它鄰接的路由器就會把它從鄰居列表中刪除,並通知給其他路由器,導致重新計算SPF。如果協議重啓的時間很短,就會引起路由震盪。

爲了避免不必要的SPF計算,當路由器以Graceful Restart方式重啓OSPF協議時,會通知與它鄰接的路由器它只是關閉幾秒鐘,馬上就會恢復正常。這樣,鄰接路由器就不會將進行GR操作的路由器從鄰居列表中刪除,其他路由器也不會知道有路由器重啓,這樣就避免了因鄰居關係改變而導致的路由震盪。

1.20 OSPF路由聚合分爲哪兩類?

OSPF有兩類聚合:ABR聚合和ASBR聚合

ABR聚合:ABR向其它區域發送路由信息時,以網段爲單位生成Type3 LSA。如果該區

文檔名稱 文檔密級

2012-12-31 第 10 頁, 共 40 頁

域中存在一些連續的網段,則可以使用abr-summary命令將這些連續的網段聚合成一個網段。這樣ABR只發送一條聚合後的LSA,這樣可減少其它區域中LSDB的規模。

ASBR聚合:配臵引入路由聚合後,如果本地路由器是自治系統邊界路由器ASBR,將對引入的聚合地址範圍內的Type5 LSA進行聚合。當配臵了NSSA區域時,將對引入的聚合地址範圍內的Type7 LSA進行聚合。

1.21 區域內泛洪的LSA和區域間泛洪的LSA有什麼區別?

區域內的LSA是描述的是區域內路由器端口鏈路狀態的集合,區域間的LSA描述的是區域內各網段的精簡路由信息,而不是詳細的鏈路狀態信息。

1.22 OSPF協議報文不轉發是怎樣實現的?

OSPF協議報文是封裝在IP報文裏面的,把IP報文中的TTL值設臵爲1,可實現OSPF協議報文不轉發。

1.23 OSPF中DR和BDR的作用是什麼?

在廣播網和NBMA網絡中,任意兩臺路由器之間都要傳遞路由信息。如果網絡中有n臺路由器,則需要建立n*(n-1)/2個鄰接關係。這使得任何一臺路由器的路由變化都會導致多次傳遞,浪費了帶寬資源。爲解決這一問題,OSPF協議定義了指定路由器DR(Designated Router),所有路由器都只將信息發送給DR,由DR將網絡鏈路狀態廣播出去。

如果DR由於某種故障而失效,則網絡中的路由器必須重新選舉DR,並與新的DR同步。這需要較長的時間。爲了能夠縮短這個過程,OSPF提出了BDR(Backup Designated Router)的概念。

BDR實際上是對DR的一個備份,在選舉DR的同時也選舉出BDR,BDR也和本網段內的所有路由器建立鄰接關係並交換路由信息。當DR失效後,BDR會立即成爲DR。由於不需要重新選舉,並且鄰接關係事先已建立,所以這個過程是非常短暫的。當然這時還需要再重新選舉出一個新的BDR,雖然一樣需要較長的時間,但並不會影響路由的計算。

除DR和BDR之外的路由器(稱爲DR Other)之間將不再建立鄰接關係,也不再交換任何路由信息。這樣就減少了廣播網和NBMA網絡上各路由器之間鄰接關係的數量。

文檔名稱 文檔密級

2012-12-31 第 11 頁, 共 40 頁

1.24 OSPF爲什麼要劃分區域?

在比較大的網絡中OSPF的LSA非常龐大,佔用大量的存儲空間。OSPF是鏈路狀態協議,所以路由器存儲的是LSA而不僅僅是路由信息。劃分區域後,每個分區內的路由器所需要存儲的LSA的數量會大大的減少。

鏈路狀態算法比距離矢量算法複雜的多,在比較大的網絡中計算最小生成樹耗時大,CPU的負擔很重。劃分區域後,區域內還是採用鏈路狀態算法,但是區域之間採用的則是距離矢量算法。

在比較大的網絡中網絡拓撲結構經常發生變化,使得網絡經常處於“動盪”之中。網絡比較大的時候,網絡中拓撲發生變化的概率也會比較大,每次網絡拓撲發生變化的時候,都要重新計算最小生成樹。劃分區域後,ABR相當於一個“大壩”,把不同區域的“動盪”隔離開來。

1.25 OSPF區域間採用的距離矢量算法,通過什麼方法解決了以區域爲單位的環路問題?

不同的區域都必須與骨幹區域相連,並且只能和骨幹區域交互路由信息,可以解決這種環路問題。

2 ISIS專題

2.1 與OSPF對應,ISIS中是否也有router-id?ISIS中如果修改了loopback接口地址是否一定要修改ISIS中的system-id?

ISIS中也有router-id的概念,只是在ISIS中不叫router-id,而是稱爲system-id。如下所示:isis 100

Network-entity 49.0000.0010.0100.1001.00

在上面這個ISIS定義中,system-id就是0010.0100.1001(即network-entity中倒數7個字節中的前6個字節)。system-id可以根據loopback地址手工配臵(舉例中就是用1.1.1.1這個IP地址生成的),也可以用MAC地址手工配臵,只要能保證system-id在整個ISIS系統內唯一就可以。所以修改了loopback地址也不一定非要修改系統標示符。爲了安

文檔名稱 文檔密級

2012-12-31 第 12 頁, 共 40 頁

全起見,建議system-id與本路由器loopback地址或MAC地址保持一致,以防止產生衝突。

2.2 如何選擇ISIS網絡的system-id?

1. 使用loopback地址配臵system-id。如loopback地址爲192.168.3.25

2. 使用以太網口的MAC地址,如MAC地址爲0011-1130-4422。

0011.1130.4422:system-id

通常推薦使用loopback接口IP地址來生成system-id。

2.3 ISIS支持的網絡類型有哪些?

ISIS支持P-2-P網絡和廣播網絡,IS-IS協議不能真正支持NBMA網絡,但可以將NBMA鏈路配臵成子接口來支持。子接口類型爲:P-2-P或者廣播網絡。

2.4 ISIS協議運行在數據鏈路層,因此Isis鄰居關係的形成與IP無關,但爲什麼當對端和本端接口IP地址不在同一網段時不能形成鄰居關係?

ISIS鄰居關係的形成與IP無關,但ARP爲保證鄰居的可達性,如果不是unnumber地址,本端接口會檢查對端的路由,如果對端路由與本段不在同一網段,那麼兩端不能形成鄰居關係.

文檔名稱 文檔密級

2012-12-31 第 13 頁, 共 40 頁

2.5 IS、ES和DIS之間的區別?

IS(Intermediate System)中間系統:具有數據包轉發能力的網絡節點,類似於IP中的路由器。

ES(End System)端系統:沒有路由能力或數據包轉發能力的網絡節點,類似於IP中的主機。

DIS(Designated Intermediate System)指定中間系統:在ISIS廣播網絡類型中,需要選舉一個指定的中間系統,週期性的向其他路由器進行LSDB數據庫的泛洪。功能類似於OSPF中的DR(Designated Router)。但是在OSPF中還有備份BDR(Backup Designated Router)的概念,ISIS中沒有備份的DIS概念。

2.6 ISIS路由協議採用幾層的結構?

ISIS路由協議採用兩層結構:Level-1的普通區域和Level-2的骨幹區域。

Level-1的普通區域中所有的路由器必須有相同的區域地址,相互間形成Level-1的鄰居關係,整個區域中只有Level-1層次上的鏈路數據庫LSDB,沒有Level-2骨幹區域的路由信息。類似於OSPF中的Total Stubby區域。

Level-2的骨幹區域由所有的Level-2路由器和L1/L2路由器組成。該區域中路由器間形成Level-2的鄰居關係,擁有Level-2層次上的鏈路數據庫LSDB和Level-1層次上的路由信息。

L1/L2路由器可以同時和L1層次的路由器形成Level-1的鄰居關係,與L2層次的路由器形成Level-2的鄰居關係。所以L1/L2路由器擁有Level-1的鏈路狀態數據庫LSDB和Level-2的鏈路狀態數據庫LSDB,在區域的邊界完成把Level-1路由信息通告到Level-2骨幹區域中。

2.7 ISIS協議中,指定路由器(DIS)是如何選舉的?

ISIS 協議中,DIS 的選舉是自動進行的。選舉的依據是同一網絡中各接口的優先權,如果最高的優先權的接口不止一個則從這些優先權相同的接口中找MAC 地址最大的。DIS 的選舉是在IS 自身進行的,網絡中的各個IS 根據所在網絡的接口上的鄰居信息來進行選舉。由於整個網絡中的鄰居信息是一致的,所以各自進行的選舉結果是相同的。

只有在廣播網絡類型上纔會選舉DIS,在Point-to-Point的網絡類型不需要DIS 的選舉。

文檔名稱 文檔密級

2012-12-31 第 14 頁, 共 40 頁

不同層次有不同層次的DIS。

IS-IS中不存在備份DIS,當一個DIS不能工作時,直接選舉另一個。

DIS發送的Hello報文的時間間隔爲普通路由器的1/3,這樣便於其他路由器快速檢測到DIS的失效,同時快速選舉新的DIS接替。

DIS路由器不具有終生制,一旦網絡中新增加的路由器DIS的優先級高於當前的DIS的優先級或當前的DIS發生故障,網絡中將重新選舉新的DIS,網絡的穩定性較差。

2.8 ISIS中路由***的作用是什麼?

通常情況下,IS-IS的區域也稱爲Level-1區域,區域內的路由通過Level-1的路由器進行管理。所有的Level-2路由器構成一個Level-2區域。因此,一個IS-IS的路由域可以包含多個Level-1區域,但只有一個Level-2區域。Level-1區域必須且只能與Level-2區域相連,不同的Level-1區域之間並不相連。Level-1區域內的路由信息通過Level-1-2路由器通報給Level-2區域,因此,Level-2路由器知道整個IS-IS路由域的路由信息。但是,在缺省情況下,Level-2路由器並不將自己知道的其他Level-1區域以及Level-2區域的路由信息通報給Level-1區域。這樣,Level-1路由器將不瞭解本區域以外的路由信息,可能導致對本區域之外的目的地址無法選擇最佳的路由。爲解決上述問題,IS-IS提供了路由***功能,使Level-2路由器可以將己知的其他Level-1區域以及Level-2區域的路由信息通報給指定的Level-1區域。

3 BGP專題

3.1 BGP有哪幾種拓撲結構?

BGP有三種基本的網絡拓撲結構:

單口AS (stub AS):一個AS通過單一出口點到達其域外的網絡;

多歸路非過渡AS (multihomed AS):一個AS有多於一個到達外部網絡的出口點但它不允許業務量通過它過渡;

過渡AS (transit AS):一個AS有多於一個到達外部網絡的出口點並且它允許被其他AS用於過渡業務量;

文檔名稱 文檔密級

2012-12-31 第 15 頁, 共 40 頁

從BGP的觀點上來看整個Internet的拓撲就是由一系列單口AS多歸路非過渡AS和過渡AS組成的連通圖。每個AS用AS號碼來識別兩個AS之間的連接形成一個路徑,BGP保證無循環域間選路路徑信息的彙集形成一棵路徑樹,這棵路徑樹就是到達特定目的地的路由。

3.2 BGP的Router_ID如何配臵?如何自動選擇?

全局Router ID可以在全局模式下通過配臵命令router id來配臵,如果沒有通過命令指定,系統會從當前接口的IP地址中自動選取一個作爲路由器的ID號。其選擇順序是:優先從Loopback地址中選擇最大的IP地址作爲路由器的ID號,如果沒有配臵Loopback接口,則選取接口中最大的IP地址作爲路由器的ID號。只有在路由器的Router ID所在接口被刪除或去除手工配臵的Router ID的情況下才會重新選擇路由器的Router ID。爲了增加網絡的可靠性,建議將Router ID手工配臵爲Loopback接口的IP地址。

BGP的Router ID可以在啓動BGP進程後通過BGP全局模式下的配臵命令router-id來指定,若未配臵則採用全局Router ID值。通過BGP的配臵命令修改Router-ID會導致已經建立的BGP peer會全部重啓,如:

bgp 100

router-id 1.1.1.1

3.3 BGP的選路規則

BGP的選路規則如下:

優選協議首選值(PrefVal)最高的路由;

優選本地優先級(Local_Pref)最高的路由;

優選聚合路由(聚合路由優先級高於非聚合路由);

本地手動聚合路由的優先級高於本地自動聚合的路由;

本地通過network命令引入的路由的優先級高於本地通過import-route命令引入的路由;

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

文檔名稱 文檔密級

2012-12-31 第 16 頁, 共 40 頁

比較Origin屬性,依次選擇Origin類型爲IGP、EGP、Incomplete的路由;

優選MED值最低的路由;

優選從EBGP學來的路由(EBGP路由優先級高於IBGP路由);

優選AS內部IGP的Metric最低的路由。如果配臵了負載分擔,並且有多條As_Path完全相同的外部路由,則根據配臵的路由條數選擇多條路由進行負載分擔;

優選Cluster_List最短的路由;

優選Originator_ID最小的路由;

優選Router ID最小的路由器發佈的路由;

比較對等體的IP Address,優選從具有較小IP Address的對等體學來的路由。

3.4 BGP路由的基本使用原則有哪些?

BGP路由往往很多,但是並不是都會進行轉發處理,大概有如下幾條規則:

1) 多條路徑時,BGP Speaker只選最優的給自己使用,當然也可以設臵負載分擔,負載分擔請見BGP ECMP FAQ;

2) BGP Speaker只把自己使用的路由通告給相鄰體,也就是說本地BGP路由表裏面不是最優的路由不會再進行轉發處理等操作;

3) BGP Speaker從EBGP獲得的路由會向它所有BGP相鄰體通告(包括EBGP和IBGP),當然路由不會再從原路發送回去;

4) BGP Speaker從IBGP獲得的路由不向它的IBGP相鄰體通告(反射可以解決這個問題);

5) BGP Speaker從IBGP獲得的路由默認會向它所有EBGP相鄰體通告;若配臵了同步,是否通告給它的EBGP相鄰體要依IGP和BGP同步的情況來決定;

3.5 BGP路由協議是如何避免路由環路的?

BGP不同於其他IGP協議,其路由都包含了豐富的路由屬性,並通過路由屬性來對路由進行過濾,其中一個屬性爲AS_PATH,該屬性爲該路由經過的所有AS的序列,這樣對於收

文檔名稱 文檔密級

2012-12-31 第 17 頁, 共 40 頁

到的路由,通過對AS_PATH進行檢查,如果發現自身的AS號已經出現在AS_PATH屬性中,那麼就表示自身發佈的路由又重新回到自己所處的AS中,已經出現了路由環路,這時就會丟棄接收到的路由,從而避免繼續對外發布路由,導致環路產生。

當然還可以參考上面的BGP使用原則,比如BGP從IBGP收到的路由不繼續往IBGP鄰居發送,這也是協議上避免環路的一種方法。

正常情況下BGP會丟棄AS_PATH中包含自身AS號的路由。對於特定情況下導致的AS號重複的合理環境,可以通過如下命令來進行控制“peer { group-name | peer-ipv4-address } allow-as-loop [ number ]”,其中number取值範圍爲<1-10>,默認值爲1,即允許接收路由的AS_PATH中包含一個自身AS號。當然,在向EBGP鄰居發佈時,也還要在AS_PATH最後再加上自身的AS號。

3.6 有哪些原因會導致BGP連接建立不起來?

最常見原因如下:

1) 兩邊BGP peer地址無法ping通,一般是底層原因或者缺少可達的路由,可以使用擴展的ping命令檢查TCP連接是否正常,由於一臺路由器可能有多個接口能夠到達對端,應使用ping -a ip-address命令指定發送ping包的源IP地址。

2) 對等體IP地址和AS配臵錯誤,常爲大意所致;

3) OPEN報文協商失敗,OPEN報文需要協商BGP版本、Holdtime、RouterID以及可選項參數(包括各種能力參數)等;一般情況爲無法正確識別參數所導致,特別是友商的互通過程中(當收到不支持的能力參數時候,V5會主動斷開連接,這種實現是按標準RFC實現的,但是有新的草案准備完善此項功能);

4) BGP的MD5驗證配臵錯誤;

5) BGP的Router-ID衝突;

6) 聯盟與非聯盟之間的BGP連接配臵錯誤;

7) 比較少見的如BGP的Marker值出現錯誤;

8) 還有一些比較特殊的情況,見下文;

3.7 有哪些排錯手段針對BGP連接建立不起來的情況?

最常見方法如下:

文檔名稱 文檔密級

2012-12-31 第 18 頁, 共 40 頁

1) 首先打開調試開關deb bgp X.X.X.X all開關,確認狀態機在哪一步錯現錯誤;

2) 如果BGP狀態始終在active狀態徘徊,表示TCP建立不起來,首先排除底層不通和路由不可達的情況;

3) 如果BGP狀態始終在active狀態徘徊,其次排除BGP的MD5驗證問題;

4) 如果BGP狀態始終在active狀態徘徊,最後特殊配臵問題,比如IBGP的connect-interface或者EBGP peer的ebgp-max-hop等,見下文;

5) 如果是Open報文協商錯誤,通過調試開關,V5能夠很方便的查看到具體的錯誤類別和信息,然後根據錯誤提示採取具體措施;

3.8 BGP Open報文中有哪些能力參數?

BGP的能力參數類型有兩種,即多協議能力和路由刷新能力;針對地址族的定義就比較多了,不同廠商實現也不一樣。比如根據最新RFC4761,針對VPLS的能力已經定義爲25/65(L2***也是25/65)。具體情況見下表,

CODE

AFI

SAFI

IPv4 Unicast

Multiprotocol(1)

1

1

IPv4 Multicast

Multiprotocol(1)

1

2

IPv4 ***V4

Multiprotocol(1)

128

L2***

Multiprotocol(1)

196

128

Ipv6 Unicast

Multiprotocol(1)

2

1

IPv6 Multicast

Multiprotocol(1)

2

2

VPLS(H3C)

Multiprotocol(1)

155

128

VPLS(RFC4761)

Multiprotocol(1)

25

65

ORF(Cisco)

Multiprotocol(1)

130

7

Refresh

Route Refresh(2)

文檔名稱 文檔密級

2012-12-31 第 19 頁, 共 40 頁

3.9 使用Loopback口爲什麼無法建立IBGP鄰居?

IBGP PEER使用loopback口無法建立,通常是因爲BGP連接建立首先要建立起兩個peer之間的TCP連接,而TCP連接的源地址缺省是路由器相應的出接口的IP地址,所以必須要指定TCP連接的源地址爲相應的loopback接口地址,連接才能建立起來,peer X.X.X.X connect-interface命令的功能就是用於指定BGP會話建立TCP連接使用的接口。

3.10 直連EBGP使用Loopback口爲什麼無法建立連接?

很簡單,上面的例子是IBGP鄰居關係的建立,如果使用Loopback口建立的是EBGP連接,需要配臵ebgp-max-hop,因爲兩個loopback口不是直連接口。

一般情況下不推薦使用loopback建立EBGP鄰居,而一般是使用物理接口地址建立,比如在L3***的各種跨域環境中。

3.11 爲什麼非直連EBGP鄰居無法建立?

如果是EBGP鄰居,雙方路由可達,且EBGP連接在物理上不是直連的,請檢查是否配臵了peer的ebgp-max-hop。默認情況下,EBGP使用直連口建鄰居,如果不是直連,必須配臵peer的ebgp-max-hop值,默認是64。

3.12 有哪些原因會導致BGP連接建立成功後再down掉?

最常見原因如下:

1) BGP連接建立好後,在協商後的holdtime時間內收不到keepalive報文,導致錯誤代碼爲4/0的錯誤;

2) 收到非法的Update報文導致BGP爲了安全考慮自動中斷連接,並打印錯誤信息;

3) MTU問題,路由器會因爲一些固定口的芯片限制或者人爲的MTU設臵,導致經過多次封裝後的BGP報文被丟棄;

4) MTU和QoS設臵不當可能導致大的Update報文被丟棄,由於TCP的重傳機制,當發送多個大的Update報文時,可能產生大量等待重傳的

文檔名稱 文檔密級

2012-12-31 第 20 頁, 共 40 頁

Update報文,從而抑制了keepalive報文的正常發送,當連續收不到keepalive報文時,BGP認爲鄰居已經Down。

5) 網絡擁塞問題:網絡擁塞可能導致Keepalive報文收發失常,鄰居狀態不斷改變;另外,如果到達鄰居的路由是通過IGP(如OSPF)發現的,網絡擁塞可能導致該路由丟失,從而使鄰居間的連接中斷。

6) 設臵原因,導致TCP179端口號不可再用;

當然了,BGP所支持的操作非常多,還有很多主動的原因導致BGP會話重新啓動:

1) 對端關閉會話,比如對peer配臵ignore命令;

2) 如果配臵了路由數目限制(peer X.X.X.X route-limit),超過指定數目後也會down掉;不同機型其最大值也不一樣。

3) 遠端AS改變;

4) 修改路由反射器客戶機配臵;

5) 修改對等體/組的某些策略或者能力;

6) 配臵和反配臵BGP的Router ID;

7) 由聯盟改爲非聯盟,或反之;confederation nonstandard也可導致;

3.13 爲什麼使用network命令無法將本地路由通過BGP發佈出去?

比如本地存在直連路由或者IGP協議路由172.16.1.0/24,BGP視圖下使用network 172.16.1.0命令,目的是準備把這條路由傳遞到BGP路由表中,但是查看BGP路由沒有這條路由。

使用BGP的network命令發佈路由,前綴和掩碼必須完全匹配才能正常發佈。172.16.0.0是一個B類網段地址,如果沒有mask參數的話,缺省使用16位自然掩碼,而上述路由的掩碼是24位,所以必須在mask參數中配臵24位地址掩碼才能正常發佈路由。

BGP配臵模式下的network命令可以帶mask參數,也可以不帶。不帶mask參數的情況下缺省使用路由的自然掩碼。在全局路由表中必須具有前綴和掩碼都相同的路由,才能正常發佈。

3.14 Peer Ignore命令有什麼作用

Peer ignore命令用來人爲地停止指定對等體/對等體組的激活會話,並且清除所有相關路由信息,禁止與指定對等體/對等體組建立會話,BGP鄰居將一直抑制在idle的狀態,會話一直處於無法建立的狀態。如果該命令用來對於一個對等體組,這就意味着大量與對端的

文檔名稱 文檔密級

2012-12-31 第 21 頁, 共 40 頁

會話突然終止。缺省情況下,允許與BGP對等體/對等體組建立會話。在配臵peer ignore命令之後,我司display bgp peer的具體顯示如下:

4.4.4.4 4 100 0 0 0 0 02:35:59 Idle(Admin)

3.15 BGP如何發佈默認路由?

BGP可以通過peer default-route-advertise和default-route import來控制缺省路由發佈。Peer default-route-advertise不需要本地存在缺省路由而直接向peer發佈缺省路由,而default-route import僅僅表示允許引入本地缺省路由,意思是必須通過import方式引入存在本地路由表裏面的IGP默認路由,然後再配臵default-route import才能使默認路由正確引入。

3.16 爲什麼從直連EBGP鄰居向IBGP鄰居發佈路由時,路由會失效?

在BGP中,向IBGP和EBGP鄰居發送路由時,下一跳的處理是不同的。向EBGP鄰居(即在AS間傳播)發送路由時,next-hop均改爲該路由器的出口IP地址(當下一跳修改前後的地址符合第三方下一跳時,不做修改);向IBGP鄰居(即在AS內傳播)發送路由時,next-hop是不變的。

由於BGP向其他IBGP鄰居轉發來自EBGP路由時不修改下一跳,這樣的話若IBGP鄰居所處的設備沒有到該下一跳地址的路由,會導致該IBGP收到這條轉發自IBGP鄰居的EBGP鄰居的路由後下一跳不可達,導致路由失效。

解決方案有多種:可以配臵next-hop-local,這樣收到EBGP路由再往IBGP鄰居發送的時候會強制更改下一跳爲自己的出接口地址;自治域內所有的設備都配臵IBGP鄰居且要全鏈接,通過bgp把下一跳也學過去;通過IGP協議來保證自治域內的所有設備能夠知道下一跳的接口地址。

3.17 爲什麼相同路由比較的時候沒有選擇MED值小的路由?

三臺AS號不一致的MSR之間分別建立了EBGP鄰居關係,其中RTC同時收到RTA和RTB發來的因特網路由。根據RTC的要求,RTA將自己發送給RTC的路由設臵MED值爲50,而RTB將自己發送給RTC的MED設臵爲100。RTC希望選擇MED值小的路由作爲最佳路由,從而對

文檔名稱 文檔密級

2012-12-31 第 22 頁, 共 40 頁

相同目的地來說,把通過RTA的鏈路作爲主鏈路,而把通過RTB的鏈路作爲備份鏈路。當時在RTC上面沒有把RTA發送過來的路由選爲最優,爲什麼?

MSR路由器的BGP在路由優選過程中考慮若干因素,包括本地優先級、AS路徑長度、起點類型、MED值等。在前幾項都相同的情況下,應選擇MED值小的路由作爲最佳路由。需要注意的是,MED值只在同一AS傳來的路由之間才具備可比性。爲了能夠在不同AS傳來的相同路由之間比較MED值,從而選擇MED小的路由作爲最佳路由,需要在BGP、BGP ***視圖下配臵命令compare-different-as-med。

3.18 爲什麼OSPF的路由引入到BGP中後cost(MED)需要加1?

在RFC4577(OSPF as the Provider/Customer Edge Protocol for BGP/MPLS IP Virtual Private Networks)中有這麼一段描述:

MED (Multi_EXIT_DISC attribute). By default, this SHOULD be set to the value of the OSPF distance associated with the route, plus 1.

即OSPF路由被引入到BGP中後MED值需要加1。

3.19 OSPF下MCE能力對BGP MED的影響!

命令行***-instance-capability simple的作用並不是使能***能力,而是使能了多實例CE的能力。

比如不配臵***-instance-capability時候,引入到BGP多實例進程中的路由會攜帶下面類似屬性Ext-Community :<OSPF Domain Id: 0.0.0.0:0>, <OSPF AreaNum: 0.0.0.0 RouteType:

5 Option: 1>, <OSPF Router Id: 10.10.1.1:0:0>,<RT: 1:1>,上述擴展團體屬性是bgp攜帶發給對端PE設備的,用來讓對端PE上的OSPF進程還原LSA的依據;此時候設備就作爲普通的PE,pe上bgp引入OSPF路由時,med的值等於OSPF路由的cost加1;

[MSR50-40-bgp-***-a]dis bgp *** *** ***-a routing-table 172.32.0.0

BGP local router ID : 104.104.104.104

Local AS number : 100

Paths: 1 available, 1 best

文檔名稱 文檔密級

2012-12-31 第 23 頁, 共 40 頁

BGP routing table entry information of 172.32.0.0/16:

Imported route.

From : 0.0.0.0 (0.0.0.0)

Original nexthop: 10.10.1.2

Ext-Community :<OSPF Domain Id: 0.0.0.0:0>, <OSPF AreaNum: 0.0.0.0 RouteType:

5 Option: 1>, <OSPF Router Id: 10.10.1.1:0:0>, <RT: 1:1>

AS-path : (null)

Origin : incomplete

Attribute value : MED 2, pref-val 0, pre 150

State : valid, local, best,

Not advertised to any peers yet

當配臵了***-instance-capability simple後,本地路由器就不是PE了,而成了MCE,這樣所以bgp引入OSPF路由時,本地OSPF就不會組裝這些屬性值給bgp了,只是作爲普通的引入,處理,BGP路由只會攜帶擴展團體屬性<RT: 1:1>,而引入的OSPF路由的其他擴展團體屬性則會丟失;

而這個時候bgp引入OSPF路由時,med的值等於OSPF路由的cost

[MSR50-40-OSPF-1000]

#

OSPF 1000 ***-instance ***-a

***-instance-capability simple

area 0.0.0.0

network 10.10.1.0 0.0.0.255

#

return

[MSR50-40-OSPF-1000]dis bgp *** *** ***-a routing-table

Total Number of Routes: 3

BGP Local router ID is 104.104.104.104

Status codes: * - valid, > - best, d - damped,

文檔名稱 文檔密級

2012-12-31 第 24 頁, 共 40 頁

h - history, i - internal, s - suppressed, S - Stale

Origin : i - IGP, e - EGP, ? - incomplete

Network NextHop MED LocPrf PrefVal Path/Ogn

*> 16.16.16.16/32 0.0.0.0 1 0 ?

*> 50.1.1.0/24 0.0.0.0 1 0 ?

*> 172.32.0.0 0.0.0.0 1 0 ?

[MSR50-40-OSPF-1000]dis OSPF routing

OSPF Process 1000 with Router ID 10.10.1.1 Routing Tables

Routing for Network

Destination Cost Type NextHop AdvRouter Area

10.10.1.0/24 10 Transit 10.10.1.1 16.16.16.16 0.0.0.0

Routing for ASEs

Destination Cost Type Tag NextHop AdvRouter

172.32.0.0/16 1 Type2 1 10.10.1.2 16.16.16.16

50.1.1.0/24 1 Type2 1 10.10.1.2 16.16.16.16

16.16.16.16/32 1 Type2 1 10.10.1.2 16.16.16.16

Total Nets: 4

Intra Area: 1 Inter Area: 0 ASE: 3 NSSA: 0

3.20 如何實現BGP多進程和網絡遷移?

衆所周知,一個路由器只支持一個BGP進程,有着唯一的AS號,但是在某些特殊情況下比如網絡遷移更換as號的時候爲了保證網絡切換的順利,需要一些特性來支持,具體可

文檔名稱 文檔密級

2012-12-31 第 25 頁, 共 40 頁

以參看《BGP Support for Dual AS Configuration for Network AS Migrations》,

請見URL:http://tech/article.php/4728。V5通過fake-as命令爲指定PEER設臵一個假AS號來實現,該特性只針對EBGP PEER有效。該命令用來支持BGP鄰居可以配臵不同於當前由使能BGP協議時指定的自治系統號(等同於Cisco的local-as命令),配臵peer { group-name | peer-ipv4-address } fake-as [ number ]命令後,該peer和本地建peer關係時,要用fake-as號來代替本地的實際as號。示例說明一下,本地RTX(本地地址57.0.0.1)的BGP配臵如下:

bgp 100

router-id 1.1.1.1

undo synchronization

peer 57.0.0.2 as-number 57

peer 57.0.0.2 fake-as 88

那麼RTX在向57.0.0.2建立連接時的本地AS將是88,而不是100。與此同時,RTY(本地地址57.0.0.2)配臵peer 57.0.0.1時對應的AS號也應該爲88,而不是100。相關BGP配臵如下:

bgp 57

peer 57.0.0.1 as-number 88

undo synchronization

實際應用中,該命令通常和peer { group-name | peer-ipv4-address } substitute-as 結合使用。

3.21 什麼是BGP的同步原則?

同步的目的是爲了防止在某種情況下轉發“黑洞”的出現,起用同步功能後BGP Speaker 在接收到IBGP鄰居發過來的路由後都會查看該路由是否已經在IGP路由表中,如果IGP路由表中有這條路由,BGP路由表纔會將這條路由臵爲有效;如果IGP路由表中沒有該路由則BGP表中的該條路由是無效的。如果關閉同步功能,在收到IBGP鄰居發來的路由更新後不檢查IGP表是否有該路由,而直接將該路由臵爲有效,這樣的話在以下拓撲中就會出項問題:

文檔名稱 文檔密級

2012-12-31 第26 頁, 共40 頁

172.16.1.0/24

AS100

AS200

RTA AS300

RTB

RTC

RTD

RTE

EBGP

IBGP

EBGP

在上圖中,RTC沒有運行BGP,RTD關閉了同步功能。172.16.1.0/24從RTA 始發,傳

播方向爲:RTA---------------RTB---------------RTD----------------RTE

RTB、RTD、RTE收到該路由後將其臵爲有效,這時如果RTE要轉發一個目的ip爲

172.16.1.10的報文的話,將會通過如下步驟轉發:

step1:RTE將目的ip爲172.16.1.10的報文發給RTD;

step2:RTD接到此報文後將向RTB轉發此報文(RTB已使用next-hop-local),但由於

RTD與RTB的IBGP連接爲邏輯連接,因此去RTB的實際下一跳是RTC,於是又將此報文轉發給

RTC;

step3:RTC收到此報文後查找路由表,但沒有找到匹配項,因爲RTC沒有運行BGP,

不知道172.16.1.10的下一跳,所以此目的ip爲172.16.1.10的報文在RTC處就被丟棄了!

在上圖中,RTB、RTC、RTD的IGP路由表中沒有172.16.1.0/24的路由,如果開啓同步

功能的話,RTB向RTD通告該路由時RTD不會將此路由臵爲有效,RTD也不會向RTE通告該路

由,也就避免了上述問題的發生。

在實際環境中AS轉接路徑中的所有路由器都運行BGP,也就不會出現上述問題,因此

可以將同步功能關閉。

在具體實現上,v3不支持同步,而v5可以支持同步,默認爲不同步。

3.22 V5 如何實現路由聚合?

V5有兩種聚合方式,如下:

1) 自動聚合功能:通過summary automatic 命令在BGP/BGP *** 視圖下配

臵,默認不使能;自動聚合只聚合通過import-route 命令引入的各協議路由

(對從鄰居收到的BGP 路由不生效),且不對缺省路由進行聚合,同時對參

與聚合的IGP 引入的子網路由會自動進行抑制,從而減少路由選擇信息的的

文檔名稱 文檔密級

2012-12-31 第 27 頁, 共 40 頁

數量。這種方法比較死板,而且是按照自然掩碼進行聚合,有的時候不能滿足需要。

2) 手工聚合:通過aggregate在BGP/BGP ***視圖下配臵,該命令攜帶的參數比較多,而且聚合時候靈活多邊,可以與路由策略巧妙結合在一起以達到精確控制的目的,具體使用方法可以參看《MSR路由器BGP聚合路由測試經驗小結》,URL爲:http://tech/article.php/5211。

需要注意的是aggregate命令參數的使用比較複雜,對於其實現方法是和Cisco存在一定差別的,可以參考文檔對比了解一下;

aggregate在手工聚合時候,如果不設臵掩碼,會以自然掩碼進行聚合,這一點尤其要注意。

3.23 BGP通過哪些改變來支持IPv6?

根據RFC2858,BGP4+增加2個新屬性MP_REACH_NLRI、MP_UNREACH_NLRI用以支持BGP4+,在update報文中只有next-hop、aggregator、NLRI三個字段與IPv4有關;繼承了BGP的屬性以及各種應用規則。這方面文檔比較多,可以參看《BGP4多協議擴展協議詳解_RFC2858》,url爲:http://tech/article.php/1982;

具體V5的實現以及BGP和BGP4+的一些實現差異,可以參看如下文檔《MSR路由器-BGP4+介紹》,URL爲:http://tech/article.php/5028,詳細介紹了MP報文。

3.24 目前BGP4+的實現是否和BGP完全一致?

目前V5的實現相比V3有了很大的改進,同時增加了對BGP4+的支持;重點的特性目前只支持團體和反射、單播,不支持路由聚合、***V4等重要功能;

BGP4+就是基於IPv6地址族的BGP實現,這實際上可以理解爲Multi-protocol Extensions for BGP-4(RFC2238)針對IPv6的應用。但是因爲下一跳長度等發生變化,單純的IP地址變化無法滿足實際需求。爲此,在UPDATE報文中增加了兩項optional non-transitive的路由屬性對對應地址族下的路由進行控制,分別是Multi-protocol Reachable NLRI - MP_REACH_NLRI (Type Code 14,十六進制:0x0E)和Multi-protocol Unreachable NLRI - MP_UNREACH_NLRI (Type Code 15,十六進制:0x0F)。其中

文檔名稱 文檔密級

2012-12-31 第 28 頁, 共 40 頁

MP_REACH_NLRI用來發布路由,MP_UNREACH_NLRI用來撤銷路由。

3.25 BGP可利用等價路由進行迭代?

比如現在有兩條缺省路由,一條出接口NULL0,一條是迭代到GE0/1.1上的。BGP路由在迭代時候如何處理?爲什麼使用dis ipv6 relay-tunnel查看時候,自發現基於Null0的統計了迭代次數?

在V5實際處理中,BGP路由都是迭代到缺省路由上了,而不是直接迭代到GE0/1.1上。只不過有兩條等價的缺省路由,所以生成了學過來的每條BGP路由,都多產生一條Derived路由,從而形成等價路由。但實質是迭代到::/上了,所以看到的迭代次數 55::/64僅1次(ipv6 route-static :: 0 55::1 迭代的),::/ 10000次(所有的BGP路由)

3.26 V5路由策略支持哪些過濾規則?

V5支持豐富的路由策略來控制路由的接受和發送,針對bgp對等體或者對等體組有如下方式:

1) as-path-acl,AS路徑過濾控制列表;

2) ip-prefix,IP前綴列表(支持IPv6,即ipv6-prefix);

3) route-policy,路由策略;

4) filter-policy(advanced acl),路由應用過濾策略;

其中route-policy又支持多種控制規則,比如:

1) if-match as-path,匹配AS路徑列表;

2) if-match community,匹配團體屬性列表;

3) if-match extcommunity,匹配擴展團體屬性列表;

4) if-match cost,匹配路由MED;

5) if-match interface,BGP不支持這種過濾方式;

6) if-match mpls-label,BGP支持,通過BGP分配標籤可以代替IGP+LDP模式,在L3***的c2c以及跨域中得到大量應用;

7) if-match acl(advanced acl),匹配訪問控制列表;

8) if-match ip/IPv6,匹配下一跳,可以指定acl或者地址前綴列表;

文檔名稱 文檔密級

2012-12-31 第 29 頁, 共 40 頁

9) if-match ip-prefix,匹配地址前綴列表,同樣也支持IPv6。

3.27 路由策略的基本匹配規則有哪些?

BGP號稱路由中的王者,有很大一部分功勞歸功於路由策略,可以說是其左右臂膀之一。針對路由策略的使用,各個廠商有其各自的規則。V5的路由策略配臵和使用都相對比較複雜,但只要掌握以下幾條基本原則,相關的問題就會迎刃而解。

1) 一個Route-policy的所有NODE之間是"或"的關係

2) 一個NODE內部所有"if-match"之間是"與"的關係

3) 一個"if-match"內部的所有參數之間是"或"的關係

簡單來說,一個Route-policy可以由多個節點(node)構成,每個節點是進行匹配測試的一個單元,節點間依據順序號(node-number)進行匹配。每個節點可以由一組if-match和apply子句組成。if-match子句定義匹配規則,匹配對象是路由信息的一些屬性。同一節點中的不同if-match子句是“與”的關係,只有滿足節點內所有if-match子句指定的匹配條件,才能通過該節點的匹配測試。apply子句指定動作,也就是在通過節點的匹配測試後所執行的動作——對路由信息的一些屬性進行設臵。

一個Route-policy的不同節點間是“或”的關係,系統依次檢查Route-policy的各個節點,如果通過了Route-policy的某一節點,就意味着通過該Route-policy的匹配測試(不進入下一個節點的測試)。

而對於某些if-match子句,後面可以跟多個同類的並列參數,這些參數之間是“或”的關係,即滿足其中一個參數的值,就滿足了該if-match子句。

例如下面的配臵:

route-policy 1 permit node 1

if-match cost 20

if-match route-type internal external-type1

route-policy 1 permit node 2

if-match cost 30

在route-policy 1中配臵了兩個節點node 1和node 2,而在不同的node中配臵了不同的if-match子句。

文檔名稱 文檔密級

2012-12-31 第 30 頁, 共 40 頁

很容易可以看出,滿足node 1的條件是cost爲20並且路由類型爲OSPF內部或者外部type1路由。即對於if-match route-type internal external-type1來說,由於internal和external-type1是同一個if-match子句中多個並列參數,所以它們之間是“或”的關係,只要類型爲internal或者external-type1的路由均算滿足該if-match子句。

而對於node 1來說,它存在多個並列的if-match子句,它們之間是“與”的關係,所以必須同時滿足

if-match cost 20

if-match route-type internal external-type1

這兩個條件纔算正在通過node 1的測試。

而對於node 2而言,只有沒有通過node 1檢測的情況下才會發揮作用,否則通過了node 1的檢測就不再進入node 2的檢測了。

注:如果node中的if-match條件匹配成功且if-match的條件是DENY,則不論node配臵的是permit和deny繼續匹配下一個node;如果所有的node都沒有匹配成功,則按照DENY處理。

對於不存在的路由策略默認通過!

3.28 匹配了前綴列表,但是還是沒有對端發送過來的路由,why?

R1上配臵如下:

Peer X.X.X.X ip-prefix 1 import

ip ip-prefix 1 index 20 permit 10.0.0.0 16

很顯然,配臵的前綴列表是錯誤的,應該是permit 10.0.0.0 8,當進行前綴控制列表匹配的應該要注意淹沒和規則的邏輯。

文檔名稱 文檔密級

2012-12-31 第 31 頁, 共 40 頁

3.29 爲什麼給等體配臵路由策略apply community後,對端收到的路由屬性裏卻沒有任何團體屬性?

R2上配臵如下:

Peer X.X.X.X route-policy 1 export

Route-policy : 1

permit : 0

apply community 1 2 3

apply extcommunity rt 0.0.0.0:0

R1收到路由後不會具備團體屬性和擴展團體屬性,爲什麼了?BGP默認是不發送團體屬性和擴展團體屬性(當然***v4默認發送擴展團體屬性)的,所以要想將這類屬性發送出去必須針對指定的對等體或者對等體組設臵命令:

Peer X.X.X.X advertise-community,發送團體屬性;

Peer X.X.X.X advertise-ext-community,發送擴展團體屬性,兩者沒有耦合關係。

3.30 如何使用正規則表達式通過AS-path進行路由控制?

使用as-path控制列表來進行路由控制是比較複雜且難以記憶的控制方法,主要是正規則表達式的使用,這方面可以參考鑑定中心的經典輸出文檔《常用BGP正則表達式應用》,

URL爲:http://tech/article.php/2038

3.31 爲什麼BGP不支持路由策略中的if-match interface策略?

很顯然,在BGP裏面是沒有路由信息接口這個概念,V5也不支持;if-match interface命令用來配臵路由信息的出接口的匹配條件,所以BGP在路由策略檢查的時候不會去檢查if-match interface策略,而是直接默認通過這個檢查。

文檔名稱 文檔密級

2012-12-31 第 32 頁, 共 40 頁

3.32 爲什麼路由策略要對路由進行兩次檢查?

打開RM的policy調試開關可以看到,每更改一次策略,RM都要對單條路由進行兩次路由策略檢查,爲什麼了?

V5爲了減少內存使用量,目前是這麼實現,更改策略後第一次過策略決定此路由是否匹配策略,而第二次過策略決定通過策略後路由的具體屬性以便組包發送,這樣實現在過第一次策略後不用保存通過策略的具體屬性,減少了內存使用量,當然了,這必然會犧牲一部分效率。期待以後有更加合理的實現方法吧!

3.33 應用策略爲路由添加了團體屬性,可發佈路由時卻沒有攜帶?

在默認情況下,向peer發佈團體屬性、擴展團體屬性的能力是關閉的。需要使用時應該使用如下命令使能該能力:

“peer { group-name | peer-ipv4-address } advertise-community ”、

“peer { group-name | peer-ipv4-address } advertise-ext-community ”。

3.34 反射有什麼特點?如何配臵BGP反射?

在一個AS內,IBGP必須要求在邏輯上是全連接的,但隨着網絡拓撲的日益複雜,IBGP的全網連接開銷很大,爲了解決這個問題,引入了反射機制。路由反射器概念的基本思路是:指定一個集中路由器作爲內部對話的焦點。多個BGP路由器可以與一箇中心點對等化,然後多個路由反射器再進行對等化。

路由反射器的特點:

1. 簡單易理解

2. 移植方便(不用更改現有網絡拓撲結構)

3. 兼容性好(不用所有的路由器都支持反射機制,反射器對於客戶來說是透明的)

請注意,反射器反射路由時,不應該修改NEXT-HOP,AS_PATH,MED以及LOCAL_PRE屬性。同時在反射器上應用的路由策略修改屬性後,新的屬性也不會應用到反射路由上。

V5反射器支持普通BGP、***V4、BGP ***,在指定視圖下進行如下配臵:

reflector cluster-id 4294967295 //反射器ID

peer 104.104.104.104 reflect-client //指定IBGP peer作爲反射器客戶端

文檔名稱 文檔密級

2012-12-31 第 33 頁, 共 40 頁

reflect between-clients //默認已經配臵,反配臵則取消反射功能

3.35 什麼是冗餘反射器和嵌套反射器?

反射的配臵相當靈活,除了普通的配臵方案外,爲了加強反射技術的健壯性和靈活性,還可以配臵冗餘反射器和嵌套反射器:

由於AS域內邏輯結構的改變,反射器成爲路由發佈的瓶頸,一旦反射器出問題,那麼整個域內的路由傳遞就會受到很大的影響,在這種情況下,可以通過配臵冗餘反射器來解決,即:一個羣內存在一個以上的反射器,各反射器CLUSER_ID是一樣的,都與客戶進行全連接,當一臺反射器出問題時,另一臺反射器仍能正常工作,相當於備份功能。冗餘反射的概念可以進一步參考下文。

除此以外,還可以配臵嵌套反射器,即在一個羣內嵌套配臵一個反射羣,反射羣與該羣的CLUTER_ID是不同的。嵌套反射器在***V4用的比較多,比如MPLS L3***環境中,通過多級反射來分擔PE的壓力。

爲了避免路由環路,引用了originator-id屬性和cluster-list屬性,originator-id屬性是由反射器產生的,它的值是始發這條路由的鄰居的router-id;cluster-list也是由反射器產生的,反射器如果發現update報文中有了cluster-list屬性,就把自己的cluster-id添加到後面;如果沒有,就創建一個cluster-list屬性,把自己的cluster-id放到上面,再向其他鄰居發佈;如果發現與本地雷同,則會丟棄該路由以避免環路。cluster-id的值可以在反射器上配臵,如果沒有配臵,缺省使用反射器的router-id。

文檔名稱 文檔密級

2012-12-31 第 34 頁, 共 40 頁

3.36 爲什麼收到攜帶含有與本地Router ID相同的originator-id屬性路由後會丟失?

R1和R2爲RR,R3和R4爲RRC,R4發佈一條路由,R2收到了,但是R1和R3都沒有收到。

發射路由在發送過程中會攜帶一個originator-id屬性和一個cluster-list屬性。其中originator-id的值是始發路由器的ID,cluster-list的值爲沿途反射器的cluster-id。當客戶機收到反射路由後會檢查路由的這兩個屬性,如果在收到的路由中的originator-id屬性中發現了自己的Router ID,就會拒絕該路由。這裏原因爲R1和R4的BGP進程具備相同的ID。

3.37 爲什麼收到攜帶含有與本地cluster-id相同的cluster-list屬性路由後會丟失?

R1和R2爲RR,R3和R4爲RRC,R4發佈一條路由,R2和R1都收到了,但是R3沒有收到。

發射路由在發送過程中會攜帶一個originator-id屬性和一個cluster-list屬性。其中originator-id的值是始發路由器的ID,cluster-list的值爲沿途反射器的cluster-id。當客戶機收到反射路由後會檢查路由的這兩個屬性,如果在收到的路由中的cluster-list屬性中發現了自己的cluster-id,就會拒絕該路由。所以原因爲R1和R2設臵了相同的cluster-id,R1收到

文檔名稱 文檔密級

2012-12-31 第 35 頁, 共 40 頁

R2反射過來的路由後,會將路由丟棄而不會轉發到R3。

如果R1和R2具備相同的cluster-id,而R3還要收到R4路由的話,可以用到前面提到的冗餘反射概念,將R3也連到R2上,這樣R1和R2都是RR而且具備相同的cluster-id,形成冗餘反射環境,R4的路由會直接發射到R3上。

3.38 路由反射遵循哪些原則?

反射器的IBGP鄰居有兩類:客戶和非客戶鄰居,反射器同客戶一起形成一個羣,羣內的客戶不應再與羣外的BGP鄰居形成IBGP連接。一個AS內所有的路由反射器和非客戶機構成全閉合網。

1) 反射器從非客戶收到的路由發向所有客戶;

2) 由客戶收到的路由會發向所有客戶以及非客戶(包括髮送者本身);

3) 由EBGP鄰居收到的路由發向所有客戶以及非客戶。

3.39 反射路由的屬性不應該被改變!

被反射的路由其屬性不應該被改變,比如在測試中經常忽略的聯盟屬性等都不應該被反射器改變。

配臵BGP路由反射,可以減少IBGP連接,反射到客戶端的路由要在CLUSTER_LIST由屬性中添加自身的cluster-id,但cluster-id的配臵也不是必需的。當BGP配臵reflector cluster-id後,即採用所配臵值,當沒有配臵該值時,BGP將把local router id添加到對應CLUSTER_LIST路由屬性中。

3.40 如何配臵聯盟以及聯盟的作用?

在RFC3065中定義:“This document describes an extension to BGP which may be used to create a confederation of autonomous systems that is represented as a single autonomous system to BGP peers external to the confederation, thereby removing the "full mesh" requirement. The intention of this extension is to aid in policy administration and reduce the management complexity of maintaining a large autonomous system.”可見聯盟同反射類似,都是爲了解決大規模網絡中IBGP全網

文檔名稱 文檔密級

2012-12-31 第 36 頁, 共 40 頁

連接的問題。聯盟的概念基於一個AS可以被分爲多個子AS,子AS內使用IBGP全閉合網,子AS之間以及聯盟本身與外部AS之間使用特殊的EBGP連接。雖然子AS之間的路由經EBGP交換,所有的IBGP規則仍然適用,因此對於AS外的路由器來看一個聯盟就象一個單一的AS。EBGP下箇中繼、量度值和本地優先值仍然在內傳送。

參與聯盟的路由器一般遵循如下配臵:

confederation id 6500 //大AS號,一個聯盟內一致,不能與本地AS號相同

confederation peer-as 600 //本地相連子AS的AS號

3.41 聯盟新增的兩個屬性?

Currently, BGP specifies that the AS_PATH attribute is a well-known mandatory attribute that is composed of a sequence of AS path segments. Each AS path segment is represented by a triple <path segment type, path segment length, path segment value>. In [1], the path segment type is a 1-octet long field with the two following values defined:

Value Segment Type

1 AS_SET: unordered set of ASs a route in the UPDATE message has traversed

2 AS_SEQUENCE: ordered set of ASs a route in the UPDATE message has traversed

在RFC3065中新增加了兩個爲聯盟定製的屬性,即:

3 AS_CONFED_SEQUENCE: ordered set of Member AS Numbers in the local confederation that the UPDATE message has traversed

4 AS_CONFED_SET: unordered set of Member AS Numbers in the local confederation that the UPDATE message has traversed

增加這兩種屬性是爲了防止聯盟內部的環路。

3.42 AS-PATH參數在聯盟中如何進行傳遞?

對於AS_CONFED_SEQUENCE和AS_CONFED_SET,聯盟內處理方式大致與

文檔名稱 文檔密級

2012-12-31 第 37 頁, 共 40 頁

AS_SEQUENCE和AS_SET相同,同時:

1) 當路由在聯盟內子自治系統間傳遞時,不應修改AS_PATH屬性。

2) 當路由在聯盟內子自治系統間傳遞時:

a) 若第一個AS_PATH是AS_CONFED_SEQUENCE,BGP將自己的子自治系統AS號加在最左端。

b) 否則,創建一個AS_CONFED_SEQUENCE,包含自己的子自治系統AS號。

3) 當向聯盟外EBGP傳遞路由時:

a) 若第一個AS_PATH是AS_CONFED_SEQUENCE,將後續的AS_CONFED_SEQUENCE和AS_CONFED_SET刪除,至b)。

b) 若第一個AS_PATH是AS_SEQUENCE,則將聯盟AS加在最左端。

c) 若第一個AS_PATH是AS_SET,增加一個AS_SEQUENCE,將聯盟AS加在最左端。

4) 對於本地初始路由的傳播:

a) 向本自治系統內IBGP發送,空的AS_PATH屬性。

b) 向聯盟內,本自治系統外EBGP發送,帶有AS_CONFED_SEQUENCE屬性。

c) 向聯盟外EBGP發送,帶有AS_SEQ屬性。

3.43 V5的confederation nonstandard命令有什麼用處?

RFC1965中規定:AS-PATH Segment Type 3是AS_CONFED_SET屬性,Type 4是AS_CONFED_SEQUENCE屬性。而過去Cisco把Type 3作爲AS_CONFED_SEQUENCE屬性,Type 4不使用。這樣導致Cisco路由器的BGP update報文中,聯盟的AS-PATH屬性的格式和RFC不一致,導致互通過程我司不能識別合法的帶有聯盟的AS-PATH屬性的BGP報文。

過去爲了達到互通的問題,需要配臵confederation nonstandard命令以兼容Cisco的處理。不過現在與Cisco ISR的12.3系列路由器互通不存在類似問題。

3.44 爲什麼目的網段相同的BGP路由在設臵balance以後還是無法形成等價路由?

很遺憾,V5等價BGP路由的實現有着較多的限制,具體如下:

1) 參與BGP負載分擔特性的路由必須爲有效路由

2) 參與負載分擔的BGP路由ORIGIN,LOCAL-PREFERENCE,MED以及AS-PATH路徑屬性必須相同。BGP根據路由來源分爲IBGP學到的路由,EBGP

文檔名稱 文檔密級

2012-12-31 第 38 頁, 共 40 頁

學到的路由,NETWORK命令引入路由,IMPORT-ROUTE命令引入路由,自動聚合路由以及手動聚合路由。不同起源之間的路由不形成負載分擔;

3) 來源不同的BGP路由之間不形成負載分擔;

4) 標籤路由與非標籤路由之間不形成負載分擔。標籤路由是指遵循RFC3107的BGP公網帶標籤路由;

5) 反射路由和非反射路由之間不形成負載分擔;

6) 下一跳相同的BGP路由不形成負載分擔;

7) 轉發路由時,多條等價路由只隨機選取一條路由並向外發送;

在保證如上規則後,還需要在BGP視圖或者BGP ***視圖配臵等價負載分擔命令balance,默認不進行負載分擔,MSR的最大等價路由數目爲8條。

3.45 等價BGP路由下一跳設臵

IBGP負載分擔路由在配臵反射的情況下向IBGP鄰居轉發等價路由時,不改變下一跳,下一跳爲選中的等價路由初始下一跳;其他情況下,下一跳爲形成負載分擔的BGP本地地址

3.46 如何通過BGP實現負載分擔?

BGP默認不形成等價路由。當存在等價路由後,在BGP或者BGP ***視圖下設臵balance命令,可以使能等價路由功能。等價路由的形成具有很多限制,可以參考7.1節。

理論上對等體之間建立多個peer可以很容易形成等價路由,但是要注意這樣帶來的環路影響。同時通過引入IGP路由在自治域間形成等價路由也是比較常見的方式。比如在Multihomed AS拓撲中常會用到負載分擔特性,當然這種簡單的負載分擔是不區分流量和業務,而是統一分配。

還有一種負載分擔方法即根據不同業務和流量進行整體上的負載分擔。如下圖所示,針對不同業務X和Y的路由設臵不同優先級,導致業務X的流量從link1通過,業務Y的流量從link2通過。

文檔名稱 文檔密級

2012-12-31 第 39 頁, 共 40 頁

3.47 如何通過BGP實現鏈路備份?

對於來自域見的路由,在進入本地AS系統後常會通過設臵邊界路由器的本地優先級,導致路由在進行選擇的時候存在主備,而邊界路由器之間存在備份,在全連接中經常用到這種備份方法。如下圖所示,customer的路由通過兩條路徑發送到ISP後在兩臺邊緣路由器上會形成兩條路由,但是由於優先級的不同在傳遞到最上面的ISP路由器後會進行優選導致有主備之分。

文檔名稱 文檔密級

2012-12-31 第 40 頁, 共 40 頁

3.48 流量如何通過等價路由進行轉發?

MSR路由器在通過等價路由轉發的時候,是逐包而不是逐流進行轉發的,通過輪循出接口進行轉發;當流量停止後再次轉發時,會根據最後一次轉發使用的路由的下一條路由進行轉發。

3.49 BGP協議中包含哪些消息?它們是如何應用的?

BGP協議中包含的消息有open、update、keepalive、notification。

通過TCP建立BGP連接時,發送OPEN消息。

連接建立後,如果有路由需要發送或路由變化時,發送UPDATE消息通告對端路由信息。

穩定後此時要定時發送KEEPALIVE消息以保持BGP連接的有效性。

當本地BGP在運行中發現錯誤時,要發送NOTIFICATION消息通告BGP對端。


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