OSPF協議

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)

收斂速度快收斂速度慢使用組播發送鏈路狀態更新,週期性廣播整個路由表,在低速鏈路及廣

在鏈路狀態變化時使用觸發更新,域網中應用將產生很大問題提供了帶寬的利用率

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章