BGP同步

BGP 同步  

BGP 同步 - 浩龍的日誌 - 網易博客

2012-06-21 22:52:41|  分類: BGP |  標籤:bgp同步  |舉報|字號 訂閱

      1.BGP路由同步概念:

BGP協議規定:一個運行BGP協議的路由器不會把從內部對等體(IBGP鄰居)得知的路由信息通告給外部對等體(EBGP鄰居),除非該路由信息也能通過IGP得知。若BGP路由器能通過IGP得知該路由信息,則可認爲路由能在AS之間傳播,內部通達已有保證。上面的文字我們用下面的圖示來進一步解釋:

BGP 同步 - 浩龍 - 網絡知識共享站

如上圖所示:首先,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同步的概念呢?


       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協議引入了同步概念。同步也是可以通過命令取消的,只要能保證路由的下一跳可達,就可以了。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章