1.bgp路由同步概念:
bgp協議規定:乙個執行bgp協議的路由器不會把從內部對等體(ibgp鄰居)得知的路由資訊通告給外部對等體(ebgp鄰居),除非該路由資訊也能通過igp得知。若bgp路由器能通過igp得知該路由資訊,則可認為路由能在as之間傳播,內部通達已***。上面的文字我們用下面的圖示來進一步解釋:
如上圖所示:首先,rtb通過ebgp鄰居關係,獲得了去往as100的路由資訊,例如,去往as100中的10.1.1.1/24,rtb會把這樣的路由資訊通告給rte,rte收到從rtb通告來的去往自治系統as100的路由資訊10.1.1.1/24。對於rte來說,她在考慮是否把這樣的路由資訊通告給她的ebgp鄰居rtf時,就需要考慮同步問題。這裡的同步是指:rte如果能通過igp(內部閘道器協議,如ospf協議)獲得去往10.1.1.1/24的路由,我們就認為egp(外部閘道器協議,如bgp協議)和igp同步。在同步情況下,rte可以將路由資訊10.1.1.1/24通告給rtf。否則,不能通告。
通過上面的敘述,相信大家應該知道什麼是bgp同步了。那麼bgp的設計者們為什麼要做這樣乙個規定呢?為什麼要引入bgp同步的概念呢?
下面我們來說說bgp同步存在的重要性和她所解決的關鍵問題。
2.bgp路由同步的重要性:
依然用上面的例子來解釋,如果rte不考慮同步問題,直接將路由資訊10.1.1.1/24 通告給rtf,那麼rtf的路由表中就會記錄一條去往10.1.1.1/24的路由資訊,下一跳是指向rte的。這樣問題就會出現:rtf有一去往10.1.1.1/24的資料報,rtf通過檢視路由表,把這一資料報**給rte。如果沒有同步,rte的路由表中也會有去往10.1.1.1/24的表項,但是這一表項的下一跳是直接指向rta的s0介面的(這裡的原因參見bgp的下一跳屬性)。在不同步的情況下,rte是無法直接去往此路由的下一跳的(因為路徑中途的路由器rtd、rtc都沒有去往10.1.1.1/24的路由)。這裡有個概念叫下一跳不可達,就是指這種情況。
那麼,講到這裡,聰明的讀者是不是明白了呢?bgp強調同步的原因就是要保證下一跳可達。用上面的例子來說,就是rte在考慮把去往10.1.1.1/24的路由資訊通告給rtf時,就需要考慮她去往10.1.1.1/24的下一跳是否可達(這裡的下一跳就是指rta的s0介面,此介面是as200和as300去往as100的入口)。如果這個入口都不可達,更不要說訪問其內部了。所以下一跳是否可達的問題是乙個關鍵性問題,bgp強調同步,就是要求rte所在自治系統的igp協議能夠實現下一跳可達。如果igp找到了去往下一跳的路由,那麼rte就得到了兩個去往10.1.1.1/24的路由。乙個是:通過bgp獲得的,這個路由的下一跳不可達。另乙個是:通過igp獲得的,這乙個下一跳可達(關於為什麼bgp獲得的路由下一跳不可達,而igp獲得的路由下一跳可達,這個問題需要大家對bgp的下一跳屬性做進一步了解,這裡不再敘述)。
3.bgp的路由可達和不可達問題:
關於下一跳可達和不可達問題,下面做進一步說明。依然用上面的例子。因為在bgp系統中的下一跳是以自治系統為單位的(這一點在bgp的下一跳屬性中,有詳細敘述)。這樣,就會有這樣的問題存在,rte的路由表中有去往10.1.1.1/24的路由,但是下一跳卻在很遠的地方,以至於下一跳不可達。但是對於igp來說就不會有這樣的問題出現。這都是因為各自下一跳的定義不同造成的(關於下一跳的定義,我們就不討論了,bgp的設計者這樣定義,也是經過綜合考慮和選擇的)。既然bgp發現的路由有下一跳不可達的問題存在,我們就要解決這樣的問題,bgp同步就是解決的方法。
當然同步是可以選擇的。在華為3com3com路由器上,同步是可以被取消的。取消了同步之後,路由器通告路由時,就不再考慮同步問題了,直接將自己的路由資訊通告給ebgp鄰居。但是這樣就會出現下一跳不可達的問題。所以,我們在取消同步之前就要考慮好如何處理可能出現的下一跳不可達問題。對於上面例子中的情況來說:rte所在的自治系統裡所有的路由器都要知道如何去往rta的s0介面。只要滿足了下一跳可達,取消同步也是可以的。
取消同步以後,滿足下一跳可達的方法有很多,需要視具體網路拓撲情況而定。就上面例子來說,可以由rtb將bgp路由引入igp中,當然這樣的做法一般不採用,應為bgp的路由資訊量很大,對於igp來說負擔太重。另外,我們可以在rtc、rtd、rte上增加靜態路由,同時在rta上也增加靜態路由。這種辦法看起來很笨,也不是最理想的辦法。最後,bgp可以通過命令來強制修改下一跳,在rte上將去往10.1.1.1/24的下一跳強制修改為rte自身的介面,同時,需要rtd、rtc的路由表中有去往10.1.1.1/24的路由。這也不是最理想的解決方法。因為可能還是需要借助於靜態路由。其實,對於上面例子的拓撲結構,主要是:ibgp鄰居不是直接的連線關係,而是tcp連線。bgp路由協議在這樣的拓撲結構上的下一跳可達問題,一直沒有理想的解決方案。如果這種情況的網路不是很複雜,還是可以勉強解決的(上面已經介紹了幾種解決方法)。但是一旦網路複雜了,解決起來就很困難了。所以,在網路設計時,一定要注意避開這種情況。ibgp鄰居盡量直接連線。這個問題的徹底解決是在bgp和mpls聯手以後的事情。以後有機會大家再學習!
4、小結:
bgp下一跳屬性規定:bgp路由的下一跳是以自治系統為單位的。這樣就引出了bgp路由下一跳不可達的問題,為解決路由下一跳不可達的問題,bgp協議引入了同步概念。同步也是可以通過命令取消的,只要能保證路由的下一跳可達,就可以了。
BGP同步實驗
終於完成了bgp的同步實驗,個人覺得是我完成的最複雜的實驗 bgp也是np最難的考點了 由於實驗配置比較簡單,只是太多容易出錯,因此把重點記下來以便日後複習,config的話就不貼了。as 64512 as 64513 as 64514 其中as 64513 的路由器為 r2 s1 1 s1 0 r...
BGP路由決策過程
1.如果下一跳無法到達,則不考慮 2.首選具有最大weight的路由 3.如果路由具有相同weight,則使用最高本地優先順序的路由 4.如果具有相同本地優先順序,則首選來自該路由器的bgp路由 5.如果沒有來自該路由器上的bgp路由,則選擇as長度最短的路由 6.如果所有的路由具有相同的as長度,...
bgp的路由聚合
bgp路由聚合分為自動聚合和手動聚合。自動聚合 對bgp引入的igp子網路由進行自然掩碼也就是主類路由聚合,配置自動聚合後,生成聚合後的自然網路路由,而原先引入的子網路由被抑制,不會被優先和發布給bgp鄰居。自動聚合只能針對通過import方式引入的bgp路由生效,假設我們在ar4上建立三個環迴口,...