1.1 什麼是BGP
動態路由協議可以按照工作範圍分為IGP以及EGP。IGP工作在同一個AS內,主要用來發現和計算路由,為AS內提供路由信息的交換;而EGP工作在AS與AS之間,在AS間提供無環路的路由信息交換,BGP則是EGP的一種。邊界網關協議BGP(Border Gateway Protocol)是一種實現自治系統AS(Autonomous System)之間的路由可達,並選擇最佳路由的距離矢量路由協議。
1.1.1 自治系統AS(Autonomous System)
AS是指在一個實體管轄下的擁有相同選路策略的IP網絡。BGP網絡中的每個AS都被分配一個唯一的AS號,用於區分不同的AS。AS號分為2字節AS號和4字節AS號,其中2字節AS號的範圍為1至65535,4字節AS號的範圍為1至4294967295。支持4字節AS號的設備能夠與支持2字節AS號的設備兼容。
1.1.2 BGP分類
BGP按照運行方式分為EBGP(External/Exterior BGP)和IBGP(Internal/Interior BGP)。
EBGP:運行於不同AS之間的BGP稱為EBGP。為了防止AS間產生環路,當BGP設備接收EBGP對等體發送的路由時,會將帶有本地AS號的路由丟棄。
IBGP:運行於同一AS內部的BGP稱為IBGP。為了防止AS內產生環路,BGP設備不將從IBGP對等體學到的路由通告給其他IBGP對等體,並與所有IBGP對等體建立全連接。為了解決IBGP對等體的連接數量太多的問題,BGP設計了路由反射器和BGP聯盟。
1.1.3 BGP報文交互角色
BGP報文交互中分為Speaker和Peer兩種角色。
Speaker:發送BGP報文的設備稱為BGP發言者(Speaker),它接收或產生新的報文信息,併發布(Advertise)給其它BGP Speaker。
Peer:相互交換報文的Speaker之間互稱對等體(Peer)。若干相關的對等體可以構成對等體組(Peer Group)。
1.1.4 BGP Router ID
BGP的Router ID是一個用於標識BGP設備的32位值,通常是IPv4地址的形式,在BGP會話建立時發送的Open報文中攜帶。對等體之間建立BGP會話時,每個BGP設備都必須有唯一的Router ID,否則對等體之間不能建立BGP連接。BGP的Router ID在BGP網絡中必須是唯一的,可以採用手工配置,也可以讓設備自動選取。缺省情況下,BGP選擇設備上的Loopback接口的IPv4地址作為BGP的Router ID。如果設備上沒有配置Loopback接口,系統會選擇接口中最大的IPv4地址作為BGP的Router ID。一旦選出Router ID,除非發生接口地址刪除等事件,否則即使配置了更大的地址,也保持原來的Router ID。
1.1.5 BGP特點
外部網關協議
使用TCP179作為其傳輸層協議
支持CIDR
支持增量更新
增強型的路徑矢量路由器協議
無環路
路由策略豐富
可防止路由震盪
易於擴展
1.1.6 BGP報文分類
BGP對等體間通過以下5種報文進行交互,其中Keepalive報文為週期性發送,其餘報文為觸發式發送:
Open報文:用於建立BGP對等體連接。
Update報文:用於在對等體之間交換路由信息。
Notification報文:用於中斷BGP連接。
Keepalive報文:用於保持BGP連接。
Route-refresh報文:用於在改變路由策略後請求對等體重新發送路由信息。只有支持路由刷新(Route-refresh)能力的BGP設備會發送和響應此報文。
1.1.7 BGP狀態機
BGP對等體的交互過程中存在6種狀態機:空閒(Idle)、連接(Connect)、活躍(Active)、Open報文已發送(OpenSent)、Open報文已確認(OpenConfirm)和連接已建立(Established)。在BGP對等體建立的過程中,通常可見的3個狀態是:Idle、Active和Established。