Border Gateway Protocol 邊界網關協議
1、四種消息類型:
Open消息:Open消息是TCP連接建立后發送的第一個消息,用于建立BGP對等體之間的連接關系。
Keepalive消息:BGP會周期性地向對等體發出Keepalive消息,用來保持連接的有效性。
Update消息:Update消息用于在對等體之間交換路由信息。它既可以發布可達路由信息,也可以撤銷不可達路由信息。
Notification消息:當BGP檢測到錯誤狀態時,就向對等體發出Notification消息,之后BGP連接會立即中斷。
2、鄰居建立的狀態和過程
空閑(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報文,同時復位保持計時器。
3、路由通告遵循原則
多條路徑時,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路由通告給對等體。
4、BGP屬性
路由器發送關于目標網絡的BGP更新消息,更新的度量值被稱為路徑屬性。屬性可以是公認的或可選的、強制的或自由決定的、傳遞的或非傳遞的。屬性也可以是部分的。并非組織的和有組合的都是合法的,
路徑屬性分為4類:公認必遵、公認自決、可選過渡、可選非過渡。
公認屬性:
是公認所有BGP實現都必須識別的屬性,這些屬性被傳遞給BGP鄰居。
公認強制屬性必須出現在路由描述中,公認自由決定屬性可以不出現在路由描述中。
可選屬性:
非公認屬性被稱為可選的,可選屬性可以是傳遞的或非傳遞的。
可選屬性不要求所有的BGP實現都支持。
對于不支持的可選傳遞屬性,路由器將其原封不動的傳遞給其他BGP路由器,在這種情況下,屬性被標記為部分的。
對于可選非傳遞屬性,路由器必須將其刪除,而不將其傳遞給其他BGP路由器。
(1)公認必遵(Well-Known Mandatory)
ORIGIN(起源):這個屬性說明了源路由是怎樣放到BGP表中的。有三個可能的源IGP,EGP,以及INCOMPLETE.路由器在多個路由選擇的處理中使用這個信息。路由器選擇具有最低ORIGIN類型的路徑。
AS_PATH(AS路徑):指出包含在UPDATE報文中的路由信息所經過的自治系統的序列。
Next_HOP(下一跳)聲明路由器所獲得的BGP路由的下一跳,對EBGP會話來說,下一跳就是通告該路由的鄰居路由器的源地址。
(2)公認自決(Well-Known Discretionary)
LOCAL_PREF(本地優先級):本地優先級屬性是用于告訴自治系統內的路由器在有多條路徑的時候,怎樣離開自治系統。本地優先級越高,路由優先級越高。
ATOMIC_AGGREGATE(原子聚合):原子聚合屬性指出已被丟失了的信息。
(3)可選過渡(Optional Transitive)
AGGREGATOR(聚合者):此屬性標明了實施路由聚合的BGP路由器ID和聚合路由的路由器的AS號。
COMMUNITY(團體):此屬性指共享一個公共屬性的一組路由器。
(4)可選非過渡(Optional Nontransitive)
MED(多出口區分):該屬性通知AS以外的路由器采用哪一條路徑到達AS,它也被認為是路由的外部度量,低MED值表示高的優先級。
ORIGINATOR_ID(起源ID):路由反射器會附加到這個屬性上,它攜帶本AS路由器的路由器ID,用以防止環路。
CLUSTER_LIST(簇列表):此屬性顯示了采用的反射路徑。