神秘的一天,文檔君穿越到某忍者世界,發(fā)現(xiàn)硝煙四起,文檔君四處打聽原因。
原來起因是雨之國(guó)沒有為“中興文檔”點(diǎn)亮星標(biāo),錯(cuò)過了文檔君的抽獎(jiǎng)活動(dòng),一氣之下雨之國(guó)在全國(guó)范圍內(nèi)屏蔽了“中興文檔”公眾號(hào),但沒想到竟導(dǎo)致土之國(guó)、火之國(guó)、雷之國(guó)也無法看到文檔君的新推文,忍界大戰(zhàn)一觸即發(fā)……
所以還不給文檔君點(diǎn)亮星標(biāo)?
這聽起來有點(diǎn)不可思議,為什么雨之國(guó)自己的屏蔽行為會(huì)影響到其它國(guó)家?
為了知道這其中的原理,我們就不得不提到邊界網(wǎng)關(guān)協(xié)議——BGP了。
但是想好好聊聊BGP,就必須先簡(jiǎn)單回顧一下互聯(lián)網(wǎng)是怎么誕生的~
01、互聯(lián)網(wǎng)是如何誕生的?
一開始,電腦之間互相訪問靠的是網(wǎng)線連接。這樣,電腦能收到在網(wǎng)線上傳輸?shù)乃袛?shù)據(jù)。
但不是每臺(tái)電腦都希望收到與自己無關(guān)的數(shù)據(jù),所以需要“路由器”來將電腦們統(tǒng)一管理和分發(fā),傳送數(shù)據(jù)到指定的地方。
就像無形之中電腦被分了很多個(gè)“組”一樣,這些“組”都使用相同的技術(shù)協(xié)議進(jìn)行管理,我們將這樣的“組”稱之為“自治系統(tǒng)(AS)”。
自治系統(tǒng),顧名思義,就是自己管理自己,一般來說就是由機(jī)構(gòu)或者組織來統(tǒng)一管理自己內(nèi)部的網(wǎng)絡(luò)?,F(xiàn)實(shí)當(dāng)中,常見的自治系統(tǒng)有一所大學(xué),一個(gè)企業(yè)或者一個(gè)公司個(gè)體。
為了便于理解,我們把自治系統(tǒng)這個(gè)概念放大到“忍者世界”的國(guó)家層面。
比如中興文檔的數(shù)據(jù)想要從興之國(guó)送去土之國(guó)、雷之國(guó)、火之國(guó)。很明顯要經(jīng)過其它中間國(guó)家。
若數(shù)據(jù)想經(jīng)過雨之國(guó),那么雨之國(guó)可能會(huì)想:“憑什么讓你的數(shù)據(jù)從我這里通過,我怎么知道你的數(shù)據(jù)里是不是藏著爆炸符呢?”
而且在實(shí)際中,每個(gè)自治系統(tǒng)都可能采用不同的數(shù)據(jù)傳輸手段,這樣通信肯定會(huì)受到阻礙,又怎么會(huì)發(fā)展為現(xiàn)在的互聯(lián)網(wǎng)呢?
02、BGP究竟是什么?
為調(diào)節(jié)這種紛爭(zhēng),IANA這個(gè)機(jī)構(gòu)就出現(xiàn)主持公道了?。↖ANA就是負(fù)責(zé)分配IP地址的那個(gè)源頭機(jī)構(gòu))
IANA給每個(gè)國(guó)家(自治系統(tǒng))都分配不重復(fù)的編號(hào),這些編號(hào)可以理解為大家都遵守的和平協(xié)議的標(biāo)識(shí),而這個(gè)和平協(xié)議,就是BGP(Border Gateway Protocol,邊界網(wǎng)關(guān)協(xié)議)。
如果每一個(gè)國(guó)家(自治系統(tǒng))都使用BGP這個(gè)規(guī)則來進(jìn)行數(shù)據(jù)的傳輸,那么路由器也再不需要把全世界的設(shè)備都記下來,只需要把國(guó)家(自治系統(tǒng))的編號(hào)記錄下來就可以啦!
那數(shù)據(jù)是如何在不同自治系統(tǒng)的路由器之間進(jìn)行傳輸?shù)哪兀?/p>
那就要說到BGP的兩個(gè)分類了:IBGP(Interior Border Gateway Protocol,內(nèi)部邊界網(wǎng)關(guān)協(xié)議)和EBGP(External Border Gateway Protocol,外部邊界網(wǎng)關(guān)協(xié)議),那么他們分別是什么呢?文檔君慢慢跟你道來~
03、IBGP和EBGP有什么區(qū)別?
IBGP(Internal BGP)和EBGP(External BGP)從字面意思來看Internal表示向內(nèi),External表示向外。
可能粉絲們有疑問BGP本來就是邊界網(wǎng)關(guān)協(xié)議啊?不就是一種外部網(wǎng)關(guān)協(xié)議嗎?為什么還要再區(qū)分內(nèi)部和外部呢?
文檔君繼續(xù)舉例子,這個(gè)問題可以理解為分工合作,EBGP就好比每個(gè)國(guó)家的外交部,外交部專門和其他國(guó)家打交道,獲取信息后傳送給國(guó)內(nèi)的媒體再公布給社會(huì)。
相對(duì)地,IBGP就可以理解為國(guó)內(nèi)大媒體,將外交部獲得的消息傳遞到國(guó)內(nèi)。
結(jié)合上面的例子,繼續(xù)來說說EBGP和IBGP有哪些區(qū)別呢?
EBGP僅處理自治系統(tǒng)之間的數(shù)據(jù)傳輸,IBGP僅處理自治系統(tǒng)之中的數(shù)據(jù)傳輸,就像外交部和國(guó)內(nèi)媒體分工非常明確。
IBGP從EBGP獲得的自治系統(tǒng)路徑,是不會(huì)進(jìn)行更新或者修改的,如果要更新也得由EBGP去更新或者修改,IBGP內(nèi)部不會(huì)獨(dú)自修改。
正如國(guó)內(nèi)媒體在得到外交部發(fā)布的國(guó)際新聞以后,不能自行編造新聞,必須如實(shí)傳遞,不然會(huì)使得國(guó)內(nèi)民眾的信息不對(duì)稱。
EBGP是不需要進(jìn)行全互聯(lián)的。比如興之國(guó)要和火之國(guó)通信,中間相隔其他國(guó)家,如果通過另外架設(shè)網(wǎng)絡(luò)來繞過中間國(guó)家,顯然是不劃算的,也是不現(xiàn)實(shí)的。但是如果中間國(guó)家也有使用EBGP的話,就可以透過中間國(guó)家來傳遞數(shù)據(jù)了,這樣就不需要進(jìn)行全互聯(lián)了。
04、IBGP與IGP有什么區(qū)別呢?
這個(gè)時(shí)候可能又有同學(xué)疑惑,有了IBGP,是不是不需要IGP了呢?
當(dāng)然不是!
IBGP與IGP重點(diǎn)不同,我們?cè)趯W(xué)習(xí)IGP時(shí),我們了解它有鼎鼎有名的幾員大將,如OSPF、IS-IS、RIP……。IGP的重點(diǎn)在于自治網(wǎng)絡(luò)中發(fā)現(xiàn)和計(jì)算路由,而IBGP在于控制整體路由的傳播。
延用上文的例子。
IBGP負(fù)責(zé)國(guó)際新聞在國(guó)內(nèi)的整體流通,就好比國(guó)內(nèi)非常有話語權(quán)的大媒體,但是具體如何傳遞給民眾并不負(fù)責(zé)。
而IGP就負(fù)責(zé)消息在國(guó)內(nèi)各個(gè)小媒體上的傳播,并盡力于如何讓這些消息傳播的更快更準(zhǔn)確,所以IBGP和IGP缺一不可。
讀到這里,大家已經(jīng)可以分清了BGP家族中的EBGP,IBGP,IGP了吧!那我們?cè)僭敿?xì)說說BGP是如何工作的?
05、BGP是如何工作的?
這兩個(gè)BGP建立會(huì)話的時(shí)候會(huì)有四種基本報(bào)文類型。
建立連接——Open報(bào)文:Open報(bào)文是TCP建立連接后發(fā)送的第一個(gè)報(bào)文,用來與其他設(shè)備或自治系統(tǒng)建立連接。
交換信息——Update報(bào)文:Update報(bào)文用于在設(shè)備或自治系統(tǒng)之間交換路由信息。
檢測(cè)狀態(tài)——Notifiaction報(bào)文:當(dāng)BGP檢測(cè)到錯(cuò)誤狀態(tài)時(shí),就向?qū)Φ润w發(fā)出Notifiaction報(bào)文,之后BGP連接會(huì)自動(dòng)中斷。
保持連接——Keepalive報(bào)文:BGP會(huì)周期性地向設(shè)備或自治系統(tǒng)發(fā)出Keepalive消息,用來保持連接的有效性。
為方便執(zhí)行會(huì)話,BGP將交互過程分為以下六種狀態(tài):
Idle(空閑):為初始狀態(tài),復(fù)位TCP連接的重連計(jì)時(shí)器(通常為60 s),準(zhǔn)備發(fā)起TCP連接。路由器查找路由表,是否有到達(dá)鄰居的路由。
Connect(連接):BGP發(fā)送第一個(gè)TCP連接,若收不到鄰居發(fā)來的TCP應(yīng)答報(bào)文,收不到應(yīng)答的時(shí)間超過重連計(jì)時(shí)器規(guī)定的時(shí)間,就會(huì)重新發(fā)起TCP連接,并繼續(xù)保持在Connect狀態(tài)。
如果TCP連接成功,就轉(zhuǎn)到Open sent狀態(tài)。
如果TCP連接失敗,就轉(zhuǎn)為Active狀態(tài)。
Active(行動(dòng)):當(dāng)可以發(fā)送TCP連接,也可以收到鄰居的應(yīng)答報(bào)文,但是依然無法建立起TCP三次握手,就會(huì)進(jìn)入到此狀態(tài)(TCP三次握手參見往期推文三次握手,四次揮手,原來TCP這么有禮貌!)。在此狀態(tài),BGP總是試圖建立TCP連接。
如果TCP連接建立成功,就轉(zhuǎn)到Open sent狀態(tài)。
如果TCP連接建立失敗,不停重新發(fā)起TCP連接,就退回到Connect狀態(tài),并在計(jì)時(shí)器結(jié)束后,轉(zhuǎn)回Active狀態(tài)。
Open sent(Open發(fā)送):TCP連接成功,發(fā)送第一個(gè)Open報(bào)文,并等待接收鄰居的Open報(bào)文。
OPEN confirm(Open證實(shí)):表示收到鄰居的Open報(bào)文,等待Keepalive報(bào)文或者Notifiaction報(bào)文,如果沒有收到又會(huì)進(jìn)入Active狀態(tài)。
Established(已建立):最后BGP會(huì)話連接的時(shí)候就是Established狀態(tài)了。之后可以通過Keepalive報(bào)文進(jìn)行鄰居?;?。
其實(shí)說了這么多,BGP這個(gè)協(xié)議的核心也是讓數(shù)據(jù)在跨域傳輸?shù)臅r(shí)候選擇最優(yōu)的路徑,要選擇最優(yōu)的路徑,就必須考慮非常多的屬性、時(shí)間等因素。
這里提及BGP最重要的6個(gè)屬性:
本地偏好(local Perference)——越大越優(yōu)
這個(gè)屬性會(huì)發(fā)送給自治系統(tǒng)里所有的IBGP路由器,也就是這個(gè)屬性在自治系統(tǒng)里使用,并且提供離開自治系統(tǒng)的最優(yōu)路徑,這個(gè)屬性值同樣是越大路徑越優(yōu)。
舉個(gè)例子,選擇市內(nèi)交通工具的場(chǎng)景就類似于比較本地優(yōu)先級(jí)~
MED——越小越優(yōu)
說的屬性就是MED( Multiple Exit Discriminator ,多出口鑒別器),如果你的相鄰自治系統(tǒng)有兩個(gè)或者多個(gè)BGP,路由和你的自治系統(tǒng)相連,這個(gè)時(shí)候MED屬性就可以定義哪條路徑更優(yōu),使用MED屬性值來標(biāo)識(shí)這些屬性值越低,表示為更優(yōu)的路徑。
MED屬性特點(diǎn)如下:
用于向外部對(duì)等體指出進(jìn)入AS的首選路徑。
僅在相鄰兩個(gè)AS之間傳遞。
與local Perference分別指引進(jìn)、出AS的路徑。
同理,選擇市間交通工具的場(chǎng)景就類似于比較MED屬性~
自治系統(tǒng)路徑(AS path)——越少越優(yōu)
AS path就是路由經(jīng)過的所有AS的集合喔!
當(dāng)前我們需要跨越AS進(jìn)行通信的時(shí)候,將本地AS號(hào)添加到列表的最前面就可以啦!
AS path屬性可以避免形成路由環(huán)路,還可以用于路由的選擇和過濾。那么AS path屬性是如何進(jìn)行路由選擇和過濾的呢?
優(yōu)先級(jí)屬性(origin):
IGP>EGP>INCOMPLETE
源屬性是有優(yōu)先級(jí)的喔!IGP優(yōu)先級(jí)最高,EGP次之,Incomplete優(yōu)先級(jí)最低。
NEXT HOP屬性
下一跳屬性定義了到達(dá)目的地下一跳的設(shè)備IP地址,是告訴別人去往目的地的下一個(gè)“坐標(biāo)”。比如:當(dāng)我們跳格子的時(shí)候,首先要看到下一個(gè)格子的位置。對(duì)于路由器來說,要首先確認(rèn)下一個(gè)格子(設(shè)備)的IP地址,才可以發(fā)送數(shù)據(jù)到這個(gè)設(shè)備。
具體還可以分為以下情況:
COMMUNITY屬性
團(tuán)體屬性根據(jù)某些特征對(duì)路由信息進(jìn)行分類,與AS無關(guān)。常被用來簡(jiǎn)化路由策略的應(yīng)用和降低維護(hù)管理的難度。
有了這些屬性以后,我們就可以使用算法配合這些屬性,算出最佳的路徑。
當(dāng)然BGP并不是一個(gè)自動(dòng)配置的協(xié)議,而是需要手動(dòng)配置的啊!
06、BGP有哪些新發(fā)展?
接下來我們就把話筒遞給BGP,讓他來介紹一下BGP有哪些新發(fā)展?
信息搜集有途徑——BGP Link State
經(jīng)過認(rèn)真的深造學(xué)習(xí),BGP不僅擴(kuò)展上文提到的屬性,還定義了新的link-state NLRI,一致通過了地址族信息AFI/SAFI為163888/71的封裝標(biāo)準(zhǔn),實(shí)現(xiàn)了網(wǎng)絡(luò)拓?fù)?/a>收集的一種新方式——BGP-LS!使得拓?fù)涞氖占鼮楦咝В?/p>
大型組網(wǎng)有對(duì)策——Segment Routing
網(wǎng)絡(luò)安全有保障——BGP Flow Specification DoS(Denial of Service)/DDos(Distributed Denail of Service)攻擊對(duì)網(wǎng)絡(luò)安全是一個(gè)重大威脅,它就像堵車一樣會(huì)導(dǎo)致網(wǎng)絡(luò)擁塞或者服務(wù)器CPU占用過高而無法為用戶提供服務(wù)。而傳統(tǒng)的流分類、重定向技術(shù)都有一定的缺陷。 BGP為了解決傳統(tǒng)預(yù)防方法的缺陷,通過NLRI(Network Layer Reachability Information,網(wǎng)絡(luò)層可達(dá)信息)屬性攜帶流量匹配信息,AFI/SAFI為1/133,擴(kuò)展了團(tuán)體屬性來攜帶數(shù)據(jù)流處理動(dòng)作,比如對(duì)流量進(jìn)行限速、引流、丟棄等。 極簡(jiǎn)演進(jìn)有方向——EVPN 互聯(lián)網(wǎng)業(yè)務(wù)高速發(fā)展,數(shù)據(jù)中心內(nèi)服務(wù)器數(shù)量的大量增加,虛擬機(jī)的產(chǎn)生使得二層域內(nèi)MAC數(shù)量劇增,傳統(tǒng)二層以太網(wǎng)VPN技術(shù)VPLS不能滿足建立超大型數(shù)據(jù)中心的需要。 想知道是哪五種新RT嗎?在評(píng)論區(qū)留言喔~ 回到文章開頭的故事,雨之國(guó)為了屏蔽本國(guó)訪問“中興文檔”,手動(dòng)進(jìn)行了BGP配置,使得經(jīng)過雨之國(guó)訪問“中興文檔”的流量都發(fā)送到一個(gè)無效的目的地。 但因?yàn)槭只?,把通過雨之國(guó)可以訪問“中興文檔”的路徑信息發(fā)送給了相鄰的自治系統(tǒng),也就是別的國(guó)家還以為經(jīng)過雨之國(guó)這可以訪問“中興文檔”,結(jié)果不行,這才導(dǎo)致土之國(guó)、火之國(guó)、雷之國(guó)無法看到文檔君的新推文…… 在文檔君的協(xié)調(diào)下,四國(guó)不僅理清了BGP、EBGP、IBGP、IGP的原理與關(guān)系,還了解了BGP的新發(fā)展,忍不住紛紛給文檔君點(diǎn)亮星標(biāo)?,表示再也不錯(cuò)過文檔君的新推文啦~07、結(jié)語