總有人在私信里抱怨,BGP實在是太難了!
一是這玩意兒本來就很復雜,需要處理大量的路由信息和復雜的算法;再一個是需要你有一定的實戰經驗才能深入理解運作。
雖然BGP確實有一定難度,但你總得先從技術理論開始吃透它吧?
學習掌握了BGP,對工作中提高網絡性能、增強網絡穩定性以及安全性等等多方面,都挺關鍵的。
想吃透BGP,繞不開我今天要說的這些基礎概述和實例!
01
基礎概述
說BGP之前,我們先從計算機網絡的基礎開始說起。
當前所使用的計算機網絡中,一個網絡通常用一個IP網段來表示。
要將所有網絡連接起來,并且要通信,就需要將這些IP網段連接起來,讓每個IP網段都知道其它IP網段的信息,就可以實現全網通信。
將網絡與網絡連接起來的設備都是路由器,只要網絡中每一臺路由器都得知所有的IP網段信息,就可以為全網提供數據轉發。
如果某一臺路由器不能得知所有的IP網段信息,也就表示這臺路由器所連接的網絡不能與其他網段通信。
為了幫助路由器獲得全網IP網段信息,因此路由協議工作在路由器與路由器之間,讓網絡中每一臺路由器都擁有全網完整的路由信息,從而實現全網可達。
從上可以看出,路由協議在路由器之間傳遞路由信息,是保證網絡通信的基礎。
如果路由器協議傳遞了錯誤的路由信息,或者沒有傳遞路由信息,將導致某些網絡通信的中斷,所以路由協議從一臺路由收到路由更新后,必須毫不保留地傳遞給其它路由器。
而當一個網絡失效后,也必須告知其它路由器該網段不可達,需要將相應路由器刪除。
當全網每一臺路由器都需要擁有所有的路由信息,并且完全一致時,這種狀態被稱為收斂狀態,一個網絡只有在收斂狀態時,才能保證全網可達。
而當今所使用的龐大的互聯網,是由數萬臺路由器連接起來的。
如果每一臺路由器都擁有互聯網中的每一條路由信息,那么就意味著每一臺路由器都將擁有數十萬甚至數百萬條路由條目,這個數量是驚人的。
但是由于路由協議的特征以及互聯網全網通信的需求,就必須讓互聯網中每一臺路由器將自己的路由信息與其它路由器互換,使整個互聯網的達到收斂狀態。
雖然這是鐵定的要求,但是請仔細想一下,這是萬萬不可能的。
因為一個擁有數萬臺路由器組建起來的超大型網絡,永遠不可能達到收斂狀態。
當某個網絡斷開時,先得知的路由器需要將這個信息告知給其它所有路由器,因為信息是一臺傳一臺傳過去的,所以一個網絡斷開的信息要讓數萬臺路由器都知道,這需要很長的時間。
并且可能在這個信息還沒有傳遍整個網絡時,這個之前中斷的網絡就恢復了正常。
那么這時,先知道的路由器又要重新向網絡中通告該網段恢復正常的信息。
如此一來,互聯網中不斷變化的網絡,會讓所有路由器不停地傳遞路由信息,結果是導致網絡中路由信息的不一致,也將導致龐大的路由更新影響所有路由器的性能。
因此,互聯網中,一個網絡的中斷與恢復,實在沒有必須通告給數以萬計的路由器。
而網絡的信息,必須向其它路由器通告。
那么,一臺路由器的路由信息,既然沒有必須向網絡中每一臺路由器通告,它究竟該通告給哪些路由器呢?
或者換句話說,它的路由更新通告的范圍究竟有多大呢?
基于以上種種原因,所以我們將–臺路由器的路由更新限制在一定的范圍內,也只有這樣,一個被劃分為更小范圍的網絡,才能達到收斂狀態。
所以現實情況是,我們的互聯網被劃分成了一個一個更小范圍的網絡。
任何一臺路由器的路由更新,被限制在這個特定的范圍內,而這個特定的范圍,就是你應該知道的被稱為自治系統的網絡范圍,即autonomous system (AS)。
互聯網中路由協議的更新只應該在一一個AS內部傳遞。
但是互聯網是需要全網通信的,所以必須讓每一個AS都能夠獲得其它AS的路由信息才行。
因此,路由協議被定義為兩種截然不同的種類,即只在一一個AS內部更新的路由協議,稱為Interior Gateway Protocol(IGP) 。
以及在AS 與AS之間更新的路由協議,稱為 Border Gateway Protocol (BGP)。
需要更多的解釋,將互聯網劃分成多個AS,目的并不僅僅是將路由協議的更新限制在特定的范圍內;
還有一個重要的原因是,將互聯網劃分成若千個小范圍的網絡后,那么這每一個小網絡就可以單獨定義各自的路由策略與安全策略,并且這樣不需要干擾其它AS,也不受其它AS干擾。
比如網絡中若干的ISP,這些ISP對自己的網絡需要制定自己的策略,又需要讓這些策略保持私有性而不與其它ISP互相干擾,所以劃分AS,幫他們實現了這個目的。
只能在一個AS內部傳遞更新的IGP路由協議有RIP, EIGRP, OSPF, IS-IS, 可以在AS之間傳遞更新的路由協議目前只有BGP。
但是有個特別之處是,EIGRP 也使用了AS的概念來工作。
運行EIGRP的網絡也會被劃分成多個AS,雖然默認情況下,EIGRP不能在AS與AS之間更新路由信息,但是EIGRP也可以實現AS之間的路由更新。
需要說明的是,EIGRP概念中的AS與BGP的AS并無任何關聯,它們之間沒有任何共同操作性。
真正的AS是指BGP的AS,而EIGRP不管有什么樣的AS特征,它永遠被限制在BGP的單一AS之中。
02
BGP AS
對于BGP的AS號碼的分配,是由Internet Assigned Number Authority(IANA)機構來統一規劃和分配的。
IOS中運行的BGP,目前最多支持4字節長度的AS號碼,但并不表示所有AS號碼都能任意配置。
在2009年1月之后,(IANA)決定使用4字節長度AS范圍是65535-4294967295。
當前,通常還是使用2字節長度的AS,也就是1-65535,所以不對4字節的AS號碼做太多討論。
因為BGP是使用在互聯網之中的,互聯網由多個BGP AS域組成,所以互聯網中不能出現AS號碼相同的域。
如果一臺路由器要接入互聯網并運行BGP,那么必須向IANA申請合法的AS號碼。
為了考慮到某些大型企業需要使用BGP與ISP對接,而又沒有足夠的AS號碼用來給企業用戶,所以將AS號碼劃分為公有AS和私有AS。
公有AS的范圍是1-64511,私有AS范圍是64512-65534。
公有AS只能用于互聯網,并且全球唯一,不可重復,而私有AS可以在得不到合法AS的企業網絡使用,可以重復。
很顯然,因為私有AS可以被多個企業網絡重復使用,所以這些私有AS不允許傳入互聯網,ISP在企業用戶邊緣,需要過濾掉帶有私有AS號碼的路由條目。
03
BGP 鄰居
如果你在自己的PC上從某個FTP服務器下載文件,那么你的PC只要和FTP服務器是通暢的即可。
也就是說你的PC只要ping得通FTP服務器就行,不管距離有多遠,因為不可能從FTP服務器上下載文件的PC都與之是直接連在一起的。
PC從FTP服務器下載文件時,使用的是TCP傳輸,當數據在中途出現丟包時,被丟棄的數據包能夠得到重新傳遞,從而保證下載的文件是完整的。
由于BGP運行在整個互聯網,傳遞著數量龐大的路由信息,因此需要讓BGP路由器之間的路由傳遞具有高可靠性和高準確性;
所以BGP路由器之間的數據傳輸使用了TCP協議,端口號為179,并且指的是會話目標端口號為179,而會話的目標端口號為179,而會話源端口號是隨機的。
正因為BGP使用了TCP協議傳遞,所以兩臺運行BGP的路由器只要通信正常,也就是說只要ping得通,而不管路由器之間的距離有多遠,都能形成BGP鄰居,從而互換路由信息。
一個配置BGP進程的路由器只能稱為BGP-Speaker,當和其它運行了BGP的路由器形成鄰居之后,就被稱為BGP-Peer。
如果一個網絡中的多臺路由器都運行OSPF之后,那么這些路由器會在相應網段去主動發現OSPF鄰居,并主動和對對方形成OSPF鄰居。
而一個路由器運行BGP后并不會主動去發現和尋找其它BGP鄰居,BGP的鄰居必須手工指定。
BGP和其它路由協議一樣,傳遞的是網絡層協議,如IP協議,除此之外,BGP還能夠傳遞除IP協議之外的其它網絡層協議,能夠傳遞的協議如下:
!!IP Version 4 (IPv4) IP Version 6 (IPv6)
Virtual Private Netwoks version 4 (VPNv4)
Connectiononless Network Service (CLNS)
Layer 2 VPN(L2VPN)
這些協議都被為 address family,配置時,需要進入相應的協議 address family 模式,而IPv4除外。
所有命令在address family 中獨立配置,獨立生效,并且都擁有獨立的數據庫。
正常的BGP配置模式被稱為NLRI模式中配置,在NLRI模式中配置的參數只對IPv4單播生效。
IOS支持四個AFI模式,為IPv4,IPv6,CLNS,VPNv4,并且IPv4和IPv6還有單播和組播之分。
思科路由器運行的BGP為version4,一臺路由器只能運行一個BGP進程,并且整臺路由器只能屬于一個AS;
但是一臺路由器可以承載多個address Family,而一個支持多個address family 的BGP和一個不支持的可以正常通信,但這也僅限于IPv4。
一臺BGP路由器運行在一個單一的AS內,在和其它BGP路由器建立鄰居時,如果對方路由器和自己屬于相同AS,則鄰居關系為 Internal BGP(iBGP),如果屬于不同AS,則鄰居關系為external BGP (eBGP)。
BGP要求eBGP鄰居必須直連,而iBGP鄰居可以任意距離,但這些都是可以改變的。
在BGP形成鄰居后,開始會交換所有路由信息,但是之后都采用增量更新,也就是只有在路由有變化時才更新,并且只更新有變化的路由。
BGP建立鄰居后,開始后,會通過相互發送類似hello包的數據來維持鄰居關系,這個數據包稱為Keepalive,便認為鄰居丟失,則斷開與鄰居的連接。
BGP之間建立鄰居,需要經歷如下幾個過程:
Idle——BGP 進程被啟動或被重置,這個狀態是等待開始,比如等于指定一個BGPpeer,當收到TCP連接請求后,便初始化另外一個事件,當路由器或peer重置,都會回到idle狀態。
Connect——檢測到有peer要嘗試建立TCP連接。
Active——嘗試和對方peer建立TCP連接,如有故障,則回到idle狀態。
OpenSent——TCP 連接已經建立,BGP發送了一個0PEN消息給對方peer,然后切換到OpenSent狀態,如果失敗,則切換到Active狀態。
OpenReceive——收到對方peer的OPEN消息,并等待keepalive消息,如果收到keepalive,則轉到Establ ished狀態,如果收到notification,則回到idle狀態,比如錯誤或配置改變,都會發送notification而回到idle狀態。
Established——從對端peer收到子keepalive,并開始交換數據,收到keepalive后,holdtimer都會被重置,如果收到notification,就回到idle 狀態。
05
BGP 更新源
BGP并不能主動在網絡中尋找鄰居,必須手工指定BGP鄰居的地址,那么BGP才會將數據包發往指定的地址來請求建立鄰居。
與此同時,BGP發出的請求數據包除了寫明目標IP地址外,還要寫上自己的IP地址,即BGP源地址。
路由器自己產生流量后從接口發出時,流量從哪個接口被發出,那么這些數據包的源IP地址就是哪個接口的地址。
因此當BGP發出數據包尋找鄰居時,這些數據包從那些接口被發出,那么BGP源IP地址就是哪個接口的地址。
要兩臺BGP路由器要正常建立鄰居,必須雙方路由器都相互指定鄰居,相互發送數據包才行。
當一臺BGP路由器收到建立鄰居的請求后,如果發現數據包的目標IP不是自己的BGP源地址。
那么就拒絕該連接的請求后,只有當請求數據包的目標與自己的BGP源地址相同時,才可建立BGP鄰居。
需要注意的是,這個條件只在兩個鄰居之間,任意一個鄰居滿足條件即可,并不需要雙方都滿足;
也就是說一方收到的數據包目標IP與自己的BGP源地址相同即可;
另一方收到的數據包目標IP與它的BGP源地址不同也沒關系,只要單方面符合條件就行,但我們通常都將BGP兩端的源與目標保持一致。
BGP 的源地址是可以隨意更改的,但只能是路由器上的接口地址。如下圖:
在上圖中,R1與R2之間有兩條鏈路。
當配置BGP鄰居時,如果R1指定鄰居地址為12. 1.1.2, R2指定鄰居地址為12. 1.1.1。
那么在建立鄰居過程中,R1 將請求數據包從接口F0/0發出,數據包的目標IP為12. 1. 1.2, BGP 源地址為F0/0的接口地址12. 1.1.1。
當R2將請求數據包從接口F0/0發出時,數據包的目標IP為12.1. 1.1, BGP 源地址為F0/0的接口地址12. 1.1.2。
由于R1發出的數據包目標IP12. 1.1.2與R2的BGP源地址12. 1. 1.2完全相同,所以最終能夠正常建立BGP鄰居。
R1在檢測地址時,R2的目標IP與R1的源也完全相同,通常我們都保證雙方一致。
當R1與R2之間的直連接口F0/0中斷后,如果雙方將數據包從S0/0發出,那么R1的源地址就是10. 1. 1.1, R2的源地址就是20. 1.1.2;
由此可以看出,雙方發出的數據包的目標IP都與對方的源地址不符,所以無法建立BGP鄰居。
雖然在上面的網絡環境中,雙方路由器之間都擁有多條鏈路,在中斷某條鏈路之間,仍然可以通信,但是這并不能保證BGP鄰居的永久連接。
為了使擁有多條鏈路的BGP鄰居之間永遠保持連接,考慮到路由器的loopback口在設備正常工作的情況下,不會像物理接口那樣出現中斷,所以建議在BGP鄰居之間使用loopback 接口的地址來建立TCP連接。
當指定鄰居時,不再將鄰居的地址指定為對方物理接口地址,而改為指定對方的loopback地址。
這樣一來,既然物理接口中斷,只要還有通暢的鏈路,那么BGP鄰居仍然可以保持連接。
在將BGP鄰居地址指定為對方loopback地址時,為了使數據包的目標IP與對方的BGP源地址相同,所以鄰居也要將BGP源地址更改為自己的loopback接口地址,從而使得雙方正常建立BGP連接。
在上圖中,當R1指定鄰居地址為2.2.2.2,BGP 源地址為1.1.1.1, 而R2指定鄰居地址為1.1.1.1, BGP源地址為2.2.2.2,這樣一來,雙方的目標IP都與對方的BGP源地址相同。
所以可以正常建立鄰居,并且在雙方鏈路中,任何一條鏈路斷開,都不影響鄰居的會話,BGP 的連接仍然保持而不會中斷,實現了連接的冗余性和穩定性。
06
BGP TTL
BGP的路由可能會從一個AS發往另外一個AS,從而穿越多個AS。
但是由于運行BGP的網絡會是一個很大的網絡,路由從一個AS被發出,可能在經過轉發之后,又回到了開始的AS之中,形成路由環路。
所以出于防止環路的目的考慮,BGP 在將路由發往其它AS時,也就是發給eBGP鄰居時,需要在路由中寫上自己的AS號碼。
下一個 AS收到路由后,再發給其它AS時,除了保留之前的AS號碼之外,也要添加上自己的AS號碼。
這樣寫在路由中的AS被稱為AS -path,如果BGP收到的路由的AS_ PATH中包含自己的AS號碼,就認為路由被發了回來,以此斷定出現了路由環路,就會丟棄收到的路由。
BGP只有在將路由發給eBGP時,才會在AS- path中添加自己的AS號碼,而在發給iBGP時,是不會添加AS號碼的。
因為iBGP鄰居在同一個AS中,即使要添加,AS 號碼全是一樣的,所以沒有必要。
在上圖中,當路由穿越各個AS時,所有發給eBGP鄰居的路由,都會在AS-path中添加自己的AS,自己的AS總是添加在AS-path的前面。
例如:
一條路由從AS10被發往AS 20,則AS-path為“10”,當AS 20 將路由發往AS 30時,添加上自己的AS號碼20之后,AS- path變成“20, 10”,當AS 30將路由發往AS 50時,AS 50收到的路由的AS-path為“30, 20, 10”。
當AS 30將路由發給AS 40, AS 40再將路由發給AS 10時,路由的AS- path為“40, 30,20, 10”;
由于AS 10 在收到路由后,發現AS- path中包含自己的AS號碼10,所以認為出現環路,便丟棄收到的所有路由。
在IGP協議中,我們將路由協議分成兩大類:距離矢量路由協議和鏈路狀態路由協議,而BGP被劃分為路徑矢量路由協議(path-vector routing) ,路徑矢量算法結合了距離矢量特性與AS- path防環特性。
因為BGP在將路由發給eBGP鄰居時,會將自己的AS號碼添加到AS- path中,所以可以以此來防止環路。
而在將路由發給iBGP時,是不會往AS -path添加AS號碼的,因此在iBGP之間傳遞路由時,沒有防止環路的機制。
考慮到為iBGP之間的路由傳遞也加入防環機制,因而強制將BGP路由在AS內部只傳一跳。
具體操作為:
一臺BGP路由器從eBGP鄰居收到路由,發給iBGP鄰居之后,iBGP鄰居收到后就不能再傳給其它任何iBGP鄰居,只能傳遞給eBGP鄰居。
此規則被多數人稱為BGP的水平分割,就是一臺BGP路由器從iBGP鄰居收到的路由,不能傳遞給其它iBGP 鄰居,只能傳給eBGP鄰居。如下圖:
在上圖中,當R1從eBGP鄰居R6那里收到路由后,可以發給任何iBGP鄰居,包括R3和R4。
當R3從iBGP鄰居R1那里收到路由后,不可以轉發給任何iBGP鄰居,只可以轉發給eBGP鄰居,所以R3從R1收到路由后,只能轉發給eBGP鄰居R5。
由于R3和R4從R1收到路由后,都不可以轉發給iBGP鄰居R2。
在上圖環境中,終造成R2無法接收任何路由,要讓R2收到路由,建議在R1與R2之間再建立一條BGP會話。
所以如此一來,在同一個AS中,要將路由全網傳遞,就需要在iBGP鄰居之間配置全互聯,最終AS 20內的鄰居關系如下圖:
在AS內部,除了建立全互聯的iBGP鄰居關系外,還可以通過BGP Reflector (BGP反射器)和BGP Confederation(BGP聯邦)的方式來實現路由全網傳遞,將在后續介紹。
07
BGP路由表
當路由器之間建立BGP鄰居之后,就可以相互交換BGP路由。
一臺運行了BGP協議的路由器,會將BGP得到的路由與普通路由分開存放,所以BGP路由器會同時擁有兩張路由器:
一張是存放普通路由的路由表,被稱為IGP路由表。
就是平時我們使用命令show ip route 看到的路由表,IGP 路由表的路由信息只能從IGP協議和手工配置獲得,并且只能傳遞給IGP協議。
另外一張就是運行BGP之后創建的路由表,稱為BGP路由表。
需要通過命令show ip bgp才能查看,BGP路由表的路由信息只能傳遞給BGP協議,如果兩臺BGP鄰居的BGP路由表為空,就不會有任何路由傳遞。
在初始狀態下,BGP 的路由表為空,沒有任何路由,要讓BGP傳遞相應的 路由,只能先將該路由導入BGP路由表,之后才能在BGP鄰居之間傳遞。
默認情況下,任何路由都不會自動進入BGP路由表,BGP路由表的路由獲得有多種方式:
可以從BGP鄰居獲得,也可以手工將IGP路由導入BGP路由表,還可以將其它路由重分布進BGP。
只要BGP的路由不是從鄰居學習到的而是手工導入的,那么這樣的路由被稱為BGP本地路由。
因為BGP的鄰居類型分為兩種:
eBGP和iBGP,所以BGP路由的AD值也有區分,如果BGP的路由是從eBGP學習到的,AD值為20。
可以發現,從eBGP鄰居學習到的路由,將優于任何IGP協議:從iBGP學習到的路由的AD值為200,同樣可以發現,此類路由的優先級低于任何IGP協議。
BGP 除了以上兩種AD值之外,如果BGP 路由是從本地手工導入的,即BGP本地路由,則BGP本地路由的AD值為200,與iBGP路由的AD值相同,優先級低于任何IGP協議。
如果某一條相同的路由同時從eBGP和iBGP以及本地路由學習到,那么究竟哪條路由會被選擇為最優路徑呢?
路由的AD值并不一定會影響到路徑選擇,因為BGP并不會在一開始,就通過比較AD值來選擇最優路徑。
08
BGP 同步
BGP鄰居之間的通信與交流運行在TCP的基礎上,在兩個節點之間,只要網絡是通的,就能夠建立TCP。
網絡的連通,可以是任何IGP路由協議,甚至是靜態路由,總之,只要網絡是通的,TCP 連接就一定能夠建立起來。
只要讓兩臺路由器之間連通,保證TCP能夠正常連接,就能夠保證BCP的通信。
在一個AS中,除了需要建立BGP連接之外,同時還需要運行FGP協議。
其中運行BGP的目的是為了在大型網絡中傳遞龐大的路由表或路由信息,而運行IGP協議的目的可想而知,并不是為了傳遞龐大的路由信息;
在AS中運行IGP的根本目的是為了讓BGP路由器之間能夠建立TCP連接,從而為BGP的通信服務。
因此可以看出,BGP 就像是 一輛運貨的卡車,BGP 的路由就是卡車要運的貨,而IGP協議就是為了在站與站之間鋪平道路,如果沒有IGP去讓道路連通,那么BGP就無法在站與站之間運送貨物。
因為BGP在建立鄰居時,BGP的源地址可以是任意地址,這些地址可以不是直連的,只要是能通信的,能建立TCP連接即可。
當BGP在向鄰居發送流量時,只要將流量發往鄰居的對端地址,因為鄰居的地址并不一定是直連的,所以要找到去往鄰居地址的路徑,可能需要查詢IGP路由表,因為IGP為BGP的通信與連接提供了保證。
由此可見,BGP 要將數據發給鄰居,BGP 在查詢去往鄰居的路徑時,采用的是遞歸查詢,BGP 查詢去往鄰居的過程中,可能要多次查詢IGP路由表;
只要在IGP路由表中找到了去往鄰居地址的相應路徑或相應下一跳,那么就會將數據發給這個下一跳。
在上圖的網絡中,R1與R4建立eBGP連接,R3與R5建立eBGP連接,而R1與R3建立iBGP連接。
在R1與R3建立iBGP連接時,R1通過目標地址3.3.3.3找到鄰居R3, R1的BGP源地址為1.1.1.1, 而R3也通過目標地址1. 1. 1.1找到鄰居R1,R3的BGP源地址為3.3.3.3;
為了讓1.1. 1.1和3.3. 3.3能夠正常通信,從而建立TCP連接,R1、R2、R3之間啟用了IGP協議0SPF, OSPF的目的只是為了使1.1.1.1能夠與3.3.3.3通信,并不傳遞AS中龐大的路由信息。
當AS 10中的R4將網段10. 1.1.0/24通告給AS 20中的R1后,因為R1與R3之間是iBGP鄰居,所以R1將路由10.1.1.0/24傳遞給R3,最終R3將路由10.1.1.0/24傳遞給AS30中的R5。
當R5將目的地為10.1.1.0/24的流量發給R3時,R3在查詢路由表后得知,去往10.1. 1. 0/24的數據包需要發給iBGP鄰居1.1.1.1才能夠到達;
于是R3便執行遞歸查詢,查詢如何去往1.1.1.1,正因為R1與R3之間的通信是靠OSPF提供的,所以R3得知去往1.1.1.1必須將數據包交給R2;
即給下一跳23.1.1.2,因為R2只運行了OSPF為BGP服務,所以R2沒有BGP的路由10. 1.1.0/24,當R2發現數據包的目標地址為10. 1. 1. 0/24后,只能將數據包全部丟棄,這就類似于路由黑洞。
從以上情況中可以看出,當BGP從iBGP收到路由時,因為鄰居之間可能跨越了多臺IGP路由器。
所以BGP在將數據包發往目的地時,通常會發給一臺只運行了 IGP的路由器,而只運行IGP的路由器并沒有BGP的路由,因而最終導致數據包丟失,造成路由黑洞。
要杜絕此類問題的發生,其實答案很明了,就是讓AS中只運行IGP的路由器同時也擁有BGP的路由表即可。
由于以上原因,在BGP路由傳遞中,有以下一條規則:當BGP要將從iBGP鄰居學習到的路由信息傳遞給其它鄰居之前(這個鄰居通常是eBGP鄰居),這些路由必須在IGP路由表中也能學到,否則認為此路由無效而不能發給其它鄰居。
此規則稱為iBGP與IGP路由同步。
在上圖環境中,在R3將從iBGP鄰居R1學習到的路由傳遞給eBGP鄰居R5之前,必須確定這條路由在自己的IGP路由表中也存在,否則不使用該路由。
要查看路由在IGP路由表中是否存在,使用命令show ip route 即可。
注意,只有從iBGP鄰居學習到的路由,才受iBGP與IGP路由同步規則的限制,如果路由是從eBGP鄰居學習到的,則不受此規則限制,并且此規則可以手工開啟或關閉。
BGP同步默認是開啟的,在IOS 12.2(8)T 以及之后的版本默認都是關閉的。
-
算法
+關注
關注
23文章
4612瀏覽量
92901 -
路由器
+關注
關注
22文章
3732瀏覽量
113788 -
BGP
+關注
關注
0文章
83瀏覽量
15331
原文標題:吃透BGP,永遠繞不開這些基礎概述,看完再也不怕BGP了!
文章出處:【微信號:網絡工程師筆記,微信公眾號:網絡工程師筆記】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論