1 OSPF協(xié)議綜述
OSPF是Open Shortest Path First(即“開放最短路由優(yōu)先協(xié)議”)的縮寫。它是IETF組織開發(fā)的一個(gè)基于鏈路狀態(tài)的自治系統(tǒng)內(nèi)部路由協(xié)議。在IP網(wǎng)絡(luò)上,它通過收集和傳遞自治系統(tǒng)中的鏈路狀態(tài)來動(dòng)態(tài)地發(fā)現(xiàn)并傳播路由;OSPF協(xié)議支持IP子網(wǎng)和外部路由信息的標(biāo)記引入;它支持基于接口的報(bào)文驗(yàn)證以保證路由計(jì)算的安全性;OSPF協(xié)議使用IP Multicasting方式發(fā)送和接收?qǐng)?bào)文。
每個(gè)支持OSPF協(xié)議的路由器都維護(hù)著一份描述整個(gè)自治系統(tǒng)拓?fù)浣Y(jié)構(gòu)的數(shù)據(jù)庫(kù)——這一數(shù)據(jù)庫(kù)是收集所有路由器的鏈路狀態(tài)廣播而得到的。每一臺(tái)路由器總是將描述本地狀態(tài)的信息(如可用接口信息、可達(dá)鄰居信息等)廣播到整個(gè)自治系統(tǒng)中去。在各類可以多址訪問的網(wǎng)絡(luò)中,如果存在兩臺(tái)或兩臺(tái)以上的路由器,該網(wǎng)絡(luò)上要選舉出“指定路由器”(DR)和“備份指定路由器”(BDR)。“指定路由器”負(fù)責(zé)將網(wǎng)絡(luò)的鏈路狀態(tài)廣播出去。引入這一概念,有助于減少在多址訪問網(wǎng)絡(luò)上各路由器之間鄰接關(guān)系的數(shù)量。OSPF協(xié)議允許自治系統(tǒng)的網(wǎng)絡(luò)被劃分成區(qū)域來管理,區(qū)域間傳送的路由信息被進(jìn)一步抽象,從而減少了占用網(wǎng)絡(luò)的帶寬。
OSPF使用4類不同的路由,按優(yōu)先順序來說分別是:
l區(qū)域內(nèi)路由
l區(qū)域間路由
l第一類外部路由
l第二類外部路由
區(qū)域內(nèi)和區(qū)域間路由描述的是自治系統(tǒng)內(nèi)部的網(wǎng)絡(luò)結(jié)構(gòu),而外部路由則描述了應(yīng)該如何選擇到自治系統(tǒng)以外目的地的路由。一般來說,第一類外部路由對(duì)應(yīng)于OSPF從其它內(nèi)部路由協(xié)議所引入的信息,這些路由的花費(fèi)和OSPF自身路由的花費(fèi)具有可比性;第二類外部路由對(duì)應(yīng)于OSPF從外部路由協(xié)議所引入的信息,它們的花費(fèi)遠(yuǎn)大于OSPF自身的路由花費(fèi),因而在計(jì)算時(shí),將只考慮外部的花費(fèi)。
根據(jù)鏈路狀態(tài)數(shù)據(jù)庫(kù),各路由器構(gòu)建一棵以自己為根的最短路徑樹,這棵樹給出了到自治系統(tǒng)中各節(jié)點(diǎn)的路由。外部路由信息出現(xiàn)在葉節(jié)點(diǎn)上,外部路由還可由廣播它的路由器進(jìn)行標(biāo)記以記錄關(guān)于自治系統(tǒng)的額外信息。
OSPF的區(qū)域由BackBone(骨干區(qū)域)進(jìn)行連接,該區(qū)域以0.0.0.0標(biāo)識(shí)。所有的區(qū)域都必須在邏輯上連續(xù),為此,骨干區(qū)域上特別引入了虛連接的概念以保證即使在物理上分割的區(qū)域仍然在邏輯上具有連通性。
在同一區(qū)域內(nèi)的所有路由器都應(yīng)該一致同意該區(qū)域的參數(shù)配置。因此,應(yīng)該以區(qū)域?yàn)榛A(chǔ)來統(tǒng)一考慮,錯(cuò)誤的配置可能會(huì)導(dǎo)致相鄰路由器之間無法相互傳遞信息,甚至導(dǎo)致路由信息的阻塞或者自環(huán)等。
2 OSPF排錯(cuò)步驟
由于OSPF協(xié)議自身的復(fù)雜性,在配置的過程中可能會(huì)出現(xiàn)錯(cuò)誤。
OSPF協(xié)議正常運(yùn)行的標(biāo)志是:在每一臺(tái)運(yùn)行該協(xié)議的路由器上,應(yīng)該得到的路由一條也不少,并且都是最優(yōu)路徑。
2.1 排除故障的步驟:
(1)配置故障處理:檢查是否已經(jīng)啟動(dòng)并正確配置了OSPF協(xié)議。
(2)局部故障處理:檢查兩臺(tái)直接相連的路由器之間協(xié)議運(yùn)行是否正常。
(3)全局故障處理:檢查一下系統(tǒng)設(shè)計(jì)(主要是指區(qū)域的劃分)是否正確。
(4)其它疑難問題:路由時(shí)通時(shí)斷、路由表中存在路由卻無法PING通該地址。需要針對(duì)不同的情況具體分析。
2.2 協(xié)議基本配置是否正確
在排除故障之前,應(yīng)首先檢查基本的協(xié)議配置是否正確。
(1) 是否已經(jīng)配置了Router ID
使用命令router id Router-id
Router-id可以配置為與本路由器一個(gè)接口的IP地址相同,需要注意的是:不能有任何兩臺(tái)路由器的Router ID是完全相同的。
(2) 檢查OSPF協(xié)議是否已成功地被激活
使用命令ospf enable啟動(dòng)協(xié)議的運(yùn)行。該命令是協(xié)議正常運(yùn)行的前提。
(3) 檢查需要運(yùn)行OSPF的接口是否已配置屬于特定的區(qū)域
使用命令ospf enable area area_id 將接口配置屬于特定區(qū)域?赏ㄟ^命令 display ospf interface interfacename來查看該接口是否已經(jīng)配置成功。
(4) 檢查是否已正確地引入了所需要的外部路由。
實(shí)際運(yùn)行中可能經(jīng)常需要引入自治系統(tǒng)外部路由(其他協(xié)議如BGP或靜態(tài)路由)。如果需要,是否已經(jīng)通過命令import 配置了引入。
2.3 鄰居路由器之間的故障
由于OSPF協(xié)議需要整個(gè)自治系統(tǒng)中所有路由器的協(xié)調(diào)工作,所以任意兩臺(tái)相鄰路由器之間的故障都會(huì)導(dǎo)致網(wǎng)絡(luò)中全部或部分路由錯(cuò)誤。
如何判斷相鄰的路由器之間運(yùn)行正常:
在兩臺(tái)路由器上分別執(zhí)行display ospf peer命令,查看在相應(yīng)的接口上是否已發(fā)現(xiàn)對(duì)端路由器為自己的鄰居,并且鄰居狀態(tài)機(jī)達(dá)到Full狀態(tài)。需要注意的是:在Broadcast和NBMA類型的網(wǎng)絡(luò)中,兩臺(tái)接口狀態(tài)是DROther的路由器之間鄰居狀態(tài)機(jī)停留在“2-Way”狀態(tài),這是正常的,但都應(yīng)該與DR之間達(dá)到Full狀態(tài)。兩臺(tái)路由器之間達(dá)到Full需要一定的時(shí)間,一般在幾秒鐘至3分鐘之間為正常。如果超過這段時(shí)間仍舊沒有發(fā)現(xiàn)鄰居或沒有達(dá)到Full狀態(tài),則可以判斷為出現(xiàn)故障。若出現(xiàn)故障可按下列幾點(diǎn)來檢查:
(1)檢查物理連接及下層協(xié)議是否正常運(yùn)行。
OSPF正常運(yùn)行需要下層協(xié)議來發(fā)送和接收?qǐng)?bào)文,所以必須確保下層協(xié)議運(yùn)行無誤?赏ㄟ^ping命令測(cè)試,若從本地路由器Ping對(duì)端路由器不通,則表明物理連接和下層協(xié)議有問題。但需要注意的是:ping命令發(fā)送的是單播報(bào)文,而OSPF除了在NBMA類型的接口之外,都發(fā)送多播報(bào)文。所以除了能夠ping通對(duì)端之外,還必須具有能夠收發(fā)多播報(bào)文的能力。
(2)檢查雙方在接口上的配置是否一致
如果物理連接和下層協(xié)議正常,則檢查在接口上配置的OSPF參數(shù),必須保證和與該接口相鄰的路由器的參數(shù)一致。這些參數(shù)包括 ospf timer hello, ospf timer dead和authentication-mode。區(qū)域(area)號(hào)必須相同。網(wǎng)段與掩碼也必須一致(點(diǎn)到點(diǎn)與虛連接的網(wǎng)段與掩碼可以不同)。這些錯(cuò)誤可以通過命令display ospf error來查看。關(guān)于常用的OSPF錯(cuò)誤值可以參見附錄的說明。
(3) hello時(shí)間與dead時(shí)間之間的關(guān)系
按照協(xié)議規(guī)定,接口上的dead的值必須大于hello,并且至少在4倍以上。否則的話會(huì)引起鄰居狀態(tài)之間的震蕩。
(4)若網(wǎng)絡(luò)的類型為廣播或NBMA,至少有一臺(tái)路由器的priority應(yīng)大于零。
協(xié)議規(guī)定,接口的priorty = 0 的路由器沒有被選舉權(quán),即不能被選為DR或BDR。而在廣播或NBMA類型網(wǎng)絡(luò)中所有的路由器只與DR之間交換路由信息,所以至少應(yīng)有一臺(tái)路由器的priority應(yīng)大于零。
(5)區(qū)域的STUB屬性必須一致
如果一個(gè)AREA配置成STUB AREA,則在與這個(gè)區(qū)域相連的所有路由器中都應(yīng)將該區(qū)域配置成STUB AREA。
(6)接口的網(wǎng)絡(luò)類型必須一致
兩臺(tái)直接相連的路由器,它們之間的接口的網(wǎng)絡(luò)類型必須一致。否則可能無法正確計(jì)算出路由。查看接口的網(wǎng)絡(luò)類型可以使用命令display ospf interface,如果發(fā)現(xiàn)雙方類型不一致,可使用接口配置模式下的命令 ospf network-type 來修改。需要特別注意的是:當(dāng)兩臺(tái)路由器的接口類型不一致時(shí),雙方的鄰居狀態(tài)機(jī)仍舊有可能達(dá)到Full狀態(tài),但無法正確計(jì)算路由。
(7)在NBMA類型的網(wǎng)絡(luò)中是否手工配置了鄰居
協(xié)議規(guī)定在NBMA類型的網(wǎng)絡(luò)中發(fā)送單播報(bào)文,這樣就不能通過發(fā)送多播報(bào)文來動(dòng)態(tài)發(fā)現(xiàn)鄰居,所以必須手工指定鄰接點(diǎn)的IP地址。
2.4 系統(tǒng)規(guī)劃的故障
系統(tǒng)規(guī)劃中的故障主要體現(xiàn)在區(qū)域化分中的錯(cuò)誤。協(xié)議中對(duì)區(qū)域劃分的要求是:如果自治系統(tǒng)被劃分成一個(gè)以上的區(qū)域,則必須有一個(gè)區(qū)域是骨干區(qū)域,并且保證其它區(qū)域與骨干區(qū)域直接相連或邏輯上相連,且骨干區(qū)域自身也必須是連通的。區(qū)域劃分錯(cuò)誤的表現(xiàn)形式是:在一個(gè)區(qū)域內(nèi)通常路由都是正常的,但無法得到區(qū)域外部的路由。
這是從全局規(guī)劃的角度來看的,如果落實(shí)到具體的配置上,可以這樣認(rèn)為:如果在一臺(tái)路由器上配置了兩個(gè)以上的區(qū)域,則至少應(yīng)該有一個(gè)是骨干區(qū)域,或者配置了一條虛連接。在上圖中用此方法判斷,配置了兩個(gè)以上區(qū)域的是RTB和RTC,其中RTB符合要求,RTC上由于沒有配置骨干區(qū)域,所以是錯(cuò)誤的配置。表現(xiàn)的形式可能是在RTD上無法得到RTA和RTB的路由,同理,RTA和RTB上也無法得到RTD的路由。修改的方法是將Area0和Area1互相調(diào)換一下位置,或者在RTB和RTC之間配置一條虛連接。但這種判斷方法只是配置正確的必要條件,而非充分條件。
圖5-2 系統(tǒng)規(guī)劃例如,每臺(tái)路由器的配置都符合上面的條件,但配置仍舊是不正確的。錯(cuò)誤在于骨干區(qū)域自身沒有連通。改正的方法是:在RTB與RTC之間配置一條虛連接。
2.5 其它疑難雜癥
如果經(jīng)過以上分析之后,仍無法定位錯(cuò)誤產(chǎn)生的原因,可繼續(xù)按以下步驟查找。
(1)路由表中丟失部分路由:
可以查詢一下是否本路由器配置了路由過濾?刹榭词欠衽渲昧嗣distribute list in(在OSPF協(xié)議配置模式下)。如果配置,再查詢access-list中的訪問規(guī)則,是否丟失的路由恰好是訪問列表中所過濾的。
(2)路由表不穩(wěn)定,時(shí)通時(shí)斷:
表現(xiàn)形式為:路由表中的部分或者全部路由表現(xiàn)不穩(wěn)定,一會(huì)兒加上了,一會(huì)兒又丟失,且變化很快。這種錯(cuò)誤不太好分析,可能由以下幾種原因產(chǎn)生:
網(wǎng)絡(luò)中線路質(zhì)量不好,導(dǎo)致線路時(shí)通時(shí)斷,造成OSPF 的路由隨之不停的更改。可以通過檢查相應(yīng)的鏈路層協(xié)議是否正常來定位問題的原因。
在撥號(hào)的情況下,如果是多臺(tái)路由器同時(shí)撥一臺(tái)路由器時(shí),應(yīng)將所有的這些撥號(hào)的接口類型改為point-to-multipoint。因?yàn)槿笔〉木W(wǎng)絡(luò)類型是point-to-point,如果不加更改的話,當(dāng)有多臺(tái)路由器同時(shí)撥入時(shí),接入方會(huì)在這些撥入的路由器之間不停的選擇其中的一個(gè)并建立鄰接關(guān)系。導(dǎo)致路由不穩(wěn)定。
有可能是自治系統(tǒng)中有兩臺(tái)路由器的Router ID相同了。協(xié)議中規(guī)定,一臺(tái)路由器的Router ID應(yīng)該在整個(gè)自治系統(tǒng)中唯一。如果有兩臺(tái)路由器的Router ID相同,協(xié)議運(yùn)行就會(huì)出現(xiàn)故障。這兩臺(tái)路由器如果是鄰居的話,在相互接收對(duì)方的hello報(bào)文時(shí)會(huì)檢測(cè)到這一錯(cuò)誤,導(dǎo)致無法建立鄰接關(guān)系。如果這兩臺(tái)路由器不是直接相連,而是分別位于自治系統(tǒng)中的兩個(gè)不同的地方,則表現(xiàn)出的現(xiàn)象是部分路由時(shí)斷時(shí)通。可以通過查看這部分不正常的路由所屬的路由器來定位此問題。
(3) 無法引入自治系統(tǒng)外部路由:
某臺(tái)路由器引入了自治系統(tǒng)外部路由后,卻無法在其它路由器上發(fā)現(xiàn)這些路由。則很可能是由于本路由器處于一個(gè)STUB區(qū)域之內(nèi),因?yàn)榘凑諈f(xié)議規(guī)定,STUB區(qū)域內(nèi)不傳播Type5類型的LSA。所以這種類型的LSA即不能由區(qū)域外傳播進(jìn)來,也同樣不能由區(qū)域內(nèi)傳播出去。實(shí)際上即使是同一個(gè)區(qū)域內(nèi)的其它路由器也無法獲得這些路由信息。
(4)區(qū)域間路由聚合的問題:
通過在ABR上配置路由聚合可以大大減少自治系統(tǒng)中的路由信息,但如果配置不當(dāng),也會(huì)出現(xiàn)如下問題:
某個(gè)區(qū)域配置了聚合之后,在其它區(qū)域中雖然有聚合后的路由,但未聚合前的路由仍舊存在。出現(xiàn)這種現(xiàn)象的原因多半是因?yàn)樵搮^(qū)域有兩個(gè)以上的ABR,用戶只在其中一臺(tái)ABR上配置了聚合命令,而沒有在其它的ABR上配置相同的命令。在下圖中,Area1內(nèi)有兩個(gè)網(wǎng)段10.1.1.0/24、10.1.2.0/24,在其中的一個(gè)ABR(RTA)上配置了聚合命令,將這兩條路由聚合為一條10.1.0.0/16 的路由。而在另一個(gè)ABR(RTB)上,由于沒有配置聚合命令,所以仍舊向Area 0發(fā)送兩條未經(jīng)聚合的路由10.1.1.0/24、10.1.2.0/24。所以在Area 0中會(huì)有3條路由同時(shí)出現(xiàn)。
配置了路由聚合之后,路由表顯示正常,但卻無法PING通某些目的地址。
可能是由于聚合命令配置錯(cuò)誤導(dǎo)致。例如在下圖中,Area1中內(nèi)有兩個(gè)網(wǎng)段10.1.1.0/24、10.1.2.0/24,被ABR(RTA)聚合成一條10.1.0.0/16的路由后發(fā)送到Area 0;同時(shí)在另一個(gè)區(qū)域Area 2中有兩個(gè)網(wǎng)段10.1.3.0/24、10.1.4.0/24,也被ABR(RTB)聚合成一條相同的路由10.1.0.0/16后發(fā)送到Area 0中。這樣RTA和RTB同時(shí)發(fā)布一條相同的到達(dá)10.1.0.0/16的路由。RTC由于距離RTA較近(花費(fèi)值為5,而到RTB為10),所以選擇RTA為到達(dá)此目的地址的下一跳。如果此時(shí)在RTC上PING10.1.3.0/24網(wǎng)段中的某個(gè)地址,則報(bào)文會(huì)被錯(cuò)誤的發(fā)送給RTA,導(dǎo)致不可達(dá)。修改的方法是去掉某臺(tái)ABR上的路由聚合。
本文出自:億恩科技【1tcdy.com】
服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]
|