趣解路由系列發(fā)布之后,文檔君收到了好多關(guān)于OSPF的留言。為了滿足各位粉絲們的要求,這不,文檔君帶著大量OSPF干貨,來啦~
PART.01RIP為啥“過氣”?
如果想好好說說OSPF,那就不得不從最“古老”的路由協(xié)議之一—RIP(Routing Information Protocol,路由信息協(xié)議)開始講起。
RIP最突出的特性是使用跳數(shù)(報(bào)文經(jīng)過路由器的個(gè)數(shù))作為路由好壞的度量:跳數(shù)最小即認(rèn)為該路由最優(yōu)。
隨著網(wǎng)絡(luò)的發(fā)展,鏈路(設(shè)備之間的傳輸通道)的種類和特性不斷升級(jí)變化,僅僅考慮跳數(shù)已經(jīng)不能客觀反映路由的優(yōu)劣了。
例如到達(dá)同一個(gè)目的地,有兩條路徑:A→B,A→C→D→B。
雖然A→B路徑最短,但是實(shí)際應(yīng)用的時(shí)候并不合適,以網(wǎng)絡(luò)帶寬和鏈路狀態(tài)來衡量網(wǎng)絡(luò)質(zhì)量會(huì)更加合理,比如在上圖中采用帶寬更大的A→C→D→B路徑效果更好。
同時(shí),RIP限制最大跳數(shù)為15,跳數(shù)16就變成了RIP路由協(xié)議“不可到達(dá)的遠(yuǎn)方”~因此RIP無法用于搭建大規(guī)模的網(wǎng)絡(luò)。
RIP“過氣”不只因?yàn)?strong>可擴(kuò)展性差,還有收斂速度慢、易產(chǎn)生環(huán)路的缺點(diǎn),但是在這里就不過多介紹啦~
PART.02OSPF是如何計(jì)算路由的?
接下來,就要隆重介紹下動(dòng)態(tài)路由協(xié)議中的當(dāng)紅炸子雞—OSPF(Open Shortest Path First,開放最短路徑優(yōu)先)啦!
與RIP不同,OSPF是一種鏈路狀態(tài)路由協(xié)議,它可以收集路由器周邊的拓?fù)渥兓⑿纬梢粋€(gè)靠譜的路由結(jié)構(gòu)。
如果說RIP提供的是路標(biāo),只告訴你下一步該怎么走,轉(zhuǎn)來轉(zhuǎn)去還是容易迷路(產(chǎn)生環(huán)路)。那么OSPF提供的就是地圖了,每個(gè)運(yùn)行OSPF協(xié)議的路由器上都有一張完整的網(wǎng)絡(luò)圖。地圖在手,迷路不再有!
OSPF的花費(fèi)(cost)可以是路由距離、鏈路的吞吐量或鏈路的可靠性,這種路由度量相比于RIP協(xié)議的跳數(shù)更加靈活和準(zhǔn)確,并且適用于更大更復(fù)雜的網(wǎng)絡(luò)。
以下圖所示的網(wǎng)絡(luò)為例,說明OSPF計(jì)算出路由的過程。
下圖是由四臺(tái)路由器組成的網(wǎng)絡(luò),連線旁邊標(biāo)注了從一臺(tái)路由器到另一臺(tái)路由器所需要的花費(fèi)(cost)。為簡(jiǎn)化問題,我們假定同一鏈路連接的兩臺(tái)路由器之間互相發(fā)送報(bào)文所需花費(fèi)是相同的。
首先,每臺(tái)路由器都根據(jù)自己周圍的網(wǎng)絡(luò)拓?fù)?/a>結(jié)構(gòu)生成一條LSA(鏈路狀態(tài)廣播),并通過相互之間發(fā)送OSPF協(xié)議報(bào)文將這條LSA發(fā)送給網(wǎng)絡(luò)中其他所有的路由器。這樣每臺(tái)路由器都收到了其他路由器的LSA。將所有的LSA放在一起稱作LSDB(鏈路狀態(tài)數(shù)據(jù)庫)。顯然,這四臺(tái)路由器的LSDB都是相同的。
其次,由于一條LSA是對(duì)一臺(tái)路由器周圍網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的描述,那么LSDB則是對(duì)整個(gè)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的描述。路由器將LSDB轉(zhuǎn)換成一張矢量權(quán)重圖,這張圖便是對(duì)整個(gè)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的真實(shí)反映。那么,這四臺(tái)路由器得到的是一張完全相同的圖。
最后也是最重要的是,每臺(tái)路由器都會(huì)以自己為根節(jié)點(diǎn),使用最短路徑優(yōu)先(SPF)算法計(jì)算出一顆最短路徑樹(選擇cost值最小的那條路徑),通過最短路徑樹生成到網(wǎng)絡(luò)中其他路由器的最短路由,形成路由表。這4臺(tái)路由器各自得到的路由表是不同的。
從上面的分析可以得出,OSPF協(xié)議計(jì)算出路由主要有以下3個(gè)主要步驟。
描述本路由器周邊的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),并生成LSA。
將自己生成的LSA在自治系統(tǒng)里傳播,并同時(shí)收集所有的其他路由器生成的LSA。
根據(jù)收集的所有LSA計(jì)算出路由。
OSPF計(jì)算路由的方法就是這么簡(jiǎn)單~~
那為什么說OSPF更適合大型網(wǎng)絡(luò)呢?
PART.04OSPF如何適應(yīng)大型網(wǎng)絡(luò)的?
我們一起來看看OSPF適應(yīng)大型網(wǎng)絡(luò)有哪些高招!
回想我們上學(xué)的時(shí)候,老師是怎么管理一個(gè)班的學(xué)生呢?
文檔君替你回答:當(dāng)然是分小組、選組長(zhǎng)啦!
分小組:劃分網(wǎng)絡(luò)區(qū)域
OSPF應(yīng)用于大型網(wǎng)絡(luò)時(shí),比如網(wǎng)絡(luò)中可能有幾十臺(tái)或者上百臺(tái)路由器。
當(dāng)這些路由器運(yùn)行OSPF協(xié)議,并傳遞、收集LSA時(shí),網(wǎng)絡(luò)中會(huì)充斥著這些協(xié)議報(bào)文,這樣的LSDB容量會(huì)很大,運(yùn)行SPF算法會(huì)很慢,不利于路由的正常計(jì)算和轉(zhuǎn)發(fā)。
OSPF中通過設(shè)置區(qū)域來解決這個(gè)問題。如圖所示,將一個(gè)大型網(wǎng)絡(luò)分割成若干個(gè)小網(wǎng)絡(luò),每個(gè)小網(wǎng)絡(luò)稱為一個(gè)區(qū)域(Area),用一個(gè)數(shù)字來對(duì)區(qū)域編號(hào)。其中,區(qū)域0稱為骨干區(qū)域,其他非0編號(hào)的區(qū)域稱之為非骨干區(qū)域,并規(guī)定非骨干區(qū)域必須和骨干區(qū)域相連。
經(jīng)過這樣的處理后,OSPF有以下優(yōu)點(diǎn)。
只有同一區(qū)域內(nèi)路由器的LSDB會(huì)保持同步,路由的變化首先在本區(qū)域內(nèi)更新。路由更新信息在傳遞給別的區(qū)域時(shí),可在區(qū)域邊界路由器(ABR)上進(jìn)行路由聚合,以減少通告到其他區(qū)域的LSA數(shù)量,可將網(wǎng)絡(luò)拓?fù)渥兓瘞淼挠绊懽钚』?/strong>
這樣可以很好地解決路由計(jì)算和轉(zhuǎn)發(fā)速度慢的問題。當(dāng)然,在實(shí)際組網(wǎng)應(yīng)用時(shí),OSPF還根據(jù)不同的區(qū)域特點(diǎn),定義了很多計(jì)算路由的優(yōu)化方法,這里就不一一展開描述了。
我們知道在OSPF協(xié)議中要求每個(gè)區(qū)域與骨干區(qū)域(Area 0)必須直接相連,但是實(shí)際組網(wǎng)中,網(wǎng)絡(luò)情況非常復(fù)雜,有時(shí)候在劃分區(qū)域時(shí),無法保證每個(gè)區(qū)域都滿足這個(gè)要求。這時(shí)候就需要虛鏈接技術(shù)來解決這個(gè)問題。
虛鏈接是指在兩臺(tái)ABR之間,穿過一個(gè)非骨干區(qū)域(也稱為轉(zhuǎn)換區(qū)域,Transit Area),建立的一條邏輯上的連接通道(需在兩端的ABR上同時(shí)配置)。
如上圖所示,在路由器C和路由器E之間建立了一條虛鏈接,使Area3和骨干區(qū)域Area0之間有了邏輯連接,Area1為轉(zhuǎn)換區(qū)域?!斑壿嬐ǖ馈笔侵竷膳_(tái)ABR之間的其他運(yùn)行OSPF的路由器只是轉(zhuǎn)發(fā)報(bào)文,相當(dāng)于在兩個(gè)ABR之間形成了一個(gè)點(diǎn)到點(diǎn)的連接,因此在這個(gè)連接上,與物理口一樣可以配置接口的各類參數(shù)。
選組長(zhǎng):OSPF選舉
在廣播和NBMA(Non-Broadcast Multiple Access,非廣播多路訪問)類型的網(wǎng)絡(luò)上,任意兩臺(tái)路由器都需要傳遞路由信息。如果網(wǎng)絡(luò)中有N臺(tái)路由器,那么則要建立“N×(N-1)/2”次的傳遞。這是沒有必要的,而且浪費(fèi)了寶貴的帶寬資源。
為了解決這個(gè)問題,OSPF協(xié)議指定一臺(tái)路由器作為“組長(zhǎng)”——DR(Designated Router,指定路由器)來負(fù)責(zé)傳遞信息。所有的路由器都只將路由信息發(fā)送給DR,再由DR將路由信息發(fā)送給本網(wǎng)段內(nèi)的其他路由器。
兩臺(tái)不是DR的路由器(DR Other)之間不再建立鄰接關(guān)系,也不再交換任何路由信息。這樣在同一個(gè)網(wǎng)段之間只需要建立N-1個(gè)鄰接關(guān)系,每次路由變化只需要進(jìn)行2×(N-1)次的傳遞即可。
選組長(zhǎng)的方法雖然非常有效,但是萬一組長(zhǎng)不在,整個(gè)組的同學(xué)誰來負(fù)責(zé)管理呢?
所以O(shè)SPF也定義了“副組長(zhǎng)”—BDR(Backup Designate Router,備用指定路由器)。
BDR是DR的一個(gè)備份。在選舉DR的同時(shí)也選舉出BDR,BDR也和本網(wǎng)段內(nèi)的所有路由器建立鄰接關(guān)系并交換路由信息。
一旦DR失效,BDR會(huì)立即變成DR。由于不需要重新選舉,而且鄰接關(guān)系事先已經(jīng)建立,所以BDR替代DR的過程非常短暫。BDR成功“上位”為DR后,還需要再重新選舉出一個(gè)新的BDR,但是這個(gè)選舉過程不會(huì)影響路由的計(jì)算。
通過前面對(duì)OSPF的介紹,不知道粉絲們是否有所收獲呢?