1. 程式人生 > >計算機網路學習--邊界閘道器協議BGP(7)

計算機網路學習--邊界閘道器協議BGP(7)

外部閘道器協議: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(邊界閘道器協議)的基本情況了吧。