




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
OSPF協議原理及配置鏈路狀態路由選擇協議也稱為最短路徑優先協議或分布式數據庫協議基于Dijkstra的著名算法而設計鏈路狀態協議的例子:OpenShortestPathFirst(OSPF)forIPTheISO'sIntermediateSystem-to-IntermediateSystem(IS-IS)forCLNSandIPDEC'sDNAPhaseVNovell'sNetWareLinkServicesProtocol(NLSP)基本功能每臺路由器與它的鄰居之間建立聯系,這種聯系叫做鄰接關系每臺路由器向每個鄰居發送被稱為鏈路狀態通告(LSA)的數據單元每臺路由器在數據庫中保存一份它所收到的LSA的備份,如果所有路由器工作正常,它們的數據庫應該相同整個網絡拓撲數據庫(也叫鏈路狀態庫)由Dijkstra算法使用,通過對網絡圖進行計算得出到每臺路由器的最短路徑鄰居鄰居發現是建立鏈路狀態環境并運行的第一步,這一步使用Hello協議Hello數據包包含路由器ID和發送數據包的網絡地址,路由器ID可以將發送該包的路由器與其他路由器惟一區分開來當兩臺路由器已經互相發現并將對方視為鄰居時,要進行數據庫同步過程,直到數據庫相同為止除建立鄰接關系之外,Hello數據包還作為監視鄰接關系的握手信號。典型的Hello數據包交換間隔為10s,典型的死亡周期是數據包交換間隔的4倍。
鏈路狀態泛洪建立鄰接關系之后,路由器開始發送LSA鄰居路由器保存接收到的LSA,并依次向自己每個鄰居轉發(除了發送該LSA的鄰居)泛洪擴散過程是鏈路狀態協議中最復雜的一部分兩個過程對泛洪擴散極為重要的:排序和老化序號
數據包中的TTL值可以終止過期的數據包(位于IP首部的一個字段)但是不能有效地控制LSA在網絡中漫游序號(續)當拓撲發生變化時,通告該變化的LSA在整個網絡上擴散序號(續)當路由器發送LSA時,每個拷貝中的序號都是一樣的這個序列號和LSA的其他部分一起被保存在路由器的拓撲數據庫中當路由器收到數據庫中已存在的LSA并且序號相同時,將丟棄這些信息如果信息相同但是序號更大,那么接收的信息和新序號被保存到數據庫中,并且泛洪擴散該LSA序號(續)設網絡172.22.4.0發生故障之后立即恢復正常:路由器A可能會發出序號為166的通告網絡故障的LSA,接著再發送序號為167通告網絡正常的LSA路由器C先后接收到沿路徑A-B-C擴散過來的LSA,分別是關于網絡發生故障和故障恢復的通告,接著C又收到沿路徑A-D-E-F-C擴散過來的關于網絡故障的LSA如果使用序號,路由器C的數據庫可以顯示來自路由器A的LSA的序列號為167,而后面到達的LSA序列號為166,因此該LSA被認為是過時的信息而被丟棄線性序號空間一種解決辦法是使用一個非常大的線性序號空間,以至于根本不可能到達其上限例如,如果使用32位序號字段,那么從0開始將有232=4,294,967,296個可用序列號,即使路由器每10s產生一個新的狀態數據包,也需要花1361年才能用盡所有序列號線性序號空間(續)如果一個鏈路狀態路由選擇進程用完了所有序列號,那么在重新使用最低序列號之前必須停止,并等待它所發出的LSA在所有數據庫中都不再被使用
如果一個路由器故障重啟,其鄰居仍然在數據庫中保留了該路由器最近的序號,那么越小的序列號也就是越舊的序列號,因而都會被忽略丟棄路由選擇進程必須一直等到網絡上所有陳舊的LSA都消失為止ExplainWhy?一個更好的解決方案如果一臺重新啟動的路由器向鄰居發送LSA的序號比鄰居保存的序列號還要老,那么鄰居會發回自己保存的LSA和序號.該路由器從中知道啟動前自己最近曾經使用過的序號,并作出相應的調整需要注意的是,最近使用過的序號不能接近上限,否則重新啟動的路由器將不得不再次重新啟動循環序號空間另一種方法是使用循環序號對于32位序號,當序號到達232–1(0xFFFFFFFF)時再返回0循環序號會形成一個奇怪的邏輯:
如果x是一個位于
1(含)與
4,294,967,295(含)的數,那么有:0<x<0循環序號空間(續)引入兩條規則來確定一個序號比另一個序號更大或更小給定一個序號空間n
和兩個序號a
與b,在滿足下列兩個條件之一時認為a比b更大:
a
>
b,
且
(a-
b)
<=
n/2
a
<
b,
且
(b
-
a)
>
n/2
6-Bit循環序號空間
n
=
26
=
64,so
n/2
=
32.
6-Bit循環序號空間(續)給定兩個序號48和18,由規則1得:48比18更新
48
>
18
且
(48
-
18)
=
30
且
30
<
32.
給定兩個序號3和48,由規則2得:3比48更新
3
<
48
且
(48
-
3)
=
45
且
45
>
32.
給定兩個序號3和18,由規則1得:18比3更新
18
>
3
且
(18
-
3)
=
15
且
15
<
32.
6-Bit循環序號空間(續)假設一臺工作不正常的路由器突然發送了3個相同的且序列號為44(101100)的LSA。它的一個鄰居也發生了故障—丟掉了幾位數據,假設丟失的數據位是第2個LSA和第3個LSA序號中的1位,然后該鄰居路由器向外泛洪擴散了這3個LSA,結果造成了三個相同的LSA的序號各不相同:44(101100)40(101000)8(001000)
應用循環規則可得:44比40更新,40比8更新,而8又比44更新!
這個結論將使3個LSA都持續擴散下去,數據庫也不斷地被最新的LSA更新,直到數據庫緩沖被塞滿,CPU超載為止,最終使得整個網絡崩潰棒棒糖形的序號空間由RadiaPerlman博士提出棒棒糖地址空間使用了有符號數,范圍是-k<0<k。從-k到-1的負數計數形成了一根直棒,而從0到k的正數則形成了環形空間給定兩個數a
和b
以及序號空間n,b比a更新當且僅當:a<0且a<b,或a>0,a<b,且(b-a)<n/2,或a>0,b>0,a>b,且(a-b)>n/2棒棒糖形的序號空間(續)注:-N(-231或0x80000000)和N-1(231-1或0x7FFFFFFF)未被使用棒棒糖形的序號空間(續)假設路由器發生重啟,重啟前最后一個被發送的LSA序號是0x00005de3路由器重啟后,當它與鄰居同步數據庫時,發送的序號是0x80000001(-N+1)鄰居檢查自己的數據庫后發現該路由器重啟前的LSA序號為0x00005de3,鄰居將把這個保存的LSA發送給重啟的路由器重啟路由器記錄下這個序號為正數的ISA棒棒糖形的序號空間(續)原始OSPFv1(RFC1131)使用了棒棒糖形序號空間OSPFv2(由RFC1247定義)采納了線性空間和棒棒糖形空間的最佳特性:開始時像棒棒糖形序號數一樣使用了從0x80000001開始的有符號數空間當序號變為正數時,序號空間持續保持線性增長直至到達最大數0x7FFFFFFF為止在到達最大值時需要重啟,在重啟之前,0SPF進程必須從所有鏈路狀態數據庫中刪除LSA老化
老化過程為泛洪擴散過程增加了另一層可靠性協議為網絡定義了一個最大年齡差距(MaxAgeDiff)值路由器可能接收到一個LSA的多個副本,其中序號相同,但年齡不同:如果年齡差距小于MaxAgeDiff,那么認為是由于網絡的正常時延造成了年齡的差異,因此數據庫原有的LSA繼續保存,新收到的LSA不被擴散而丟棄如果年齡差距超過MaxAgeDiff,那么認為網絡發生了異常,因為新發送的LSA的序號沒有增加。此時新的LSA被保存下來,并將被擴散出去用于OSPF的典型MaxAgeDiff值為15minMaxAge
和LSRefreshTime保存在數據庫中的LSA的年齡會不斷增加。如果鏈路狀態記錄的年齡增加到最大年齡值(MaxAge),那么一個帶有MaxAge值的LSA將被泛洪擴散到所有鄰居,鄰居隨即從數據庫中刪除相關記錄鏈路狀態刷新定時器(LSRefreshTime)用于定期確認LSA并且在LSA到達最大年齡之前將其年齡定時器復位。也就是說,一旦刷新定時器超時,路由器將向所有鄰居泛洪擴散新的LSA,收到的鄰居把有關LSA的年齡設置為新接收到的年齡OSPF定義MaxAge為1小時,LsRefreshTime為30min鏈路狀態數據庫
建立鏈路狀態數據庫是鏈路狀態路由選擇協議的另一個主要任務鏈路狀態數據庫把LSA作為一連串記錄予以保存
對于路由器鏈路信息,使用三元組(路由器ID,鄰居ID,代價)來通告路由器的鄰接鄰居,其中的代價是指連接該鄰居的鏈路的費用對于末梢網絡信息,使用三元組(路由器ID,網絡ID,代價)來通告路由器直接連接的末梢網絡(即沒有鄰居的網絡)鏈路狀態數據庫(續)鏈路代價是按照接口的出站方向計算的;在同一條鏈路上的所有接口的代價沒有必要完全相同拓撲或鏈路狀態數據庫的例子路由器ID鄰居費用RARB2RARD4RARE4RBRA2RBRC1RBRE10RCRB5RCRF2RDRA4RDRE3RDRG5RERA5RERB2RERD3RERF2RERG1RERH8RFRC2RFRE2RFRH4RGRD5RGRE1RHRE8RHRF6SPF算法
Dijkstra算法的原始描述(來自其論文)構造一棵樹,使每個節點之間的總長最小前提條件:分枝被分成3個集合:I:被明確分配給構造中的樹的分枝II:從中選擇下一個分枝被添加到集合IIII:剩余的分杖(拋棄的或不考慮)節點被分成2個集合:A.被集合I中的分枝連接的節點B.剩余的節點(集合II中有且僅有一個分枝將指向其中的每一個節點)SPF算法(續)
先選擇任意一個節點作為集合A中僅有的成員,并將所有以該節點為端點的分枝放入集合II中。開始時集合I是空的,然后重復執行下面兩步:步驟⒈集合II中最短的分枝被移出并加入集合I。結果是一個節點從集合B傳送到集合A;步驟⒉考慮從該節點(剛才被傳送到集合A中的那個節點)通向集合B中節點的每一個分枝,如果構建中的分枝長于集合II中相應的分枝,那么這個分枝被丟棄;否則用它替代集合II中相應的分枝,并且丟棄后者。接著我們回到第1步并重復此過程,直到集合II和集合B為空。集合I中的分枝形成所要求的樹。SPF算法(續)
路由器采用的Dijkstra算法:步驟I:路由器初始化樹數據庫,將自己作為樹的根。這表明路由器作為它自己的鄰居,代價為0步驟2:在鏈路狀態數據庫中,所有描述通向根路由器鄰居鏈路的三元組被添加到候選對象數據庫中步驟3:計算從根到每條鏈路的代價,候選對象數據庫中代價最小的鏈路被移到樹數據庫中。如果兩個或以上的鏈路離根的最短代價相同,選擇其中一條步驟4:檢查添加到樹數據庫中的鄰居ID。除了鄰居ID已在樹數據庫中的三元組之外,鏈路狀態數據庫中描述路由器鄰居的三元組被添加到候選對象數據庫中步驟5:如果候選對象數據庫中還有剩余的表項,則回到第3步;如果候選數據庫為空,那么終止算法。在算法終止時,在樹數據庫中,每個單一的鄰居ID表項將表示1臺路由器,到此最短路徑樹構造完畢。運行SPF算法候選庫到達根的費用樹庫說明
RA,RA,0路由器A把自己加入樹庫,作為根RA,RB,2RA,RD,4RA,RE,4244RA,RA,0把RA的鏈路到達的所有的鄰居加入候選列表RA,RD,4RA,RE,4RB,RC,1RB,RE,1044312RA,RA,0RA,RB,2(RA,RB,2)是候選列表中費用最低的鏈路,因此將其加入樹庫。
將RB的所有未在樹庫的鄰居加入候選列表。從(RA,RE,4)到達RE的鏈路費用比(RB,RE,10)更低,因此將后者從候選列表中刪除運行SPF算法(續)RA,RD,4RA,RE,4RC,RF,2445RA,RA,0RA,RB,2RB,RC,1(RB,RC,1)是候選列表中費用最低的鏈路,因此將其加入樹庫。將RC的所有未在樹庫的鄰居加入候選列表。RA,RE,4RC,RF,2RD,RE,3RD,RG,54579RA,RA,0RA,RB,2RB,RC,1RA,RD,4(RA,RD,4)與(RA,RE,4)從根RA開始的費用都是4;而(RC,RF,2)的費用是5。因此(RA,RD,4)被加入樹庫,并將RD的所有未在樹庫的鄰居加入候選列表。從根RA到達RE的更高費用的路徑被刪除運行SPF算法(續)RC,RF,2RD,RG,5RE,RF,2RE,RG,1RE,RH,8596512RA,RA,0RA,RB,2RB,RC,1RA,RD,4RA,RE,4(RA,RE,4)被加入樹庫,而RE的未在樹庫的鄰居被加入候選列表。到達RG的更高費用的路徑被刪除RE,RF,2RE,RG,1RE,RH,8RF,RH,465129RA,RA,0RA,RB,2RB,RC,1RA,RD,4RA,RE,4RC,RF,2(RC,RF,2)*被加入樹庫,而RF的未在樹庫的鄰居被加入候選列表。到達RH的更高費用的路徑被刪除*注:當然也可以選擇(RE,RG,1)因為它的從根RA開始的費用也是5。
運行SPF算法(續)RF,RH,49RA,RA,0RA,RB,2RB,RC,1RA,RD,4RA,RE,4RC,RF,2RE,RG,1(RE,RG,1)被加入樹庫,而RG沒有未在樹庫的鄰居,因此沒有新的鏈路被加入候選列表中。(RE,RF,2)被丟棄,因為從根RA到達RF的路徑RA-RE-RF的費用為6,而在樹庫中RA-RB-RC-RF的費用為5
RA,RA,0RA,RB,2RB,RC,1RA,RD,4RA,RE,4RC,RF,2RE,RG,1RF,RH,4(RF,RH,4)是候選列表中費用最低的鏈路,因此將其加入樹庫。此時候選列表已經為空,因此算法結束,最短路徑樹完成。區域一個區域是構成一個網絡的路由器的一個子集。將網絡劃分為區域是針對鏈路狀態協議的3個不利影響所采取的措施:必要的數據庫要求內存的數量比距離矢量協議更多復雜的算法要求CPU時間比距離矢量協議更多
鏈路狀態泛洪擴散數據包對可用帶寬帶來了不利的影響,特別是不穩定的網絡使用區域減少系統LS需要的資源OSPFv2開放最短路徑優先協議(OSPF)是由Internet工程任務組(IETF)開發的路由選擇協議,用來替代存在問題的RIP協議OSPF協議是IETF建議使用的內部網關協議(IGP)OSPF協議是一個鏈路狀態協議,使用Dijkstra的最短路徑優先(SPF)算法,而且是開放的OSPFv1(RFC1131)只在實驗平臺使用;OSPFv2是目前IPv4協議仍然使用的版本,最初在RFC1247中說明的,最新是在RFC2328中說明OSPFv2協議的主要特點使用了區域的概念,這樣可以有效地減少路由選擇協議對路由器的CPU和內存的占用。劃分區域還可以降低路由選擇協議的通信量,這使構建一個層次化的網絡拓撲成為可能完全無類別地處理地址,排除了不連續子網這樣的有類別路由選擇協議的問題支持無類別路由表查詢、VLSM和用來進行有效地址管理的超網技術支持無大小限制的、任意的度量值支持使用多條路徑的效率更高的等價負載均衡使用保留的組播地址來減小對運行0SPF的設備的影響支持更安全的路由選擇認證使用可以跟蹤外部路由的路由標記OSPFv2操作1.0SPF路由器從所有啟動0SPF協議的接口上發出Hello數據包。如果共享一條公共鏈路的路由器能夠相互成功協商某些參數,那么它們就成為了鄰居2.建立鄰接關系:鄰接關系可以想象成為一條點到點的虛鏈路,是在一些鄰居路由器之間構成的關系。鄰接關系的建立是由交換Hello信息的路由器類型和交換Hello信息的網絡類型確定的3.每個路由器都會在所有形成鄰接關系的鄰居之間發送鏈路狀態通告LSA。LSA描述了路由器所有的鏈路、接口、鄰居以及鏈路狀態信息OSPF定義了許多LSA類型4.每個收到來自鄰居的LSA的路由器把這些LSA記錄在自己的鏈路狀態數據庫中,并將其擴散到自己的其他所有鄰居5.通過LSA泛洪擴散到整個區域,所有的路由器將形成相同的鏈路狀態數據庫6.當所有路由器的數據庫完全相同時,每個路由器都以自身為根,使用SPF算法來計算一個無環路的算法樹7.每個路由器利用SPF算法樹構建自己的路由表路由器ID(RouterID)路由器ID用于在0SPF區域內惟一標識一臺路由器。一臺0SPF路由器對其他0SPF路由器的跟蹤也是利用路由器CISCO路由器使用下面的方法確定路由器ID:如果使用router-id命令手工配置RouterID,就使用該RouterID如果沒有手工配置RouterID,路由器就選取它所有的回送(loopback)接口上數值最高的IP地址作為RID如果路由器沒有配置IP地址的loopback接口,那么路由器將選取它所有的物理接口上數值最高的IP地址作為RIDHello協議Hello協議可用于下列幾個目的:用于發現鄰居路由器在兩臺路由器成為鄰居之前,通告相互認可的幾個參數鄰居路由器之間擔當Keep-alive的角色確保鄰居路由器之間的雙向通信用于在一個廣播網絡或非廣播多路訪問(NBMA)網絡上選取指定路由器(DesignatedRouter,DR)和后備指定路由器(BackupDesignatedRouter,BDR)HelloIntervel和RouterDeadIntervel0SPF路由器周期性地從啟動0SPF協議的每個接口上發送Hello數據包。該周期性的時間段稱為Hello時間間隔(HelloIntervel),每個接口都有對應的Hello間隔時間在CISCO路由器上,對于廣播型網絡,缺省Hello時間間隔是10s;對于非廣播型網絡,缺省值是30s??梢酝ㄟ^命令:ip
ospfhello-interval來更改如果一臺路由器在一個稱為路由器無效時間間隔(RouterDeadIntervel)的時間段內還沒有收到來自鄰居的Hello數據包,那么將宣告它的鄰居路由器無效在CISCO路由器中,路由器無效時間間隔的缺省值是Hello時間間隔的4倍,可以通過命令ip
ospfdead-interval修改Hello包的內容每個Hello數據包都包含以下信息:始發路由器的路由器始發路由器接口的區域ID始發路由器接口的地址掩碼始發路由器接口的認證類型和認證信息始發路由器接口的Hello時間間隔始發路由器接口的路由器無效時間間隔路由器的優先級指定路由器(DR)和備份指定路由器(BDR)標識可選性能的5個標記位始發路由器的所有有效鄰居的路由器ID,這個列表僅包含一些所謂有效的鄰居路由器,即在最近的路由器無效時間間隔內,始發路由器接口可以從其接收到Hello數據包鄰接關系建立的必要條件當一臺路由器從它的鄰居路由器收到一個Hello數據包時,將檢驗該Hello數據包攜帶的下列信息:區域ID認證信息網絡掩碼Hello間隔時間路由器無效時間間隔其它可選項如果這些數值都與接收接口上配置的對應值相匹配,那么就可以建立鄰接關系;如果不匹配,那么該數據包將被丟棄,且鄰接關系也無法建立雙向通信關系如果Hello包的所有參數都匹配,那么這個包就是有效的。如果始發路由器的路由器ID已在接收該包的接口的鄰居表中列出,那么路由器無效時間間隔定時器將被復位如果始發路由器的路由器ID沒有在鄰居表中列出,那么就把這個路由器ID加入到它的鄰居表中路由器發送一個Hello包時,都會在這個包中列出傳送該數據包的鏈路上出現并記錄的鄰居的路由器ID。如果一臺路由器收到了一個有效的Hello包,并在這個包中發現了自己的路由器ID,那么它就認為是雙向通信已經建立成功鄰接關系的形成條件一旦雙向通信成功建立,鄰接關系也就可能建立了,但并不是所有的鄰居路由器都會成為鄰接對象鄰接關系的形成與否是依賴于這兩臺互為鄰居的路由器所連網絡的類型;而且網絡類型也影響0SPF數據包傳送的方式網絡類型OSPF協議定義了以下5種網絡類型:(1)點到點網絡(2)廣播型網絡(3)非廣播多路訪問(NBMA)網絡(4)點到多點網絡(5)虛鏈路網絡類型(續)點到點網絡:像T1、DS-3或SONET鏈路等,是連接單獨一對路由器的。在點到點網絡上的有效鄰居總是可以形成鄰接關系。在這些網絡上的0SPF數據包的目的地址也總是保留的D類地址224.0.0.5,這個組播地址稱為AllSPFRouters。網絡類型(續)廣播型網絡:像以太網、令牌環網和FDDI等,都屬于廣播型多址網絡,這種多址網絡可以連接多于兩臺的設備,而且連接在這種網絡上的所有設備都可以接收到某個傳送的數據包。廣播型網絡上的0SPF路由器會選舉一臺指定路由器和一臺后備指定路由器。Helllo數據包以組播方式發送到AllSPFRouters(224.0.0.5),MAC組播地址是0100.5E00.0005。其他所有的路由器都將以組播方式發送鏈路狀態更新數據包和鏈路狀態確認數據包保留的D類地址224.0.0.6,這個組播地址稱為AllDRouters,對應的MAC組播地址是0100.5E00.0006網絡類型(續)非廣播多路訪問(NBMA)網絡:像X.25、幀中繼和ATM等,可以連接兩臺以上的路由器,但它們沒有廣播數據包的能力。一臺位于在NBMA網絡上的路由器發送的數據包將不能被其他與之相連的路由器收到。因此在這些網絡上的路由器必須增加另外的配置來獲得它們的鄰居。此外,在NBMA網絡上的0SPF路由器需要選舉DR和BDR,并且所有的0SPF數據包都是單播的。網絡類型(續)點到多點網絡:點到多點網絡是NBMA網絡的一個特殊配置,可以被看作是一群點到點鏈路的集合。在這些網絡上的0SPF路由器不需要選舉DR和BDR,0SPF數據包以單播方式發送給每一個已知的鄰居網絡類型(續)虛鏈路:可以被路由器認為是沒有編號的點到點網絡的一種特殊配置。在虛鏈路上0SPF數據包是以單播方式發送的另一種網絡類型分類所有的網絡也都可以分為下面兩種更普通的網絡類型之一:傳送網絡(TransitNetwork):與兩臺或兩臺以上的路由器相連的網絡。這種網絡中傳輸的數據包的始發網絡和目的網絡都不同于當前的傳送網絡末梢網絡(StubNetwork):僅與一臺路由器相連的網絡。末梢網絡上的數據包總是有一個源地址或者目的地址屬于這個末梢網絡。OSPF協議在末梢網絡上通告主機路由(hostroute,就是網絡掩碼為255.255.255.255的路由)。loopback接口也可以認為是末梢網絡,并當作主機路由來通告。OSPF在多址網絡上泛洪擴散問題在多址網絡上有關LSA的泛洪擴散存在兩個問題:在構建相關路由器之間的鄰接關系時,會創建很多不必要的LSA多址網絡本身的泛洪擴散顯得比較混亂。某一臺路由器向與它存在鄰接關系的所有鄰居發出LSA,同樣地,這些鄰接的鄰居路由器又向與它有鄰接關系的鄰居的鄰居發出這個LSA,這樣將會在同一個網絡上創建很多個相同LSA的副本利用DR與BDR解決問題指定路由器(DR)的作用DR將完成以下工作:描述多路訪問網絡和0SPF區域內其余與其相連的路由器管理多路訪問網絡上的泛洪擴散過程偽節點(或虛擬路由器)當計算SPF樹的時候,把廣播鏈路看作一個偽節點(或者叫“虛擬路由器”),與該鏈路相連的路由器都連接到這個節點上從與偽節點相連的路由器到這個偽節點的代價就是該路由器與這個廣播鏈路相連的接口的出站代價;從偽節點到任何與之相連的路由器的代價都為0偽節點的理解設置BDR的目的指定路由器具有非常重要的作用,如果一臺指定路由器失效了,就必須選取一臺新的指定路由器。同時,網絡上的所有路由器也要重新建立新的鄰接關系,并且網絡上所有的路由器必須與新選出的指定路由器同步它們的鏈路狀態數據庫,但當所有上述的過程發生時,網絡將無法有效地傳送數據包--太長的延遲時間!為了避免這個問題,在網絡上除了選取DR,再選取一臺BDR。網絡上所有的路由器將同時與DR和BDR形成鄰接關系。DR和BDR之間也將互相形成鄰接關系。此時,如果DR失效了,BDR將成為新的DR。由于網絡上其余的路由器已經與BDR形成了鄰接關系,因此網絡可以將無法傳送數據包的影響降低到最小的程度DR/BDR選取的前提條件能夠實施選取過程一些前提條件:每臺路由器的每個多點訪問接口都有一個路由器的優先級,用一個8位的無符號整數來表示,范圍是0~255(Cisco路由器上缺省的優先級是1,可以通過命令ip
ospfpriority來修改)。具有0優先級的路由器將不能成為DR或者BDRHello數據包包含了表示始發路由器指定的路由器優先級字段,也包含了表示路由器認為可能是DR和BDR的相關接口的IP地址的字段當一個接口在一個多址網絡上剛開始有效時,將把它的DR和BDR的地址都設置為0.0.0.0,同時將等待定時器(waittimer)的值設置為路由器無效時間間隔(RouterDeadInterval)在多址網絡上已經存在的接口將把DR和BDR的地址記錄在接口數據結構表中DR和BDR的選取過程(1)在路由器和它的鄰居路由器之間首先建立雙向通信,接著檢查每臺鄰居路由器發送的Hello包的優先級、DR和BDR字段。列出所有具有DR和BDR選取資格的路由器的列表,接著所有的路由器將宣稱自己是DR路由器,所有的路由器也將宣稱自己是BDR路由器(2)從具有選取資格的路由器列表中,創建一個還沒有宣告為DR路由器的所有路由器的子集(宣告自己為DR的路由器不能被選為BDR)(3)如果這個子集中的一臺或者多臺鄰居路由器在Hello包的BDR字段包含了它們自己的接口地址,那么具有最高優先級的鄰居路由器將被宣告為BDR路由器。在優先級相同時具有最高路由器ID的鄰居路由器將被選作BDR(4)如果子集中沒有路由器宣稱自己是BDR,那么具有最高優先級的鄰居路由器將被宣告為BDR路由器。在優先級相同時具有最高路由器ID的鄰居路由器將被選作BDR(5)如果一臺或多臺具有選取資格的路由器在Hello包的DR字段包含它們自己的接口地址,那么具有最高優先級的鄰居路由器將被宣告為DR路由器。在優先級相同時具有最高路由器ID的鄰居路由器將被選作DR(6)如果沒有路由器宣稱自己是DR,那么新選取的BDR將成為DR(7)如果正在執行計算的路由器是新選取的DR或BDR,或者它不再是DR或BDR了,那么將重復以上的2~6步驟DR/BDR與優先級的關系在一個多址網絡上,最先初始化啟動的兩臺具有DR選取資格的路由器將成為DR和BDR路由器路由器的優先級可以影響一個選取過程對于已經選出DR/BDR的網絡,不能強制更換已經有效的DR或BDR路由器例如已經選取了DR和BDR路由器后,如果一臺具有更高優先級的路由器變為有效,那么這臺新的路由器將不會替換DR或BDR路由器的任何一臺DR/BDR與其余路由器的關系一旦DR和BDR路由器選取成功,其他的路由器(稱為DRothers)將只與DR及BDR路由器之間形成鄰接關系所有路由器繼續以組播方式發送Hello數據包到AllSPFRouters(組播地址是224.0.0.5),因此能夠跟蹤各自的鄰居路由器DRothers路由器只以組播方式發送更新數據包到AllDRouters(組播地址是224.0.0.6)。只有DR和BDR路由器去偵聽這個地址DR路由器使用組播地址224.0.0.5泛洪擴散更新數據包到DRothersOSPF接口及其數據結構DR和BDR的選取是通過接口狀態機的方式觸發的描述OSPF協議時可以不區分接口和鏈路這兩個術語運行OSPF協議的路由器將為每個啟動OSPF協議的接口維護一個數據結構OSPF接口數據結構AddressandMask(IP地址和掩碼):路由器接口所配置的IP地址和掩碼AreaID(區域ID):接口所在的區域ProcessID(進程ID):這是Cisco公司特有的屬性,不是0SPF協議開放標準的一部分。用于區分同一臺路由器中運行多個0SPF進程Router1D(路由器ID):路由器IDNetworkType(網絡類型):與這個接口相連的網絡類型:廣播型、點到點類型、NBMA、點到多點類型或虛鏈路等Cost(代價):表示從該接口發送出去的數據包的出站接口代價接口數據結構的其它參數InfTransDelay:指LSA從路由器的接口發送后經歷的時間,單位為秒,CISCO路由器上缺省值為1sState(狀態):接口的功能狀態RouterPriority(路由器優先級):用來選擇DR和BDR的—個8位無符號整數DesignatedRouter(指定路由器)BackupDesignatedRouter(備份指定路由器)HelloIntervalRouterDeadIntervalWaitTimer(等待計時器):在開始選取DR和BDR之前,路由器等待鄰居路由器的Hello包通告DR和BDR的時間RxmtInterval:是指在沒有得到確認的情況下,路由器重傳報文需要等待的時間,單位為秒HelloTimer(Hello定時器:初始值由HelloInterval值來設置NeighboringRouters(鄰居路由器):是指與這個接口相連的網絡上的有效鄰居路由器
AuType:使用的認證類型AuthenticationKey(認證密鑰):如果接口上啟用的是簡單認證方式,那么認證密鑰就是—個64位的口令;如果啟用的是加密認證方式,那么認證密鑰就是一個消息摘要密鑰OSPF接口狀態機接口狀態包括失效、點到點、等待、DR、BDR、DRother和Loopback等:失效(Down):初始化的接口狀態點到點:僅適用于與點到點、點到多點以及虛電路等網絡類型相連的接口,表示接口開始起作用等待(Waiting):僅適用于與廣播型、NBMA等網絡類型相連的接口。表示接口將開始發送和接收Hello包指定路由器(DR):該路由器是所連網絡的指定路由器備份(Backup):該路由器是所連網絡的后備指定路由器DRother:該路由器既不是所連網絡上的DR,也不是BDRLoopback:路由器的接口是通過軟件或硬件的方式成為回送(loopback)的。在該種狀態下接口不能發送數據包,但接口的地址還是可以通過路由器LSA通告出去OSPF接口狀態機輸入事件及其描述IE1:底層協議指明該網絡接口是可操作的IE2:底層協議指明該網絡接口是不可操作的IE3:網絡管理系統或底層協議指明該網絡按口打環路后是有效的(loopedup)IE4:網絡管理系統或底層協議指明該網絡接口打環路后是無效的(loopeddown)IE5:收到Hello數據包,在Hello包中,要么始發鄰居路由器把自身作為BDR列出,要么始發鄰居路由器把自身作為DR列出而不指明BDRIE6:等待定時器超時IE7:路由器被所在的網絡選取為DR路由器IE8:路由器被所在網絡選取為BDR路由器IE9:路由器沒有被所在網絡選取為DR或者BDR路由器IE10:表示網絡中一組有效的鄰居路由器發生了變化(多種情況)OSPF鄰居鄰居之間建立關聯關系的目的是為了形成鄰接關系,最終可以順利地傳送路由選擇信息要成功建立一個鄰接關系,通常需要下面4個階段:鄰居路由器發現階段雙向通信階段數據庫同步階段完全鄰接階段鄰居數據結構每個路由器將維護一個鄰居數據結構表,用來表示從其他路由器學習到的Hello包的信息使用命令showip
ospfneighbor可以觀察路由器一個鄰居的鄰居數據結構的信息鄰居數據結構的信息NeighborID(鄰居路由器ID):鄰居路由器的IDNeighborIPAddress(鄰居IP地址):是指與網絡相連的鄰居路由器的接口IP地址AreaID(區域ID)Interface(接口):是指與鄰居路由器所在網絡相連的接口NeighborPriority(鄰居優先級)State(狀態):指的是從本地路由器角度看到的鄰居路由器的功能狀態DesignatedRouter(指定路由器):這個地址包含在鄰居路由器發送的Hello包的DR字段中BackupDesignatedRouter(后備指定路由器):這個地址包含在鄰居路由器發送的Hello包的BDR字段中PollInterval:只用于NBMA網絡上相關的鄰居路由器NeighborOptions(鄰居路由器可選項):鄰居路由器支持的可選項InactivityTimer(失效計時器):這是一個時長為RouterDeadInterval(該參數在接口數據結構中定義)的定時器鄰居數據結構的信息(續)Master/Slave:在ExStart狀態下,鄰居之間協商的主/從關系將用來控制數據庫的同步DDSequenceNumber(數據庫描述序列號):指當前正在向鄰居路由器發送的數據庫描述的序號LastReceivedDatabaseDescriptionPacket(最后收到的數據庫描述數據包)LinkStateRetransmissionList(鏈路狀態重傳列表):這是在鄰接關系建立后,OSPF已經進行泛洪擴散,但還沒有得到確認的LSA的列表DatabaseSummaryList(數據庫摘要列表):是指在數據庫同步期間,數據庫描述報文中向鄰居路由器發送的LSA列表LinkStateRequestList(鏈路狀態請求列表):該列表記錄了來自鄰居路由器的數據庫描述報文的LSA,當路由器通過鏈路狀態更新數據包收到請求的LSA時,請求列表就會減小,直至變為空列表鄰居狀態機失效狀態(Down):鄰居會話的初始狀態嘗試狀態(Attempt):僅適用于NBMA網絡上的鄰居,路由器將使用HelloInterval時間代替PollInterval時間來作為向鄰居發送Hello包的時間間隔初始狀態(Init):表示在最近的RouterDeadInterval時間內路由器收到了來自鄰居路由器的Hello包,但是雙向通信仍然沒有建立雙向通信狀態(2-Way):本地路由器已經在來自鄰居路由器的Hello包的鄰居字段中看到了它自己的路由器ID信息交換初始狀態(ExStart):本地路由器和它的鄰居將建立起主/從關系,并確定數據庫描述報文的序號,以便為數據庫描述報文的信息交換做準備。其中具有最高路由器ID的鄰居路由器將成為“主”路由器信息交換狀態(Exchange):本地路由器將向它的鄰居路由器發送可以描述它整個鏈路狀態數據庫信息的數據庫描述數據包;也可以發送鏈路狀態請求報文給它的鄰居路由器,用來請求最新的LSA信息加載狀態(Loading):本地路由器將會向它的鄰居路由器發送鏈路狀態請求數據包,用來請求最新的LSA通告。雖然在Exchange狀態下已經發現了這些最新的LSA通告,但本地路由器還沒有收到這些LSA通告完全鄰接狀態(Full):鄰居路由器之間建立起完全鄰接關系鄰居狀態機(續)鄰居狀態機(續)IEn:表示輸入事件DPn:表示DecisionPoint判定點建立一個鄰接關系在一個鄰接關系的創建過程中,OSPF協議使用了以下3種報文類型:數據庫描述報文(類型2)鏈路狀態請求報文(類型3)鏈路狀態更新報文(類型4)數據庫描述報文中有3個標記位用來管理鄰接關系的建立過程:I位(初始位):指明所發送的是第一個數據庫描述報文M位(后繼位,More):表示后面還有DD報文MS位(主/從位,Master/Slave):當DD報文始發于一個“主”路由器時,該位置1LSA確認方法顯式確認:確認收到包含這個LSA頭部的鏈路狀態確認數據包隱式確認:確認收到包含這個LSA的相同實例(沒有其它更加新的LSA)的更新數據包數據庫同步過程當數據庫同步過程完成后,可能出現下面兩種狀態之一:如果鏈路狀態請求列表中仍然還有一些LSA條目,那么路由器將把鄰居的狀態轉換到加載(Loading)狀態如果鏈路狀態請求列表為空,那么路由器將會把鄰居的狀態轉換到完全鄰接(Full)狀態一個鄰接關系的創建過程實例建立鄰接關系實例的一點說明如果路由器的鏈路狀態請求列表中還有LSA條目,它并不需要等待Loading狀態才發送鏈路狀態請求報文在鄰居狀態還處于Exchange狀態時路由器就可以發送鏈路狀態請求報文了,這樣更加高效泛洪擴散(Flooding)泛洪擴散過程將會使用下面兩種0SPF報文:鏈路狀態更新報文(類型4)鏈路狀態確認報文(類型5)OSPF采用可靠的泛洪擴散,每個單獨傳送的LSA都必須被確認確認可以是時延的(delayed)或直接(direct)的,直接的確認總是立即發送,且以單播方式發送序列號、校驗和、老化時間當收到某條相同的LSA的多個實例時,路由器將通過下面的算法來確定哪個是最新的實例:1.比較LSA實例的序號,擁有最大的序號的LSA就是最新的LSA2.如果LSA實例的序號相同,那么比較它們的校驗和。擁有最大的無符號校驗和的LSA就是最新的LSA3.如果LSA實例的校驗和也相同,那么再比較它們的老化時間。如果只有一條LSA擁有最大生存時間的老化時間(MaxAge),那么就認為這條LSA是最新的LSA4.如果這些LSA的老化時間之間的差別多于15min(即MaxAgeDiff),那么擁有較小的老化時間的LSA就是最新的LSA5.如果上述的條件都無法區分最新的LSA,那么這兩個LSA就被認為是相同的通信量的類型定義了下面3種與區域相關的通信量的類型:域內通信量域間通信量外部通信量區域0(或者區域0.0.0.0)是為骨干域保留的區域ID號。其任務是匯總每一個區域的網絡拓撲到其他所有的區域。所有的域間通信量都必須通過骨干區域,非骨干區域之間不能直接交換數據包路由器的類型路由器的類型內部路由器區域邊界路由器(AreaBorderRouter,ABR)骨干路由器(BackboneRouter)自主系統邊界路由器(AutonomousSystemBoundaryRouter,ASBR):是0SPF域外部的通信量進入OSPF域的網關路由器,用來把其他路由選擇協議學習到的路由,通過路由選擇重分配的方式注入到0SPF域的路由器。一臺ASBR路由器可以是位于0SPF域的自主系統內部的任何路由器,可以是一臺內部路由器、骨干路由器或者ABR路由器分段區域(partitionedarea)是指由于鏈路失效而使一個區域的一個部分與其他部分隔離開來的情形如果一個非骨干的區域變成分段區域,并且在這個分段區域的任何一段區域里的所有路由器當中都還能發現一臺ABR路由器,那么這個分段區域將不會產生中斷通信服務的情況,骨干區域僅僅會把這個分段區域看成兩個單獨的區域分段區域不是孤立區域(isolatedarea),孤立區域沒有鏈路與主網絡相連虛鏈路虛鏈路是指一條通過一個非骨干區域連接到骨干區域的鏈路虛鏈路主要應用于以下幾種目的:(1)通過一個非骨干區域連接一個區域到骨干區域(2)通過一個非骨干區域連接一個分段的骨干區域兩邊的部分區域配置虛鏈路的幾條規則:虛鏈路必須配置在兩臺ABR路由器之間配置了虛鏈路所經過的區域必須擁有全部的路由選擇信息,這樣的區域又被稱為傳送區域傳送區域不能是一個末梢區域LSA的類型路由器LSA:每—臺路由器都會產生路由器LSA通告,列出了路由器所有的鏈路或接口,并指明了它們的狀態和沿每條鏈路方向出站的代價,以及該鏈路上所有已知的0SPF鄰居網絡LSA:每一個多路訪問網絡中的指定路由器(DR)將會產生網絡LSA通告,列出所有與之相連的路由器,包括DR路由器本身網絡匯總LSA:由ABR路由器始發的,發送到一個區域,用來通告該區域外部的目的地址ASBR匯總LSA:由ABR路由器始發的,通告的目的地是一臺ASBR路由器AS外部LSA:始發于ASBR路由器的、用來通告到達0SPFAS外部的目的地或者0SPFAS外部的缺省路由組成員LSA:用于組播0SPF協議(MOSPF協議)NSSA外部LSA:是指在非純末梢區域(Not-So-StubbyArea)內始發于ASBR路由器的LSA通告外部屬性LSA:IOS軟件不支持OpaqueLSA:用于對0SPF增加可變的擴展特性末梢(Stub)區域完全末梢區域:通過阻塞類型3(僅一個例外,即用來通告缺省路由的LSA)、類型4~5傳播到一個區域的方法來節省內存,使用缺省路由到達0SPFAS外部的所有目的地址非純末梢區域(NSSA):允許外部路由通告到0SPFAS內部,同時保留AS其余部分的末梢區域特征路由表的目的地類型網絡路由器路徑類型區域內路徑區域間路徑類型1的外部路徑(Type1externalpath):指目的地在0SPFAS外部的路徑類型2的外部路徑(Type2externalpath):也是指目的地在0SPFAS外部的路徑,但是在計算外部路由的度量時不再計入本地到達ASBR路由器的路徑代價認證OSPF協議對鄰居路由器之間交換的所有數據包都具有認證的能力認證可以是簡單的口令認證或MD5加密校驗和認證OSPF報文格式OSPF報文格式數據包頭部有24字節版本(Version):版本號,0SPFv2的值是2類型(Type):有5種報文類型報文長度(PacketLength):包括數據包頭部的長度路由器ID(RouterID):始發路由器的ID區域ID(AreaID):始發報文的路由器所在的區域校驗和(Checksum):對整個報文(包括包頭)的標準IP校驗和認證類型(AuType):使用的認證模式認證(Authentication):報文認證的必要信息。如果AuType=0,將不檢查這個認證字段;如果AuType=1,該字段將包含一個最長為64位的口令;如果AuTyp=2,該字段將包含一個KeyID、認證數據長度和一個不減小的加密序號。這個消息摘要附加在0SPF數據包的尾部,不作為0SPF報文本身的一部分。加密序號不會減小,用來防止重放攻擊OSPF的5種報文類型Hello報文數據庫描述(DD)報文鏈路狀態請求(LSREQ)報文鏈路狀態更新(LSUPD)報文鏈路狀態確認(LAACK)報文Hello報文DatabaseDescription報文LinkStateRequest報文LinkStateUpdate報文LinkStateAcknowledgement報文LSA格式介紹CISCO支持的類型:類型1~5和類型7的LSALSA頭部格式:LSA頭部DD報文和LSACK報文直接使用了LSA的頭部本身其中有3個字段可以惟一地識別每個LSA:類型:LSA的類型值鏈路狀態ID:指定LSA所描述的部分0SPF域,這個字段的用法與LSA的類型有關通告路由器:始發LSA的路由器的RID還有其他3個字段可以惟一地識別一個LSA的最新實例:序列號校驗和老化時間RouterLSA鏈路狀態ID:指始發路由器的路由器IDV(VirtualLinkEndpoint)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 水務集團用工合同范本
- 2025精簡版房屋租賃合同
- 2025寫字間租賃合同,辦公租賃合同范本,商務樓攤位租賃合同
- 2025園林景觀設計合同模板
- 2025年:并非所有合同糾紛均可撤銷
- 2025無合同辭職多久可以離職?合同期內辭職需要注意什么
- 2025年版房屋租賃合同范本下載2
- 合同協議書怎么寫范文
- 合同協議書格式轉換器
- 關于圖書管理員的職業路徑試題及答案
- 襄陽市樊城區城市更新投資發展有限公司招聘考試真題2024
- 2022智能變電站網絡記錄及分析裝置測試規范
- 嚴重過敏反應診斷和臨床管理專家共識(2025)解讀 2
- 2025職業健康培訓
- 2025年湖南省中考數學模擬試卷(一)(原卷版+解析版)
- 稅務局筆試試題及答案
- 2025年第六屆全國國家版圖知識競賽題庫及答案
- 網絡系統維護記錄日志表
- 禁食病人護理措施
- 存款保險知識競賽
- 信息技術必修1數據與計算2.2《做出判斷的分支》教學設計
評論
0/150
提交評論