一、什么是OSPF?
OSPF(Open Shortest Path First開放式最短路徑優先)是一個內部網關協議(Interior Gateway Protocol,簡稱IGP),用于在單一自治系統(autonomous system,AS)內決策路由。
二、OSPF術語
1、route ID
每一臺OSPF路由器只有一個Router-ID,Router-ID使用IP地址的形式來表示,確定Router-ID的方法為:
★1 .手工指定Router-ID。
★2 .路由器上活動Loopback接口中IP地址最大的,也就是數字最大的,如C類地址優先于B類地址,一個非活動的接口的IP地址是不能被選為Router-ID的。
★3 .如果沒有活動的Loopback接口,則選擇活動物理接口IP地址最大的。
注:如果一臺路由器收到一條鏈路狀態,無法到達該Router-ID的位置,就無法到達鏈路狀態中的目標網絡。
Router-ID只在OSPF啟動時計算,或者重置OSPF進程后計算。
2、COST值
OSPF會自動計算接口上的Cost值,但也可以通過手工指定該接口的Cost值,手工指定的優先于自動計算的值。
OSPF計算的Cost,同樣是和接口帶寬成反比,帶寬越高,Cost值越小。到達目標相同Cost值的路徑,可以執行負載均衡,最多6條鏈路同時執行負載均衡。
3、鏈路
就是路由器上的接口,在這里,應該指運行在OSPF進程下的接口。
4、鏈路狀態
OSPF路由器收集其所在網絡區域上各路由器的連接狀態信息,即鏈路狀態信息(Link-State),生成鏈路狀態數據庫(Link-State Database)。路由器掌握了該區域上所有路由器的鏈路狀態信息,也就等于了解了整個網絡的拓撲狀況。OSPF路由器利用“最短路徑優先算法(Shortest Path First, SPF)”,獨立地計算出到達任意目的地的路由。
5、OSPF區域
OSPF協議引入“分層路由”的概念,將網絡分割成一個“主干”連接的一組相互獨立的部分,這些相互獨立的部分被稱為“區域”(Area),“主干”的部分稱為“主干區域”。每個區域就如同一個獨立的網絡,該區域的OSPF路由器只保存該區域的鏈路狀態。每個路由器的鏈路狀態數據庫都可以保持合理的大小,路由計算的時間、報文數量都不會過大。
三、OSPF四種路由
在OSPF多區域網絡中,路由器可以按不同的需要同時成為以下四種路由器中的幾種:
- 內部路由器:所有端口在同一區域的路由器,維護一個鏈路狀態數據庫。
- 主干路由器:具有連接主干區域端口的路由器。
- 區域邊界路由器(ABR):具有連接多區域端口的路由器,一般作為一個區域的出口。ABR為每一個所連接的區域建立鏈路狀態數據庫,負責將所連接區域的路由摘要信息發送到主干區域,而主干區域上的ABR則負責將這些信息發送到各個區域。
- 自治域系統邊界路由器(ASBR):至少擁有一個連接外部自治域網絡(如非OSPF的網絡)端口的路由器,負責將非OSPF網絡信息傳入OSPF網絡。
四、協議類型
Hello報文,通過周期性地發送來發現和維護鄰接關系;
DD(鏈路狀態數據庫描述)報文,描述本地路由器保存的LSDB(鏈路狀態數據庫);
LSR(LS Request)報文,向鄰居請求本地沒有的LSA;
LSU(LS Update)報文,向鄰居發送其請求或更新的LSA;
LSAck(LS ACK)報文,收到鄰居發送的LSA后發送的確認報文。
五、接口優先級
選舉優先級最高的成為DR,優先級數字越大,表示優先級越高,被選為DR的幾率就越大,次優先級的為BDR,優先級范圍是0-255,默認為1,優先級為0表示沒有資格選舉DR和BDR。
六、網絡類型
1.點到點網絡(point-to-point),由cisco提出的網絡類型,自動發現鄰居,不選舉DR/BDR,hello時間10s。
2.廣播型網絡(broadcast),由cisco提出的網絡類型,自動發現鄰居,選舉DR/BDR,hello時間10s。
3.非廣播型(NBMA)網絡 (non-broadcast),由RFC提出的網絡類型,手工配置鄰居,選舉DR/BDR,hello時間30s。
4.點到多點網絡 (point-to-multipoint),由RFC提出,自動發現鄰居,不選舉DR/BDR,hello時間30s。
5.點到多點非廣播,由cisco提出的網絡類型,手動配置鄰居,不選舉DR/BDR,hello時間30s。
6.虛鏈接: OSPF包是以unicast的方式發送。
七、OSPF幾種狀態
- Down:此狀態還沒有與其他路由器交換信息。首先從其ospf接口向外發送hello分組,還并不知道DR(若為廣播網絡)和任何其他路由器。發送hello分組使用組播地址224.0.0.5。
- Attempt: 只適于NBMA網絡,在NBMA網絡中鄰居是手動指定的,在該狀態下,路由器將使用HelloInterval取代PollInterval來發送Hello包。
- Init: 表明在DeadInterval里收到了Hello包,但是2-Way通信仍然沒有建立起來。
- two-way: 雙向會話建立,而RID彼此出現在對方的鄰居列表中。
- ExStart: 信息交換初始狀態,在這個狀態下,本地路由器和鄰居將建立Master/Slave關系,并確定DD Sequence Number,路由器ID大的的成為Master。
- Exchange: 信息交換狀態,本地路由器和鄰居交換一個或多個DBD分組(也叫DDP),DBD包含有關LSDB中LSA條目的摘要信息。
- Loading: 信息加載狀態:收到DBD后,將收到的信息同LSDB中的信息進行比較。如果DBD中有更新的鏈路狀態條目,則向對方發送一個LSR,用于請求新的LSA。
- Full: 完全鄰接狀態,鄰接間的鏈路狀態數據庫同步完成,通過鄰居鏈路狀態請求列表為空且鄰居狀態為Loading判斷。
八、無法形成鄰接關系原因
1、Hello間隔和Dead間隔必須相同才能建立鄰接關系。
2、區域號碼不一致。
3、特殊區域(如stub和nssa等)區域類型不匹配。
4、認證類型和密碼不一致。
5、路由器ID相同。
6、Hello包被ACLdeny。
7、鏈路上的MTU不匹配。
8、接口下OSPF網絡類型不匹配。
九、OSPF協議主要優點
1、OSPF是真正的LOOP- FREE(無路由自環)路由協議。源自其算法本身的優點。(鏈路狀態及最短路徑樹算法)
2、OSPF收斂速度快:能夠在最短的時間內將路由變化傳遞到整個自治系統。
3、提出區域(area)劃分的概念,將自治系統劃分為不同區域后,通過區域之間的對路由信息的摘要,大大減少了需傳遞的路由信息數量。也使得路由信息不會隨網絡規模的擴大而急劇膨脹。
4、將協議自身的開銷控制到最小。
5、通過嚴格劃分路由的級別,提供更可信的路由選擇。
6、良好的安全性,ospf支持基于接口的明文及md5 驗證。
7、OSPF適應各種規模的網絡,最多可達數千臺。