我我我
BGP并不能主動在網絡中尋找鄰居,必須手工指定BGP鄰居的地址,那么BGP才會將數據包發往指定的地址來請求建立鄰居,與此同時,BGP發出的請求數據包除了寫明目標IP地址外,還要寫上自己的IP地址,即BGP源地址。路由器自己產生流量后從接口發出時,流量從哪個接口被發出,那么這些數據包的源IP地址就是哪個接口的地址。因此當BGP發出數據包尋找鄰居時,這些數據包從哪個接口被發出,那么BGP源IP地址就是哪個接口的地址。要兩臺BGP路由器要正常建立鄰居,必須雙方路由器都相互指定鄰居,相互發送數據包才行。當一臺BGP路由器收到建立鄰居的請求后,如果發現數據包的目標IP不是自己的BGP源地址,那么就拒絕該連接請求,只有當請求數據包的目標IP與自己的BGP源地址相同時,才可建立BGP鄰居。需要注意的是,這個條件只在兩個鄰居之間,任意一個鄰居滿足條件即可,并不需要雙方都滿足,也就是說一方收到的數據包目標IP與自己的BGP源地址相同即可,另一方收到的數據包目標IP與它的BGP源地址不同也沒關系,只要單方面符合條件就行,但我們通常都將BGP兩端的源與目標保持一致。BGP的源地址是可以隨意更改的,但只能是路由器上的如下圖
在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鄰居。如下圖:
轉載于:https://blog.51cto.com/wandw/1739490
總結
- 上一篇: hive入ES5.6.8
- 下一篇: 阿里云 API 签名机制的 Python