之前我們聊 RIP 、OSPF 協(xié)議都是基于 AS 即自治系統(tǒng)內(nèi)的協(xié)議,可以把它們認(rèn)為是域內(nèi)路由協(xié)議;而下面我們要聊的就是 AS 之間的協(xié)議了,這也叫做域間路由協(xié)議,或者叫做外部網(wǎng)關(guān)協(xié)議,其最著名的一個(gè)協(xié)議就是BGP協(xié)議,目前使用最多的協(xié)議版本就是 BGP 的第四個(gè)版本 BGP - 4,簡(jiǎn)稱為 BGP ( Border Gateway Protocol )。
在 RIP 和 OSPF 這些協(xié)議中,是由 IP 的網(wǎng)絡(luò)地址進(jìn)行路由控制,而 BGP 協(xié)議則需要通過(guò)整個(gè)互聯(lián)網(wǎng)進(jìn)行路由控制,范圍要大很多。
BGP 的環(huán)境與 RIP、OSPF 的環(huán)境不一樣,主要在于互聯(lián)網(wǎng)的規(guī)模過(guò)于龐大, 使得自治系統(tǒng)之間的路由選擇比較困難。互聯(lián)網(wǎng)上的路由器對(duì)任何 IP 地址都能通過(guò)路由表找到它的目的網(wǎng)絡(luò)。這是一個(gè)非常龐大的集合,如果使用鏈路狀態(tài)協(xié)議 RIP 和 OSPF 的話,必須要維護(hù)一個(gè)非常大的了路由集合,一方面路由表檢索起來(lái)效率很低,而且如此龐大的數(shù)據(jù)項(xiàng)也不方便維護(hù)。還有一點(diǎn)是每個(gè)路由器的 metric 不一樣,有可能這個(gè) metric 是經(jīng)過(guò)了 100 個(gè)路由,而那個(gè)鏈路到達(dá) 100 個(gè)路由可能就直接報(bào)錯(cuò)了。
而且自治系統(tǒng)間的路由選擇必須考慮策略問(wèn)題,這些策略需要把政治、地緣、安全或者經(jīng)濟(jì)方面考慮在內(nèi)。
由于上面這些特殊情況的存在,BGP 協(xié)議只是滿足選擇一條到達(dá)目的網(wǎng)絡(luò)比較好的路由,而非選擇一條最佳路由,BGP 采用了路徑向量路由選擇協(xié)議,它與 RIP 和 OSPF 有很大的差別。
在 BGP 協(xié)議中,每個(gè) AS 自治系統(tǒng)內(nèi)部都有許多BGP 邊界路由器,這個(gè) BGP 邊界路由器就相當(dāng)是自治系統(tǒng)內(nèi)部的發(fā)言人。不同 AS 之間的 BGP 邊界路由器如果要交換路由信息的話,就需要先建立 TCP 連接,然后在此連接上交換 BGP 報(bào)文以建立 BGP 會(huì)話,通過(guò) TCP 能夠提供可靠的服務(wù)。兩個(gè)交換報(bào)文的 BGP 邊界路由器都被稱為彼此的臨站(天使)或者對(duì)等站。
下圖是一個(gè)使用了 BGP 邊界路由器和 AS 的關(guān)系示意圖:
BGP 所交換的網(wǎng)絡(luò)可達(dá)性信息就是要到達(dá)某個(gè)網(wǎng)絡(luò)所要經(jīng)過(guò)的一系列的路由。當(dāng)各個(gè) BGP 邊界路由器一旦交換了可達(dá)性信息之后,就會(huì)選擇出來(lái)一條到達(dá)各個(gè) AS 比較好的路由路徑。
BGP 支持無(wú)分類域間路由選擇 CIDR,因此 BGP 的路由表也就應(yīng)當(dāng)包括當(dāng)前目的網(wǎng)絡(luò)前綴、下一跳路由器,以及到達(dá)目的網(wǎng)絡(luò)所經(jīng)過(guò)的 AS 。
在 BGP 剛剛運(yùn)行時(shí),BGP 的臨站是交換整個(gè) BGP 路由表,以后只要在發(fā)生變化時(shí)更新有新變化的部分即可。這樣對(duì)節(jié)省網(wǎng)絡(luò)帶寬和減少路由器開(kāi)銷有很大好處,這個(gè)特性和 OSPF 非常相似。
BGP - 4 主要有下面幾類報(bào)文類型:
OPEN ( 打開(kāi) )報(bào)文,用來(lái)和相鄰的 BGP 區(qū)域邊界路由器建立關(guān)系,進(jìn)行通信初始化。
UPDATE ( 更新 ) 報(bào)文,用來(lái)通告路由信息,以及列出需要更新的多條路由。
KEEPALIVE ( 保活 ) 報(bào)文,用來(lái)周期性的證實(shí)臨站的連通性。
NOTIFICATION ( 通知 ) 報(bào)文,用來(lái)發(fā)送檢測(cè)到的差錯(cuò)。
如果兩個(gè)臨站屬于兩個(gè)不同的自治系統(tǒng),而且其中一個(gè)臨站打算和其他臨站進(jìn)行路由交換的時(shí)候,這時(shí)候應(yīng)當(dāng)有一個(gè)路由商量的過(guò)程。商量的過(guò)程包括臨站路由器是否還能夠接受額外的路由信息。因此一開(kāi)始進(jìn)行商談的時(shí)候應(yīng)該要先發(fā)送 OPEN 報(bào)文,如果臨站可以接受這種關(guān)系,就用 KEEPALIVE 報(bào)文響應(yīng)。響應(yīng)完成后,兩個(gè)臨站就算是建立關(guān)系了。
關(guān)系建立之后,是需要相互維持的,這就和情侶之間確定關(guān)系之后,你作為老爺們總不能三天兩頭不搭理人家吧?俗話說(shuō)的好,感情是需要維持的,那么這個(gè)路由關(guān)系也是需要維持的。通信雙方中的每一方都需要確信對(duì)方是否已經(jīng)存在,因此兩個(gè) BGP 邊界路由器需要定期交換 KEEPALIVE 報(bào)文,一般這個(gè)定期的時(shí)間就是 30 s。
BGP 邊界路由器可以使用 UPDATE 報(bào)文來(lái)更新路由:包括撤掉以前通知過(guò)的路由和增加新的路由。撤銷路由時(shí)一次可以撤銷多條,但是新增路由一個(gè) UPDATE 報(bào)文只能增加一條。
當(dāng)然在 BGP 中不存在 "好消息傳播快壞消息傳播慢" 的問(wèn)題( 感覺(jué) RIP 的這個(gè)問(wèn)題被玩出梗了 )。因?yàn)?BGP 邊界路由器不只有一個(gè),而且當(dāng)某個(gè)路由器或者鏈路出現(xiàn)故障時(shí),由于 BGP 邊界路由器可以不止從一個(gè)臨站獲得路由信息,因此很容易選出新的路由。
下面是 BGP 的報(bào)文格式:
上面介紹的四種報(bào)文類型它們具有通用的報(bào)文首部,首部為 19 字節(jié),通用首部主要分為三個(gè)字段。
標(biāo)記 marker 字段為 16 字節(jié)長(zhǎng),用來(lái)鑒別收到的 BGP 報(bào)文,如果不使用鑒別,標(biāo)記字段要置為全 1。
長(zhǎng)度字段指出包括通用首部在內(nèi)的整個(gè) BGP 報(bào)文的長(zhǎng)度,以字節(jié)為單位,最小值是 19,最大值是 4096.
類型字段的值為 1 到 4,分別對(duì)應(yīng)上面報(bào)文的介紹順序。
OPEN 報(bào)文共有 6 個(gè)字段,如下圖抓包所示
前三個(gè)字段是 BGP 通用報(bào)文首部,下面的幾個(gè)字段依次是 Version 版本 ( 1 字節(jié),值為 4 ), My AS 本自治系統(tǒng)號(hào)( 2 字節(jié),使用的是全球唯一的 16 位系統(tǒng)號(hào) ) , Hold Time 保持時(shí)間 ( 2 字節(jié),以秒計(jì)算的保持為臨站關(guān)系的時(shí)間 ),BGP Identifier BGP 標(biāo)識(shí)符 ( 4 字節(jié),路由器的 IP 地址 ),下面是可選長(zhǎng)度和可選參數(shù)。
KEEPALIVE報(bào)文只有 BGP 19 字節(jié)的通用首部。
UPDATE報(bào)文有五個(gè)字段,如下圖所示
報(bào)文中的 Unfeasible routes length 表示不可行路由長(zhǎng)度,后面有個(gè)字段報(bào)文沒(méi)有列出來(lái),就是 Withdrawn Routes ,要撤銷的路由列表,后面的 Total Path Attribute Length 表示路徑屬性總長(zhǎng)度,后面的 Path attributes 就表示路徑屬性,最后的 NLRI 標(biāo)識(shí)發(fā)出這個(gè)報(bào)文的網(wǎng)絡(luò)。
NOTIFICATION報(bào)文有三個(gè)字段,如下圖所示
主要包括差錯(cuò)代碼 ( 1 字節(jié) ),差錯(cuò)子代碼 ( 1 字節(jié) ) ,后面還有差錯(cuò)數(shù)據(jù)。
審核編輯 :李倩
-
協(xié)議
+關(guān)注
關(guān)注
2文章
602瀏覽量
39214 -
路由器
+關(guān)注
關(guān)注
22文章
3728瀏覽量
113701
原文標(biāo)題:6 分鐘看完 BGP 協(xié)議。
文章出處:【微信號(hào):cxuangoodjob,微信公眾號(hào):程序員cxuan】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論