BGP對等體的建立、更新和刪除等交互過程主要有5種報文、6種狀態機和5個原則
一、5種報文類型:
1,open:用於建立BGP對等體連接
1.1,BGP鄰居參數協商:
- AS number:要和鄰居一致,否則無法建立鄰居關系;
- Router-id:不能沖突,否則無法建立鄰居關系;
- Hold time:鄰居失效時間 ,默認180s,如果不一致,協商成小的;
- BGP version:默認運行為v4版本
1.2,BGP鄰居能力的協商:
- 地址族協商一致,否則無法建立鄰居關系,默認為ipv4單播地址族(至少有一種地址組能力要一致)
- 路由刷新能力
- 是否支持4字節的AS號
2,update:用於在對等體之間交換路由信息,更新和撤銷
3,notification:用於中斷BGP TCP連接
4,keepalive:用於保持BGP連接,周期性發送,默認60s,180s內沒收到,鄰居關系斷開
5,route-refresh:用於手動觸發路由的觸發更新,或者用於ORF功能。只有支持路由刷新(Route-refresh)能力的BGP設備會發送和響應此報文
二、6種狀態機制
1,空閑(Idle)
- 沒有去往鄰居路由
- 鄰居發起的tcp連接,被本端拒絕,源地址不是本端指定的鄰居地址
2,連接(Connect)
- 發起tcp連接,無法收到鄰居的任何響應
- 如果TCP連接成功,那么BGP向對等體發送Open報文,並轉至OpenSent狀態。
- 如果TCP連接失敗,那么BGP轉至Active狀態。
3,活躍(Active)
- 發起tcp連接的路由器,能收到相應鄰居的應答報文,但依然無法建立起tcp 3次握手
- 如果TCP連接成功,那么BGP向對等體發送Open報文,關閉連接重傳定時器,並轉至OpenSent狀態。
- 如果TCP連接失敗,那么BGP停留在Active狀態。
- 如果連接重傳定時器超時,BGP仍沒有收到BGP對等體的響應,那么BGP轉至Connect狀態
4,Open報文已發送(OpenSent)
- 如果收到的Open報文正確,那么BGP發送Keepalive報文,並轉至OpenConfirm狀態。
- 如果發現收到的Open報文有錯誤,那么BGP發送Notification報文給對等體,並轉至Idle狀態。
5,Open報文已確認(OpenConfirm)
- 在OpenConfirm狀態下,BGP等待Keepalive或Notification報文。如果收到Keepalive報文,則轉至Established狀態,如果收到Notification報文,則轉至Idle狀態。
6,連接已建立(Established)
- 如果收到正確的Update或Keepalive報文,那么BGP就認為對端處於正常運行狀態,將保持BGP連接。
- 如果收到錯誤的Update或Keepalive報文,那么BGP發送Notification報文通知對端,並轉至Idle狀態。
- Route-refresh報文不會改變BGP狀態。
- 如果收到Notification報文,那么BGP轉至Idle狀態。
- 如果收到TCP拆鏈通知,那么BGP斷開連接,轉至Idle狀態。
在BGP對等體建立的過程中,通常可見的3個狀態是:Idle、Active和Established
三、BGP對等體之間的交互5個原則
BGP設備將最優路由加入BGP路由表,形成BGP路由。BGP設備與對等體建立鄰居關系后,采取以下交互原則:
-
從IBGP對等體獲得的BGP路由,BGP設備只發布給它的EBGP對等體。
-
從EBGP對等體獲得的BGP路由,BGP設備發布給它所有EBGP和IBGP對等體。
-
當存在多條到達同一目的地址的有效路由時,BGP設備只將最優路由發布給對等體。
-
路由更新時,BGP設備只發送更新的BGP路由。
-
所有對等體發送的路由,BGP設備都會接收