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