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