OSPF(Open Shortest Path First,開放最短鏈路優先)路由協議是典型的鏈路狀態路由協議。OSPF 做爲一種內部網關協議(Interior Gateway Protocol,IGP),用於在同一個自治系統(AS)中的路由器之間交換路由信息。OSPF 的特性以下:
1. 可適應大規模網絡;
2. 收斂速度快;
3. 無路由環路;
4. 支持VLSM 和CIDR;
5. 支持等價路由;
6. 支持區域劃分, 構成結構化的網絡;
7. 提供路由分級管理;
8. 支持簡單口令和MD5 認證;
9. 以組播方式傳送協議報文;
10. OSPF 路由協議的管理距離是110;
11. OSPF 路由協議採用cost 做爲度量標準;
12. OSPF 維護鄰居表、拓撲表和路由表。
另外,OSPF 將網絡劃分爲四種類型:廣播多路訪問型(BMA)、非廣播多路訪問型(NBMA)、點到點型(Point-to-Point)、點到多點型(Point-to-MultiPoint)。不一樣的二層鏈路的類型須要OSPF 不一樣的網絡類型來適應。
下面的幾個術語是學習OSPF 要掌握的:
1. 鏈路:鏈路就是路由器用來鏈接網絡的接口;
2. 鏈路狀態:用來描述路由器接口及其與鄰居路由器的關係。全部鏈路狀態信息構成鏈路狀態數據庫;
3. 區域:有相同的區域標誌的一組路由器和網絡的集合。在同一個區域內的路由器有相同的鏈路狀態數據庫;
4. 自治系統:採用同一種路由協議交換路由信息的路由器及其網絡構成一個自治系統;
5. 鏈路狀態通告(LSA):LSA 用來描述路由器的本地狀態,LSA 包括的信息有關於路由器接口的狀態和所造成的鄰接狀態;
6. 最短路經優先(SPF)算法:是OSPF 路由協議的基礎。SPF 算法有時也被稱爲Dijkstra算法,這是由於最短路徑優先算法(SPF)是Dijkstra 發明的。OSPF 路由器利用 SPF,獨立地計算出到達任意目的地的最佳路由。
經過下面的實現,來學習配置OSPF的網絡類型
配置點到點鏈路上的OSPF
步驟:
(1)步驟1:配置路由器R1
R1(config)#router ospf 1
R1(config-router)#router-id
R1(config-router)#network
R1(config-router)#network 192.168.1.0
(2)步驟2:配置路由器R2
R2(config)#router ospf 1
R2(config-router)#router-id
R2(config-router)#network
R2(config-router)#network 192.168.1.0
R2(config-router)#network 192.168.2.0
(3)步驟3:配置路由器R3
R3(config)#router ospf 1
R3(config-router)#router-id
R3(config-router)#network
R3(config-router)#network 192.168.2.0
R3(config-router)#network 192.168.3.0
(4)步驟4:配置路由器R4
R4(config)#router ospf 4
R4(config-router)#router-id
R4(config-router)#network
R4(config-router)#network 192.168.3.0
【技術要點】
(1)OSPF 路由進程ID 的範圍必須在1-65535 之間,並且只有本地含義,不一樣路由器的路由進程ID 能夠不一樣。若是要想啓動OSPF 路由進程,至少確保有一個接口是up 的;
(2)區域ID 是在0-4294967295 內的十進制數,也能夠是IP 地址的格式A.B.C.D。當網絡區域ID 爲0 或
(3)在高版本的IOS 中通告OSPF 網絡的時候,網絡號的後面能夠跟網絡掩碼,也能夠跟反掩碼,都是能夠的;
(4)肯定Router ID 遵循以下順序:
① 最優先的是在OSPF 進程中用命令「router-id」指定了路由器ID;
② 若是沒有在OSPF 進程中指定路由器ID,那麼選擇IP 地址最大的環回接口的IP 地址爲Router ID;
③ 若是沒有環回接口,就選擇最大的活動的物理接口的IP 地址爲Router ID。
建議用命令「router-id」來指定路由器ID,這樣可控性比較好。
調試:
(1) show ip route:查看路由表信息
R1#show ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O -
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route
Gateway of last resort is not set
C
O
O
O
C 192.168.1.0/24 is directly connected, Serial0/0
O 192.168.2.0/24 [110/128] via 192.168.1.2, 00:02:57, Serial0/0
O 192.168.3.0/24 [110/192] via 192.168.1.2, 00:02:57, Serial0/0
輸出結果代表同一個區域內經過OSPF 路由協議學習的路由條目用代碼「O」表示。
【說明】
① 環回接口OSPF 路由條目的掩碼長度都是32 位,這是環回接口的特性,儘管通告了24 位,解決的辦法是在環回接口下修改網絡類型爲「Point-to-Point」,操做以下:
R2(config)#interface loopback 0
R2(config-if)#ip ospf network point-to-point
這樣收到的路由條目的掩碼長度和通告的一致。
(2)show ip ospf neighbor:查看鄰居關係的創建
R2#show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
以上輸出代表路由器R2 有兩個鄰居,它們的路由器ID 分別爲
它參數解釋以下:
① Pri:鄰居路由器接口的優先級;
② State:當前鄰居路由器接口的狀態;
③ Dead Time:清除鄰居關係前等待的最長時間;
④ Address:鄰居接口的地址;
⑤ Interface:本身和鄰居路由器相鏈接口;
⑥ 「-」: 表示點到點的鏈路上OSPF 不進行DR 選舉
【技術要點】
OSPF 鄰居關係不能創建的常見緣由:
① hello 間隔和dead 間隔不一樣;
同一鏈路上的hello 包間隔和dead 間隔必須相同才能創建鄰接關係。默認狀況下,hello 包發送間隔以下表:
網絡類型
|
Hello間隔(秒)
|
Dead間隔(秒)
|
廣播多路訪問
|
10
|
40
|
非廣播多路訪問
|
30
|
120
|
點到點
|
10
|
40
|
點到多點
|
30
|
120
|
默認時Dead 間隔是Hello 間隔的四倍。能夠在接口下經過「ip ospf hello-interval」和「ip ospf dead-interval」命令調整。
② 區域號碼不一致;
③ 特殊區域(如stub,nssa等)區域類型不匹配;
④ 認證類型或密碼不一致;
⑤ 路由器ID 相同;
⑥ Hello 包被ACL deny;
⑦ 鏈路上的MTU 不匹配;
⑧ 接口下OSPF網絡類型不匹配
(2) show ip ospf database:查看動態鏈路數據庫的全部LSA數據信息
R2#show ip ospf database
OSPF Router with ID (
Router Link States (Area 0)
Link ID ADV Router Age Seq# Checksum Link count
以上輸出是R2 的區域0 的拓撲結構數據庫的信息,標題行的解釋以下:
① Link ID:是指Link State ID,表明整個路由器,而不是某個鏈路;
② ADV Router:是指通告鏈路狀態信息的路由器ID;
③ Age:老化時間;
④ Seq#:序列號;
⑤ Checksum:校驗和;
⑥ Link count:通告路由器在本區域內的鏈路數目。