今天海翎光電的小編和大家聊一聊 OSPF 協議。
OSPF 是一種基于 SPF 算法的鏈路狀態路由協議。
上圖是在一個 OSPF 區域里面添入一臺新的路由器的時候,OSPF 協議的工作過程,如果你能非常詳細的敘述出這張圖的話,基本上 OSPF 協議的工作過程你就掌握了。 首先大家要清楚,一臺運行了 OSPF 協議的路由器,最終都會存儲三張表:鄰居表、拓撲表、路由表。下面以這三張表的產生過程為線索,來分析在這個過程中,路由器發生了那些變化,從而說明 OSPF 協議的工作過程。 一臺新加入 OSPF 區域的路由器首先要跟鄰居路由器建立鄰接關系,過程如下:
新路由器發出第一個 hello 分組以后等待應答,等待的時間間隔為 hello 分組的四倍等待期間的狀態稱為路由器的初始狀態,等待期間,新路由器從另外一臺路由器那里收到 hello 分組,并獲知 DE 和 BDR,如果沒有,則開始選擇。網絡上的其他路由器收到新路由器發的 hello0 分組以后將該路由器的 router Tn 加入到拓撲數據庫中,并發一回應 hello 分組,其中包含自己的 router ID 所有鄰居組成的列表。
新路由器看到自己的 ID 出現在其他路由器應答的鄰居列表中建立了鄰接關系,新路由器將其狀態改為雙向。通過上面 3 步,新加入的路由器和其鄰居路由器已經建立了鄰接關系。 在建立拓撲表的時候,新加入的路由器要經歷預啟動狀態、交換狀態、加載狀態、完全鄰接狀態。下面就將此過程,以圖的形式展示給大家:
(2)交換狀態:兩臺路由器都發送 DBD,DR 發送一系列的 DBD,其中包括含了存儲在其 database 中的網絡。DBD 中沒有包含詳細的必要信息,只是為了從其他鄰居路由器接收到 DBD 消息報文之后,與自己的數據庫進行比較。
(3)加載狀態:新路由器需要更詳細的信息,將使用 LSR(鏈路狀態請求包)進行特定某 LSA 的詳細信息的請求,而被請求端則會響應,并且會發送 LSU(鏈路狀態更新包),此包包含了信息的 LSA 信息。
經過以上四步,此 OSPF 區域的所有路由器的數據拓撲圖都達到了同步。(三) 然后每個路由器按照產生的全區域數據拓撲圖,在運行 SPF 算法,產生到達目標網絡的路由條目。經過以上三大步,OSPF 協議的運行過程基本結束。 海翎光電的小編在此提醒一下, 在上面的過程當中有幾個很重要的問題需要注意: 1》此協議的管理距離是 110、OSPF 路由進程 ID 的范圍必須在 1-65535 之間,而且只具有本地含義,不同路由器的路由進程 ID 可以不同、區域 ID 在 0 至4294967295,當區域值取 0 時本區域稱為主干區域;
- 用 router ID 命令指定的路由器 ID 的優先級最高
- 如果沒有指定,那么選 IP 地址最大的環回接口的 IP 地址為 route ID
- 如果沒有換回接口,就選擇 UP 端口中 IP 值最大的為 router ID
如果同時啟動,或者重新選舉,則看接口優先級(0-255),優先級最高的被選舉成 DR,在默認情況下,多路訪問網絡的接口優先級為 1,點到點網絡的接口優先級為 0,修改接口優先級的命令是“ip ospf priority”,如果接口的優先級被設置為 0,那么該接口不參與 DR 選舉。 如果前兩者相同,最后看路由器 ID,路由器 ID 最高的被選舉成 DR。DR 選舉時非搶占的,除非人為地重新選舉。重新選舉 DR 的方法有兩種,一是路由器重新啟動;二是執行“clear ip ospf process"命令。