那么如果在一個(gè)以太網(wǎng)環(huán)境中這五臺(tái)路由器之間希望交換同步路由信息,它們之間使用的是網(wǎng)狀的邏輯拓?fù)洹H缦聢D所示:
交換路由信息
這時(shí)如果希望它們之間能夠迅速同步,需要多條鏈路,這樣維護(hù)成本是比較大的。我們就想了,我們可以在網(wǎng)絡(luò)上選擇一個(gè)路由器出來(lái),讓它來(lái)當(dāng)“老大”,然后規(guī)定其他的路由器如果希望與另一個(gè)路由器通訊,那么只要經(jīng)過(guò)這個(gè)“老大”就可以了。所以如果我們把C當(dāng)成“老大”,則拓?fù)渚妥兂闪讼旅孢@樣:
選舉過(guò)程
這樣所有的路由器之間通訊都通過(guò)C路由器,就減少了路由信息在網(wǎng)絡(luò)上的洪泛。節(jié)約了網(wǎng)絡(luò)帶寬。那么這個(gè)路由器C就是咱們所說(shuō)的DR,指定路由器(Designated Rouer)
那關(guān)鍵是如果有一天這個(gè)路由器C壞了,怎么辦?這和WINDOWS中的DC有點(diǎn)類似,為了實(shí)現(xiàn)冗余,我們?cè)賮?lái)指定一個(gè)BDR(Backup DR),如我們?cè)谶@里再指定路由器D作為BDR,那么這個(gè)拓?fù)鋱D又變了:
再次變化
其實(shí)也就是咱們網(wǎng)絡(luò)拓?fù)渲兴f(shuō)的部分互連。這樣的話冗余實(shí)現(xiàn)了,成本也降低了。關(guān)鍵是網(wǎng)絡(luò)上有這么多路由器,到底哪一個(gè)是DR,哪一個(gè)是BDR?
我們來(lái)看一下選舉過(guò)程:
當(dāng)選舉DR/BDR的時(shí)候要比較hello報(bào)文中的優(yōu)先級(jí)。那么什么又是hello報(bào)文中,簡(jiǎn)單來(lái)說(shuō)這個(gè)hello報(bào)文中包括一些定時(shí)器的數(shù)值,DR,BDR,以及自己已知的鄰居。也就是說(shuō)每個(gè)路由器在和對(duì)方通訊時(shí)也是發(fā)hello報(bào)文,見(jiàn)面先打個(gè)照呼!在OSPF中默認(rèn)每10秒中發(fā)一次Hello報(bào)文!如果40秒還沒(méi)有收到的話,則宣稱該鄰居死亡。里面就包含了Router ID,Hello報(bào)文的時(shí)間間隔和死亡時(shí)間間隔,鄰居信息,區(qū)域信息,路由器優(yōu)先級(jí),DR以及BDR的信息,驗(yàn)證信息以及根區(qū)域標(biāo)記等。如圖所示:
OSPF路由協(xié)議
其中要求打*的參數(shù)必須要完全一樣,不然就不可能成為一個(gè)鄰居。
那么當(dāng)選舉DR/BDR的時(shí)候就先比較Hello包中的優(yōu)先級(jí)(priority)優(yōu)先級(jí)最高的為DR,次高的為BDR,但是默認(rèn)優(yōu)先級(jí)都為1,所以這個(gè)意義不大!那么在優(yōu)先級(jí)相同的情況下就開(kāi)始比較我們剛剛介紹的一個(gè)東西了Router ID,RID值最高的為DR,次高的為BDR,當(dāng)你把優(yōu)先級(jí)設(shè)置為0以后,該路由器就不能成為DR或者是BDR,只能是DROther。
修改優(yōu)先級(jí)可以使用命令: (config-if)#ip ospf cost 0-255 255最高
當(dāng)選舉完成后,DROther只和DR/BDR形成鄰接關(guān)系也就是說(shuō)在它們的眼里只有DR和BDR是它們的鄰居,所有的路由器將組播Hello包到地址224.0.0.5以便它們能跟蹤其他鄰居的信息,即DR將洪泛LSU到224.0.0.5這個(gè)組播地址上;DROther 只能能過(guò)組播地址224.0.0.6將LSU(鏈路狀態(tài)更新)到所有的DR上。只有DR/BDR監(jiān)聽(tīng)這個(gè)組播地址。
如果兩臺(tái)路由器剛剛啟動(dòng)沒(méi)有配置OSPF時(shí),則相關(guān)的端口都是DOWN的。
沒(méi)有啟用路由協(xié)議
如果配置好OSPF,這個(gè)時(shí)候如果雙方開(kāi)始發(fā)送一個(gè)初始化狀態(tài),我們以Router1為例,此時(shí)它會(huì)宣告我是192.168.10.10 這其實(shí)就是它的RID,它會(huì)告訴對(duì)方我是192.168.10.10我現(xiàn)在沒(méi)有任何鄰居。這個(gè)時(shí)候Router2在自己的Fa0/0中收到了Router2 發(fā)過(guò)來(lái)的宣告信息就是把這個(gè)信息加到自己的鄰居表里面并注明是通過(guò)Fa0/0中連接。,然后再反饋給Router1說(shuō)我是192.168.10.20,我有一個(gè)鄰居是192.168.10.10;此時(shí)Router1又收到Router2的宣告信息就會(huì)把Router2的地址加到自己的路由表中并注明是通過(guò)Fa0/0連接的。
這個(gè)狀態(tài)稱為:Two-way 狀態(tài),相對(duì)穩(wěn)定狀態(tài)但是還沒(méi)有真正成為鄰居關(guān)系。接下來(lái)進(jìn)行 Exstart 狀態(tài),還沒(méi)有真正進(jìn)行信息交換呢,只是一個(gè)選舉DR的過(guò)程:Router1會(huì)發(fā)出一個(gè)數(shù)據(jù)包說(shuō)我來(lái)負(fù)責(zé)更新路由表,因?yàn)槲业腞ID是192.168.10.10,但是Router2會(huì)說(shuō),不行,我不認(rèn)可,因?yàn)槲业腞ID比你大。所以經(jīng)過(guò)協(xié)商,Roter2應(yīng)該是BDR了。再往下就是一個(gè)Exchange 狀態(tài):交換雙方LSDB中的鏈路狀態(tài)數(shù)據(jù)庫(kù)的摘要信息,注意僅僅是摘要信息,為同步雙方的數(shù)據(jù)庫(kù)做準(zhǔn)備。
注意這里使用的不再是hello報(bào)文,是DD報(bào)文,也就是說(shuō)Router1發(fā)出一個(gè)DD報(bào)文給對(duì)方,對(duì)方收到后會(huì)發(fā)出LSACK,大家一看ACK太熟悉了,好多地方我們都使用過(guò)ACK,如TCP建立連接,通訊,拆除連接過(guò)程中,DHCP的工作過(guò)程中等等,都用到達(dá)ACK這個(gè)詞,在這里也是一個(gè)意思就是給對(duì)方一個(gè)確認(rèn),因?yàn)槿绻麤](méi)有確認(rèn),對(duì)方會(huì)重傳!再往下就進(jìn)入了Load 狀態(tài),這才是真正根據(jù)需要來(lái)調(diào)整自己的鏈路狀態(tài)數(shù)據(jù)庫(kù),沒(méi)有的加進(jìn)來(lái),如果我已經(jīng)有了,再做出比較應(yīng)該不應(yīng)該做更新,等等操作。
最后完全結(jié)束之后進(jìn)行是一個(gè)FULL狀態(tài),完全狀態(tài)。所有的鏈路狀態(tài)數(shù)據(jù)庫(kù)保持同步!那么如果又有網(wǎng)絡(luò)鏈路發(fā)生改變了,則LSU的信息(LSU更新包中包含LSA狀態(tài)信息)只會(huì)發(fā)給DR,然后由DR再通過(guò)組播洪泛到本區(qū)域的其他路由器上。其他路由器再根據(jù)鏈路狀態(tài)重新計(jì)算出新的路由表出來(lái)。 這中間會(huì)用到鏈路狀態(tài)樹(shù)和最短路徑樹(shù)兩個(gè)概念,我們簡(jiǎn)單看一下:
SPF算法
在OSPF中是用帶寬作為metric的標(biāo)準(zhǔn)叫 cost,一般每個(gè)路由器都是以自己為根來(lái)計(jì)算到達(dá)對(duì)方所需要的一個(gè)開(kāi)銷,用10的8次方來(lái)除以帶寬,越小說(shuō)明帶寬越大,路徑最優(yōu),就放到路由表中也就是最短路徑樹(shù)中。
以上只是簡(jiǎn)單分析了一下OSPF的工作過(guò)程。在此給出一張截圖供大家參考:
OSPF工作過(guò)程
OSFP雖然說(shuō)理論知識(shí)很多,但是配置起來(lái)很簡(jiǎn)單,我們來(lái)看一下具體的配置:
啟用 OSPF:
(Config)# router ospf 進(jìn)程ID 范圍是 1-65535
其中這個(gè)進(jìn)程ID,用于區(qū)分不同的OSPF協(xié)議,這只是一個(gè)本地進(jìn)程ID,隨便取,也就是說(shuō)只是區(qū)分一個(gè)路由器上的多個(gè)OSPF協(xié)議,跟別的路由器沒(méi)有關(guān)系可以不同。
指定網(wǎng)段
(config-router)network 網(wǎng)絡(luò)號(hào) 反向掩碼 area 區(qū)域號(hào)
注意這里區(qū)域號(hào)必須要求一樣
查看啟用的路由協(xié)議:
Show ip protocols
查看當(dāng)前路由表:
Show ip route
查直O(jiān)SPF相關(guān)信息
Show ip ospf interface
同樣我們還是通過(guò)一個(gè)實(shí)驗(yàn)來(lái)結(jié)束OSPF的學(xué)習(xí):
Lab:: 動(dòng)態(tài)路由協(xié)議OSPF
實(shí)驗(yàn)?zāi)康模和ㄟ^(guò)OSPF路由協(xié)議使得網(wǎng)絡(luò)中達(dá)到全網(wǎng)互通的目的
設(shè)備:三臺(tái)Cisco系統(tǒng)路由器,2條V24線纜
拓?fù)鋱D:
實(shí)驗(yàn)拓?fù)鋱D
Router1上的配置:
Router>en
Router#conf t
Router(config)#hostname RA
RA(config)#interface s2/0
RA(config-if)#ip address 192.168.0.1 255.255.255.0
RA(config-if)#clock rate 64000
RA(config-if)#no shutdown
RA(config-if)#exit
RA(config)#interface fa 0/0
RA(config-if)#ip address 10.10.10.1 255.255.255.0
RA(config-if)#no shutdown
RA(config-if)#exit
RA(config)#router ospf 1
RA(config-router)#network 10.10.10.0 0.0.0.255 area 0
RA(config-router)#network 192.168.0.0 0.0.0.255 area 0
Router2的配置:
Router>enable
Router#conf t
Router(config)#hostname RB
RB(config)#interface s2/0
RB(config-if)#ip address 192.168.0.2 255.255.255.0
RB(config-if)#no shutdown
RB(config-if)#exit
RB(config)#interface s3/0
RB(config-if)#ip address 192.168.1.1 255.255.255.0
RB(config-if)#clock rate 64000
RB(config-if)#no shutdown
RB(config-if)#exit
RB(config)#router ospf 1
RB(config-router)#network 192.168.0.0 0.0.0.255 area 0
RB(config-router)#network 192.168.1.0 0.0.0.255 area 0
Router3的配置:
Router>en
Router#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#interface s2/0
Router(config-if)#ip address 192.168.1.2 255.255.255.0
Router(config-if)#no shutdown
Router(config-if)#exit
Router(config)#interface fa 0/0
Router(config-if)#ip address 20.20.20.1 255.255.255.0
Router(config-if)#no shutdown
Router(config-if)#exit
Router(config)#router ospf 1
Router(config-router)#network 192.168.1.0 0.0.0.255 area 0
Router(config-router)#network 20.20.20.0 0.0.0.255 area 0
Router(config-router)#exit
驗(yàn)證我們?cè)赑C2上去ping PC1:
驗(yàn)證
反之也可以通訊,在此不再測(cè)試。
我們可以使用show ip route,顯示當(dāng)前的路由表:
路由表
其中O代表的就是OSPF,在此不再詳細(xì)介紹!
也可以使用show ip rotocols 顯示當(dāng)前正在運(yùn)行的路由協(xié)議:
路由協(xié)議
關(guān)于OSPF我們就介紹到此,下一篇文章我們將介紹一個(gè)平衡混合路由協(xié)議的代表EIGRP,敬請(qǐng)期待。