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