簡介:OSPF(Open Shortest Path First開放式最短路徑優先)是一個內部網關協議(Interior Gateway Protocol,簡稱IGP),用於在單一自治系統(autonomous system,AS)內決策路由。是對鏈路狀態路由協議的一種實現,隸屬內部網關協議(IGP),故運做於自治系統內部。著名的迪克斯加算法(Dijkstra)被用來計算最短路徑樹。OSPF分爲OSPFv2和OSPFv3兩個版本,其中OSPFv2用在IPv4網絡,OSPFv3用在IPv6網絡。OSPFv2是由RFC 2328定義的,OSPFv3是由RFC 5340定義的。與RIP相比,OSPF是鏈路狀態協議,而RIP是距離矢量協議。算法
實驗拓撲數據庫
1. 實驗步驟網絡
1. 配置 R1,R2,R3 的相應接口 IP 地址,保證連通性。而且在每一個路由器上配置一個環回口 0,其地址格式爲 X.X.X.X/24。
2. 而後配置 R1 和 R2 之間的區域 0。
R1(config)#router ospf ? //選擇一個進程號,進程號只是本地有意義。
<1-65535> Process ID
R1(config)#router ospf 1
R1(config-router)#network 1.1.1.0 0.0.0.255 area 0 //將知足該範圍的 IP 接口加入
OSPF 進程中,而且屬於區域 0
R1(config-router)#network 10.10.1.0 0.0.0.255 area 0
R1(config-router)#exitide
R2(config)#router ospf 1
R2(config-router)#router-id 2.2.2.2 //手工指定 OSPF 路由器 ID 爲 2.2.2.2
R2(config-router)#network 10.10.1.0 0.0.0.255 area 0
R2(config-router)#exit
R2(config)#
*Mar 1 00:03:52.351: %OSPF-5-ADJCHG: Process 1, Nbr 1.1.1.1 on Ethernet0/1 from
LOADING to FULL, Loading Done //鄰居已經同步
對於 OSPF 的路由器 ID(32bit)的選擇,採用以下規則:
a) 若是存在命令 router-id X.X.X.X,那麼優先採用
b) 若是沒有手工指定,那麼選取 IP 地址最高的環回口地址做爲 RID。即便該環回口並無參與 OSPF 進程
c) 若是沒有環回口,那麼選取 IP 地址最高的物理接口地址做爲 RID。即便該物理接口沒有參與 OSPF 進程,但必定要 UP。
RID 對於 OSPF 很是重要,若是沒有 RID,OSPF 便沒法正常運行。所以建議養成手工指定 RID 的習慣。
3. 配置 R2 和 R3,使得實驗拓撲得以完成。
R2(config-router)#network 2.2.2.0 0.0.0.255 area 1 //將 R2 的環回口放在區域 1 中
R2(config-router)#network 12.1.1.0 0.0.0.255 area 1
R3(config)#router ospf 1
R3(config-router)#router-id 3.3.3.3
R3(config-router)#network 12.1.1.0 0.0.0.255 a 1
R3(config-router)#network 3.3.3.0 0.0.0.255 area 1
R3(config-router)#
*Mar 1 00:13:01.379: %OSPF-5-ADJCHG: Process 1, Nbr 2.2.2.2 on Ethernet0/1 from
LOADING to FULL, Loading Done //R2 和 R3 之間 OSPF 同步測試
在 R2 上使用命令 show ip ospf interface brief 能夠查看到 R2 上參與 OSPF 進程的接口狀態,參與接口依賴於 network 命令,而且被動接口省略輸出。spa
在 R2 上使用命令 show ip protocols 獲得的輸出,能夠顯示出 R2 上現存路由進程的相關信息,而且包括 network 命令的明細。orm
在 R2上使用命令 show ip ospf neighbor獲得的輸出, 能夠顯示出 R2目前尚存的 OSPF路由器鄰居,而且各自鄰居的狀態,各個鄰居以 RID 區別,以及發現接口和地址。router
OSPF 的 DR,BDR 選舉的規則爲:接口
a) 首先看接口優先級,優先級大的爲優進程
b) 若是優先級相同,那麼比較路由器 RID,RID 大的爲優
c) 選舉完成之後,不具備搶佔性
更改接口優先級的命令爲:
R1(config)#int f0/0
R1(config-if)#ip ospf priority ?
<0-255> Priority //其中 0 表明直接退出選舉,成爲 Drother
在 R2 上使用命令 show ip ospf database 獲得的輸出,其中給出了區域0和區域1的鏈路狀態。該命令可以輸出本地路由器所包含的鏈路狀態數據庫的描述信息集合。其中database 的實際內容爲鄰居之間同步得到的 LSA(鏈路狀態通告)
在 R2 上使用命令 show ip route 輸出 R2 的路由表。發現 1.1.1.0/24 的路由顯示爲1.1.1.1/32,一樣的狀況發生在 R3 的環回口上。
回顧上述輸出,咱們發現:
OSPF 路由器將環回口的網絡類型認爲是一種特殊的類型, LOOPBACK 類型。所以無論環回口前綴長度爲多少,都一致認爲其長度爲 32。
所以,只須要更改環回口的網絡類型便可。一般更改成點到點網絡類型便可。
R1(config)#int lo0
R1(config-if)#ip ospf network point-to-point
R2(config)#int lo0
R2(config-if)#ip ospf network point-to-point
R3(config)#int lo0
R3(config-if)#ip ospf network point-to-point
而後再次查看 R2 的路由表:
環回口的子網掩碼位數已經正常。
最後測試一下連通性!
吳迪
2017.12.18