本篇文檔針對一些對OSPF路由協議有一定的感性認識的技術人員,提供一些基于OSPF報文格式的介紹,來達到了解OSPF路由協議的特性和特有的一些概念的了解。 一.OSPF的特性: 快速收斂; 能夠適應大型網絡; 能夠正確處理錯誤路由信息; 使用區域,能夠減少單個路由器的CPU負擔,構成結構化的網絡; 支持無類路由,完全支持超網,可變長子網等無類特性; 支持多條路徑負載均衡; 使用組播地址來進行信息互通,減少了非OSPF路由器的負載; 使用路由標簽來表示來自外部區域的路由。 二.Neighbor和Adjacency的定義: Neighbor: 在網絡中,OSPF路由器可以發送Hello報文來進行鄰居尋找,當Hello報文中的幾個字段的內容是互相一致的時候,相鄰的OSPF路由器就會形成Neighbor關系。 Neighbor是保存在Neighbor表里,需要有Router ID和IP地址信息。 Router ID的確定: 1. 選擇IP地址最大的Loopback接口的IP地址為Router ID;如果只有一個Loopback接口,那么Router ID就是這個Loopback的地址。 2. 如果沒有Loopback接口,就選擇IP地址最大的物理接口的IP地址為Router ID,但是作為Router ID的物理接口,就不能運行OSPF,也就是說這個接口無法發送接受OSPF報文。 使用Loopback的IP地址作為Router ID的好處: a. Loopback接口是邏輯接口,永遠不會down,有利于OSPF的穩定運行; b. 便于控制OSPF路由器的Router ID。 Hello協議的特點: 1. 目的: a. 用來發現OSPF Neighbor; b. Hello報文包含了多個需要OSPF路由器協商的參數,以形成Neighbor的關系; c. 他可以用來維持鄰居之間鏈接的存活; d. 用來確定DR,BDR路由器的選擇。 2. 報文內容: a. Router ID b. Area ID c. IP地址和掩碼 d. 認證方式和認證信息 e. Hello Interval和Dead Interval f. Router優先權 g. DR和BDR的Router ID h. 五個字節的特性控制信息 i. 距上次Hello報文后,在Dead Interval中,路由器的Neighbor的Router ID列表 每個OSPF路由器收到收到hello報文,將會協商上述信息,是否符合,如果不符合,Hello報文會遭到丟棄。 并且當一個路由器收到一個Hello報文,其中Neighbor Router ID List里有它的Router ID時,就會進入2-way模式,一旦進入2-way模式,就會建立Adjacency。 3. DR和BDR使用224.0.0.5(ALLSPFRouter Address)發送Hello Packet,而收到報文的路由器以224.0.0.6(ALLDRRouter Address)發送確認報文,表示收到了Hello Packet。 4. Point-to-Multipoint:相當與多個點對點網絡的集合,但是不會產生DR,BDR的選舉,通過組播報文發送路由信息報文。 5. 只有NBMA網絡和采用虛擬鏈路的網絡發送的是單播報文。 6. Stub Network:只有一個出口連接到路由器的網絡,通常產生的報文的原地址和目的地址都是本網絡中。 DR和BDR的選擇,特性: 1. DR和BDR是接口的特性,和路由器本身無關。 2. DR和BDR和multiaccess網絡中其他的路由器形成adjancency,但他們之間沒有形成adjancency。 3. 每個接口上都會有優先級,如果優先級為0時,表示不參加選擇DR,BDR。 Adjacency: 是在OSPF Neighbor之間形成的虛擬的連接,這些連接有不同的性質,根據路由器連接的不同網絡類型。 形成Adjacency的步驟: 1. 鄰居發現 2. 雙向通信 3. 數據庫同步 為了使路由器能夠實現數據庫的一致和同步,通過交換DD,LSR,LSU報文來達到數據庫同步的目的。 4. 完全形成連接 Master和Slave的關系和選擇 在ExStart狀態下,鄰居之間進行協商,以決定由哪個路由器來控制Database sychronization。 Neighbor表項的數據結構: Neighbor表項中的信息是通過路由器從Hello報文中學到的,關于鄰居的一些信息。 1. Neighbor ID 2. Neighbor IP Address 3. Area ID 4. Interface 5. Neighbor Priority 6. State 7. PollInterval 這是用于NBMA網絡的一個概念,由于NBMA網絡無法用組播來發送報文,也就是說無法自動發現鄰居,如果當Neighbor處于down的狀態時候,Hello報文每隔一個PollInterval時間就會發送一次,來發現和維護鄰居關系。 8. Neighbor Option 9. Inactivity Time 10. DR 11. BDR 12. Master/Slave 13. DD Sequence Number 14. Last Received Database Description Packet 15. Lik State Retransmission List 是指已經發送出去的LSA,但是還沒有收到Acknowledge的報文,如果超過RxmtInterval還沒有收到,就會進行重傳。 16. Database Summary List 在database synchronization時,所發送的LSA的表單。 17. Link State Request List 是指最新收到的在Database Description報文中所帶的LSA清單,路由器會發送LSR到Neighbor要最新的LSA,收到LSU后,會把list里的相應條目刪掉。 三.Neighbor狀態機制 1. Down 沒有收到任何Hello報文的時候,或是在DeadInterval中,沒有收到Hello報文 2. Attempt 只有在NBMA網絡里才有,手工進行Neighbor的指定。 3. Init 收到了Hello報文 4. 2-way 當路由器看到自己的Router ID在鄰居發來的Hello報文里;在廣播網絡里,DR和BDR開始被選舉。 5. ExStart 決定Master/Slave關系,以初始化DD 報文序列號來交換Database Description報文 6. Exchange 路由器開始交換DD報文的過程 7. Loading 發送LSR報文已處在Loading狀態的報文,請求最新的通過Exchange DD報文發現的未收到的LSA 8. Full 完成了路由器和網絡的LSA的交換 當路由器收到LSA后,會把LSA存到數據庫中,然后會把收到LSA復制并從其它的OSPF接口發送出去,直到整個網絡區域的LSA Database獲得同步一致。然后每個路由器根據LSA Database里的Link信息進行SPF運算,算出沒有回路的最短路徑。 四.Database Description報文 它是包含了路由器所有的LSA信息的報頭,可以使路由器知道,Neighbor上有多少LSA是自己不知道的,可以通過LSR報文來請求新的LSA。
新聞熱點
疑難解答