外部網關協議:BGP(邊界網關協議)
BGP:不同自製系統AS路由器之間交換路由資訊的協議。
內部閘道通訊協定RIP或者OSPF,主要是讓一個資料報在一個AS中儘可能的從來源站點傳到目的站。但是外部網關協議BGP的使用環境卻不一樣。主要是由於以下兩個原因:
(1) 網際網路規模太大,使得AS之間路由選擇非常困難。
(2) AS之間路由的選擇必須考慮有關策略。
由於上述情況,邊界網關協議只能是力求尋找一條到達目的網路且比較好的路由,而並非要找到一條最佳路由。
BGP採用了路徑向量路由選擇協議,而不是距離向量路由選擇協議或者是鏈路狀態路由選擇協議。
每一個自製系統AS的管理員都會選擇一個至少一個路由器作為本AS的發言人,稱為“BGP發言人”,一般把邊界路由器選為“BGP發言人”,當然也可以不選邊界路由器。
當BGP發言人需要其他AS的BGP發言人進行路由交換時,需要先建立TCP串連(連接埠號碼位179),然後通過此串連交換BGP報文以進行BGP會話,如新增了路由,撤銷過時路由等。
需要注意的是:每個BGP發言人除了運行BGP協議外還要運行內部閘道通訊協定(RIP或者是OSPF)。
自製系統AS2的BGP發言人會通知主幹網AS1發言人說:“到達網路N1,N2,N3,N4可經過AS2”,主幹網在收到這個BGP報文後會向相鄰的BGP發言人發出通知:“到達N1,N2,N3,N4網路可以經過(AS1,AS2)”。
從上面我們可以知道,BGP協議交換路由資訊的節點數和自製系統的個數成正比,而不再是和網路的個數成正比。
BGP-4有四種報文類型:
(1) OPEN報文:用來和相鄰BGP發言人建立關係,使通訊初始化。
(2) UPDATE報文:用來通知某一路由的資訊,以及列出要撤銷的多條路由。
(3) KEEPALIVE報文:用來周期性的證實相鄰路由器的可達性。
(4) NOTIFICATION報文:用來發送檢測到的錯誤。
那麼BGP報文的格式是什麼樣子的呢?下面看一看…
四種報文含有相同的報文首部,由19個位元組組成。包含標記,長度和類型三個欄位。
標記,佔16個位元組,用來鑒別BGP報文,如果不適用鑒別,則該欄位置全‘1’。
長度,佔2個位元組,指出包括BGP首部在內的整個BGP報文的長度,最小為19個位元組(即首部的長度)。
類型,佔一個位元組,取值範圍為1-4。對應BGP的四種報文類型。
下面簡單說說四種報文的組成。
(1) OPEN報文:包含6個欄位,版本號碼(佔1個位元組),本自製系統號(佔2個位元組,由ICANN分配的全球唯一的16位自製系統號),保持時間(佔2個位元組,以秒為單位),BGP標識符(佔4個位元組,通常指該BGP發言人的IP地址),選擇性參數長度(佔1個位元組),和選擇性參數。
(2) UPDATE報文:包含5個欄位,不可行路由長度(佔2個位元組,指出下一個欄位的長度),撤銷的路由(列出所有要撤銷的路由),路徑屬性總長度(佔2個位元組,用於指出下一個欄位的長度),路徑屬性(定義在這個報文中增加的路徑的屬性)和網路層可達性資訊(定義發送該報文的網路,包括網路首碼的位元,IP地址首碼)。
(3) KEEPALIVE報文:只包含通用首部的19個位元組。
(4) NOTIFICATION報文:包含3個欄位,差錯代碼(佔1個位元組),差錯子代碼(佔1個位元組)和差錯資料。
下面簡單談談這四種報文怎麼工作的。
假設有兩個屬於不同自製系統AS的BGP發言人需要交換路由資訊,那麼這裡需要一個商談的過程,因為對方BGP發言人可能由於路由器的負荷已經過重而不想再進行路由交換。首先一個BGP發言人發送一個OPEN報文給相鄰的BGP發言人,如果相鄰BGP發言人接受了,則會回送一個KEEPALIVE報文響應,這樣兩者的串連就建立了。
一旦串連建立,就需要維持這種串連關係,這就需要相互串連的BGP發言人要周期性的發送KEEPALIVE報文訊號,以保證這種相鄰關係是一致存在的。一般30秒發送一次。
如果要發送路由更新資訊,那麼就需要發送UPDATE報文,需要說明的是這個報文可以一次性撤銷多個路由資訊,單如果增加路由時,則每個報文只能增加一條路由資訊。
到此為止,大概瞭解外部網關協議BGP(邊界網關協議)的基本情況了吧。