BGP鄰居連接狀態變遷


像OSPF一樣,BGP鄰居之間在交互路由信息之前,必須先建立鄰居關系。不同的是,BGP不使用廣播和組播地址去發現BGP鄰居。BGP鄰居必須手動配置,BGP使用tcp的179端口進行連接。

BGP鄰居建立過程會存在如下五個狀態:

  1. Idle:這個是BGP鄰居的起始狀態,使用neighbor命令配置鄰居的時候,會處於該狀態,或者當我們重置一對鄰居的時候也會處於該狀態。在起始狀態后,BGP會為鄰居初始化一些資源,復位重連定時器,初始化與remote的TCP連接,同時也會監聽遠端鄰居(BGP采用的是同時鄰居的方式,既會監聽鄰居連接請求,也會主動去連接鄰居)。啟動三次握手后,轉入connect狀態。失敗的話繼續處於Idle狀態。記住:這里僅僅是指啟動三次握手,即調用connect函數之前。
  2. connect:該狀態是在啟動TCP三次握手,等待成功時處於的狀態。三次握手成功后轉入,發送open報文,轉入OpenSent 狀態。三次握手失敗的話,轉入active狀態,等待ConnectRetry定時器超時,進行重新三次握手。重連次數超過規定次數后,轉入Idle狀態。
  3. active:該狀態是一個失敗態,首次三次握手失敗后會進入該狀態,等待ConnectRetry定時器超時,轉入connect狀態,進行重新三次握手。重連次數超過規定次數后,轉入Idle狀態。一旦連接成功,則發送open報文,轉入OpenSent狀態。也就是說該狀態是在等待ConnectRetry定時器超時的一個狀態。
  4. OpenSent:該狀態是在三次握手成功后,發送了open報文后,等待對端回應open報文時的狀態。收到對端open報文后,會進行校驗,如果校驗失敗的話,發送一個notify報文給對端,轉入Idle狀態。校驗成功后,這個時候會獲取到對端的很多信息,能力協商,持續定時時間等,初始化保活定時器,發送keepalive報文,轉入OpenConfirm狀態。
  5. OpenConfirm:該狀態,BGP等待對端的keepalive報文,收到后,轉入Established狀態,鄰居關系正式建立,啟動hold定時器,相互發送保活報文,三次超時或者發生錯誤,收到notify消息,將會重新進入Idle狀態。
  6. Established:鄰居關系建立成功后的穩定狀態,相互發送update報文交互路由信息,每次收到keepalive和update報文時,會重置hold定時器。收到notify報文后轉入Idle狀態。

下面的圖很形象的說明了BGP鄰居建立過程的狀態轉換關系,稱之為BGP FSM(Finite State Machine):

image-20200115153507856


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM