特點:
不止思科支援
鍊路狀态路由協定
收斂很快
無傳輸層
支援VLSM,傳遞的路由資訊可以帶掩碼
增量更新
僅支援在特定的位置收工彙總
支援認證
協定号對應的是89
概述:首先找到鄰居,互相傳遞LSA,湊齊LSA,通過Dijkstra-SPF算法算得最短生成樹(無環)。
LSA:link state advertimenet 鍊路狀态通告
RFC:IETF組織列出的協定草案
LSDB:link-state Database包含所有收到的LSA,每台交換機都有。
過程:
1.建立鄰居關系
2.建立臨接關系
臨接關系是比鄰居關系更好的一種關系
3.隻有臨接關系才可以傳遞LSA
4.LSA會泛洪,所有運作了OSPF的裝置會将LSA收集起來,形成LSDB
5.用 Dijkstra算法從拓撲表中生成最短生成樹。
6.然後把最優路徑加入路由表。
名詞解釋:
骨幹路由器:至少有一個接口與骨幹區内的路由器相連
内部路由器:所有接口都與同一個區域内的路由器相連
ABR:區域邊界路由器,至少連接配接兩個區域的路由器,必須要和骨幹區相連
ASBR:自治系統(AS)邊界路由器,這個裝置連接配接了兩個AS
Redistribute:重分布,把外面AS的路由引入自己所在的AS内。
AS:你能管理的一個區域
補充:
骨幹區不能被分割
必須有骨幹區
如果在一個多區域的OSPF内,其他區域必須要和骨幹區域相連
隻能說某某接口屬于某區域,不能說某某路由器屬于某區域。
OSPF支援的網絡類型:

會根據二層的協定來判斷網絡類型是什麼
如果二層是PPP協定或者hdlc協定,OSPF就會認為該接口網絡類型是P2P
如果二層是ethernet協定,OSPF就會認為該接口是BMA
如果二層是frame relay協定,OSPF就會認為該接口網絡類型是NMBA
BMA:broadcast multi access 多通路廣播
S 接口叫做serial串型接口,廣域網線路
預設情況下,serial 接口采用的二層協定是hdlc(進階的資料鍊路層協定)
OSPF:資料包:
1.hello :發現維持鄰居
2.DBD資料庫描述封包:描述LSA的簡略資訊,幫助建立LSDB
3.LSR鍊路狀态請求封包:當發現自己的資料庫中缺少DBD概述的某一項,則發送LSR向發送DBD的源請求缺的那一項,如果沒收到LSU的話則沒三秒重新發一次,無需确認。
4.LSACK:确認LSU已達目的地
5.LSU鍊路狀态更新:對LSR請求的更新(回應)LSA的完整資訊,通常被泛洪,因為可能别人也缺
OSPF的路由器可能所處的狀态:
Down:沒有檢測到活動的鄰居
INIT:收到 了hello包就會進入此狀态(有router-id字段,但并不在active neirbour)
2-WAY:在收到的hello包中有自己的ID便進入此狀态(有router-id字段,但在active neirbour裡)
Exstart:在2-way狀态意識到要進入鄰接狀态就會從2-way狀态轉換到exstart,該狀态選完主(master)從(slave)後就會進入exchange狀态
Exchange:發送DBD描述封包
loading:發送LSR和LSU
Full:進入完整的連接配接狀态
DR(designed router):指定路由器
作用:減少鄰接關系
所有的裝置僅僅需要和DR建立鄰接關系
DR和BDR的選舉
選舉涉及到兩個東西
1.priority優先級
如果接口開啟了OSPF,而且該接口是處在MA網絡中,接口上面預設是有一個優先級的,值預設為 1,範圍是0-255。(如果為0,則放棄優先級的選舉)
con-if#Ip ospf priority 0~255
所有處在MA網絡中的接口,因為要減少鄰接關系進而設定DR,BDR,接口優先級越大的,約有可能成為DR。
如果優先級一樣,就需要比較第二個參數(router-id)
Router-id 越大的,越有可能成為DR.
Router-id怎麼産生?(一個路由器僅有一個)
1.如果手工配置,手工配置的最優先
2.如果沒有手工配置,預設會選取環回接口最大的位址作為router-id
3.如果沒有環回接口,會選擇實體接口位址最大的作為router-id
4,如果沒有任何接口有位址,GGGGGGGGGG
DR,BDR的選舉中先選BDR,如果一個網絡中同時存在BR,BDR,又來了一個優先級更高的,DR,BDR則不變,當DR挂了,這個優先級更高的則稱為BDR。(很多情況下是這樣,比如你配了R1并開啟了OSPF,而你配完R2,發現R2并不是DR,是因為你的手速慢了,導緻40秒過後R1就認為這個區域内就自己,是以把自己升任BR)
conf#router ospf 1
Ospf的程序号為1,需要路由中程序号全相同才能執行OSPF
conf-router#network 1.1.1.1 0.0.0.0 area0
精确宣告(覆寫了R1 e0/0的接口位址),并指定所在區域為0