邊界網關協議(BGP)是運行于 TCP 上的一種自治系統的路由協議。BGP 是唯一一個用來處理像因特網大小的網絡的協議,也是唯一能夠妥善處理好不相關路由域間的多路連接的協議。BGP 構建在 EGP 的經驗之上。BGP 系統的主要功能是和其他的 BGP 系統交換網絡可達信息。網絡可達信息包括列出的自治系統(AS)的信息。這些信息有效地構造了 AS 互聯的拓撲圖并由此清除了路由環路,同時在 AS 級別上可實施策略決策。
2.BGP路由選擇協議執行中使用5種分組:打開分組(open)、更新分組(update)、存活分組(keepalive)、通告分組(notification)、Route-refresh路由重發。
3.BGP鄰居建立中的狀態和過程如下:
空閑(Idle):為初始狀態,當協議激活后開始初始化,復位計時器,并發起第一個TCP連接,并開始傾聽遠程對等體所發起的連接,同時轉向Connect狀態。。
連接(Connect):開始TCP連接并等待TCP連接成功的消息。如果TCP連接成功,則進入OpenSent狀態;如果TCP連接失敗,進入Active狀態。
行動(Active):BGP總是試圖建立TCP連接,若連接計時器超時,則退回到Connect狀態,TCP連接成功就轉為Open sent狀態。
OPEN發送(Open sent):TCP連接已建立,自己已發送第一個OPEN報文,等待接收對方的Open報文,并對報文進行檢查,若發現錯誤則發送Notification消息報文并退回到Idle狀態。若檢查無誤則發送Keepalive消息報文,Keepalive計時器開始計時,并轉為Open confirm狀態。
OPEN證實(Open confirm):BGP等待Keepalive報文,同時復位保持計時器。如果收到了Keepalive報文,就轉為Established狀態,鄰居關系協商完成。如果系統收到一條更新或Keepalive消息,它將重新啟動保持計時器;如果收到Notification消息,BGP就退回到空閑狀態。
已建立(Established):即建立了鄰居(對等體)關系,路由器將和鄰居交換Update報文,同時復位保持計時器。
4.BGP在進行路由通告的時候,需要遵循以下原則:
多條路徑時,BGP Speaker只選最優的給自己使用(負載均衡和FRR除外)。
BGP Speaker只把自己使用的路由(最優路由)通告給相鄰體。
BGP Speaker從EBGP獲得的路由會向自己所有BGP相鄰體通告(包括EBGP和IBGP)。
BGP Speaker從IBGP獲得的路由不向自己的IBGP相鄰體通告(反射器除外)。
BGP Speaker從IBGP獲得的路由是否通告給自己的EBGP相鄰體要根據IGP和BGP同步的情況來決定。
當收到對端的refresh報文并且本端鄰居支持refresh能力,BGP Speaker將把自己所 有BGP路由通告給對等體。
GR過程中,主備倒換方在GR結束時BGP Speaker會把自己所有BGP路由通告給對等體。
5.路徑屬性分為4類:公認必遵、公認自決、可選過渡、可選非過渡。
6.協議結構
Marker (16 bytes) Length (2 bytes) Type (1 byte)
Marker – 信息包含信息接收端可預測值。
Length – 包含協議頭的信息長度。
Type –信息類型。信息可能是:Open、Update、Notification、Keepalive。