OSFP協議特點詳解以及OSFP單多區域配置實例

OSPF 是 Open Shortest Path First(開放最短路徑優先)的縮寫。它是 IETF 組織開發的一個基於鏈路狀態的內部網關協議。目前針對 IPv4 協議使用的是 OSPF Version 2(RFC 2328)。

科普OSPF開發歷程:

鏈路狀態理由協議

SPF演算法

是OSPF路由協議的基礎。SPF演算法有時也被稱為Dijkstra演算法,這是因為最短路徑優先演算法SPF是Dijkstra發明的。SPF演算法將每一個路由器作為根(ROOT)來計算其到每一個目的地路由器的距離,每一個路由器根據一個統一的資料庫會計算出路由域的拓撲結構圖,該結構圖類似於一棵樹,在SPF演算法中,被稱為最短路徑樹。在OSPF路由協議中,最短路徑樹的樹榦長度,即OSPF路由器至每一個目的地路由器的距離,稱為OSPF的Cost,其演算法為:Cost = 100×106/鏈路帶寬。 :在這裡,鏈路帶寬以bps來表示。也就是說,OSPF的Cost 與鏈路的帶寬成反比,帶寬越高,Cost越小,表示OSPF到目的地的距離越近。舉例來說,FDDI或快速乙太網的Cost為1,2M串列鏈路的Cost為48,10M乙太網的Cost為10等。

OSPF 具有如下特點:

適應範圍廣——支持各種規模的網路,最多可支持幾百台路由器。

快速收斂——在網路的拓撲結構發生變化後立即發送更新報文,使這一變化在自治系統中同步。

無自環——由於 OSPF 根據收集到的鏈路狀態用最短路徑樹演算法計算路由,從演算法本身保證了不會生成自環路由。

區域劃分——允許自治系統的網路被劃分成區域來管理,區域間傳送的路由信息被進一步抽象,從而減少了佔用的網路帶寬。

等價路由——支持到同一目的地址的多條等價路由。

路由分級——使用 4 類不同的路由,按優先順序來說分別是:區域內路由、區域間路由、第一類外部路由、第二類外部路由。

支持驗證——支持基於介面的報文驗證,以保證報文交互的安全性。

組播發送——在某些類型的鏈路上以組播地址發送協議報文,減少對其他設備的干擾。

OSPF 的基本概念

1. 自治系統(Autonomous System)

一組使用相同路由協議交換路由信息的路由器,縮寫為 AS。

2. OSPF 路由的計算過程

OSPF 協議路由的計算過程可簡單描述如下:

每台 OSPF 路由器根據自己周圍的網路拓撲結構生成 LSA(Link State Advertisement,鏈路狀態通告),並通過更新報文將 LSA 發送給網路中的其它 OSPF 路由器。

每台 OSPF 路由器都會收集其它路由器通告的 LSA,所有的 LSA 放在一起便組成LSDB(Link State Database,鏈路狀態資料庫)。LSA 是對路由器周圍網路拓撲結構的描述,LSDB 則是對整個自治系統的網路拓撲結構的描述。

OSPF 路由器將 LSDB 轉換成一張帶權的有向圖,這張圖便是對整個網路拓撲結構的真實反映。各個路由器得到的有向圖是完全相同的。

每台路由器根據有向圖,使用 SPF 演算法計算出一棵以自己為根的最短路徑樹,這棵樹給出了到自治系統中各節點的路由。

3. OSPF的協議管理距離(AD)是110

OSPF由IETF在20世紀80年代末期開發,OSPF是SPF類路中的開放式版本鏈路是路由器介面的臨一中說法,因此OSPF也稱為介面狀態路由器

4. 路由器 ID 號

一台路由器如果要運行 OSPF 協議,則必須存在 RID(Router-ID,路由器 ID)。 RID 是一個 32 比特無符號整數,可以在一個自治系統中唯一的標識一台路由器。

RID 可以手工配置,也可以自動生成;如果沒有通過命令指定 RID,將按照如下順序自動生成一個 RID:

①如果當前設備配置了 Loopback 介面,將選取所有 Loopback 介面上數值最大的 IP 地址作為 RID;

②如果當前設備沒有配置 Loopback 介面,將選取它所有已經配置 IP 地址且鏈路有效的介面上數值最大的 IP 地址作為 RID。

5. OSPF 的協議報文

OSPF 有五種類型的協議報文:

Hello 報文:周期性發送,用來發現和維持 OSPF 鄰居關係。內容包括一些定時器的數值、DR(Designated Router,指定路由器)、BDR(Backup Designated Router,備份指定路由器)以及自己已知的鄰居。

DD(Database Description,資料庫描述)報文:描述了本地 LSDB 中每一條LSA 的摘要信息,用於兩台路由器進行資料庫同步。

LSR(Link State Request,鏈路狀態請求)報文:向對方請求所需的 LSA。

兩台路由器互相交換 DD 報文之後,得知對端的路由器有哪些 LSA 是本地的 LSDB 所缺的,這時需要發送 LSR 報文向對方請求所需的 LSA。內容包括所需要的 LSA 的摘要。

LSU(Link State Update,鏈路狀態更新)報文:向對方發送其所需要的 LSA。

LSAck(Link State Acknowledgment,鏈路狀態確認)報文:用來對收到的LSA 進行確認。內容是需要確認的 LSA 的 Header(一個報文可對多個 LSA 進行確認)。

6.LSA 的類型

OSPF 中對鏈路狀態信息的描述都是封裝在 LSA 中發布出去,常用的 LSA 有以下幾種類型:

Router LSA(Type1):由每個路由器產生,描述路由器的鏈路狀態和開銷,在其始發的區域內傳播。

Network LSA(Type2):由 DR 產生,描述本網段所有路由器的鏈路狀態,在其始發的區域內傳播。

Network Summary LSA(Type3):由 ABR(Area Border Router,區域邊界路由器)產生,描述區域內某個網段的路由,並通告給其他區域。

ASBR Summary LSA(Type4):由 ABR 產生,描述到 ASBR(Autonomous System Boundary Router,自治系統邊界路由器)的路由,通告給相關區域。

AS External LSA(Type5):由 ASBR 產生,描述到 AS(Autonomous System,自治系統)外部的路由,通告到所有的區域(除了 Stub 區域和 NSSA 區域)。

NSSA External LSA(Type7):由 NSSA(Not-So-Stubby Area)區域內的ASBR 產生,描述到 AS 外部的路由,僅在 NSSA 區域內傳播。

Opaque LSA:是一個被提議的 LSA 類別,由標準的 LSA 頭部後面跟隨特殊應用的信息組成,可以直接由 OSPF 協議使用,或者由其它應用分發信息到整個 OSPF 域間接用。Opaque LSA 分為 Type 9、Type10、Type11 三種類型,泛洪區域不同;其中,Type 9 的 Opaque LSA 僅在本地鏈路範圍進行泛洪,Type 10 的 Opaque LSA 僅在本地區域範圍進行泛洪,Type 11 的 LSA可以在一個自治系統範圍進行泛洪。

7. 鄰居和鄰接

在 OSPF 中,鄰居(Neighbor)和鄰接(Adjacency)是兩個不同的概念。

OSPF 路由器啟動後,便會通過 OSPF 介面向外發送 Hello 報文。收到 Hello 報文的 OSPF 路由器會檢查報文中所定義的參數,如果雙方一致就會形成鄰居關係。

形成鄰居關係的雙方不一定都能形成鄰接關係,這要根據網路類型而定。只有當雙方成功交換 DD 報文,交換 LSA 並達到 LSDB 的同步之後,才形成真正意義上的鄰接關係。

OSPF區域和角色

1. 鏈路狀態協議泛紅鏈路狀態信息,使每台路由器有一個完整的網路拓撲視圖

最短路徑優先演算法用於點到點的網路連接,為了在目前多樣的網路中實現OSPF協議,OSPF必須知道它所運行的網路類型

在交換OSPF鏈路狀態信息前,OSPF協議會在路由器之間建立鄰居關係一個大型的OSPF網路使用分級設計原則。多個區域連接到一個分配區,區域0,也稱為骨幹區

OSPF的三張表

1. 鄰居表(neighbor table)

OSPF用鄰居機制來發現和維護路由的存在,鄰居表存儲了雙向通信的鄰居關係OSPF路由器列表的信息。

2. 拓撲表(topology table)

OSPF用LSA(link state Advertisement 鏈路狀態通告)來描述網路拓撲信息,然後OSPF路由器用拓撲資料庫來存儲網路的這些LSA。

3. OSPF路由表(nouter table)

對鏈路狀態資料庫進行SPF(Dijkstra)計算,而得出的OSPF路由表

OSPF建立過程

OSPF的網路類型

OSPF實戰配置

Ospfv3主要是在IPV6中的應用,基礎篇簡單給出案例,詳細請看深入篇

OSPF 的報文格式

OSPF報文直接封裝為IP報文協議報文,協議號為 89。一個比較完整的OSPF報文

(以LSU報文為例)結構如下所示。

1. OSPF 報文頭

OSPF有五種報文類型,它們有相同的報文頭。如下所示。

主要欄位的解釋如下:

Version: OSPF 的版本號。對於 OSPFv2 來說,其值為 2。

Type: OSPF 報文的類型。數值從 1 到 5,分別對應 Hello 報文、 DD 報 文、LSR 報文、 LSU 報文和 LSAck 報文。

Packet length: OSPF 報文的總長度,包括報文頭在內,單位為位元組。

Router ID:始發該 LSA 的路由器的 ID。

Area ID:始發 LSA 的路由器所在的區域 ID。

Checksum:對整個報文的校驗和。

AuType:驗證類型。可分為不驗證、簡單(明文)口令驗證和 MD5 驗證,其值分別為 0、1、 2。

Authentication:其數值根據驗證類型而定。當驗證類型為 0 時未作定義,為 1 時此欄位為密碼信息,類型為 2 時此欄位包括 Key ID、 MD5驗證數據長度和序列號的信息。

2. Hello 報文( Hello Packet)

最常用的一種報文,周期性的發送給鄰居路由器用來維持鄰居關係以及DR/BDR的選舉,內容包括一些定時器的數值、 DR、 BDR以及自己已知的鄰居。 Hello報文格

式如下所示。

主要欄位解釋如下:

Network Mask:發送 Hello 報文的介面所在網路的掩碼,如果相鄰兩台路由器 的網路掩碼不同,則不能建立鄰居關係。

HelloInterval:發送 Hello 報文的時間間隔。如果相鄰兩台路由器的 Hello 間隔時間不同,則不能建立鄰居關係。

Rtr Pri:路由器優先順序。如果設置為 0,則該路由器介面不能成為 DR/BDR。

RouterDeadInterval:失效時間。如果在此時間內未收到鄰居發來的 Hello 報文,則認為鄰居失效。如果相鄰兩台路由器的失效時間不同,則不能建立鄰居關係。

Designated Router:指定路由器的介面的 IP 地址。

Backup Designated Router:備份指定路由器的介面的 IP 地址。

Neighbor:鄰居路由器的 Router ID。

3. DD 報文( Database Description Packet)

兩台路由器進行資料庫同步時,用 DD 報文來描述自己的 LSDB,內容包括 LSDB中每一條LSA 的 Header( LSA 的 Header 可以唯一標識一條 LSA)。 LSA Header只佔一條 LSA 的整個數據量的一小部分,這樣可以減少路由器之間的協議報文流量,對端路由器根據 LSA Header 就可以判斷出是否已有這條 LSA。DD報文格式如下所示。

主要欄位的解釋如下:

Interface MTU:在不分片的情況下,此介面最大可發出的 IP 報文長度。

I( Initial):當發送連續多個 DD 報文時,如果這是第一個 DD 報文,則置為 1,否則置為 0。

M( More):當連續發送多個 DD 報文時,如果這是最後一個 DD 報文,則 置為 0。否則置為 1,表示後面還有其他的 DD 報文。

MS( Master/Slave):當兩台 OSPF 路由器交換 DD 報文時,首先需要確定雙方的主( Master)從( Slave)關係, Router ID 大 的一方會成為 Master。當值為 1 時表示發送方為 Master。

DD Sequence Number: DD 報文序列號,由 Master 方規定起始序列號,每發送一個 DD 報文序列號加 1, Slave 方使用 Master 的序列號 作為確認。主從雙方利用序列號來保證 DD 報文傳輸的可靠性和完整性。

4. LSR 報文( Link State Request Packet)

兩台路由器互相交換過DD報文之後,知道對端的路由器有哪些LSA是本地的LSDB所缺少的,這時需要發送LSR報文向對方請求所需的LSA。內容包括所需要的LSA的摘要。 LSR報文格式如下所示。

主要欄位解釋如下:

LS type: LSA 的類型號。例如 Type1 表示 Router LSA。

Link State ID:鏈路狀態標識,根據 LSA 的類型而定。

Advertising Router:產生此 LSA 的路由器的 Router ID。

5. LSU 報文( Link State Update Packet)

LSU報文用來向對端路由器發送所需要的LSA,內容是多條LSA(全部內容)的集合。 LSU報文格式如下所示。

主要欄位解釋如下:

Number of LSAs:該報文包含的 LSA 的數量。

LSAs:該報文包含的所有 LSA。

6. LSAck 報文( Link State Acknowledgment Packet)

LSAck報文用來對接收到的LSU報文進行確認,內容是需要確認的LSA的Header。

一個LSAck報文可對多個LSA進行確認。報文格式如下所示。

主要欄位解釋如下:

LSA Headers:該報文包含的 LSA 頭部。

7. LSA 頭格式

所有的LSA都有相同的報文頭,其格式如下所示。

主要欄位的解釋如下:

LS age: LSA 產生後所經過的時間,以秒為單位。 LSA 在本路由器的鏈路狀 態資料庫( LSDB)中會隨時間老化(每秒鐘加 1),但在網路的傳輸過程中卻不會。

LS type: LSA 的類型。

Link State ID:具體數值根據 LSA 的類型而定。

Advertising Router:始發 LSA 的路由器的 ID。

LS sequence number: LSA 的序列號,其他路由器根據這個值可以判斷哪個LSA 是最新的。

LS checksum:除了 LS age 欄位外,關於 LSA 的全部信息的校驗和。

length: LSA 的總長度,包括 LSA Header,以位元組為單位。

更多CCIE知識交流,請加微信Dennis_spo


推薦閱讀:

未來十年,人類還需要400億個感測器
《絕地求生》下載需要什麼配置?
IP Tools:到底該用哪一個?
網路是怎樣連接的-探索協議棧和網卡

TAG:網關 | 計算機網路 | LSA |