BGP中IBGP和EBGP的區別和聯絡

2022-05-30 20:54:13 字數 4016 閱讀 8608

我們知道,在自治系統內部使用igp路由協議;而在不同自治系統之間使用bgp路由協議(嚴格來講,bgp不是路由協議)。bgp產生的原因是為了在不同自治系統(as)之間進行路由**,而其中又提出了ebgp和ibgp兩種。ebgp用於在不同自治系統之間,但ibgp,書上說它是應用於自治系統內部,可是在自治系統內部我們是使用igp。這就和"bgp是應用於不同自治系統之間"產生矛盾,那麼ibgp存在的意義,比如說某種情況,需要使用到ibgp,它在網路中起到的作用?ebgp與ibgp之間的區別?ebgp在網路中又起什麼作用?

為什麼要有ibgp,原因如下:

1、igp的能力限制,igp處理路由的條目有限,而目前internet上核心路由器的路由表已經超過10萬條。假如沒有ibgp,那麼這些路由只能採取重分發的方式直接匯入到igp中,這樣做的缺點很明顯:第一,igp協議的作者並沒有打算讓igp來處理如此大量的路由,igp本身也無法處理這樣大的路由數量;第二,如果非要讓igp來處理,那麼根據igp的處理原則,假如這10萬路由中任何一條路由發生變化,那麼執行igp的路由器就不得不重新計算路由,更為嚴重的是,假如其中某一條路由出現路由抖動的情況,例如埠反覆up/down,這會導致所有的igp路由器每時每刻都不得不把10萬條路由重新計算一遍,這種計算量對於絕大多數路由器來說是無法負擔的。另外對於執行rip v1的路由器來說,10萬條路由的定期更新,這根本就是無法接受的事情,除去頻寬佔用率不談,我想,也只有少量高階的gsr以及tsr能夠有這樣的效能吧。很顯然,我們不可能讓網路中所有的路由器都是gsr和tsr,如果真是這樣,那麼cisco、juniper以及華為等廠家就要偷笑了。例如:as100----as200---as300,假定as100/200/300各有100臺路由器,而as100中有1w條路由要傳遞要as300中,而as200的路由器不需要學習as100的路由。如果沒有ibgp的話,那麼這1w條路由都必須被重分發到as200的igp中去,這樣的話,相當於as200中所有的100臺路由器都增加了1w條路由。如果利用ibgp的話,那麼as200中只有執行ibgp的路由器會學習到這1w條路由,其它執行igp的路由器都不會學習到這1w條路由。並且由於bgp的路由控制能力大大強於igp的路由控制能力,因此執行ibgp的路由器比執行igp的路由器能更好的對這1w條路由做一些路由策略的處理,從而保證整個as內部的路由器學習到的路由數目可以控制在可接受的範圍之內。

2、路由環路的問題。bgp是靠路由屬性來防止路由環路的,例如as_path屬性,假如說沒有ibgp協議,那麼當所有bgp路由重分發到igp中後,路由屬性必然丟失,這就破壞了bgp的路由環路防止機制,產生了路由環路的隱患。

那麼引申一下,既然ibgp能夠傳送所有的路由字首,為什麼還需要igp?

1、ibgp之間是tcp連線,也就意味著ibgp鄰居採用的是邏輯連線的方式,兩個ibgp連線不一定存在實際的物理鏈路。所以需要有igp來提供路由,以完成bgp路由的遞迴查詢。

2、bgp協議本身實際上並不發現路由,bgp將路由發現的工作全部移交給了igp協議,它本身著重於路由的控制。因此,如果沒有igp,那麼bgp也就毫無用處了。

ebgp與ibgp的區別:

1、路由環路的避免措施不一樣,ibgp強制規定ibgp speaker不允許把從乙個ibgp鄰居學習到的字首傳遞給其它ibgp鄰居,因此ibgp要求邏輯全連線。ebgp沒有這樣的要求,ebgp對路由環路的避免是通過as_path屬性來實現的。

2、使用的bgp屬性不同,例如ibgp可以傳遞local_pref(本地優先屬性),而ebgp不行。

3、ibgp有同步的要求,而ebgp沒有同步的要求

4、ibgp不需要ibgp鄰居之間有物理連線,只需要邏輯連線即可,而ebgp下一般情況下都要求ebgp鄰居之間存在物理連線。

ebgp在網路中起什麼作用?這個題目太大了,ebgp我認為是在不同的as之間提供路由的傳遞以及路由的控制,了解了bgp屬性的用法,也就了解了ebgp的作用。

ebgp與ibgp的區別:

ebgp —— (external border gateway protocol) 外部邊界閘道器協議,用於在不同的自治系統間交換路由資訊。

ibgp——內部bgp協議(ibgp)的主要作用是向你的內部路由器提供更多資訊。ibgp路由器必須以全網狀結構相連,以防止路由環迴。如果使用了路由反射器或路由聯盟,那麼ibgp網狀結構可能遭遇收斂問題,而導致路由黑洞。

ebgp與ibgp的區別:

1、路由環路的避免措施不一樣,ibgp強制規定ibgp speaker不允許把從乙個ibgp鄰居學習到的字首傳遞給其它ibgp鄰居,因此ibgp要求邏輯全連線。ebgp沒有這樣的要求,ebgp對路由環路的避免是通過as_path屬性來實現的。

2、使用的bgp屬性不同,例如ibgp可以傳遞local_pref(本地優先屬性),而ebgp不行。

3、ibgp有同步的要求,而ebgp沒有同步的要求

4、ibgp不需要ibgp鄰居之間有物理連線,只需要邏輯連線即可,而ebgp下一般情況下都要求ebgp鄰居之間存在物理連線。

關鍵提點:

bgp路由表是獨立於igp路由表的,但是這兩個表之間可以進行資訊的交換,也就是「再分布」技術(redistribution)。資訊的交換有兩個方向:從bgp注入igp,以及從igp注入bgp。前者是將as外部的路由資訊傳給as內部的路由器,而後者是將as內部的路由資訊傳到外部網路,這也是路由更新的**。把路由資訊從bgp注入igp涉及到乙個重要概念——同步(synchronization)。同步規則,是指當乙個as為另乙個as提供了過渡服務時,只有當本地as內部所有的路由器都通過igp的路由資訊的傳播收到這條路由資訊以後,bgp才能向外傳送這條路由資訊。當路由器從ibgp收到一條路由更新資訊時,在**給其他ebgp對等體轉之前,路由器會對同步性進行驗證。只有igp認識這個更新的目的時(即igp路由表中有相應的條目),路由器才會將其通過ebgp**;否則,路由器不會**該更新資訊。同步規則的主要目的是為了保證as內部的連通性,防止路由迴圈的黑洞。但是在實際的應用中,一般都會將同步功能禁用,而使用as內ibgp的全網狀連線結構來保證連通性,這樣即可以避免向igp中注入大量bgp路由,加快路由器處理速度,又可以保證資料報不丟失。要安全的禁用同步,需要滿足以下兩個條件之一:1,所處的as是單口的,或者說是末端as(stub as)――即是指只有乙個點與外界網路連線。2,雖然所處的as是過渡型的(指乙個as可以通過本地as,與第三方as建立連線的),但是在as內部的所有路由器都執行bgp。第2種情況是很常見的,因為as內所有的路由器都有bgp資訊,所以igp只需要為本地as 傳送路由資訊。大部分的網路裝置在實現bgp時,都提供了禁用同步的開關。將igp路由資訊注入bgp,是路由更新的**。它直接影響到網際網路的路由穩定性。

因此,怎麼將從乙個as學到的路由通告給另外乙個as,要視過渡as內部的情況而定。

規則是:

1、bgp路由器會把從ebgp對端學到的路由通告給所有bgp鄰居,包括ibgp鄰居和ebgp鄰居;

2、從ibgp鄰居處學到的路由是否通告給自己ebgp對端,這就要視本as內的egp和igp路由表是否同步而定,而是否需要同步——就要看本as內的「過渡」路由器之間沒有有沒有跑全互聯ibgp,如果是全互聯的ibgp,那麼就不需要同步,像上面舉的例子,如果只在r2、r4之間建立ibgp鄰居,r3上不與r2、r4建立ibgp鄰居,這時就需要同步,而同步就要求把從r1學到的路由重分布給as2的igp。

3、在internet上,r1上就不只只有網段a這麼一條路由了,現在的internet的bgp路由條目已經超過10萬條,如果要重分布給igp,igp路由器只有死路一條,因為igp路由的特點就是演算法複雜,耗費cpu和記憶體。因此才要求過渡as要ibgp全互聯。如果不全互聯,就得採用路由反射器、bgp聯盟其他辦法來解決,本質卻是一樣的。

實驗圖描繪:

這個例子還不大好舉。其實你照著我的描述畫一下圖,就明白了。

圖可以這麼來畫:

r1屬於as1,有乙個直連網段a,r1的另乙個介面與r2相連;

r2、r3,r4屬於as2,r2、r3、r4依次「串聯」,就是r2與r3連,r3再和r4連,as2內部跑ospf協議,r2與r1之間跑ebgp;

r5屬於as3,r5與r4相連,r5與r4之間跑ebgp;

然後你就考慮:在r2、r3、r4之間跑兩兩都跑ibgp和都不跑ibgp兩種情況下,怎麼將到網段a的路由通告到r5,根據規則,一步步推理,你就明白了。

對OpenBSD中的OSPF和BGP路由協議的探索

相關的資料可以參閱 cisco的ccna和ccnp。我為什麼要使用openbsd來取代cisco和華為的路由器?思科和華為的裝置我玩的很熟,並且我覺得很好用。那我們可以開始來看看openbsd對這兩個路由協議的實現了 openbgpd,也就是開源的bgp daemon。在openbsd中,bgpd一...

記憶體中堆區和棧區的區別

從下面五個方面說一下記憶體中堆和棧的區別 1 管理方式 對於棧來講,是由編譯器自動管理,無需我們手工控制 對於堆來說,釋放工作由程式設計師控制,容易產生memory leak。2 申請大小 能從棧獲得的空間較小,堆是向高位址擴充套件的資料結構,是不連續的記憶體區域。堆的大小受限於計算機系統中有效的虛...

SQL Server中的頁和區

sql server中的頁和區 真題1 sql server 的兩種存 儲結構是什麼?答案 sql server 的兩種儲存結構是頁與區間。1 頁 用於資料儲存的連續的磁碟空間塊,sql server 中資料儲存的基本單位是頁,磁碟 i o操作在頁級執行,頁的 大小為8kb 每頁的開頭是 96位元組...