《BGP設計與實現》一2 4 理解內部BGP

2021-09-23 15:02:40 字數 1450 閱讀 6187

bgp設計與實現

bgp被設計用來在internet上的一系列自治系統之間提供無環路的路徑。確保無環拓撲的機制就是as_path屬性。考慮圖2-2,其中3個自治系統相互連線。如果as 65000中的路由器r1通告一條字首給as 65001中的r3,那麼在它傳送字首給r3時,它會把65000新增到這條字首的as_path列表前面。如果同樣的字首再次被as 65000收到,那麼邊界bgp宣告者就會拒絕它,這是因為它在as_path屬性中檢測到了環路。

繼續考慮圖2-2,假設r3需要向as 65002中的r7傳播字首,那麼這裡有幾種選擇來完成這項任務。

一種方法是讓r3把所有的bgp字首重分布到igp中,igp把它們通告給r4、r5和r6。接著,讓r5和r6把這些字首重分布回bgp,並把它們分別通告給各自的ebgp鄰居——r7和r8。但是,這種策略有一些問題。

bgp資訊被重分布進igp後會丟失所有的bgp屬性,包括as_path屬性。as_path屬性的丟失破壞了bgp環路防止機制。例如,當字首在r4上被重分布回bgp時,同樣的這條字首也會被傳送回r2,因為as_path屬性中只包含65001。重分布也會導致任何策略屬性的丟失,這些策略屬性是為bgp學到的字首所設定的。

比較明智的選擇是使用內部bgp(internal bgp,ibgp)。當r3通過ibgp把字首通告給r5時,r3不會在as_path中新增自己的as號。事實上,如果更新來自於ibgp對等體,cisco ios甚至不檢查as_path環路。如果沒有這個額外的as_path資訊,路由選擇資訊環路就會在ibgp域中形成。

如果允許r3把字首通告給r5,但是不允許r5把它從ibgp學到的字首通告給其他ibgp對等體,例如,r4和r6,那麼就可以避免環路。但是,這樣的解決辦法需要所有的ibgp宣告者全連線(fully meshed)。例如,r3需要與r4、r5以及r6建立ibgp對等會話。在ibgp宣告者數目很大的自治系統中,全連線會帶來擴充套件性的問題。這個問題的解決辦法涉及第7章講述的路由反射和聯盟。

使用ibgp傳送字首資訊會帶來其他一些小問題。如果bgp能夠傳送所有的字首,那麼還需要igp嗎?

igp肯定是需要的。圖2-2中,r3並不與r6直連。如果沒有某種形式的路由選擇資訊存在,那麼r3如何與r6建立ibgp會話呢?答案就是讓igp為自治系統內部提供基礎的路由可達性資訊。內部bgp從未被設計成在沒有igp的情況下使用,而是與igp配合使用。ibgp路由通常需要igp來遞迴解析。表2-1說明了ibgp與igp的一些不同之處。

在比較了ibgp和igp之間的不同之處後,理解ibgp和ebgp之間的不同之處也是很重要的(見表2-2)。

《BGP設計與實現》一2 11 總結

bgp設計與實現 本章以討論控制層面與 層面之間的相互關係作為開始 這兩個層面都是路由器的基本功能。作為一種路由選擇協議,bgp是控制層面的一部分。但是,層面的效能也會影響bgp的效能,因為這兩個層面可能會競爭同樣的資源,例如cpu和記憶體。我們討論了cisco ios軟體裡的bgp程序,特別強調了...

Redis設計與實現(一)

redis是一種現在挺火的一種nosql資料庫,它一般被用作快取。比如我們可以在redis客戶端敲 redis set msg helloredis 那麼就會在redis資料庫中建立乙個新的鍵值對,keg是msg,value是helloredis,兩個都是sds。又比如在redis客戶端敲 redi...

《區塊鏈原理 設計與應用》一2 4 趨勢與展望

關於區塊鏈技術發展趨勢的 和爭論,自其誕生之日起就從未停息。或許,讀者從計算技術的演變歷史中能得到一些啟發。計算技術的發展歷史如圖2 3所示。以雲計算為代表的現代計算技術,其發展歷史上有若干重要的時間點和事件 1969 arpanet advanced research projects agenc...