?本篇技術博文摘要 🌟
- 本文章主要探討BGP狀態機如何控制BGP連接的建立與維護,以及BGP協議在運行過程中如何交換路由信息并確保網絡的穩定性
引言 📘
- 在這個快速發展的技術時代,與時俱進是每個IT人的必修課。
- 我是腎透側視攻城獅,一名什么都會一丟丟的網絡安全工程師,也是眾多技術社區的活躍成員以及多家大廠官方認可人員,希望能夠與各位在此共同成長。
1.BGP的狀態機
什么是BGP的狀態機?
- OSPF的狀態機是在描述整個協議的完整工作過程,而BGP的狀態機僅描述的是對等體關系建立過程中的狀態變化。-----因為BGP將鄰居建立過程以及BGP路由收發過程完全隔離。
- IGP協議在啟動后,需要通過network命令激活接口,從而使接口具備處理IGP協議報文的能力。且network命令另一重含義就是發布路由,所以IGP協議無法將鄰居建立過程以及路由收發過程隔離。
- 但是BGP協議在啟動后,每一個接口都具備處理BGP報文的能力,不需要其他任何操作,所以可以將鄰居建立過程以及路由收發過程進行分割。
BGP-Peer狀態表說明
Idle----空閑狀態
等待網絡管理員手工指定鄰居信息,IP地址以及AS號
當指定鄰居信息后,會進入一個檢查環節,需要檢查手工指定的IP地址在本地路由表中是否可達,只有可達,才可以正常建立TCP會話,如果不可達,則鄰居關系建立失敗,停留在Idle狀態。
Connect----連接狀態
該狀態會開啟一個連接重傳定時器---32秒。
當該計時器時間超時,則本端重新發送一次TCP連接請求報文。在該時間段內沒有收到任何一個回復報文。
如果此時本地判斷TCP狀態進入到establish狀態,則認為TCP連接建立成功,進入到opensent狀態。
如果此時本地收到的是拒絕報文,則認為TCP連接建立失敗,進入到Active狀態。
如果BGP在連接重傳定時器時間內,沒有收到對等體的響應,那么BGP會繼續嘗試與對等體建立TCP會話,并一直處于該狀態。
Active----嘗試狀態
當第一次TCP會話建立失敗,則進入該狀態。
如果建立成功,則進入opensent狀態;如果建立失敗,則停留在active狀態。
使用在connect狀態開啟的連接重傳定時器來發送鏈接建立請求報文,當建立成功后,該計時器才會被關閉。
opensent狀態
本地發送出open報文,同時也將收到對端發送的open報文,并予以回復。
如果收到的open報文中的參數本端認可,則回復keepalive報文;否則回復notification報文。
如果回復keepalive報文,則進入openconfirm狀態;如果回復notification報文,則進入idle狀態。
openconfirm狀態
等待對等體對于本地發出的open報文參數的回復。
如果收到的是keepalive報文,則認為BGP會話建立成功,進入到establish狀態。
如果收到的是notification報文,則認為BGP會話建立失敗,斷開TCP連接,回到idle狀態。
Establish狀態----建立狀態
BGP會話建立的標志。
在該狀態可以發送除了open報文以外的所有BGP數據報文。
?BGP各個狀態表之間的聯動關系圖
2.BGP的工作過程
前提:不是BGP工作過程
- 基于IGP、靜態、直連路由協議實現IP可達
啟動BGP協議,并指定鄰居關系。
鄰居之間使用單播進行數據傳輸,通過三次握手,建立TCP會話通道。
之后所有的數據通訊均基于TCP會話通道來傳輸,并由TCP協議來提供傳輸的可靠性機制
用open和keepalive報文進行鄰居之間參數的協商,以及對等體關系的建立
open報文用來攜帶參數信息
keepalive報文用來進行參數確認
最終生成BGP鄰居表。
使用update報文來傳輸BGP路由信息
- 信息中將攜帶前綴信息、前綴長度以及路徑屬性。
設備會將自己發送的以及收到的所有BGP路由信息記錄在BGP路由表中。
設備會對比不同路由表單,將其中最優的路由信息加載到全局路由表中。
路由收斂完成?
- BGP對等體之間使用keepalive報文進行周期保活(可選)。默認為180S,可以設置為0關閉周期保活性質
如果出現報錯/結構突變
- 出現錯誤,使用notification報文告警
- 出現結構突變,使用update報文進行增量更新。
歡迎各位彥祖與熱巴暢游本人專欄與技術博客
你的三連是我最大的動力
以下圖片僅代表專欄特色 [點擊??指向的專欄名即可閃現]
??Cyberspace Security
???24 Network Security -LJS?
???Ungranted access vulnerability
??HCIP;H3C-SE;CCIP—LJS[華為、華三、思科高級網絡]
???MYSQL REDIS Advance operation
??RHCE-LJS[Linux高端騷操作實戰篇]?
??數據結構與算法[考研+實際工作應用+C程序設計]
??RHCSA-LJS[Linux初級及進階騷技能]
上節回顧
?