BGP - 3,BGP重要概念(EBGP,IBGP,防環/黑洞/全互連/同步)

1,防環/黑洞/同步/全互連(爲出現大於號,如今一般都是要下一跳可達+關同步)
a)EBGP鄰居傳來的路由能夠經過AS_PATH防環,因此收到的不會有問題,所以直接是優化的(>),也就是直接裝表、再傳給EBGP鄰居或IBGP鄰居。
b)IBGP鄰居傳來的路由因爲是在同一個AS,因此無法經過AS_PATH防環,因而BGP規定IBGP只能傳一跳。
c)BGP還有2個問題。 問題一:BGP規定從EBGP學到的路由,傳給IBGP鄰居,不改變下一跳。這樣一般對AS內部路由器來講,這個下一跳地址是不可達的。 問題二:因爲水平分割,IBGP鄰居只能傳一跳,因此設想就是把2個IBGP創建在網絡邊緣。可是中間的路由器成了黑洞。(簡而言之,即IBGP下一跳可達性問題,以及路由黑洞問題,只有解決這2個問題後IBGP傳來的路由纔是優化的)
d)典型的組網變成下圖所示。假設圖中A宣告一條路由dest,傳給B,B直接是優化的,正常裝表並傳給E。問題一就是E收到這條dest路由時,下一跳是A的地址,這地址是AS外的地址一般是不可達的。問題二就是中間的C和D並不知道這條dest路由。(再強調下,EBGP傳來的直接就是優化的,可以直接裝表並往下傳)
e)這時路由器E怎麼辦呢?BGP規定只有解決了這2個問題,E收到B(IBGP鄰居)傳來的dest路由纔是優化的(>),才能正常裝表,並傳給F。(不然不是坑了F麼,不解決的話本身內部都還無法訪問這條dest路由)。
f)問題一的解決方法:B對E說next-hop-self,把下一跳改成本身;或者是,E寫一條關於下一跳地址的靜態路由,使得下一跳可達。問題二的解決方法:將BGP路由重發布到IGP中,使得AS65102內全部的路由器都知道dest這條路由。這個重發布只能在B上作,由於B關於這條dest是優化的,E上的這條dest是非優化的。另外,針對問題二,BGP還定了一個同步規則,即若是打開了同步,則當BGP路由器從IBGP鄰居收到路由時,必須同時從IGP路由表中也能學習到,才能最優(出>號),才能繼續傳給EBGP鄰居,其實就是防止路由黑洞。注意BGP同步僅針對從IBGP鄰居收到的路由,而從EBGP鄰居收到的路由能夠直接最優裝表。
g)但啓用同步機制,執行重發布後讓IGP內部的路由器不堪重負,由於可能C和D後面還接着不少路由器,但實際上假如這條dest路由只是想借道65102去往65103,65102內部的不少路由器無需知道這條路由。因而問題二能夠不去解決,直接在E上把同步關掉便可,這樣,E上的這條dest路由也能有>號,而且正常裝表並傳給F。(別忘了關同步只是解決問題二,要想出現大於號,問題一仍是要照樣解決的)
h)下一跳可達,關掉同步後(即不用IGP路由和BGP路由同步),路由層能夠正常在傳遞了,但有什麼問題呢?在傳遞數據時,C和D又變爲黑洞了,原本BGP同步存在的意義就是爲了防止數據層面出現黑洞的,把它強行關閉天然要承擔帶來的問題。怎麼解決呢?須要依靠全部路由器運行IBGP並fullmesh或者MPLS。
i)總結IBGP路由層面打通方法:下一跳可達+開同步+BGP重發布進IGP;下一可達 + 關同步。(即IBGP鄰居傳來的路由優化的條件)
j)總結IBGP數據層面打通方法:下一跳可達+開同步+BGP重發布進IGP;下一跳可達 + 關同步 + All run and fullmesh/MPLS。
詳見2-5。
 
1.1,防環
     EBGP的水平分割:AS之間的防環,路由器不收帶有本身AS號的路由更新。(控制層面)
     IBGP的水平分割:從IBGP收到的路由不會經過給另外一個IBGP。(控制層面)
     RR的防環:RR打破了IBGP只傳一跳的規則,因此須要經過cluster-id防環
 
1.2,黑洞
     因爲防環機制的存在,BGP中間途徑的路由器不會獲知外部的路由。
     黑洞舉例:假設(A)-EBGP-(B-C-E)-EBGP-(F),B和E創建IBGP,此時A ping F不會通,由於A查去往F得仍給B,B查去往F須要扔給E(假設E開了nexthopself),遞歸查找通過C/D去E,但包到了C/D後就丟棄了,由於C/D沒有路由去往F。
 
1)AS65101中的路由條目傳到AS65103              
     EBGP:AB,EF。  IBGP:BE         
     控制層面:ABEF         
     數據層面:FE,到D和C會被丟棄      
2)解決方法              
     物理線路full mesh(關同步):不會用,代價貴,都直連了有路由         
     邏輯線路full mesh(關同步):全鏈接,全部路由器運行BGP並運行BGP,即BCDE所有創建BGP鄰居關係(無需直連),能夠用RR,聯盟         
     重發布(開同步):將BGP重發布到IGP,只能實驗環境作,實際中要想這麼作只能經過ACL導一部分         
     MPLS(關同步):BGP內部經過標籤走,不經過路由走,實際上就是利用了CEF解決遞歸查找的功能         
3)BGP路由黑洞,C和D能傳BE之間的路由,可是不能傳數據,這是由於:              
     控制層面源目的在變,分爲三段(源A到目的B,源B到目的E,源E到目的F,每一段都有路由),經過TCP傳路由。         
     數據層面源目的不變,源F目的A,中間C和D沒有路由    
 
1.3,同步
     BGP的同步:爲了確保宣告出去的路由都不會有黑洞問題,開啓同步後,BGP只會將IGP和BGP同步後(經過重發布)的路由宣告出去,即宣告的路由不可能有黑洞。
     如今,思科路由器默認禁止同步。
 
1.4,全互連
     要全部路由器都能更新路由,全部通過路由器運行BGP而且full mesh,full mesh只需路由可達,無需直連。
     不是全互聯,可能致使兩個問題:1,更新發不過去,例如防環中的那個例子。2,更新發過去了,但數據包過不去,例如黑洞例子。
 
2,BGP建鄰居配置命令
2.1,基本三步,鄰居三步
     基本三步:router-id,no au,no sy (高版本後2步默認已經有)
     鄰居三步:neighbor,update-source,multihop(EBGP)/next-hop-self(IBGP)
     備註:
     neighbor語句中,後面的地址是端口地址,不是路由器的Router-ID。
     鄰居三步,若是EBGP用直連創建,則只有neighbor;
     鄰居三步,若是EBGP鄰居一邊用環回口,一邊用物理口,則用物理口的那邊需配multihop,用環回口那邊即便不聲明updata-source l0也行,由於BGP的TCP鏈接只須要一邊發起能通便可。
     鄰居三步,若是IBGP用鏈接骨幹網的物理口創建,則只有neighbor和next-hop-self(不用update-source是由於物理口已經被宣告進IGP),甚至若是IGP中有到EBGP直連口的路由,則只有neighbor。
     鄰居三步,若是IBGP用環回口建鄰居,則要包含三步,其實update-source只要一端聲明也可創建鏈接。
 
2.2,命令說明
1)no auto-summary
     把任何一種協議重分佈的BGP中時,若是默認是auto-summary時會發生自動彙總         
     僅僅是發生在重分佈的時候,其餘狀況與彙總無關         
     自動彙總:彙總成一個主類網絡,如今通常都關,都無類了         
     下一跳0.0.0.0表明是本身發出的    
     把協議重分佈到BGP:         
     auto-summary:不攜帶原有的下一跳和metric,自動彙總成主類    
     no auto-summary:攜帶原有IGP的下一跳和metric,不會自動彙總
2)update-source
     BGP沒法像IGP那樣自動發現鄰居,須要由BGPneighbor手工指定,該命令默認源IP(更新源)是出接口IP。
     IBGP創建鄰居用環回口時,須要更改update-source
     EBGP創建鄰居用環回口時,須要調整update-source、multihop
     實際上建鄰居鏈接只須要保證一方知足。
     兩邊都是默認路由沒法創建鄰居(爲了防環),一邊靜態一邊默承認以創建鄰居。
3)next-hop-self
     當從EBGP對等體學到的路由,傳給IBGP對等體時,不會改變原來的下一跳,而這個下一跳對於內部網絡來講,極可能不可達。
     解決方法:使外部EBGP更新源接口可達,或者用next-hop-self更改更新源。通常都用後者。
4)ebgp-multihop
     用於EBGP,配合update-source命令,經過環回口建鄰居。
     EBGP默認只能1跳,因此若是EBGP用環回口創建鄰居,須要更改成多條。(IBGP默認就是多跳,無需此命令)
 
3,MA網絡中,BGP下一跳的特列

 

     34之間EBGP鄰居,4訪問2的下一跳會更改成1
     ICMP的重定向:3發現接口收到的報文又從該接口發出去了,就會發起ICMP重定向
 
4,BGP路由通告
a)當存在多條路徑時,BGP路由器只選最優(沒有負載均衡狀況下)
b)BGP只把最優路由傳遞給BGP peer
c)從EBGP鄰居學到的會向全部BGP鄰居通告(直接是優化的,包括EBGP鄰居和IBGP鄰居)
d)從IBGP鄰居學到的不會向IBGP鄰居通告(爲了防環,RR除外)
e)從IBGP鄰居學到的只有優化了才能往EBGP鄰居傳(重發布,或者關同步,但關同步會產生的黑洞,解決方法見1)
 
     假設R1從鄰居學到路由,傳遞狀況以下:
 
從R2(IBGP鄰居)學到
從R4(EBGP鄰居)學到
傳給R3(IBGP鄰居)
不傳
開RR時能傳,(但GNS實驗發現傳的時候下一跳不變,nexthopself也沒用,只能依靠IGP到達R2了)
1)傳,next-hop仍然R4。不優。
2)需靜態或nexthopself,並關同步或重發布後變優。
3)若是關同步還需fullmesh/RR解決黑洞問題。
傳給R5(EBGP鄰居)
傳,next-hop變成R1。
直接是優化>,裝表日後傳。
傳,next-hop變成R1。
直接是優化>,裝表日後傳。
     另外,若是把R4(EBGP鄰居)學到路由重發布到IGP,只能在R1上作,R1是優化的,R2和R3都沒有大於號。
     凡是IBGP鄰居傳來的路由,即便IBGP鄰居是相鄰的,該路由也是不優的,必須關閉同步才優。
 
5,BGP的auto-summary與aggregate
BGP開啓auto-summary時,能夠network主類路由,路由表中一旦有該主類下的明細路由,主類路由就會被宣告給對方,不然BGP必需要路由表中有路由時纔會被宣告給對方。
auto-summary命令做用的對象:(1)重分佈進bgp的igp或(2)直連或(3)靜態路由,應該還有(4)經過IGP學到的路由。若是這些路由是子網路由,在進bgp表時將被自動彙總成有類路由條目。
auto-summary命令不做用的對象:(1) network通告的路由,(2)ibgp或ebgp鄰居通告的路由,若是是此類產生的路由,在show ip bgp表中將是子網路由,這些路由再經過ibgp或ebgp通告給鄰居時,根據此原則,不管鄰居是否啓用auto-summary,接收到的都將是子網路由條目。
 
總結:
只要在show ip bgp表中存在的路由,都會不變地傳給ibgp或ebgp的鄰居,而無論鄰居或本身是否啓用auto-summary命令。
將BGP重發布進入IGP時,自動彙總後network的路由,不會被灌回去,可是aggregate彙總宣告的路由,會被灌回去,要用route-map防止灌回。
 
彙總範圍:
     auto-summary:只能主類,例如10.0.0.0/8
     aggregate:隨意,例如10.0.0.0/16
 
彙總方法:
     auto-summary:
          方法1:開啓auto-summary,network 10.0.0.0,前提是需路由表有10.0.0.0/8下的任意一條明細路由。注意前提是路由表裏有,而且要到BGP下network主類。
          方法2:開啓auto-summary,重發布IGP至BGP,全部IGP中的明細路由都會自動彙總變成主類路由。
     aggregate:
          手工彙總BGP表裏有的路由,不管是本身network的,仍是BGP鄰居傳過來的,都行!aggregate 10.0.0.0 255.0.0.0。注意前提是必需要BGP表裏有,而且要到BGP下agg彙總!
 
抑制明細:
     auto-summary:不會抑制明細
     aggregate:不會抑制明細,想抑制須要aggregate後面加上no-summary
 
將BGP重發布回IGP時路由灌回:
     auto-summary:不會灌回
     aggregate:會灌回到IGP,本路由器sh ip route發現是一條指向null0的彙總路由,其餘IGP域內的路由器也會收到該路由,若是不想收到須要作過濾
 
6,BGP的default-information originate
兩種方法產生默認路由:詳見BGP配置7
1)當本地有默認路由時而且重發布到BGP時,用default-information orignate可傳遞給全部鄰居默認路由,注意這條必要BGP表裏有默認才行,默認BGP不會將0.0.0.0傳給對方,必定要有這條命令纔會傳,即想傳默認路由給對方,必定要重發布含默認路由的+這條命令
2)或者單獨的network 0.0.0.0 mask 0.0.0.0 也可產生,OSPF本地無默認路由時能夠強行加上always指定,BGP沒有always
3)或者本地nei 對端PE default-orignate,可強制產生默認路由,不管本地有沒有默認路由,注意模擬器的版本中這條命令本地的BGP表中沒有0.0.0.0,對端有,但本端會有一段說明給對方下放了默認路由
相關文章
相關標籤/搜索