OSPF(Open Shortest Path Fitst,ospf)開放最短路徑優(yōu)先協(xié)議,是由Internet工程任務(wù)組開發(fā)的路由選擇協(xié)議,公用協(xié)議,任何廠家的設(shè)備。
鏈路狀態(tài)路由協(xié)議(也可以說OSPF)工作原理:
每臺路由器通過使用Hello報(bào)文與它的鄰居之間建立鄰接關(guān)系
每臺路由器向每個(gè)鄰居發(fā)送鏈路狀態(tài)通告(LSA),有時(shí)叫鏈路狀態(tài)報(bào)文(LSP). 每個(gè)鄰居在收到LSP之后要依次向它的鄰居轉(zhuǎn)發(fā)這些LSP(泛洪)
每臺路由器要在數(shù)據(jù)庫中保存一份它所收到的LSA的備份,所有路由器的數(shù)據(jù)庫應(yīng)該相同
依照拓?fù)鋽?shù)據(jù)庫每臺路由器使用Dijkstra算法(SPF算法)計(jì)算出到每個(gè)網(wǎng)絡(luò)的最短路徑,并將結(jié)果輸出到路由選擇表中
OSPF的簡化原理:發(fā)Hello報(bào)文——建立鄰接關(guān)系——形成鏈路狀態(tài)數(shù)據(jù)庫——SPF算法——形成路由表。
幾個(gè)概念:
OSPF的特征:
1.快速適應(yīng)網(wǎng)絡(luò)變化
2.在網(wǎng)絡(luò)發(fā)生變化時(shí),發(fā)送觸發(fā)更新
3.以較低的頻率(每30分鐘)發(fā)送定期更新,這被稱為鏈路狀態(tài)刷新
4.支持不連續(xù)子網(wǎng)和CIDR
5.支持手動(dòng)路由匯總
6.收斂時(shí)間短
7.采用Cost作為度量值
8.使用區(qū)域概念,這可有效的減少協(xié)議對路由器的CPU和內(nèi)存的占用.
9.有路由驗(yàn)證功能,支持等價(jià)負(fù)載均衡
運(yùn)行OSPF的路由器需要一個(gè)能夠唯一標(biāo)示自己的Router ID
OSPF的網(wǎng)絡(luò)類型:
廣播型網(wǎng)絡(luò), 比如以太網(wǎng),Token Ring和FDDI,這樣的網(wǎng)絡(luò)上會選舉一個(gè)DR和BDR,DR/BDR的發(fā)送的OSPF包的目標(biāo)地址為224.0.0.5,運(yùn)載這些OSPF包的幀的目標(biāo)MAC地址為0100.5E00.0005;而除了DR/BDR以外的OSPF包的目標(biāo)地址為224.0.0.6,這個(gè)地址叫AllDRouters
NBMA網(wǎng)絡(luò), 比如X.25,Frame Relay,和ATM,不具備廣播的能力,在這樣的網(wǎng)絡(luò)上要選舉DR和BDR,因此鄰居要人工來指定
點(diǎn)到多點(diǎn)網(wǎng)絡(luò), 是NBMA網(wǎng)絡(luò)的一個(gè)特殊配置,可以看成是點(diǎn)到點(diǎn)鏈路的集合. 在這樣的網(wǎng)絡(luò)上不選舉DR和BDR
點(diǎn)到點(diǎn)網(wǎng)絡(luò), 比如T1線路,是連接單獨(dú)的一對路由器的網(wǎng)絡(luò),點(diǎn)到點(diǎn)網(wǎng)絡(luò)上的有效鄰居總是可以形成鄰接關(guān)系的,在這種網(wǎng)絡(luò)上,OSPF包的目標(biāo)地址使用的是224.0.0.5,這個(gè)組播地址稱為AllSPFRouters
虛鏈接,它被認(rèn)為是沒有編號的點(diǎn)到點(diǎn)網(wǎng)絡(luò)的一種特殊配置.OSPF報(bào)文以單播方式發(fā)送
OSPF的DR(指定路由)與BDR(備份路由):
通過組播發(fā)送Hello報(bào)文
具有最高OSPF優(yōu)先級的路由器會被選為DR(255最高)
如果OSPF優(yōu)先級相同具有最高路由器ID,路由器會被選為DR
DR與BDR的選舉過程?
1. 在和鄰居建立雙向通信之后,檢查鄰居的Hello包中Priority,DR和BDR字段,列出所有可以參與DR/BDR選舉的鄰居.所有的路由器聲明它們自己就是DR/BDR(Hello包中DR字段的值就是它們自己的接口地址;BDR字段的值就是它們自己的接口地址)
2. 從這個(gè)有參與選舉DR/BDR權(quán)的列表中,創(chuàng)建一組沒有聲明自己就是DR的路由器的子集(聲明自己是DR的路由器將不會被選舉為BDR)
3. 如果在這個(gè)子集里,不管有沒有宣稱自己就是BDR,只要在Hello包中BDR字段就等于自己接口的地址,優(yōu)先級最高的就被選舉為BDR;如果優(yōu)先級都一樣,RID最高的選舉為BDR
4. 如果在Hello包中DR字段就等于自己接口的地址,優(yōu)先級最高的就被選舉為DR;如果優(yōu)先級都一樣,RID最高的選舉為DR;如果沒有路由器宣稱自己就是DR,那么新選舉的BDR就成為DR
5. 要注意的是,當(dāng)網(wǎng)絡(luò)中已經(jīng)選舉了DR/BDR后,又出現(xiàn)了1臺新的優(yōu)先級更高的路由器,DR/BDR是不會重新選舉的
6. DR/BDR選舉完成后,其他Rother只和DR/BDR形成鄰接關(guān)系.所有的路由器將組播Hello包到224.0.0.5,以便它們能跟蹤其他鄰居的信息.其他Rother只組播update packet到224.0.0.6,只有DR/BDR監(jiān)聽這個(gè)地址 .一旦出問題,反過來,DR將使用224.0.0.5泛洪更新到其他路由器
OSPF路由器在完全鄰接之前,所經(jīng)過的幾個(gè)狀態(tài):
1.Down: 初始化狀態(tài)
2.Attempt: 只適于NBMA網(wǎng)絡(luò),在NBMA網(wǎng)絡(luò)中鄰居是手動(dòng)指定的,在該狀態(tài)下,路由器將使用HelloInterval取代PollInterval來發(fā)送Hello包
3.Init: 表明在DeadInterval里收到了Hello包,但是2-Way通信仍然沒有建立起來
4.two-way: 雙向會話建立
5.ExStart: 信息交換初始狀態(tài),在這個(gè)狀態(tài)下,本地路由器和鄰居將建立Master/Slave關(guān)系,并確定DD Sequence Number,接口等級高的的成為Master
6.Exchange: 信息交換狀態(tài),本地路由器向鄰居發(fā)送數(shù)據(jù)庫描述包,并且會發(fā)送LSR用于 請求新的LSA
7.Loading: 信息加載狀態(tài),本地路由器向鄰居發(fā)送LSR用于請求新的LSA
8.Full: 完全鄰接狀態(tài),這種鄰接出現(xiàn)在Router LSA和Network LSA中
在OSPF協(xié)議的環(huán)境下,區(qū)域(Area)是一組邏輯上的OSPF路由器和鏈路,區(qū)域是通過一個(gè)32位的區(qū)域ID(Area ID)來識別的
OSPF的區(qū)域:
在一個(gè)區(qū)域內(nèi)的路由器將不需要了解它們所在區(qū)域外部的拓?fù)浼?xì)節(jié)。在這種環(huán)境下:
路由器僅僅需要和它所在區(qū)域的其他路由器具有相同的鏈路狀態(tài)數(shù)據(jù)庫
鏈路狀態(tài)數(shù)據(jù)庫的減小也就意味著處理較少的LSA通告
大量的LSA泛洪被限制在一個(gè)區(qū)域里面
對于和區(qū)域相關(guān)的通信量定義了下面3種通信量的類型:
域內(nèi)通信量(Intra-Area Traffic)
域間通信量(Inter-Area Traffic)
外部通信量(External Traffic)
OSPF的路由器類型
內(nèi)部路由器(Internal Router)
區(qū)域邊界路由器(Area Border Routers,ABR)
骨干路由器(Back bone Router)
自主系統(tǒng)邊界路由器(Autonomous System Boundary Router,ASBR)
分段區(qū)域(Partitioned Area)是指一個(gè)區(qū)域由于鏈路的失效而使這個(gè)區(qū)域的一個(gè)部分和其他部分隔離開來的情形。
虛鏈路(Virtual Link)是指一條通過一個(gè)非骨干區(qū)域連接到骨干區(qū)域的鏈路。
在配置虛鏈路的時(shí)候,有幾條相關(guān)的規(guī)則,
虛鏈路必須配置在兩臺ABR路由器之間
配置了虛鏈路所經(jīng)過的區(qū)域必須擁有全部的路由選擇信息,這樣的區(qū)域又被稱為傳送區(qū)域(Transit Area) 傳送區(qū)域不能是一個(gè)末梢區(qū) 域
配置一個(gè)基本的OSPF的過程含有以下3個(gè)必要的步驟:
步驟1:確定和每一個(gè)路由器接口相連的區(qū)域;
步驟2:使用router ospf process-id命令來啟動(dòng)一個(gè)OSPF進(jìn)程;
步驟3:使用network area命令來指定運(yùn)行OSPF協(xié)議的接口和它們所在的區(qū)域。
配置OSPF具體命令: Router(config)#router ospf process-id
Router(config-router)#network address mask area area-id
好了我們今天所討論的就是,OSPF網(wǎng)絡(luò)類型三種。通過實(shí)驗(yàn)來驗(yàn)證前面的理論拓?fù)淙缦拢?/font>
基本配置,根據(jù)拓?fù)渑渲肐P地址。
在路由器啟動(dòng)期間,路由器上所有的接口都是管理關(guān)閉(administratively shutdown)的,如果OSPF不能發(fā)現(xiàn)一個(gè)有效的IP地址作為它的路由器ID,那么OSPF將不會啟動(dòng)。
解決方法-使用一個(gè)loopback接口(環(huán)回接口)
Loopback接口是一個(gè)僅在軟件上有意義的、虛擬的接口并且它總是有效(up)的,我們來給路由器設(shè)置上loopback接口,
給路由器配置OSPF協(xié)議
起了路由器協(xié)議之后查看網(wǎng)絡(luò)是不是相通?
我們來進(jìn)行查看Router1的網(wǎng)絡(luò)類型
進(jìn)入Router1、Router2的接口下進(jìn)行更改,
router(config)#ip ospf network broadcast 廣播
router(config)#ip ospf network non-broadcast 非廣播
router(config)#ip ospf network point-to-point 點(diǎn)對點(diǎn)
router(config)#ip ospf network point-to-multipoint 點(diǎn)對多點(diǎn)
我們要把它改成廣播型網(wǎng)絡(luò)
更改后再進(jìn)行查看
前面我們說了,在廣播型網(wǎng)絡(luò)中是選擇DR與BDR的,而且是通過優(yōu)先級選擇的,在優(yōu)先級相同的時(shí)候看路由ID。我們的路由二的路由ID比Router1的高,所以應(yīng)該是Router2為DR
那么我想把Router1變成DR有沒有辦法?可以改變優(yōu)先級實(shí)現(xiàn)
在路由器選擇好DR和BDR之后,在進(jìn)入一個(gè)更高的路由器的時(shí)候是不重新選擇DR與BDR的,所以我們可以先保存,之后在重啟或者是重新打開(模擬器存在BUG)
看看是不是見效了,使得Router2變成的是BDR
完成了第一個(gè)實(shí)驗(yàn)我們再來進(jìn)行把Router2和Router3之間變成NBMA網(wǎng)絡(luò)
我們之前把Router2的串行接口變成的廣播
在Router3上進(jìn)行更改
變成NBMA之前還得給路由器指定鄰接鄰居,因?yàn)樵贜BMA網(wǎng)絡(luò)中是不具備廣播能力,在這樣的網(wǎng)絡(luò)上選舉DR與BDR的時(shí)候鄰居需人工指定。
再來Router3上進(jìn)行查看是不是達(dá)到我們要的?
變?yōu)榱薔BMA網(wǎng)絡(luò)了,
ping一下看是不是已經(jīng)學(xué)到相連的鄰居
接下來我們進(jìn)行第三個(gè)實(shí)驗(yàn),把Router3和Router4變成點(diǎn)對多點(diǎn)之后還可以正常通訊,在這樣的網(wǎng)絡(luò)中是不選舉DR和BDR的
在Router3的串行線S1/1上是點(diǎn)對點(diǎn)網(wǎng)絡(luò)
還和剛才的命令一樣,在Router3和Router4上進(jìn)行更改
更改之后查看結(jié)果
檢查網(wǎng)絡(luò)的相關(guān)性,看看是不是相通
網(wǎng)絡(luò)很正常,你做了嗎?