OSPF路由協議
OSPF的基本概念和工作過程
開放式最短路徑優先協議(OSFP)是基于開放標準的鏈路狀態路由選擇協議,它完成各路由選擇協議算法的兩大主要功能:路徑選擇和路徑交換。Internet工程任務協會(IETF)于1988年開發了OSPF,其最近版本是OSPF版本2,在RFC 2328中進行了描述。
OSPF路由協議概述
OSPF是內部網關路由協議
在共同管理域下的一組運行相同路由選擇協議的路由器的集合為一個自治系統(Autonomous System,AS)。在互聯網中,一個自制系統是一個有權決定本系統使用哪種路由協議的單位,它可以是一個企業、一座城市或一個電信運營商。隨著網絡的發展,上述對AS的定義已經不是十分準確了,網絡的發展使得網絡之間經常出現網絡合并情況,導致同一個自治系統中使用的路由協議也越來越多,所以自治系統的定義應該是在共同管理下的互聯網絡。
內部網關路由協議(IGP):用于在單一自治系統(Autonomous System,AS)內決策路由。內部網關路由協議包括RIP、OSPF等。
與內部網關路由協議相對應的叫做外部網關路由協議(EGP),外部網關路由協議用于在多個自治系統之間執行路由。BGP協議就是外部網關路由協議。
IGP是用來解決AS內部通信的,而EGP是解決AS間通信的。
OSPF是鏈路狀態路由協議
鏈路狀態路由協議通過與鄰居路由器建立鄰接關系,互相傳遞鏈路狀態信息,來了解整個網絡的拓撲結構。在鏈路狀態信息中,包括有哪些鏈路,這些鏈路與哪個路由器相連,連接的路徑成本是多少等信息,因此,在鏈路狀態路由協議收斂后,一臺路由器可以了解本區域完整的鏈路信息。
運行鏈路狀態路由協議的路由器就好像各自“繪制”自己所了解的網段信息,然后通過與鄰居路由器建立鄰接關系,互相“交流”鏈路信息,學習整個區域內鏈路信息,來“繪制”出整個區域內的鏈路圖。在一個區域內的所有路由器都保存著完全相同的鏈路狀態數據庫。
名詞解釋:
鄰居路由器:位于同一條物理鏈路或物理網段上的路由器。
鏈路狀態數據庫:也稱為拓撲數據庫,它包含所有路由器、路由器的鏈路以及這些鏈路的狀態,還包含所有網路以及到這些網絡的所有路徑。
鄰接關系:當兩臺運行OSPF協議的鄰居路由器的鏈路狀態數據庫達到一致(同步)時,它們就是完全鄰接的。
OSPF的工作過程
運行RIP的路由器只需要保存一張路由器,而使用OSPF路由協議的路由器需要保存三張表。
鄰居表:列出每臺路由器已經建立鄰接關系的全部鄰居路由器。
鏈路狀態數據庫(LSDB):列出網絡中其他路由器的信息,由此顯示了全網的網絡拓撲。
路由表:列出通過SPF算法計算出的到達每個相連網絡的最佳路徑。
運行OSPF的路由器試圖與鄰居路由器建立鄰接關系,在鄰居之間互相同步鏈路狀態數據庫。使用最短路徑算法(OSPF依據的算法是Dijkstra算法),從鏈路狀態信息計算得到一個以自己為樹根的“最短路徑樹”。到最后,每一臺路由器都將從最短路徑樹中構建出自己的路由表。OSPF的路由器也仍然是依據路由表進行數據轉發的。
OSPF的基本概念
OSPF區域
OSPF是一種鏈路狀態型的路由協議,不會產生環路問題,因此不需要使用最大跳數等限制來防止環路的產生。
OSPF將自治系統分割成多個小的區域,OSPF的路由器只在區域內部學習完整的鏈路狀態信息,而不必了解整個自治系統內部所有的鏈路狀態。
區域0為骨干區域,它用來連接自治系統內部的所有其他區域。用來連接骨干區域和其他區域的路由器叫做區域邊界路由器,它了解所連接的兩個區域的完整的鏈路狀態信息,并將鏈路狀態信息匯總后發給區域內的其他路由器。這樣,減小了路由器保存的鏈路狀態數據庫的大小,可以解決路由器內存容量有限的問題。
區域是通過一個32位的區域ID(Area ID)來標識的。
區域ID可以表示成一個十進制的數字,也可以表示成一個點分十進制的數字。在Cisco的路由器中這兩種表示方式都可以使用。
區域0(或者區域0.0.0.0)是為骨干區域保留的區域ID號。OSPF的骨干區域(Backbone Area)是一個特殊的OSPF區域,它擔負著區域間路由信息傳播的重任。
Router ID
因為運行OSPF的路由器要了解每條鏈路是連接在哪個路由器上的,因此,就需要有一個唯一的標識來標記OSPF網絡中的路由器,這個標識稱為Router ID。
Router ID是在OSPF區域內唯一標識路由器的IP地址。Cisco路由器通過下面的方法得到它們的Router ID。
首先,路由器選取它所有Loopback接口上數值最高的IP地址。
如果路由器沒有配置Loopback接口的IP地址,那么路由器就在所有活動物理端口中選取一個數值最高的IP地址作為路由器的Router ID。用作Router ID的路由器接口不一定非要運行OSPF協議。
使用Loopback接口作為Router ID的主要好處是Loopback接口比任何其他的物理端口都更穩定。一旦路由器啟動成功,這個回環接口就會處于活動狀態,只有整個路由器失效時它才會失效。
在OSPF協議中可以通過router-id命令指定路由器的Router ID,所以網絡管理員可以配置便于識別和記憶的Router ID值。
在實際工程中配置OSPF時都需要手工指定路由器的Router ID,這已經成為了一種標準配置。
四類路由器:
(1)區域內路由器(DR):
該類路由器的所有接口都屬于同一個OSPF區域。
(2)骨干路由器(BDR)
該類路由器至少一個接口屬于骨干區域。
因此,所有的ABR和位于Area0的內部路由器都是骨干路由器。
(3)區域邊界路由器ABR(Area Border Routers):
該類路由器可以同時屬于兩個以上的區域,但其中一個必須是骨干區域。
ABR用來連接骨干區域和非骨干區域,可以是實際連接,也可以是虛連接。
(4)自治系統邊界路由器ASBR(AS Boundary Routers)
與其他AS交換路由信息的路由器稱為ASBR。 只要一臺OSPF路由器引入了外部路由的信息,他就稱為了ASBR,它有可能是ABR,區域路由器,不一定位于AS邊界。
DR和BDR
DR和BDR的概念
運行OSPF的路由器通過與鄰居路由器建立鄰接關系,互相傳遞鏈路狀態信息。如果每兩個路由器之間都要建立鄰接關系,那么,就會構成n(n-1)/2個鄰接關系。每臺路由器都要與其他所有的鄰居路由器互相傳遞鏈路狀態信息。
那么這種情況就會顯得比較混亂,而且也會浪費許多不必要的網絡資源。
為了避免這些問題的發生,可以在這個網段上選舉一個指定路由器(Designated Router,DR)。由DR同網絡中的其他路由器建立鄰接關系,并負責將網段上的變化告知它們。
網絡上的每一臺路由器都和DR構成一個鄰接關系,那么只需要建立n-1個鄰接關系就可以了。
為了實現冗余,當DR失效時,需要有一個新的指定路由器來接替它,這個路由器就是備份指定路由器(Backup Designated Router,BDR)。網絡上所有的路由器將和DR、BDR同時形成鄰接關系,DB和BDR之間也將形成鄰接關系。如果DR失效了,BDR將成為新的DR。
DR和BDR的選舉
可以由OSPF自動選擇DR和BDR,也可以手工選擇。
自動選擇DR和BDR
網段上Router ID最大的路由器將被選舉為DR,第二大的將被選舉為BDR。這樣的選舉結果可能不是最佳的,例如:如果網段中有Cisco7200和3800系列路由器,那么3600路由器可能由于Router ID較大而被選舉為DR。
手工選舉DR和BDR。
要手工選擇DR和BDR,需要設置路由器的優先級。每臺路由器的接口都有一個路由器優先級(Router Priority),用一個八位的無符號整數來表示,大小范圍是0-255,數值越大,優先級越高。Cisco路由器上默認的優先級是1。接口優先級可以通過命令ip ospf priority來更改。如果路由器的優先級被設置為0,它將不參與DR和BDR的選舉。
優先級越高,贏得選舉的可能性越大。如果優先級相同,則需要比較Router ID。
DB和BDR的選舉過程
當一臺OSPF路由器啟動并發現它的鄰居路由器時,它將去檢查有效的DB和BDR路由器。
如果DR和BDR路由器存在的話,這臺路由器將接受已經存在的DR和BDR路由器。
如果BDR路由器不存在,將執行一個選舉過程,選出具有最高優先級的路由器作為BDR路由器。如果存在多個路由器具有相同的優先級,那么Router ID最大的路由器將被選中。
如果沒有有效的DR路由存在,那么BDR路由器將被提升為DR路由器,然后再執行一個選舉過程選舉BDR路由器。
這里需要注意的是,路由器的優先級可以影響一個選舉過程,但是它不能強制更換已經存在的DR或BDR路由器。也就是說,在已經選舉了DR和BDR路由器后,如果一臺具有更高優先級的路由器接入網絡,這臺新的路由器并不會馬上替換DR或BDR路由器中的任何一個。因此,在一個廣播多路訪問網絡上,最先初始化啟動的兩臺具有選舉資格的路由器將成為DR和BDR路由器。
OSPF的組播地址
一旦DR和BDR路由器選舉成功,其他路由器(成為DRother)將只與DR與BDR路由器形成鄰接關系。組播地址224.0.0.5代表所有參與OSPF的路由器(AIISPFRouter),而組播地址224.0.0.6只有DR和BDR路由器去偵聽這個地址,但BDR只偵聽不響應。在廣播多路訪問網絡上,鏈路更新信息先發送到244.0.0.6,再由DR路由器使用組播地址244.0.0.5泛洪更新報文到其他所有路由器。
OSPF的度量值
OSPF的用來度量路徑優劣的度量值稱為Cost(開銷),是指從該接口發送出去的數據包的出站接口開銷。鏈路開銷使用16位的無符號的整數表示,大小范圍是1-65535。
Cisco公司使用的默認代價是108/BW,表示為一個整數,在這里BW是指在接口上配置的帶寬,而108是Cisco路由器使用的參考帶寬。
路由器接口的開銷值可以通過命令ip ospf cost來改變,當在一個有多家廠商產品的網絡環境中配置Cisco的路由器時,這個命令變得十分重要。例如:有些廠商的路由器在其所有的接口上使用的默認開銷值是1。如果網絡中所有的路由器沒有使用同一種計算開銷的方式來指定OSPF的開銷,那么OSPF協議將不能正確的進行路由選擇。
使用108作為接口的參考帶寬在現代一些帶寬高于100Mb/s的網絡介質中會產生一個問題。108/110Mb/s=1,這就意味著更高帶寬的傳輸介質在OSPF協議中將會計算出一個小于1的數,這在OSPF協議中是不允許的。因此,從IOS 11.2版開始,Cisco可以在OSPF進程模式下使用命令auto-costreference-bandwidth修正這個問題,這個命令允許管理者更改默認的參考帶寬。
接口類型開銷(108/BW)
Fast Ethernet1
Ethernet10
56K1785
OSPF鄰接關系的建立
OSPF的數據包類型
OSPF信息不使用TCP或UDP,它承載在IP數據包內,使用協議號89(十進制)。
OSPF路由協議依靠五種不同類型的包來標識它們的鄰居以及更新鏈路狀態信息。這五種類型的包使得OSPF具備了高級和復雜的通信能力,如下表所示列出了OSPF常用的包類型。
OSPF的包類型描述
Hello包用于發現和維持鄰居關系,選舉DR和BDR
數據庫描述包(DBD)用于向鄰居發送摘要信息以同步鏈路狀態數據庫
鏈路狀態請求包(LSR)在路由器收到包含新信息的DBD后發送,用于請求更詳細的信息
鏈路狀態更新包(LSU)收到LSR后發送鏈路狀態通告(LSA),一個LSU數據包可能包含幾個LSA
鏈路狀態確認包(LSAck)確認已經收到LSU,每個LSA需要被分別確認
OSPF 6 類 LSA 類型
1 類 LSA(Router Link):每臺路由都只產生一條 1 類 LSA,只在區域內傳遞;
2 類 LSA(Router Link):只在有 DR/BDR 選舉的多路訪問網絡中產生,點到點或幀中繼等沒 有 DR/BDR 選舉的網絡不產生 2 類;
3 類 LSA(Router Link):將區域內的 LSA 匯總和簡化,并發往另一個區域,由 ABR 始發; 4 類 LSA(Router Link) :外部路由重分布進來后,由于 LSA 的 Router-id 還是 ASBR 的,這 個時候就需要由 ABR 告知非 ASBR 區域的路由器一條 LSA,怎樣到達 ASBR 的 Router-id,由 ABR 始發;
5 類 LSA(Router Link):從外部路由重分布進 OSPF,攜帶了 ASBR 的 Router-id,會在所有 ospf 區域中傳遞,任何路由器都不能更改它的 router-id,由 ASBR 始發;
7 類 LSA(Router Link):NSSA 區域允許有 ASBR 存在,在把外部路由重分布進 NSSA 區域后,將產生 7 類 LSA,7 類只會在 NSSA 區域中傳遞,當要傳遞到其他區域時,ABR 將把 7 類 LSA 轉換成 5 類 LSA
OSPF鄰接關系的建立
當兩臺或多臺路由器同時啟動運行OSPF路由協議時將開始建立鄰接關系的過程,此過程將經歷七種狀態:
失效(Down)狀態
這是OSPF建立交互關系的初始化狀態,路由器沒有與任何鄰居交換信息。
初始(Init)狀態
路由器的各個接口通過224.0.0.5發送Hello報文,這里以R1發送Hello報文為例。當鄰居路由器R2收到第一個Hello報文,這時就進入Init狀態。在該狀態時,路由器R2已經接收到Hello報文,但自身的ID并沒有出現在該Hello報文內。
雙向(2-Way)狀態
路由器R2向路由器R1發送一個Hello回應報文,該Hello回應報文含有路由器R1的ID。當路由器R1收到該Hello回應報文,發現含有自身的ID,這是就進入2-Way狀態,雙向通信已經建立。DR和BDR的選舉正是在這個狀態完成的。
準啟動(ExStart)狀態
在選舉出DR和BDR之后,路由器就被認為是處于ExStart狀態。在該狀態中,DR和BDR與網路中其他各路由器建立鄰接關系。在這個過程中,兩個鄰接路由器之間建立起一個主/從(Master/Slave)關系,路由器ID大的作為主路由器,用來發起通信。
交換(Exchange)狀態
主/從路由器之間交換一個或多個數據庫描述包(DBD),路由器進入Exchange狀態。DBD包含的是鏈路狀態數據庫中的LSA條目的摘要信息,主/從路由器之間交換DBD時要確保雙方都接收到。
加載(Loading)狀態
如果收到的DBD有更新的LSA條目的摘要信息,路由器將向對方發送鏈路狀態請求包(LSR)請求更詳細的信息,對方路由器用鏈路狀態更新(LSU)回應該LSR,此過程稱為Loading狀態。鏈路狀態更新包(LSU)需要對方確認收到。
完全鄰接(Full)狀態
當路由器之間完成了數據庫同步,它們的鏈路狀態數據庫已經完全一致,此時就達到了Full狀態。
到此,路由器中的鏈路狀態數據庫已經完全一致了,路由器可以根據這個一致的鏈路狀態數據庫通過最短路徑優先算法(SPF)來計算到目的網絡的最佳路徑并形成路由表。
OSPF的網絡類型
根據路由器所連接的物理網絡不同,OSPF將網絡劃分為以下四種類型:
點到點網絡(Point-to-Point)
點到點網絡連接單獨的一對路由器。在點到點網絡上的有效鄰居總是可以形成鄰接關系,不需要DR和BDR。在這些網絡上的OSPF報文的目的地址也總是224.0.0.5。(s接口)
點到點網絡一般采用PPP協議、HDLC協議等。
廣播多路訪問網絡(BMA)
廣播多路訪問網絡,像以太網和光纖分布式數字網(FDDI)等,它們可以連接多于兩臺的設備。而且由于它們是廣播型的,因而連接在這種網絡上的所有設備都可以接收到傳送的報文。在廣播型網絡上的OSPF路由器會選擇DR和BDR。OSPF報文采用組播方式發送。(單播)
非廣播多路訪問網絡(NBMA)
NBMA網絡,像X.25和幀中繼等,可以連接兩臺以上的路由器,但是它們沒有廣播數據包的能力。在NBMA網絡上的OSPF路由器需要手工配置鄰居,選舉DR和BDR,并且所有的OSPF報文都是單播的。(組播)
點到多點網絡(Point-to-MultiPoint)
點到多點網絡是NBMA網絡的一個特殊配置,可以被看作是一群點到點鏈路的集合。在這些網絡上的OSPF路由器不需要選舉DR和BDR,OSPF報文時組播的。
名詞解釋
HDLC(High Level Data Link Control,高級數據鏈路控制):是常用的數據鏈路層協議之一。許多常用的數據鏈路層協議的封裝方式都是基于HDLC的封裝格式。HDLC是ISO組織制定的一個標準化規程,它適用于點到點和點到多點的數據鏈路。由于各個廠家對DHLC標準的實現不盡相同,所以一般不同廠家設備之間互連不能采用HDLC協議進行封裝。Cisco路由器串口使用的默認協議時HDLC。
PPP(Point to Point Protocol,點對點協議):是應用最廣泛的廣域網連接時使用的數據鏈路層協議。它支持多種網絡層協議,并且支持用戶認證。
OSPF的應用環境
使用OSPF的原因
OSPF與RIP相比雖然有點很明顯,但是一般情況下,并不是所有的網絡都需要都需要使用OSPF,一些簡單的,路由器配置較低的環境,仍然需要使用靜態路由。當考慮以下幾個方面的因素時,一般需要使用OSPF來搭建:
1)網絡的規模
當網絡中的路由器在十臺以上或大中型規模的網絡。
2)網絡的拓撲結構
網絡的拓撲結構為網狀,并且任意兩臺路由器之間都有互通的需求。
3)其他特殊的需求
要求路由器變化時能夠快速收斂,路由協議自身的網絡開銷盡量降低。
4)路由器自身的要求
運行OSPF協議時對路由器CPU的處理能力及內存的大小都有一定的要求,性能很低的路由器不推薦使用OSPF協議。
OSPF的特點
OSPF主要具有以下幾個特點:
可適應大規模網絡
路由變化收斂速度快
無路由環路
支持可變長子網掩碼VLSM
支持區域劃分
支持以組播地址發送協議報文
OSPF與RIP的比較
從網絡結構看
RIP的拓撲簡單,適用于中小型網絡,沒有區域、邊界等概念。最大跳數為15跳,路由是依靠下一跳的個數來描述,無法體現帶寬與網絡延遲。
OSPF適用于較大規模的網絡。它把自治系統(AS)分成若干個區域,通過對系統內部路由的不同處理,對區域內和區域間路由的不同處理,減少網絡數據量的傳輸。OSPF對應RIP的“跳數”,引入了“開銷(Cost)”的概念。OSPF還把其他路由協議或者靜態路由作為AS的外部路由引入,處理能力相當強。
RIP的原始版本不支持變長子網掩碼VLSM(RIP v2支持),OSPF支持可變長子網掩碼(VLSM)。
協議運行有差別
運行RIP時,首先向鄰居發送請求報文,其他運行RIP的路由器收到請求報文后,馬上把自己的路由表發送過去;在沒收到請求報文時,定期(30s)廣播自己的路由表。
運行OSPF時,用Hello報文同鄰居建立連接,然后迅速建立鄰接關系,只在建立了鄰接關系的路由器中發送路由信息;以后靠定期發送Hello報文來維持連接,相對RIP的路由表報文來說這個Hello報文要小得多,網絡擁塞也就少了。Hello報文在廣播網上一般每10s發送一次,若在一定時間內(4倍于Hello間隔)沒有收到Hello報文,便認為對方已經死掉,從路由表中去掉,但在鏈路狀態數據庫中并沒有真正的去掉,以備它在啟用時減少數據傳輸量。但在它達到3600s(60分鐘)時便真正去掉它。OSPF的LSA也會重發,重發間隔為1800s(30分鐘)。
使用情況不同
一般來說,OSPF占用的實際鏈路帶寬比RIP少,因為它的路由表是有選擇的廣播(只在建立鄰接的路由器間),而RIP是鄰居之間的廣播。OSPF使用CPU的時間比RIP少,因為OSPF達到平衡后的主要工作是發送Hello報文,而RIP發送的是路由表(Hello報文比路由表小得多)。OSPF使用的內存比RIP大,因為OSPF有一個相對大的路由表。OSPF使用了鄰接關系,其收斂速度快。
歸納兩者的比較情況,如下表所示:
OSPFRIP v1RIP v2
鏈路狀態路由協議距離矢量路由協議
沒有跳數的限制RIP的15跳限制,超過15跳的路由被認為不可達
支持可變長子網掩碼(VLSM)不支持可變長子網支持可變長子網掩掩碼(VLSM)碼(VLSM)
收斂速度快收斂速度慢使用組播發送鏈路狀態更新,周期性廣播整個路由表,在低速鏈路及廣
在鏈路狀態變化時使用觸發更新,域網中應用將產生很大問題提供了帶寬的利用率
到此這篇關于OSPF路由協議詳解的文章就介紹到這了,更多相關OSPF路由協議內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- 解決采用多路由協議的網絡問題
- OSPFv3動態路由協議在NBMA鏈路上的實現
- 路由協議試題
- 華為路由器與Cisco路由器路由協議優先級比較
- 路由協議一樣影響網絡運行速度
- OSPF路由協議概念及工作原理
- 如何選擇路由協議
- 路由器原理及路由協議