OSPF協(xié)議概述【可編輯范本】_第1頁
OSPF協(xié)議概述【可編輯范本】_第2頁
OSPF協(xié)議概述【可編輯范本】_第3頁
OSPF協(xié)議概述【可編輯范本】_第4頁
OSPF協(xié)議概述【可編輯范本】_第5頁
已閱讀5頁,還剩56頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

OSPF內(nèi)容概要1.概述OSPF是一個內(nèi)部網(wǎng)關(guān)協(xié)議,用于在單一自治系統(tǒng)內(nèi)決策路由。它是基于鏈路狀態(tài)的路由協(xié)議,鏈路狀態(tài)是指路由器接口或鏈路的參數(shù).這些參數(shù)是接口的物理條件:包括接口是Up還是Down、接口的IP地址、分配給接口的子網(wǎng)掩碼、接口所連的網(wǎng)絡(luò),以及使用路由器的網(wǎng)絡(luò)連接的相關(guān)費用。OSPF與其他路由器交換交換信息,但所交換的不是路由,而是鏈路狀態(tài)。OSPF路由器不是告知其他路由器可以到達哪些網(wǎng)絡(luò)及距離是多少,而是告知它的網(wǎng)絡(luò)鏈路狀態(tài),這些接口所連的網(wǎng)絡(luò)及使用這些接口的費用。各個路由器都有其自身的鏈路狀態(tài),稱為本地鏈路狀態(tài),這些本地鏈路狀態(tài)在OSPF路由域內(nèi)傳播,直到所有的OSPF路由器都有完整而等同的鏈路狀態(tài)數(shù)據(jù)庫為止。一旦每個路由器都接收到所有的鏈路狀態(tài),每個路由器可以構(gòu)造一棵樹,以它自己為根,而分支表示到AS中所有網(wǎng)絡(luò)的最短的或費用最低的路由.OSPF對于規(guī)模巨大的網(wǎng)絡(luò),通常將網(wǎng)絡(luò)劃分成多個OSPF區(qū)域,并只要求路由器與同一區(qū)域的路由器交換鏈路狀態(tài),而在區(qū)域邊界路由器上交換區(qū)域內(nèi)的匯總鏈路狀態(tài),這樣可以減少傳播的信息量,且使最短路徑計算強度減少。在區(qū)域劃分時,必須要有一個骨干區(qū)域(即區(qū)域0),其它非0或非骨干區(qū)域與骨干區(qū)域必須要有物理或者邏輯連接。當有物理連接時,必須有一個路由器,它的一個接口在骨干區(qū),而另一個接口在非骨干區(qū).當非骨干區(qū)不可能與物理連接到骨干區(qū)時,必須定義一個邏輯的或虛擬鏈路,虛擬鏈路由兩個端點和一個傳輸區(qū)來定義,其中一個端點是路由器接口,是骨干區(qū)域的一部分,另一端點也是一個路由器接口,但在與骨干區(qū)沒有物理連接的非骨干區(qū)域中.傳輸區(qū)是一個區(qū)域,介于骨干區(qū)域與非骨干區(qū)域之間.2.術(shù)語在OSPF中,經(jīng)常要使用以下術(shù)語:RouterID(路由器ID):用于標識每個路由器的32位數(shù)。通常,將最高的IP地址分配給路由器ID.如果在路由器上使用了回送接口,則路由器ID是回送接口的最高IP地址,不管物理接口的IP地址。Interface(接口):路由器和具有唯一IP地址和子網(wǎng)掩碼的網(wǎng)絡(luò)之間的連接。NeighborRouter(相鄰路由器):帶有到公共網(wǎng)絡(luò)的接口的路由器。BroadcastNetWork(廣播網(wǎng)絡(luò)):支持廣播的網(wǎng)絡(luò)。Ethernet是一個廣播網(wǎng)絡(luò)。NonBroadcastNetWork(廣播網(wǎng)絡(luò)):支持多于兩個連接路由器,但沒有廣播能力的網(wǎng)絡(luò),如幀中繼和X。25等網(wǎng)絡(luò).在非廣播網(wǎng)絡(luò)中,有非廣播多點訪問網(wǎng)絡(luò)NBMA(在同一個網(wǎng)絡(luò)上,但不能通過廣播訪問到)和點到多點網(wǎng)絡(luò)。DesignatedRouteer(指定路由器DR):在廣播和NBMA網(wǎng)絡(luò)中,指定路由器用于向公共網(wǎng)絡(luò)傳播鏈路狀態(tài)信息。BackupDesignatedRouteer(后援指定路由器DR):在DR故障時,接替DR的路由器。AreaBorderRouter(區(qū)域邊界路由器ABR):連接多個OSPF區(qū)域的路由器.AutonomousSystemBorderRouter(自治系統(tǒng)邊界路由器ASBR):一個OSPF路由器,但它連接到另一個AS,或者在同一個AS的網(wǎng)絡(luò)區(qū)域中,但運行不同于OSPF的IGP。Adjacency(緊鄰):緊鄰可以在點對點連接的兩個路由器之間形成,也可在廣播或NBMA網(wǎng)絡(luò)的DR和非指定路由器之間形成,還可以在BDR和非指定路由器之間形成。OSPF路由狀態(tài)信息只能通過緊鄰被傳送和接收。Flooding(洪泛):在OSPF區(qū)域內(nèi),擴散某一鏈路狀態(tài),以分布和同步路由器之間的鏈路狀態(tài)數(shù)據(jù)庫。Link-Stat(yī)eAdvertisement(鏈路狀態(tài)宣告LSA):描述路由器的本地鏈路狀態(tài),通過該通告向整個OSPF區(qū)域擴散.ExternalRouting(外部路由):從另一個AS或另一個路由協(xié)議得知的路由可以作為外部路由放到OSPF中。有兩種類型的外部路由,類型1的外部路由具有的費用包含OSPF的費用,加上從ASBR到網(wǎng)絡(luò)的費用。類型2的外部路由具有的費用僅是ASBR到網(wǎng)絡(luò)的費用,而內(nèi)部的OSPF費用可以忽略不計。IntraareaRouting(區(qū)域內(nèi)路由):在相同OSPF區(qū)域的網(wǎng)絡(luò)之間的路由,這些路由僅依據(jù)從區(qū)域內(nèi)所接收的信息。InterareaRouting(區(qū)域間路由):在兩個不同的OSPF區(qū)域之間的路由。區(qū)域間的路徑由三部分組成:從區(qū)域到源區(qū)域的ABR的區(qū)域內(nèi)路徑,從源ABR到目標ABR的骨干路徑,最后是從目標ABR到目標區(qū)域的路徑。RouteSummarizat(yī)ion(路由匯總):要通告的路由可能有一個區(qū)域內(nèi)的路由、來自另一個AS的路由,以及從另一個路由協(xié)議得知的路由,所有這些路由可以由OSPF匯總成一個路由宣告。匯總僅可以在ABR或ASBR上發(fā)生。StubArea(存根區(qū)):只有一個出口路徑的區(qū)域。3.協(xié)議包格式IPHeader(Protocol=89)IPHeader(Protocol=89)OSPFPacketHeaderPacketType-SpecificDataOSPFPacketLSALSALSALSALSALSAHeaderLSADataOSPFPacketDataOSPF協(xié)議一共使用5種類型的路由協(xié)議包:包類型作用1:呼叫發(fā)現(xiàn)和維護鄰居2:數(shù)據(jù)庫描述緊鄰間同步數(shù)據(jù)庫內(nèi)容3:鏈路狀態(tài)請求要求從鄰居獲取LSA4:鏈路狀態(tài)更新向鄰居通告LSA5:鏈路狀態(tài)確認對所通告的LSA給出確認消息無論何種類型的OSPF包都有以下一個公共的報文頭:版本號包類型包長度路由器ID區(qū)域ID校驗和認證類型身份驗證身份驗證版本號:目前版本號為2。不同版本號不能會話。包類型:包類型的標志,為5種包類型中的某種。包長度:以字節(jié)計算,包括OSPF包加上首部頭的長度。路由器ID:產(chǎn)生OSPF傳輸包的路由器的標識,一般就是路由器的最高IP地址.區(qū)域ID:分配給路由器傳輸接口的區(qū)域的32位指示器。如果包經(jīng)過虛擬鏈路來發(fā)送,那么區(qū)域ID為骨干區(qū)域ID(ID=0),因為虛擬鏈路是骨干區(qū)域的一部分。校驗和:整個OSPF報文包括OSPF頭的校驗和,使用補運算進行計算。認證類型(AuType):身份驗證的方法,其后64位域包含使用的證明類型所要求的數(shù)據(jù)。AuType=0表示無認證,AuType=1表示簡單的口令認證,AuType=2表示MD5安全認證。3.1Hello包格式Hello呼叫報文用于發(fā)現(xiàn)路由器所連網(wǎng)絡(luò)上的鄰居.通過周期性地發(fā)出呼叫包,呼叫協(xié)議可用于確定鄰居路由器接口是否仍然處于活動狀態(tài)。在廣播網(wǎng)絡(luò)和NBMA網(wǎng)絡(luò),呼叫協(xié)議可以用于選取指定路由器。呼叫包被發(fā)送到Multicast多播地址AllSPFRouters(224。0。0.5).在播發(fā)期間,有些協(xié)議包也將發(fā)送到該地址。指定或后援指定路由器發(fā)送并接收到Multicast多播地址是AllDRRouters(224.0.0.6)。Hello報文是包類型為1的OSPF包,封裝在OSPF報文頭后面,其格式如下:版本號=2包類型=1包長度路由器ID區(qū)域ID校驗和認證類型身份驗證身份驗證網(wǎng)絡(luò)掩碼HelloInterval選項路由器優(yōu)先級RouterDeadInterval指定路由器后援指定路由器鄰居路由器……鄰居路由器網(wǎng)絡(luò)掩碼:發(fā)送呼叫報文的接口的子網(wǎng)掩碼。如果這一掩碼和呼叫報文接收接口的子網(wǎng)掩碼不匹配,則該呼叫報文不能被接收。這樣可以確保共享同一網(wǎng)絡(luò)的路由器才能成為鄰居關(guān)系。HelloInterval:在接口上發(fā)送呼叫報文的時間間隔,以秒為單位.如果兩路由器不具有相同的呼叫周期,則不能成為鄰居關(guān)系。選項:包含5個分配位,在RFC2178中對E位已經(jīng)做了說明,它確定如何傳播外部鏈路狀態(tài)宣告。在存根區(qū),Hello報文要將該位設(shè)置為0,不能接收設(shè)置為1的Hello報文。使鄰居具有兼容性.因兼容性問題,路由器可以放棄鄰居關(guān)系。路由器優(yōu)先級:該選項影響指定路由器DR的選取.值0表示該路由器不能被選為DR.如果是其它值,則具有最高優(yōu)先級的路由器將成為DR。缺省值為1,如果所有路由器都使用該缺省值年,則具有最高IP地址的路由器將被選為DR。RouterDeadInterval:該參數(shù)(以秒為單位)用于確定鄰居是否還處于活動狀態(tài).如果在由RouterDeadInterval指定的秒數(shù)內(nèi)沒有從已建立的鄰居處收到呼叫報文,那么,鄰居被宣布為故障狀態(tài)。如果Hello報文中的RouterDeadInterval與接收端口所設(shè)置的RouterDeadInterval值不相同,則丟棄該報文,確保兩鄰居路由器具有相同的參數(shù)。指定路由器(后援指定路由器):廣播網(wǎng)絡(luò)或NBMA網(wǎng)絡(luò)上DR(BDR)接口的IP地址.在DR(BDR)的選舉過程中,這個值可能是關(guān)于DR(BDR)的起源路由器的設(shè)想,而不是最終的DR(BDR)。如果因為DR(BDR)沒有選舉出來或者因為是對等網(wǎng)絡(luò),不存在DR(BDR)該值應(yīng)該取值為0.0。0.0。鄰居路由器:路由器在這個網(wǎng)絡(luò)上所擁有的鄰居路由器的列表,用路由器ID表示.如果在由RouterDeadInterval指定的時間內(nèi)未能從某個鄰居接收到Hello呼叫包,那么,這個鄰居應(yīng)該從此列表中除去。3。2數(shù)據(jù)庫描述包數(shù)據(jù)庫描述包(Dat(yī)abaseDescriptionpacket,DD)是2型OSPF包。在形成緊鄰過程中的路由器之間交換數(shù)據(jù)庫描述包,且由它來描述鏈路狀態(tài)數(shù)據(jù)庫,達到鄰居路由器間鏈路狀態(tài)數(shù)據(jù)庫的完全同步.根據(jù)接口數(shù)和網(wǎng)絡(luò)數(shù),可能需要不止一個數(shù)據(jù)庫描述包,來傳輸整個鏈路狀態(tài)數(shù)據(jù)庫。在交換過程中,所涉及到的路由器要建立主從關(guān)系。主路由器發(fā)送本路由器的數(shù)據(jù)庫描述包,而從路由器通過使用主路由器發(fā)送來的數(shù)據(jù)庫描述序列號認可所接收到的數(shù)據(jù)庫描述包,并將本路由器的LSA頭部列表發(fā)送給主路由器,從而在主從路由器間判斷鏈路狀態(tài)數(shù)據(jù)庫是否完全匹配,若有不匹配的LSA頭部,則應(yīng)發(fā)送鏈路狀態(tài)請求報文,并以更新報文格式給予響應(yīng),獲得最新LSA的全部信息。數(shù)據(jù)庫描述包要封裝在類型為2的OSPF報文頭后面,其具體格式如下:版本號=2包類型=2包長度路由器ID區(qū)域ID校驗和認證類型身份驗證身份驗證接口MTU選項00000IMMS數(shù)據(jù)庫描述序列號LSA首部……LSA首部接口MTU:指示通過該接口可發(fā)送的最大IP包長度。當通過虛擬鏈路發(fā)送時,這個域設(shè)置為0。選項:顯示路由器的能力,使路由器不向沒有能力的鄰居發(fā)送LSAs。I位:是Init位,要發(fā)送數(shù)據(jù)庫序列中的第一個包,應(yīng)設(shè)置為1。隨后的包要設(shè)置為0.M位:若設(shè)置為1,則表示序列中還有更多的數(shù)據(jù)庫描述包將要發(fā)送出去。若置為0,則表示數(shù)據(jù)庫描述包已發(fā)送完畢。MS位:主從位,在數(shù)據(jù)庫描述包交換期間,1表示路由器是主路由器,而0表示路由器是從路由器.數(shù)據(jù)庫描述序列號:用于數(shù)據(jù)庫的同步處理,確保所有的數(shù)據(jù)庫描述包全部被接收到。主路由器在發(fā)送第一個數(shù)據(jù)描述包時,應(yīng)將數(shù)據(jù)庫描述序列號設(shè)置為一個獨特的初始值,隨后序列號逐漸遞增.LSA首部:這是一個LSA首部列表,由本路由器的鏈路狀態(tài)數(shù)據(jù)庫的LSAs的頭部組成這個LSA首部列表。這些頭部有足夠的信息來描述LSA和LSA的實例。鏈路狀態(tài)請求包鏈路狀態(tài)請求包是3型OSPF包.當兩個路由器交換數(shù)據(jù)描述包的過程完成后,路由器可檢測鏈路狀態(tài)數(shù)據(jù)庫部分是否有不一致或過時的LSA.此時,路由器可向鄰居請求新一些的數(shù)據(jù)庫描述包,以達到LSAs的完全同步。其格式為:版本號=2包類型=3包長度路由器ID區(qū)域ID校驗和認證類型身份驗證身份驗證LS類型鏈路狀態(tài)ID宣告路由器……LS類型鏈路狀態(tài)ID宣告路由器LS類型:鏈路狀態(tài)類型,有路由器LSA、網(wǎng)絡(luò)LSA、匯總LSA、匯總LSA(ASBR)、AS-externalLSA等5種類型的LSA,分別取值1~5。鏈路狀態(tài)ID:取值取決于LS類型,具體的取值見LSA首部定義。宣告路由器:產(chǎn)生LSA的路由器ID。鏈路狀態(tài)更新包鏈路狀態(tài)更新包是4型的OSPF包,用于實現(xiàn)LSA的洪泛,也用于對鏈路狀態(tài)請求包的響應(yīng)。每個鏈路狀態(tài)更新包包含一個或多個LSA,而所發(fā)送的每個更新包要通過鏈路狀態(tài)認可包來確認認可,未收到確認包,應(yīng)對所發(fā)送的LSA定時重發(fā),以確保洪泛過程的可靠性。具體格式如下:版本號=2包類型=4包長度路由器ID區(qū)域ID校驗和認證類型身份驗證身份驗證LSA的個數(shù)LSAsLSA的個數(shù):定義整個更新包中包含多少個LSA,直到OSPF包總長度達到1500字節(jié)。LSAs:由一系列LSA

組成一個列表。鏈路狀態(tài)確認包鏈路狀態(tài)確認包是5型OSPF包,該包可以確保LSA洪泛的可靠性。路由器從緊鄰接收到LSA后,必須要用鏈路狀態(tài)確認包給予明確的確認應(yīng)答。LSA的確認是通過鏈路狀態(tài)確認包中的LSA首部實現(xiàn)的.一個確認包可以同時對多個LSA進行確認.這些包發(fā)送到以下三個地址之一:多點傳送地址AllDRouters、多點傳送地址AllDSPFRouters、單點傳送地址。具體格式如下:版本號=2包類型=5包長度路由器ID區(qū)域ID校驗和認證類型身份驗證身份驗證LSAs的首部LSAs的首部:由一系列LSA的首部組成一個列表。4.鏈路狀態(tài)LSA格式路由器可生成的鏈路狀態(tài)信息有以下5種類型:類型1:路由器LSA,確定路由器的互連方式。由每個路由器產(chǎn)生,用來描述路由器的鏈路或接口的狀態(tài)及費用。該LSA只能在本區(qū)域內(nèi)洪泛;類型2:網(wǎng)絡(luò)LSA,確定網(wǎng)絡(luò)的互連方式。由DR產(chǎn)生,用于描述DR所連的多點訪問網(wǎng)絡(luò)和所連的路由器(包括DR自己),也在本區(qū)域內(nèi)洪泛;類型3:ABR匯總LSA,用于傳輸已經(jīng)被集成為單一網(wǎng)絡(luò)信息的網(wǎng)絡(luò)。由ABR路由器產(chǎn)生,將某區(qū)域上的匯總目的地址通告給另一個區(qū)域.事實上,ABR通過這些LSAs將自己所能到達的目的地(要匯總)通告給所連區(qū)域的各個區(qū)域內(nèi)路由器InternalRouters;ABR也要將所連區(qū)域的目的地通告給骨干區(qū)域。當ABR產(chǎn)生匯總LSA時,同時要通告從ABR自己到目的地的費用,當ABR到目的地有多條路由時,應(yīng)取費用最低的路由。同樣,當ABR收到從另一ABR發(fā)來的同一條匯總LSA時,也要取費用低的LSA,將其通告給非骨干區(qū);當路由器從ABR收到一條匯總LSA時,用簡單的距離-—矢量法而不用SPF來計算本路由器到目的地的費用和路由:總費用包括本路由器到ABR的費用和LSA中所指明的費用.在ABR上,將某區(qū)域的有關(guān)目標網(wǎng)絡(luò)通告給骨干區(qū)時,要對目標網(wǎng)絡(luò)進行路由聚合,將一系列子網(wǎng)聚合成一個超網(wǎng)后,通告給骨干網(wǎng)絡(luò).聚合時,其超網(wǎng)的費用為子網(wǎng)中的最大費用。類型4:ASBR匯總LSA,用于傳輸已經(jīng)被集成為單一網(wǎng)絡(luò)信息的網(wǎng)絡(luò)。也由ABR產(chǎn)生,與類型為3的匯總LSA相似,但本LSA是ABR將ASBR路由器主機為目的地的一個鏈路信息,描述本ABR到達ASBR的費用;類型5:外部路由信息AS—external—LSA,由其它協(xié)議傳入的外部路由信息。由ASBR產(chǎn)生,將外部系統(tǒng)的路由信息在本系統(tǒng)的所有OSPF域內(nèi)洪泛;每個LSA包都有一個由20個字節(jié)組成的首部,該首部用于封裝LSA包.一般許多LSA在一個OSPF報文中被路由器交換,而LSA首部的功能唯一地標識每個LSA包.同時LSA首部還用于數(shù)據(jù)描述OSPF報文和鏈路狀態(tài)確認OSPF報文中.其格式如下:鏈路狀態(tài)時間選項鏈路狀態(tài)類型鏈路狀態(tài)ID宣告路由器ID鏈路狀態(tài)序列號和校驗長度在該首部中,選項、鏈路狀態(tài)類型、鏈路狀態(tài)ID、宣告路由器ID等字段描述LSA包的特征,而鏈路狀態(tài)時間、鏈路狀態(tài)序列號確定該LSA是否是最新的。鏈路狀態(tài)時間:生成LSA的路由器將LS時域初始化為0,在洪泛過程中,每經(jīng)過一個路由器,要按InfTransDelay的量增加,這個量表示傳輸LSA到下一個跳躍所需要的時間。當該時間達到所設(shè)定的MaxAge參數(shù)時,要撤消該LSA。選項:指示路由器的能力。目前使用的唯一一位是E位(外部指示),對存根區(qū)域,它是0,對所有其它所有區(qū)域,它是1。鏈路狀態(tài)類型:描述LSA包的類型,取值為1~5。鏈路狀態(tài)ID:取決于LSA包類型,具體取值如下:LS類型鏈路狀態(tài)ID值1生成LSA的路由器ID2這個網(wǎng)絡(luò)的DR的IP接口地址3ABR要通告的某區(qū)域內(nèi)某一目標網(wǎng)絡(luò)的IP地址4ABR要通告的某一ASBR的路由器ID5ASBR要通告的某一外部自治系統(tǒng)某一目標網(wǎng)絡(luò)的IP地址宣告路由器ID:產(chǎn)生LSA的路由器ID。鏈路狀態(tài)序列號:用于識別LSA包是否是一個最新包。路由器每生成一個新的LSA時,將該序列號加1。和校驗:檢測LSA包的正確性。長度:LSA包括其首部的長度。LSA頭中的鏈路類型、鏈路狀態(tài)ID和宣告路由器ID是一個LSA的唯一標志。一個LSA將有多個實例,不同的實例通過LS的序列號、LS的校驗和及LS的Age字段來描述。因此,必須要決定其實例是否是最近的,這要通過檢查LS的序列號、LS的校驗和及LS的Age字段內(nèi)容.4。1路由器鏈路狀態(tài)宣告鏈路狀態(tài)類型為1的LSA包是一種路由器鏈路狀態(tài)宣告包,其鏈路狀態(tài)ID就是路由器的OSPFID.路由器為每個有活動OSPF接口的區(qū)域生成一個路由器LSA。包含在路由器LSA中的信息是路由器接口在該區(qū)域的狀態(tài)和費用,該LSA僅在本區(qū)域內(nèi)傳播。進入一個區(qū)域的所有路由器接口必須在一個路由器LSA中說明。在路由器LSA中,將通告路由器的各條鏈路或接口的狀態(tài)和費用。鏈路狀態(tài)ID就是產(chǎn)生該LSA的路由器ID。路由器LSA的具體格式如下:鏈路狀態(tài)時間選項鏈路狀態(tài)類型=1鏈路狀態(tài)ID宣告路由器ID鏈路狀態(tài)序列號和校驗長度00000VEB0鏈路個數(shù)鏈路ID鏈路數(shù)據(jù)鏈路類型#TOS費用度量TOS0TOS度量值…….鏈路ID鏈路數(shù)據(jù)鏈路類型#TOS費用度量TO(shè)S0TOS度量值VEB:用于確定路由器可能有的鏈路的類型。V位顯示路由器是虛擬鏈路的端點。如果路由器是ASBR,那么將設(shè)置E位;如果路由器是ABR,那么將設(shè)置B位。鏈路個數(shù):可以同時攜帶若干個鏈路信息.每個鏈路包括鏈路ID、鏈路數(shù)據(jù)、鏈路類型、#TOS、費用度量、TOS、TO(shè)S度量值等信息,用于描述路由器某接口的鏈路信息。鏈路類型:有4種鏈路類型.鏈路類型將決定其它字段的取值.類型1:對等連接到另一個路由器類型2:到多點訪問網(wǎng)絡(luò)的傳輸網(wǎng)的連接類型3:到存根網(wǎng)的連接,某主機地址也可認為是一個特殊的存根網(wǎng)絡(luò),網(wǎng)絡(luò)號即為主機地址,掩碼為225.225.225。225。類型4:虛擬連接鏈路ID:鏈路ID描述路由器接口或鏈路所連接的對象。鏈路ID一般等于鄰居路由器LSA頭中的鏈路狀態(tài)ID。取值及含義要取決于具體的鏈路類型。對鏈路類型1,為鄰居路由器的ID。對鏈路類型2,為DR接口的IP地址。對鏈路類型3,為IP網(wǎng)絡(luò)/子網(wǎng)號。對鏈路類型4,為鄰居路由器的ID。鏈路數(shù)據(jù):鏈路數(shù)據(jù)也將取決于具體的鏈路類型。如果路由器與存根網(wǎng)絡(luò)相連,那么取值為這個網(wǎng)絡(luò)的IP地址掩碼。對其他類型的鏈路,則是路由器分配給該鏈路接口的IP地址。鏈路數(shù)據(jù)在生成IP路由表產(chǎn)生下一跳時要用。#TOS:鏈路服務(wù)類型號。在2328中,該TOS已不再使用。費用度量:鏈路的費用度量。TOS和TOS度量:IP的服務(wù)類型與服務(wù)度量值。網(wǎng)絡(luò)鏈路狀態(tài)宣告鏈路狀態(tài)類型為2的LSA包是網(wǎng)絡(luò)鏈路狀態(tài)宣告,該LSA由DR產(chǎn)生和創(chuàng)建。一個網(wǎng)絡(luò)LSA將通告該路由器上某一多點訪問網(wǎng)絡(luò)和所連接的路由器信息,該LSA也只能在本區(qū)域內(nèi)擴散.鏈路狀態(tài)ID標識DR到這個區(qū)域或網(wǎng)絡(luò)的接口IP地址,費用度量不再需要,因為路由器直接連接到網(wǎng)絡(luò)上,費用必為0。具體格式如下:鏈路狀態(tài)時間選項鏈路狀態(tài)類型=2鏈路狀態(tài)ID宣告路由器ID鏈路狀態(tài)序列號和校驗長度網(wǎng)絡(luò)掩碼連接的路由器ID連接的路由器ID……連接的路由器ID網(wǎng)絡(luò)掩碼:標識該多點訪問網(wǎng)絡(luò)的網(wǎng)絡(luò)掩碼。連接的路由器:標識連接到該網(wǎng)絡(luò)并且與DR成緊鄰關(guān)系的路由器ID,包括DR本身路由器ID。所連緊鄰路由器的數(shù)目可由LSA頭中的長度決定。網(wǎng)絡(luò)和ASBR匯總鏈路狀態(tài)通告鏈路狀態(tài)類型為3或4的LSA是網(wǎng)絡(luò)和ASBR匯總鏈路狀態(tài)宣告,兩者都由區(qū)域邊界路由器ABR生成,實現(xiàn)區(qū)域間目標鏈路的描述,它只能在同一個區(qū)域內(nèi)洪泛。3型匯總LSA有IP地址目標,鏈路狀態(tài)ID就是目標IP網(wǎng)絡(luò)號,以描述ABR到該目標網(wǎng)絡(luò)的費用,供其它區(qū)域的路由器計算到該匯總網(wǎng)絡(luò)的費用(總費用應(yīng)為:本路由器--——ABR----匯總的網(wǎng)絡(luò)地址)。4型匯總LSA以一個自治系統(tǒng)邊界路由器ASBR為其目標,而鏈路狀態(tài)ID就是該ASBR的OSPF路由器ID,以描述ABR到ASBR之間的費用,它主要用于計算最佳的外部路由(某外部路由,對任一路由器來說,其總費用為本路由器—-—-ABR—---ASBR--——外部路由費用的和).鏈路狀態(tài)ID是這兩種類型LSA包之間的唯一區(qū)別。3型LSA還用于說明進入存根區(qū)域的默認路由,此時鏈路狀態(tài)ID和網(wǎng)絡(luò)掩碼應(yīng)設(shè)置為0.0.0。0,表示整個存根區(qū)可以通過該ABR到達外部任意路由.對于3型LSA,網(wǎng)絡(luò)掩碼就是目標網(wǎng)絡(luò)的IP地址掩碼,而對4型LSA,應(yīng)該設(shè)置為0.費用度量值和路由器LSA相同,是ABR到該目標的費用.TO(shè)S和TOS度量是IP的服務(wù)類型和度量值。LSA的具體格式如下:鏈路狀態(tài)時間選項鏈路狀態(tài)類型=3或4鏈路狀態(tài)ID宣告路由器ID鏈路狀態(tài)序列號和校驗長度網(wǎng)絡(luò)掩碼0費用度量值TOSTOS度量值4。4外部鏈路狀態(tài)AS-externalLSA通告5型LSA是AS-externalLSA,由ASBR產(chǎn)生,它被用于說明自治系統(tǒng)以外的網(wǎng)絡(luò)或路由,在整個自治系統(tǒng)(非存根區(qū)除外)內(nèi)不加改變地洪泛,與路由器的鏈路狀態(tài)數(shù)據(jù)庫相獨立地保存。鏈路狀態(tài)ID域為目標網(wǎng)絡(luò)的IP網(wǎng)絡(luò)號,網(wǎng)絡(luò)掩碼為目的網(wǎng)絡(luò)的掩碼。在As-externalLSA中可以通告一條缺省路由,這時,鏈路狀態(tài)ID為0。0。0。0,網(wǎng)絡(luò)掩碼也為0。0.0。0。E位用于指示外部路由是1型(E=0)還是2型(E=1),1型外部路由的度量值與內(nèi)部OSPF路由域的度量具有相同的度量單位,2型外部路由的度量值大于內(nèi)部OSPF路由域的度量。轉(zhuǎn)發(fā)地址是指到達該外部目標網(wǎng)絡(luò)的下一跳地址,一般是ASBR路由器,此時轉(zhuǎn)發(fā)地址為0.0。0.0,表示將報文轉(zhuǎn)發(fā)給產(chǎn)生該LSA的ASBR,但如果運行BGP協(xié)議得到外部路由的ASBR與另一自治系統(tǒng)的ASBR間的網(wǎng)絡(luò)是一個多點訪問網(wǎng)絡(luò),則轉(zhuǎn)發(fā)地址應(yīng)設(shè)置為該網(wǎng)絡(luò)地址,這樣可省略ASBR這個中間一跳.在該LSA中,由產(chǎn)生該LSA的ASBR路由器負責對該外部路由做上標志tag,以便在ASBR間傳送另外的附加信息。具體格式如下:鏈路狀態(tài)時間選項鏈路狀態(tài)類型=5鏈路狀態(tài)ID宣告路由器ID鏈路狀態(tài)序列號和校驗長度網(wǎng)絡(luò)掩碼E0000000費用度量值轉(zhuǎn)發(fā)地址外部路由標志ETOSTOS度量值轉(zhuǎn)發(fā)地址外部路由標志……5.鏈路狀態(tài)數(shù)據(jù)庫對路由器有活動接口的所有區(qū)域,路由器將維護每個區(qū)域各自的鏈路狀態(tài)數(shù)據(jù)。在一個區(qū)域有接口的每個路由器,都有一個該區(qū)域同等的鏈路狀態(tài)數(shù)據(jù)庫。對每個區(qū)域的最短路徑樹的計算,分別由每個路由器以自己為樹根進行。一個區(qū)域的鏈路狀態(tài)數(shù)據(jù)庫中的路由器LSA和網(wǎng)絡(luò)LSA僅通過該區(qū)域傳播。這個區(qū)域的鏈路狀態(tài)數(shù)據(jù)庫由路由器LSA、網(wǎng)絡(luò)LSA及3型、4型匯總LSA(匯總LSA包含在區(qū)域數(shù)據(jù)結(jié)構(gòu)中)組成.如果這個區(qū)域不是存根區(qū),數(shù)據(jù)庫還將包括外部路由信息AS—externalLSA。在數(shù)據(jù)庫的查找過程中,是通過鏈路類型、鏈路狀態(tài)ID和宣告路由器ID這3個特征值來查找的.當在傳播過程中,路由器接收到一個LSA時,或路由器初始化LSA時,路由器將LSA增加到數(shù)據(jù)庫中。當路由器接收到一個較新的LSA時,路由器生成一個新LSA時,或者LSA過于陳舊時,路由器將把LSA從數(shù)據(jù)庫中刪除。從路由器的數(shù)據(jù)庫中刪除任何LSA,也將從每個鄰居的再傳輸列表中刪除.每個區(qū)域都有一份相同的LSA,由LSA可以計算每個路由器將首創(chuàng)一個路由器LSA。如果路由器是DR,則路由器將為它是DR的網(wǎng)絡(luò)生成一個網(wǎng)絡(luò)LSA。ABR路由器將為區(qū)域間路由生成匯總LSA,而ASBR路由器將為外部路由生成AS—externalLSA。以下10個事件將觸發(fā)產(chǎn)生新的LSA:當路由器首創(chuàng)的LSA的時限域到達值LSRefreshTime;路由器接口的狀態(tài)發(fā)生改變。路由器ID是分配給路由器的最高IP地址,或分配給路由器的最高回送IP地址。如果具有最高IP地址的接口失敗,那么路由器ID必須改變.網(wǎng)絡(luò)的DR變化。鄰居路由器變化為完全狀態(tài)或不完全狀態(tài)。區(qū)域內(nèi)路由被增加、刪除或修改。區(qū)域間路由被增加、刪除或修改。路由器使一個接口在某區(qū)域內(nèi)成為活動的.路由器的虛擬鏈路變化。外部路由變化。ASBR的路由器不再是ASBR。路由器將接收到的LSA保存在鏈路狀態(tài)數(shù)據(jù)庫中成為LSAs,由LSAs計算本路由器到各目的地的最短路徑。每條LSA都有壽命Age,當達到MaxAge時,將從數(shù)據(jù)庫中清除。因此,產(chǎn)生LSA的路由器每隔LSRefreshTime要對該LSA重新產(chǎn)生一個實例,并重新進行洪泛。為提高效率,某條LSA在刷新時并不立即洪泛,而是等待一個同步時間,將需要重新洪泛的LSA一并洪泛.6.指定路由器的選取在廣播型網(wǎng)絡(luò)上,需要選取DR和BDR。DR具有如下兩個職責:代表該廣播網(wǎng)絡(luò)和網(wǎng)絡(luò)上的其余路由器,由其發(fā)布該網(wǎng)絡(luò)LSA;管理該網(wǎng)絡(luò)上的擴散過程,網(wǎng)絡(luò)上的所有路由器只有和DR之間有緊鄰關(guān)系,在這種緊鄰關(guān)系上實現(xiàn)LSA的洪泛,各路由器之間不能直接交互LSA;DR的選取是被接口的狀態(tài)機所驅(qū)動(在接口狀態(tài)遷移圖中描述).一般來說,一個路由器接口被激活后,要檢查該接口網(wǎng)絡(luò)是否已經(jīng)存在DR,如果已經(jīng)存在DR,則不管本路由器的優(yōu)先權(quán)有多大,也要接受原先所確定的DR,這樣可以避免太多的變化,若還不存在DR,則如果本路由器在該網(wǎng)絡(luò)具有最高優(yōu)先權(quán)的話,它將成為DR。DR被選取后,該網(wǎng)絡(luò)可抽象為以DR為中心的一點對多點的網(wǎng)絡(luò)拓撲,只有在DR和其他路由器之間建立緊鄰關(guān)系,發(fā)送LSA報文。必須要注意,一個路由器在某一網(wǎng)絡(luò)接口上是DR,但在另一網(wǎng)絡(luò)接口上可能不是DR,因此,DR是一個接口特性,并不是一個完整路由器。為保證系統(tǒng)的穩(wěn)定可靠,除DR外,還要選取一個BDR,并在BDR與其他路由器之間也要建立緊鄰關(guān)系,一旦DR失效,BDR立即替代DR,描述本網(wǎng)絡(luò)及所有路由器的鏈路狀態(tài)。起始時,DR和BDR均設(shè)置為0.0。0。0,表示DR和BDR沒有被選取。路由器將在與自己具有雙向鄰居關(guān)系的鄰居列表(要將本路由器看成是鄰居列表中的一個鄰居路由器,作為DR、BDR的侯選者)中,檢查由Hello報文所宣告的各鄰居路由器的優(yōu)先級、DR、BDR來選取新的DR和BDR.在選取過程中,要排除任何優(yōu)先級為0的鄰居路由器,說明這樣的路由器不符合成為DR或BDR的條件。然后,從符合條件的鄰居路由器(具有非0優(yōu)先級、和本路由器具有雙向鄰居關(guān)系)中運行如下算法:記錄當前的DR和BDR,以在算法中進行比較;計算選取新的BDR;只有那些沒有被Hello報文宣告為DR的路由器才有可能成為BDR.如果有一個或多個路由器被Hello報文宣告為BDR但又不是DR,則從這些被宣告為BDR的路由器中選擇具有最高優(yōu)先級的路由器作為BDR,在選取過程中,如果有相等優(yōu)先級的路由器,那么,從中選擇一個具有最大路由器ID的路由器作為BDR。如果沒有一個路由器被宣告為BDR,則從所有的鄰居路由器中(被宣告為DR的路由器仍然除外)選擇具有最高優(yōu)先級的路由器作為BDR,在選取過程中,如果有相等優(yōu)先級的路由器,那么,也要從中選擇一個具有最大路由器ID的路由器作為BDR。計算新的DR;如果有一個或多個路由器被Hello報文宣告為DR,則選擇其中具有最高優(yōu)先級的路由器作為DR,如果優(yōu)先級相等,則選擇具有最大路由器ID的路由器將作為DR.如果沒有一個路由器被宣告為DR,則將新選出來的BDR作為DR。如果某個路由器新變成DR或BDR,或者某路由器不再成為DR或BDR,則要重復(fù)步驟2和步驟3,然后再到步驟5。例如某路由器成為DR后,在重復(fù)步驟2時,它就不能作為BDR.這樣可以保證某路由器不被同時選為DR和BDR。按照計算結(jié)果,本路由器有可能成為DR或BDR,若這樣,它將承擔相應(yīng)的職責,并設(shè)置相應(yīng)的接口狀態(tài)。如果本路由器成為DR,則接口狀態(tài)為DR;如本路由器成為BDR,則接口狀態(tài)為BDR;對其它情況,則接口狀態(tài)為DROther。如果是NBMA網(wǎng)絡(luò),并且本路由器成為DR或BDR,則必須開始發(fā)送Hello報文給不符合成為DR條件的鄰居路由器。如果以上計算導致DR或BDR發(fā)生改變,則這個接口上的緊鄰關(guān)系也需要加以更改。一些緊鄰關(guān)系需要形成,另一些緊鄰關(guān)系需要解除。為此,為所有鄰居狀態(tài)在2-Way以上的鄰居產(chǎn)生一個AdjOk?事件,這樣,可以觸發(fā)對緊鄰關(guān)系合法性的檢查。DR、BDR的選取之所以這么復(fù)雜,主要是為在DR失效時,BDR可以平滑的變?yōu)镈R。簡單說來,當OSPF路由器成為活動態(tài)并發(fā)現(xiàn)其鄰居后,需要檢查活動的DR和BDR。如果存在DR或BDR,則接受他們.如果沒有BDR,則需要選取具有最高優(yōu)先權(quán)的路由器為BDR,如果優(yōu)先權(quán)相同,則選取具有最高路由器ID的路由器為BDR。如果沒有DR,則將BDR選為DR,并重選BDR。值得注意的是,優(yōu)先權(quán)影響DR和BDR的選取,但不能控制已經(jīng)活動的DR、BDR,也就是說在DR、BDR選舉出來后,具有更高優(yōu)先權(quán)的鄰居路由器不能再成為DR或BDR,最初的DR、BDR始終將有效。一旦DR、BDR選舉出來,DR和其他路由器DROthers將建立緊鄰關(guān)系。但各路由器的Hello報文仍然采用多播地址AllSPFRouters(224。0。0。5)發(fā)送,以跟蹤?quán)従雨P(guān)系。其他路由器DROthers發(fā)送更新報文時應(yīng)以多播地址AllDRRouters(224。0.0。6)發(fā)送,只有DR和BDR監(jiān)聽并接收該地址的報文,而DR發(fā)送更新報文時應(yīng)以多播地址AllSPFRouters(224.0。0.5)發(fā)送,使所有其他路由器DROthers都能接收到,而不是向每個緊鄰單獨發(fā)送更新報文,這樣可以提高效率。7。OSPF接口7。1OSPF接口數(shù)據(jù)OSPF協(xié)議主要關(guān)心鏈路和鏈路狀態(tài)。在發(fā)送Hello報文、形成緊鄰關(guān)系、發(fā)送LSA通告之前,必須要了解本身的接口狀態(tài)及參數(shù)。OSPF路由器用自身的接口數(shù)據(jù)來構(gòu)造Hello報文,通過發(fā)送Hello報文,將本接口的信息發(fā)送給鄰居.的接口狀態(tài)主要包括以下參數(shù):IPAddressandMask:接口的IP地址及掩碼,從該接口上發(fā)送OSPF報文時應(yīng)將它作為IP的源地址。AreaID:接口及所連網(wǎng)絡(luò)所屬的OSPF區(qū)域ID。從該接口發(fā)送OSPF報文的區(qū)域ID。RouterID:作為宣告OSPF報文的路由器ID。NetworkType:接口所連網(wǎng)絡(luò)的網(wǎng)絡(luò)類型,有點對點、廣播、NBMA、一點對多點、虛擬鏈路等網(wǎng)絡(luò)。Cost:從本接口發(fā)送報文的費用,影響LSA中的metric。InfTransDelay:LSA通告離開該接口的延時時間,每個LSA離開該接口時,要在其壽命域加上該時間。State:接口所處的狀態(tài),是有限狀態(tài)機中的某一狀態(tài).RouterPriority:路由器在該接口上的優(yōu)先級。在多點訪問網(wǎng)絡(luò)上將影響到DR、BDR的選取。DesignatedRouter:在多點訪問網(wǎng)絡(luò)上,需要選取一個DR來描述該網(wǎng)絡(luò)的狀態(tài)。一個DR需要用其路由器ID和該路由器在該接口的IP地址表示.DR和該網(wǎng)絡(luò)上的其它路由器構(gòu)成緊鄰關(guān)系,DR用網(wǎng)絡(luò)LSA來通告該網(wǎng)絡(luò)的狀態(tài),在網(wǎng)絡(luò)LSA中將標識該DR的接口IP地址作為鏈路狀態(tài)ID。BackupDesignatedRouter:在多點訪問網(wǎng)絡(luò)上,需要選取一個BDR,作為備用DR來描述該網(wǎng)絡(luò)的狀態(tài)。一個BDR需要用其路由器ID和該路由器在該接口的IP地址表示。BDR與該網(wǎng)絡(luò)上的其他路由器構(gòu)成緊鄰關(guān)系。HelloInterval:在該接口上發(fā)送Hello報文的時間間隔。RouterDeadInterval:在該時間間隔內(nèi)應(yīng)該從該接口接收到由鄰居發(fā)來的Hello報文,若在此時間內(nèi),未從鄰居收到Hello報文,則可認為鄰居已處于非活動狀態(tài)。WaitTimer:在選取DR、BDR之前,等待鄰居在Hello報文中宣告DR、BDR的時間間隔.RxmtInterval:在發(fā)送數(shù)據(jù)描述包和鏈路狀態(tài)請求包時未能收到OSPF確認包,需要重新發(fā)送這些OSPF報文的時間間隔。HelloTimer:設(shè)置HelloInterval的一個定時器,當時間到達時,應(yīng)在該接口上發(fā)送一個Hello報文。neighboringRouters:有效鄰居路由器列表,由Hello報文產(chǎn)生該鄰居列表。緊鄰關(guān)系要從該鄰居列表中產(chǎn)生.AuType:安全鑒權(quán)類型.Authenticat(yī)ionKey:安全鑒權(quán)值.OSPF接口狀態(tài)機OSPF接口在完全有效之前,將經(jīng)歷一系列狀態(tài),包括Down、Point-to-Point、Waiting、DR、Backup、Drother、LoopBack等7種狀態(tài).Down:是接口的初始狀態(tài)。此時接口不能使用,所有的接口參數(shù)被設(shè)置為初始值,在接口上既不能發(fā)送也不能接收各種協(xié)議包。Point-to—Point:該接口狀態(tài)僅適用于點對點、一點對多點和虛擬鏈路的網(wǎng)絡(luò)類型.當接口狀態(tài)遷移到該狀態(tài)時,該接口已完全有效,可以間隔發(fā)送Hello報文,并和另一端的鄰居開始試圖建立緊鄰關(guān)系.Waiting:該接口狀態(tài)僅適用于廣播網(wǎng)絡(luò)和NBMA網(wǎng)絡(luò)類型。在該狀態(tài)下,路由器將通過Hello報文選取DR、BDR.為此,當接口遷移到該狀態(tài)時,將發(fā)送和接收Hello報文,設(shè)置等待時間。只有在該狀態(tài)下路由器試圖識別DR和BDR,這樣可以避免DR、BDR的太多變化。DR:僅適用于廣播和NBMA網(wǎng)絡(luò),在該狀態(tài)下,本路由器在該接口及所連網(wǎng)絡(luò)上是DR,試圖和該接口網(wǎng)絡(luò)上的其他路由器建立緊鄰關(guān)系。將由本路由器產(chǎn)生網(wǎng)絡(luò)LSA,該網(wǎng)絡(luò)LSA包括網(wǎng)絡(luò)所連的所有路由器(包括DR自己)。Backup:僅適用于廣播和NBMA網(wǎng)絡(luò),在該狀態(tài)下,路由器在該接口及所連網(wǎng)絡(luò)上是BDR,在DR失效時,它將提升為DR.它也試圖和該接口網(wǎng)絡(luò)上的其他路由器建立緊鄰關(guān)系.它在洪泛過程中與DR的作用過程有所不同.DRother:僅適用于廣播和NBMA網(wǎng)絡(luò),在該狀態(tài)下,路由器在該接口及所連網(wǎng)絡(luò)上既不是DR也不是BDR。它將和DR、BDR形成緊鄰關(guān)系,并且跟蹤網(wǎng)絡(luò)上的鄰居關(guān)系。Loopback:在該狀態(tài)下,接口被軟件或硬件環(huán)回。在該接口上不能發(fā)送報文,但在路由器LSA中仍然能通告接口的IP地址,使測試包能夠發(fā)現(xiàn)其接口地址。IE3IE1IE3IE1PointtoPointWaitingBackupDRDRotherLoopbackDownDR/BDRElectionIE2IE1IE2IE5IE6IE8IE10IE3IE3IE4IE2IE2IE2IE7IE10IE10IE9IE3IE3IE3在狀態(tài)遷移過程中,需要有以下事件來觸發(fā)各狀態(tài)的遷移:IE1(InterfaceUp):底層協(xié)議指示網(wǎng)絡(luò)接口可以使用,對點對點、一點對多點、虛擬鏈路等網(wǎng)絡(luò)類型,進入Point-to-Point狀態(tài),對廣播網(wǎng)絡(luò)、NBMA網(wǎng)絡(luò)等多點訪問網(wǎng)絡(luò)類型,進入Waiting狀態(tài)。IE2(InterfaceDwon):底層協(xié)議指示網(wǎng)絡(luò)接口不能使用,進入Down狀態(tài)。IE3(LoopInd):網(wǎng)絡(luò)管理員或底層協(xié)議指示網(wǎng)絡(luò)接口被環(huán)回,進入Loopback狀態(tài)。IE4(UnLoopInd):網(wǎng)絡(luò)管理員或底層協(xié)議指示網(wǎng)絡(luò)接口環(huán)回被撤消,進入Down狀態(tài)。IE5(BackupSeen):檢測到或未檢測到BDR的存在。從鄰居收到一個Hello報文后,若本路由器和鄰居已具有雙向通信能力,即在Hello報文中能看到自己,則可以用兩種方法判斷是否是BackupSeen:a)從鄰居收到一個Hello報文,在報文中該鄰居被宣告為BDR;b)從鄰居收到一個Hello報文,在報文中該鄰居被宣告為DR并指示無BDR存在。若符合其中某一條件,則進入DR、BDR選取狀態(tài)。IE6(WaitTimer):等待DR、BDR時間到,進入DR、BDR選取狀態(tài)。IE7:本路由器被選擇為該接口網(wǎng)絡(luò)的DR,進入DR狀態(tài)。IE8:本路由器被選擇為該接口網(wǎng)絡(luò)的BDR,進入BDR狀態(tài)。IE9:本路由器既沒有被選擇為該接口網(wǎng)絡(luò)的DR,也沒有成為BDR,進入DRother狀態(tài).IE10(NeighborChange):在該網(wǎng)絡(luò)接口上,有效的雙向鄰居關(guān)系發(fā)生變化,將重新進行DR、BDR的選取:1)和一個新鄰居建立了雙向通信,也就是說產(chǎn)生了一個新鄰居,其鄰居狀態(tài)遷移到2-Way狀態(tài)以上;2)和一個鄰居的雙向通信已失效,也就是說鄰居狀態(tài)遷移到Init以下狀態(tài);3)從一個雙向鄰居收到一個Hello報文,并指示自己成為新的DR或BDR;4)從DR路由器收到一個Hello報文,并指示它不再是DR;5)從BDR路由器收到一個Hello報文,并指示它不再是BDR;6)從一個雙向鄰居處收到一個Hello報文,其優(yōu)先級發(fā)生變化;7)RouterDeadInterval時間已到,但不能從DR或BDR或兩者的路由器收到Hello報文.當接口狀態(tài)發(fā)生變化時,有可能需要產(chǎn)生新的路由器LSA(見RFC2178Section12。4),也有可能需要對鄰居狀態(tài)作出行動(Section10.3),改變鄰居狀態(tài).8.OSPF鄰居在OSPF的接口上,需要確定其鄰居.確定鄰居的目的是要和鄰居建立一種緊鄰關(guān)系,最終在緊鄰間傳送路由信息。建立緊鄰關(guān)系,需要經(jīng)過以下幾個步驟:發(fā)現(xiàn)鄰居;雙向通信.在Hello報文中,兩鄰居都能在鄰居列表中發(fā)現(xiàn)對方的路由器ID。數(shù)據(jù)庫同步。鄰居間相互交換數(shù)據(jù)庫描述、鏈路狀態(tài)請求、鏈路狀態(tài)更新報文,以確保兩鄰居具有相同的鏈路狀態(tài)數(shù)據(jù)庫。為達到該目的,一個鄰居為Master,另一鄰居為Slave,由Master控制數(shù)據(jù)庫描述的交換.構(gòu)成緊鄰關(guān)系.鄰居關(guān)系的建立和維持要通過相互交換Hello報文來實現(xiàn)。在點對點或廣播型網(wǎng)絡(luò)上,Hello報文是發(fā)向多播地址AllSPFRouters(224。0。0.5),在NBMA、一點對多點、虛擬鏈路等網(wǎng)絡(luò)上,Hello報文是發(fā)向一個具體的目標地址,是單播方式。鄰居數(shù)據(jù)結(jié)構(gòu)從本路由器接口上接收到Hello報文后,要將報文中所攜帶的有關(guān)鄰居路由器的信息保存下來,形成鄰居數(shù)據(jù)庫。具體包括以下內(nèi)容:NeighborID:鄰居路由器ID。NeighborIPAddress:連接在該網(wǎng)絡(luò)上的鄰居接口的IP地址,在接收到Hello報文時獲取得到.當OSPF報文單播給鄰居時,該地址即是目的地址。AreaID:鄰居接口所在的區(qū)域ID,若要構(gòu)成鄰居,區(qū)域ID必須相同。Interface:指示鄰居被本路由器的哪個接口相連。NeighborPriority:鄰居的優(yōu)先級,由Hello報文攜帶。State:鄰居在有限狀態(tài)機中處于什么狀態(tài).InactivityTimer:未能從鄰居接收Hello報文的時間定時器。PollInterval:專門用于NBMA類型的網(wǎng)絡(luò)。因為在該網(wǎng)絡(luò)中,鄰居不能自動發(fā)現(xiàn),鄰居狀態(tài)如果Down,則需要每隔PollInterval時間(比HelloInterval長)發(fā)送一個Hello報文。NeighborOptions:鄰居對OSPF兼容能力的選項,在DD報文交換中獲得,也列于hello報文中,在Hello報文中攜帶該信息。Neighbor’sDesignatedRouter:鄰居所選取的DR,如鄰居自己就是DR,則將影響對DR的計算.它用該網(wǎng)絡(luò)上的接口IP地址表示。由Hello報文的DR域攜帶。Neighbor’sBackupDesignatedRouter:同DR;Master/Slave:Master/Slave關(guān)系,在ExStart狀態(tài)時與鄰居進行協(xié)商,確定哪個鄰居控制數(shù)據(jù)庫同步.DDSequenceNumber:當前正在發(fā)送給鄰居的數(shù)據(jù)庫描述DD報文的序列號。LastReceivedDatabaseDescriptionPacket:上次從鄰居接收到的數(shù)據(jù)庫描述DD報文選項中的Initilize(I)、More(M)、Master(MS)和DD序列號,這些信息用于決定下一個DD報文是否是該報文的一個復(fù)制報文。LinkStateRetransmissionList:已經(jīng)洪泛給緊鄰,但未從緊鄰接收到確認報文的LSAs列表,這些LSA列表每隔RxmtInterval間隔(接口數(shù)據(jù)中已定義)要重發(fā)一次,直到從緊鄰收到確認或緊鄰關(guān)系被破壞。DatabaseSummaryList:在數(shù)據(jù)庫同步過程中,要以數(shù)據(jù)庫描述DD報文形式發(fā)送給鄰居的LSAs列表(從鏈路狀態(tài)數(shù)據(jù)庫中產(chǎn)生的LSAs頭部).在路由器處于交換狀態(tài)時,這些LSAs構(gòu)成鏈路狀態(tài)數(shù)據(jù)庫.LinkStateRequestList:鏈路狀態(tài)請求列表,它們反映了需要從鄰居接收到的LSAs,以同步兩鄰居之間的鏈路狀態(tài)數(shù)據(jù)庫.這張列表是在從鄰居接收到的數(shù)據(jù)庫描述DD報文中產(chǎn)生,并以鏈路狀態(tài)請求報文發(fā)送給鄰居。當從鄰居接收到Update報文時,這些請求列表將逐步消滅。鄰居狀態(tài)機一個OSPF路由器在鄰居成為緊鄰之前,將在一些狀態(tài)之間遷移其鄰居狀態(tài).鄰居狀態(tài)有以下幾種:Down:鄰居會話的初始狀態(tài),指示在前一個RouterDeadInterval未能收到Hello報文,此時不能向鄰居發(fā)送Hello報文,除非這些鄰居在NBMA網(wǎng)絡(luò)上(Hello報文以PollInterval間隔發(fā)送),如果鄰居從其他較高的狀態(tài)遷移到Down狀態(tài),則應(yīng)將LinkStateRetransmissionList、DatabaseSummaryList、LinkStateRequestList等鄰居數(shù)據(jù)清除。Attempt:該狀態(tài)僅適用于NBMA網(wǎng)絡(luò)上的鄰居,這些鄰居是由手工配置的。當與鄰居所連的接口首次被激活且鄰居被合法選為DR或者本路由器成為DR或BDR時,鄰居狀態(tài)將被遷移到該狀態(tài)。此時,路由器將以HelloInterval間隔向鄰居發(fā)送Hello報文。Init:該狀態(tài)指示在前一個RouterDeadInterval已從鄰居收到Hello報文,但在Hello報文中未能看到本路由器ID,和鄰居的雙向通信還未建立。在該狀態(tài)及以上狀態(tài),本路由器可以在Hello報文的鄰居列表域中將所看到的鄰居以Hello包的形式發(fā)送出去。2-Way:該狀態(tài)說明路由器接收到鄰居發(fā)送來的Hello報文,并在Hello報文的鄰居域中發(fā)現(xiàn)本路由器ID,雙向通信已建立。對于多點訪問網(wǎng)絡(luò),必須在該狀態(tài)或以上狀態(tài),鄰居才能被選為DR或BDR。在Init狀態(tài)若能從鄰居收到數(shù)據(jù)庫描述DD報文,也能遷移到2—Way狀態(tài)。ExStart:該狀態(tài)是兩鄰居間建立緊鄰關(guān)系的第一步。在該狀態(tài)下,路由器和其鄰居建立Master/Slave關(guān)系,協(xié)商DD報文的初始序列號以準備交換數(shù)據(jù)庫描述報文。具有高的接口IP地址將成為Master.Exchange:在該狀態(tài)下,將本路由器上的全部鏈路狀態(tài)以DD報文方式發(fā)送給鄰居。一次只能發(fā)送一個DD報文,因此可能要發(fā)送多個DD報文.每個DD報文都有一個序列號,并應(yīng)得到明確的確認.在該狀態(tài)下,也可向鄰居發(fā)送鏈路狀態(tài)請求報文,以向鄰居請求最新的LSAs。在該狀態(tài)或以上狀態(tài)的所有緊鄰將被用于洪泛過程,事實上,這些緊鄰將完全可以發(fā)送和接收所有OSPF協(xié)議包。Loading:在該狀態(tài)下,路由器將向鄰居發(fā)送鏈路請求包,以獲取更新的LSAs。這些LSAs在Exchange狀態(tài)下發(fā)現(xiàn),但還未接收到。Full:在該狀態(tài)下,兩鄰居路由器完全是緊鄰關(guān)系。這種緊鄰關(guān)系將體現(xiàn)在路由器LSAs和網(wǎng)絡(luò)LSAs中。DownAttemptExchangeLoadingDownAttemptExchangeLoadingFull2-WayExStartInitDP1DP2IE1IE2IE2IE8IE7IE6IE5IE4IE11IE11IE10IE9IE4下圖詳細描述了鄰居狀態(tài)從Down到Init的過程,并表明各種狀態(tài)在IE3事件觸發(fā)下都將直接遷移到Down狀態(tài)。在2—way、ExStart、Exchange、Loading、Full等狀態(tài)下可以接收Hello報文。ExchangeExchangeAttemptDownLoading2-WayFullInitExstartIE3IE3IE3IE3IE3IE3IE3IE4IE1IE2IE2下圖是鄰居狀態(tài)從Init遷移到Full的詳細過程:ExchangeExchangeLoadingFull2-WayExStartInitDP1DP2IE7IE5IE4IE8IE9IE10IE6IE11IE13IE11DP3DP3DP3DP3IE16IE16IE16IE16IE15IE15IE15IE15IE14IE14IE14IE14IE12IE12IE12IE13IE13IE13IE13鄰居狀態(tài)遷移需要有以下外部事件:IE1(Start):該事件僅發(fā)生在NBMA網(wǎng)絡(luò)鄰居上,由以下兩種情形觸發(fā):與NBMA網(wǎng)絡(luò)相連的接口首次成為活動口,鄰居可以選取為DR;路由器可以成為DR或BDR,但鄰居不能選為DR。IE2(HelloRecived):從鄰居接收到一個有效的Hello報文。IE3(KillNbr,InactivityTimer,LLDown):鄰居不再可達。這種不可達性可以由底層協(xié)議指示、OSPF進程本身明確指示、接口活動定時器到達指示。IE4(2-WayRecived):路由器首次從鄰居發(fā)送來的Hello報文所攜帶的鄰居列表中發(fā)現(xiàn)本路由器ID,或者從鄰居接收到數(shù)據(jù)庫描述報文DD。IE5:鄰居不成為緊鄰。IE6:該事件有以下兩種情形:鄰居狀態(tài)首次遷移到2-Way狀態(tài)接口狀態(tài)發(fā)生變化IE7:和鄰居應(yīng)該形成緊鄰關(guān)系.IE8(negotiationDone):Master/Slave關(guān)系建立,DD報文的序列號被交換。IE9(ExChangeDone):數(shù)據(jù)庫描述包DD已交換完畢。IE10:存在鏈路狀態(tài)請求條目。IE11(LoadingDone):不存在鏈路狀態(tài)請求條目。IE12:緊鄰關(guān)系應(yīng)該被解除,然后重新開始.觸發(fā)這個事件的情形如下:接收到一個非期待的DD序列號的數(shù)據(jù)庫描述報文(SeqNumberMismatch);接收到的DD報文的選項不同于上次收到的DD報文中的選項(SeqNumberMismatch);接收到的DD報文不是第一個報文,但Init(I)位被置為1(SeqNumberMismatch);接收到一個鏈路請求報文,但在數(shù)據(jù)庫中不存在該鏈路狀態(tài)LSA(BadLSSeq);IE13(1-Way):從鄰居收到Hello報文,但在Hello報文的鄰居列表中未能發(fā)現(xiàn)本路由器ID。IE14(AdjOK?):本路由器接口狀態(tài)發(fā)生變化.IE15:當前存在或正在形成的緊鄰應(yīng)該繼續(xù)。IE16:當前存在或正在形成的緊鄰不應(yīng)該繼續(xù).在鄰居狀態(tài)遷移過程中,要作一些決策:DP1:和鄰居間應(yīng)該建立緊鄰關(guān)系嗎?若遇到以下某一情形或幾個情形,應(yīng)和鄰居形成緊鄰關(guān)系。網(wǎng)絡(luò)類型是點對點網(wǎng)絡(luò)類型是一點對多點網(wǎng)絡(luò)類型是虛擬鏈路本路由器是鄰居所在網(wǎng)絡(luò)的DR本路由器是鄰居所在網(wǎng)絡(luò)的BDR鄰居是DR鄰居是BDRDP2:對鄰居的鏈路請求列表為空嗎?DP3:當前和鄰居正在形成的緊鄰關(guān)系繼續(xù)嗎?當鄰居狀態(tài)發(fā)生變化時,要重新選取DR、BDR。9.建立緊鄰關(guān)系在點對點、一點對多點、虛擬鏈路等網(wǎng)絡(luò)上的鄰居總是能夠成為緊鄰的,除非彼此的Hello報文中的參數(shù)不同.在廣播網(wǎng)絡(luò)或NBMA網(wǎng)絡(luò)上,只有DR、BDR和其它DRother鄰居之間才能構(gòu)成緊鄰關(guān)系。在緊鄰關(guān)系的建立過程中,要用到以下3種OSPF報文:數(shù)據(jù)庫描述報文DD;鏈路狀態(tài)請求報文;鏈路狀態(tài)響應(yīng)報文。當OSPF接口允許時,在該接口上將傳輸呼叫包.當從鄰居接收到一個呼叫包時,但本路由器沒有出現(xiàn)在鄰居列表時,接口進入Init狀態(tài).處于這種狀態(tài)時,連接到網(wǎng)絡(luò)上的所有接口應(yīng)包含在這張鄰居列表中,當路由器看到自身的接口列在鄰居列表中時,進入2—Way雙向狀態(tài)。處于雙向或更高狀態(tài)時,選取DR和BDR。當符合某種條件時(參見鄰居狀態(tài)遷移圖),進入ExStart狀態(tài),開始交換鏈路狀態(tài)信息.在這個狀態(tài),路由器要決定誰是主,誰是從,以及初始數(shù)據(jù)庫描述序列號是什么,在協(xié)商過程,最終由主路由器決定DD報文的序列號,由此來同步LSA數(shù)據(jù)庫。然后進入交換狀態(tài)Exchange,路由器將發(fā)送數(shù)據(jù)庫描述包DD給鄰居路由器。發(fā)送完DD報文后,若沒有鏈路狀態(tài)請求報文,則進入Full狀態(tài)。否則,進入Loading裝載狀態(tài),發(fā)送鏈路狀態(tài)請求報文.收到鏈路請求報文后,給鄰居發(fā)送此請求的更新報文。若從鄰居收到發(fā)送來的更新報文,對所有請求報文作出響應(yīng)后,路由器也將進入Full狀態(tài)。最終,雙方都進入Full狀態(tài),形成緊鄰關(guān)系。緊鄰關(guān)系形成后,兩路由器仍然相互周期性地發(fā)送Hello報文,以檢測鄰居是否仍然正常工作。數(shù)據(jù)庫描述報文DD對緊鄰形成過程具有重要意義。這些報文對源路由器鏈路狀態(tài)數(shù)據(jù)庫中的各條LSA,都攜帶著它的概要描述。這些描述不是LSA的全部特性,而僅是LSA的頭部,該頭部對接收路由器(鄰居)來說,具有足夠的信息決定它是否是自身鏈路狀態(tài)數(shù)據(jù)庫中LSA的拷貝.另外,DD報文選項中的3個特性比特決定著緊鄰關(guān)系的形成過程:Init(I)比特,當置位時,說明是第一個DD報文;More(M)比特,當置位時,說明這不是最后一個DD報文;MS—bit主/從比特,主路由器發(fā)送DD報文時應(yīng)置位。在ExStart狀態(tài)開始主從路由器的協(xié)商,并確定交換數(shù)據(jù)庫DD報文的序列號。剛開始時,發(fā)送一個空的DD報文(無任何LSA頭部)給鄰居,若還未從鄰居接收到Hello報文,可以暫時將MS-bit位設(shè)置為1,將自己聲稱為主路由器,而將DD報文的序列號根據(jù)自身路由器的情況設(shè)置為一個合適的初始值。通過這樣兩個DD報文的協(xié)商,路由器ID較低的路由器將是從路由器,以后發(fā)送的DD報文中的MS—bit將設(shè)置為0,DD序列號也要設(shè)置為主路由器所給出的序列號。DD報文是鄰居間以概括LSA方式擴散的第一個報文。當主從關(guān)系協(xié)商完畢,鄰居狀態(tài)進入Exchange狀態(tài)。在Exchange狀態(tài),鄰居間通過對各自鏈路狀態(tài)數(shù)據(jù)庫中所有LSA條目的描述來同步其鏈路狀態(tài)數(shù)據(jù)庫。DatabaseSummaryList是從鏈路狀態(tài)數(shù)據(jù)庫中產(chǎn)生出來的LSAs的頭部,DD報文將以這些LSAs的頭部發(fā)送給鄰居。在數(shù)據(jù)庫同步過程中,任一路由器若從鄰居發(fā)送來的DD報文中發(fā)現(xiàn)鄰居的一個LSA在本路由器的數(shù)據(jù)庫中不存在或者鄰居有一條更加新的LSA時,則應(yīng)將該LSA放入鏈路請求隊列LinkStateRequestList中。然后給鄰居發(fā)送鏈路請求包以獲取完整的LSA,鄰居收到鏈路請求后,以Update更新報文方式來響應(yīng)該LSA的請求.當收到LSA的響應(yīng)報文后,將該請求條目從鏈路請求隊列LinkStateRequestList中清除出去,并向鄰居發(fā)送一個確認包,以對該LSA更新報文作出確認應(yīng)答?.所有以Update更新方式所發(fā)送的報文必須逐一得到確認應(yīng)答,發(fā)送出去的LSAs將加入到LinkStat(yī)eRetransmissionList隊列中,當被確認應(yīng)答后,該LSA將從該隊列中清除出去,否則,每隔一個RxmtInterval時間要重發(fā)該LSA.對LSA更新報文的確認應(yīng)答有以下2種方式:顯式確認:收到包含該LSA頭的鏈路狀態(tài)確認包隱式確認:收到一個完全相同的LSA更新報文主路由器將控制數(shù)據(jù)庫的同步過程,并確保一次只能完成一個DD報文的同步(由主路由器控制DD報文的序列號,且必須在前一個DD報文得到確認應(yīng)答后才能向從路由器發(fā)送下一個DD報文).當從路由器從主路由器收到一個DD報文后,從路由器將以相同的序列號給主路由器發(fā)送一個DD報文(可以看作為對主路由器發(fā)來的DD報文的一個確認應(yīng)答).如果主路由器在RxmtInterval時間(在接口數(shù)據(jù)中定義的)內(nèi)未能收到從路由器發(fā)送來的DD報文(序列號必須是主路由器上次發(fā)送出去的DD報文序列號),則應(yīng)向從路由器再次重發(fā)該DD報文.從路由器發(fā)送DD報文給主路由器,可以認為只是對主路由器發(fā)來的DD報文的一種確認應(yīng)答(當然在該DD報文中可攜帶本路由器上的鏈路狀態(tài)數(shù)據(jù)LSAs的頭部)。如果接收到的DD報文具有新的DD序列號(說明前一次應(yīng)答的DD報文已被主路由器收到),則從路由器可以用這個新的序列號給主路由器發(fā)送一個新的DD報文。如果接收到的DD報文和前一次應(yīng)答的DD報文序列號相同(說明前一次應(yīng)答的DD報文未被主路由器收到),則從路由器應(yīng)給主路由器重新發(fā)送上次的確認應(yīng)答報文DD.當主路由器將自己的鏈路狀態(tài)數(shù)據(jù)庫的DD報文全部發(fā)送給從路由器后,并且從從路由器接收到的DD報文已標識M-bit為0,主路由器知道數(shù)據(jù)庫同步已完成(當然要收到最后一個DD報文的確認應(yīng)答報文)。當從路由器從主路由器接收到的DD報文已標識M-bit為0,并且自己的鏈路狀態(tài)數(shù)據(jù)庫的DD報文已全部應(yīng)答給主路由器,將最后一個應(yīng)答包DD報文中的M—bit設(shè)置為0后,從路由器也知道數(shù)據(jù)庫同步已完成。由于從路由器必須要對接收到的每個DD報文給出確認應(yīng)答(最后一個確認應(yīng)答報文是否被主路由器收到,從路由器不用關(guān)心,主路由器自然會關(guān)心能否收到該報文,若收不到,主路由器會重新發(fā)送前一次的DD報文,從路由器還會再次作出確認應(yīng)答),而主路由器必須要等待最后一個DD報文的確認應(yīng)答報文,因此,從路由器總是最先知道數(shù)據(jù)庫的同步過程是否已經(jīng)結(jié)束.當數(shù)據(jù)庫同步過程結(jié)束后(由More(M)比特標識),路由器將遷移到以下某一狀態(tài):若有鏈路狀態(tài)請求報文,即在DD報文同步過程中,在LinkStateRequestList中產(chǎn)生了鏈路狀態(tài)請求報文,則進入Loading狀態(tài);若沒有鏈路狀態(tài)請求報文,即在DD報文同步過程中,在LinkStateRequestList中沒有產(chǎn)生鏈路狀態(tài)請求報文,則進入Full狀態(tài);若進入Loading狀態(tài),則應(yīng)按照LinkStateRequestList中的條目向鄰居發(fā)送鏈路狀態(tài)請求報文,由鄰居對該請求作出響應(yīng),以Update報文格式將該LSA的全部信息發(fā)送給請求鄰居。當請求鄰居收到LSA的響應(yīng)報文后,清除該請求條目。當所有請求條目都被響應(yīng)后,路由器將進入Full狀態(tài)。RT1RT2RT1RT2DownDownHello(DR=0.0.0.0,NeighborsSeen=0)Hello(DR=RT2,NeighborsSeen=RT1)InitExstartDD(Seq=x,I=1,M=1,MS=1)ExstartDD(Seq=y,I=1,M=1,MS=1)DD(Seq=y,I=0,M=1,MS=0)Exchange(Slave)Exchange(Master)DD(Seq=y+1,I=0,M=1,MS=1)DD(Seq=y+1,I=0,M=1,MS=0)…….…….……DD(Seq=y+n,I=0,M=0,MS=1)DD(Seq=y+n,I=0,M=0,MS=0)LoadingLSRequestLSUpdateLSRequestLSUpdateFullFull值得注意的是,鏈路請求與鏈路響應(yīng)報文的處理不一定非要在數(shù)據(jù)庫同步結(jié)束后進行,也可以在數(shù)據(jù)庫同步過程中處理,一旦出現(xiàn)鏈路狀態(tài)請求,立即進行處理。這樣,在數(shù)據(jù)庫同步結(jié)束后,兩路由器將全部進入Full狀態(tài)。10.洪泛過程概論OSPF路由域的拓撲結(jié)構(gòu)可以用鏈路狀態(tài)數(shù)據(jù)庫來描述,拓撲結(jié)構(gòu)的變化將反映在LSAs的變化上。洪泛過程就是將這些變化的LSAs或新的LSAs在整個網(wǎng)絡(luò)中進行傳送,確保每個節(jié)點的數(shù)據(jù)庫被更新,并在各個節(jié)點上保持一致。洪泛過程將用以下兩種OSPF報文來實現(xiàn):更新報文UpdatePackets確認報文AcknowledgementPackets以上兩種報文只在緊鄰間發(fā)送與接收。一條變化的或新的LSA首先通告給其緊鄰,由緊鄰繼續(xù)向其它緊鄰擴散,最終達到向整個網(wǎng)絡(luò)的所有節(jié)點擴散。在點對點的網(wǎng)絡(luò),更新報文將以多播地址AllSPFRouters(224。0.0.5)發(fā)送給緊鄰。在一點對多點的網(wǎng)絡(luò)和虛擬鏈路上,將以緊鄰接口的單播地址來發(fā)送更新報文。在廣播網(wǎng)絡(luò)上,只有在DRothers(包括BDR?)和DR、BDR之間形成緊鄰關(guān)系。DRothers路由器發(fā)送更新報文時,以DRouters(224。0。0。6)發(fā)送給其緊鄰DR和BDR,只有DR才能接收并可繼續(xù)洪泛給另外的DRothers(BDR只能接收下來,不能在該接口上作進一步洪泛)。DR路由器以AllSPFRouters這個多播地址將更新報文發(fā)送給網(wǎng)絡(luò)上的其它所有的DRothers。BDR可以從DRothers接收到更新報文,但不能將其在該網(wǎng)絡(luò)接口上繼續(xù)洪泛,除非DR失效,它將代替DR。在NBMA網(wǎng)絡(luò)上,DR、BDR有類似功能,但是DRothers要以單播地址向DR和BDR發(fā)送更新報文,DR也要以單播地址向DROthers發(fā)送更新報文。要保證各個節(jié)點具有相同的鏈路狀態(tài)數(shù)據(jù)庫,洪泛過程必須可靠。發(fā)送LSAs的路由器必須確保LSAs被緊鄰接收,接收路由器必須知道接收到的LSAs是正確的。洪泛的正確性可以由以下幾種方法來保證:隱式應(yīng)答緊鄰可以將接收到的LSA以副本方式發(fā)給原路由器.這種情況可能剛好要向原路由器發(fā)送LSAs。顯式應(yīng)答當從緊鄰接收到一個LSA時,應(yīng)以鏈路狀態(tài)確認應(yīng)答報文進行應(yīng)答。一個應(yīng)答報文可以對多個LSAs同時進行應(yīng)答.應(yīng)答包中僅攜帶LSA的頭部(信息已足夠了),不需要完整的LSA。當路由器向某緊鄰首次發(fā)送一個LSA時,要將該LSA放入該緊鄰的LinkStateRetransmissionList中,這個LSA要每隔RxmtInterval時間重發(fā)一次,直到被緊鄰應(yīng)答或緊鄰斷裂。重發(fā)報文應(yīng)以單播方式發(fā)送,不管網(wǎng)絡(luò)類型如何.延時應(yīng)答應(yīng)答報文可以延時應(yīng)答,也可以直接應(yīng)答。延時應(yīng)答可以將許多LSAs的應(yīng)答包含在一個應(yīng)答包中.在廣播網(wǎng)絡(luò)上,從各緊鄰收到LSAs后,可以用一個應(yīng)答報文在多播地址上發(fā)送應(yīng)答包。延時的時間不能大于RxmtInterval時間,以免產(chǎn)生不必要的重發(fā)。在一般情況下,在各種網(wǎng)絡(luò)上發(fā)送應(yīng)答報文的目的地址和發(fā)送更新報文的目的地址處理方法相同.直接應(yīng)答直接發(fā)送應(yīng)答報文總是以單播方式發(fā)送。當遇到下列情況時,應(yīng)立即應(yīng)答:接收到了一個重復(fù)的LSA,上一次的應(yīng)答可能丟失,應(yīng)給緊鄰立即應(yīng)答;接收到的LSA中的Age已經(jīng)達到MaxAge,且本路由器又沒有該LSA的實例。Sequenceing,Checksums,Aging每個LSA都包含以上3項值,以確保鏈路狀態(tài)數(shù)據(jù)庫中的LSA是最新的LSA。LSA序列號取值范圍為InitialSequenceNumber(0x80000001)~MaxSequenceNumber(0x7fffffff).當路由器剛產(chǎn)生一條LSA時,其序列號為InitialSequenceNumber,路由器每次產(chǎn)生LSA的一個新實例時,路由器將該LSA的序列號增加1.如果LSA的序列號達到MaxSequenceNumber,必須要產(chǎn)生該LSA的一個新實例。路由器必須要從所有數(shù)據(jù)庫中刪除該LSA。這種方法可以這樣實現(xiàn):將該LSA的Age設(shè)置為MaxAge,并向所有緊鄰洪泛。一旦所有緊鄰對該過時的LSA作出了應(yīng)答,序列號為InitialSequenceNumber新的LSA的實例將被洪泛。LSA校驗和為區(qū)分新舊LSA增加了一種手段。和校驗是對整個LSA(除Age字段,以免在中途路由器上由于Age的變化,要重新計算校驗和)。對鏈路狀態(tài)數(shù)據(jù)庫中的每一個LSA要每隔5分鐘做一次和校驗,以確保數(shù)據(jù)庫中的LSA是正確的.Age是LSA的一個壽命,其范圍在0~3600秒之間.當路由器產(chǎn)生一條LSA時,路由器將其Age設(shè)置為0,在洪泛過程中,每經(jīng)過一個路由器,將增加InfTransDelay秒.當LSA保存在鏈路狀態(tài)數(shù)據(jù)庫中時,Age也要增加。當一條LSA的Age到達MaxAge時,要重新洪泛并將其清除出數(shù)據(jù)庫,當需要清除出數(shù)據(jù)庫時,要將Age設(shè)置為MaxAge并重新洪泛。只有產(chǎn)生LSA的路由器才能將Age設(shè)置為MaxAge.當同一個LSA收到多個不同的實例時,路由器通過以下方法,選擇最新的LSA:比較序列號.序列號越高,越是最新的LSA;若序列號相同,則比較校驗和,和越大,越是最新的LSA;如果校驗和相同,則比較Age,若只有一條LSA的Age為MaxAge,則它是最新的LSA;如果Age相差超過MaxAgeDiff(15分鐘),則具有小的Age的LSA是最新的;任何一條不滿足,則LSA是相同的.11.OSPF區(qū)域Area一個OSPF路由域可以分解為若干區(qū)域,這樣可以帶來以下幾個好處:同個區(qū)域內(nèi)的路由器才需要具有相同的鏈路狀態(tài)數(shù)據(jù)庫,不需要在整個OSPF路由域具有相同的鏈路狀態(tài)數(shù)據(jù)庫,這樣,可以減小數(shù)據(jù)庫規(guī)模,減少對內(nèi)存的影響;鏈路狀態(tài)數(shù)據(jù)庫越小,LSA的處理也越少,對CPU的影響也越小;鏈路狀態(tài)數(shù)據(jù)庫在同一個區(qū)域內(nèi)維護,大部分洪泛過程在本區(qū)域內(nèi)進行。當區(qū)域內(nèi)某鏈路變化時,只影響本區(qū)域路由器的LSAs,而本區(qū)域的匯總路由不一定變化,因此,可能不影響其它區(qū)域。一個OSPF區(qū)域是一組共同的路由器和它們的接口。一個區(qū)域最多不能超過60個路由器,一般為25個路由器較為合適。在各個區(qū)域上,將有以下3種協(xié)議報文:在同個區(qū)域內(nèi)的路由器之間的Intra—area報文;在不同區(qū)域間的Inter—area報文;外部自治系統(tǒng)的External報文。在區(qū)域劃分時,必須要有區(qū)域0,它是作為骨干區(qū)域的,要為其它各個區(qū)域負責匯總每個區(qū)域的拓撲結(jié)構(gòu)。因此,不同區(qū)域間的報文都要通過骨干區(qū)來交換,不能直接交換。非骨干區(qū)與骨干區(qū)可以由某路由器直接連接,也可以通過虛擬鏈路來連接。作為虛擬鏈路端點的兩個路由器,其中一個連接著骨干區(qū),另一個連接著非骨干區(qū),并且兩路由器都至少有一個接口連接著某個公共的區(qū)域,該公共區(qū)域是虛擬鏈路兩端點的路由器用來傳輸協(xié)議報文的傳送區(qū)。虛擬鏈路屬于骨干區(qū),協(xié)議處理虛擬鏈路上的兩端路由器就好象處理骨干區(qū)中兩個點對點的骨干網(wǎng)絡(luò),在骨干區(qū)的拓撲圖中,就好象兩個路由器被傳送區(qū)內(nèi)部路由費用連接著,其報文的傳送要經(jīng)過傳送區(qū)的內(nèi)部路由.存根區(qū)是不能作為虛擬鏈路的傳送區(qū)的,不需要類型4和類型5的LSA。劃分區(qū)域后,路由器將分為以下4種類型:InternalRouters:所有接口屬于同一區(qū)域的路由器。這些路由器只有一個單一的鏈路狀態(tài)數(shù)據(jù)庫,實行單一的路由算法。AreaBorderRouters(ABRs):將一個或多個區(qū)域連接到骨干區(qū)域的路由器。這些路由器的作用類似區(qū)域間交換路由信息的網(wǎng)關(guān)。ABR至少有一個接口連接到骨干區(qū),另外的接口可以連接到其它非骨干區(qū),并且要為每個區(qū)域維護一個獨立的鏈路狀態(tài)數(shù)據(jù)庫,因此,ABR要有較大的內(nèi)存和較強的CPU處理能力.一般一個ABR所能連接的區(qū)域不超過3個。ABR要對各個區(qū)域的鏈路狀態(tài)數(shù)據(jù)庫實行獨立的路由算法,并將各個區(qū)域的拓撲結(jié)構(gòu)信息變成匯總路由信息給骨干區(qū)域,然后由骨干區(qū)域?qū)⑦@些匯總信息擴散到其它區(qū)域。為實現(xiàn)合理的路由匯總,要求每個區(qū)域有一組連續(xù)的IP地址空間。在區(qū)域間使用不連續(xù)的IP編址,若ABR仍然進行匯總,則將導致一個OSPF路由器錯誤的轉(zhuǎn)發(fā)報文.BackboneRouters:至少有一個接口連接到骨干區(qū)域的路由器。AutonomousSystemBoundaryRouters(ABR

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論