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:到底該用哪一個?
※網路是怎樣連接的-探索協議棧和網卡