本篇文檔針對一些對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。