OSPF協議的工作原理(2)

2013-06-04 13:53 ehlopxp 紅黑聯盟 

OSPF路由協議是一種典型的鏈路狀態(Link-state)的路由協議,一般用於同一個路由域內。在這裏,路由域是指一個自治系統 (Autonomous System),即AS,它是指一組通過統一的路由政策或路由協議互相交換路由信息的網絡

 

三 OSPF的DR及BDR

OSPF路由器在完全鄰接之前,所經過的幾個狀態:

1.Down: 初始化狀態.

2.Attempt: 只適於NBMA網絡,在NBMA網絡中鄰居是手動指定的,在該狀態下,路由器將使用HelloInterval取代PollInterval來發 送Hello包.

3.Init: 表明在DeadInterval裏收到了Hello包,但是2-Way通信仍然沒有建立起來.

4.two-way: 雙向會話建立.

5.ExStart: 信息交換初始狀態,在這個狀態下,本地路由器和鄰居將建立Master/Slave關係,並確定DD Sequence Number,接口等級高的的成爲Master.

6.Exchange: 信息交換狀態,本地路由器向鄰居發送數據庫描述包,並且會發送LSR用於請求新的LSA.

7.Loading: 信息加載狀態,本地路由器向鄰居發送LSR用於請求新的LSA .

8.Full: 完全鄰接狀態,這種鄰接出現在Router LSA和Network LSA中.

在DR和BDR出現之前,每一臺路由器和他的鄰居之間成爲完全網狀的OSPF鄰接關係,這樣5臺路由器之間將需要形成10個鄰接關係,同時將產生 25條LSA.而且在多址網絡中,還存在自己發出的LSA 從鄰居的鄰居發回來,導致網絡上產生很多LSA的拷貝,所以基於這種考慮,產生了DR和BDR.

DR將完成如下工作:

1. 描述這個多址網絡和該網絡上剩下的其他相關路由器.

2. 管理這個多址網絡上的flooding過程.

3. 同時爲了冗餘性,還會選取一個BDR,作爲雙備份之用.

DR BDR選取規則: DR BDR選取是以接口狀態機的方式觸發的.

1. 路由器的每個多路訪問(multi-access)接口都有個路由器優先級(Router Priority),8位長的一個整數,範圍是0到255,Cisco路由器默認的優先級是1優先級爲0的話將不能選舉爲DR/BDR.優先級可以通過命 令ip ospf priority進行修改.

2. Hello包裏包含了優先級的字段,還包括了可能成爲DR/BDR的相關接口的IP地址.

3. 當接口在多路訪問網絡上初次啓動的時候,它把DR/BDR地址設置爲0.0.0.0,同時設置等待計時器(wait timer)的值等於路由器無效間隔(Router Dead Interval).

DR BDR選取過程:

1. 在和鄰居建立雙向(2-Way)通信之後,檢查鄰居的Hello包中Priority,DR和BDR字段,列出所有可以參與DR/BDR選舉的鄰居.所有 的路由器聲明它們自己就是DR/BDR(Hello包中DR字段的值就是它們自己的接口地址;BDR字段的值就是它們自己的接口地址)

2. 從這個有參與選舉DR/BDR權的列表中,創建一組沒有聲明自己就是DR的路由器的子集(聲明自己是DR的路由器將不會被選舉爲BDR)

3. 如果在這個子集裏,不管有沒有宣稱自己就是BDR,只要在Hello包中BDR字段就等於自己接口的地址,優先級最高的就被選舉爲BDR;如果優先級都一樣,RID最高的選舉爲BDR

4. 如果在Hello包中DR字段就等於自己接口的地址,優先級最高的就被選舉爲DR;如果優先級都一樣,RID最高的選舉爲DR;如果選出的DR不能工作,那麼新選舉的BDR就成爲DR,再重新選舉一個BDR。

5. 要注意的是,當網絡中已經選舉了DR/BDR後,又出現了1臺新的優先級更高的路由器,DR/BDR是不會重新選舉的

6. DR/BDR選舉完成後,DRother只和DR/BDR形成鄰接關係.所有的路由器將組播Hello包到AllSPFRouters地址 224.0.0.5以便它們能跟蹤其他鄰居的信息,即DR將洪泛update packet到224.0.0.5;DRother只組播update packet到AllDRouter地址224.0.0.6,只有DR/BDR監聽這個地址.

四 OSPF鄰居關係

鄰接關係建立的4個階段:

1.鄰居發現階段

2.雙向通信階段:Hello報文都列出了對方的RID,則BC完成.

3.數據庫同步階段:

4.完全鄰接階段: full adjacency

鄰居關係的建立和維持都是靠Hello包完成的,在一般的網絡類型中,Hello包是每經過1個HelloInterval發送一次,有1個例外: 在NBMA網絡中,路由器每經過一個PollInterval週期發送Hello包給狀態爲down的鄰居(其他類型的網絡是不會把Hello包發送給狀 態爲down的路由器的).Cisco路由器上PollInterval默認60s Hello Packet以組播的方式發送給224.0.0.5,在NBMA類型,點到多點和虛鏈路類型網絡,以單播發送給鄰居路由器。鄰居可以通過手工配置或者 Inverse-ARP發現.

OSPF泛洪

Flooding採用2種報文

LSU Type 4---鏈路狀態更新報文

LSA Type 5---鏈路狀態確認報文

在P-P網絡,路由器是以組播方式將更新報文發送到組播地址224.0.0.5.

在P-MP和虛鏈路網絡,路由器以單播方式將更新報文發送至鄰接鄰居的接口地址.

在廣播型網絡,DRother路由器只能和DR&BDR形成鄰接關係,所以更新報文將發送到224.0.0.6,相應的DR以 224.0.0.5泛洪LSA並且BDR只接收LSA,不會確認和泛洪這些更新,除非DR失效 在NBMA型網絡,LSA以單播方式發送到DR BDR,並且DR以單播方式發送這些更新.

LSA通過序列號,校驗和,和老化時間保證LSDB中的LSA是最新的,

Seq: 序列號(Seq)的範圍是0x80000001到0x7fffffff.

Checksum: 校驗和(Checksum)計算除了Age字段以外的所有字段,每5分鐘校驗1次.

Age: 範圍是0到3600秒,16位長.當路由器發出1個LSA後,就把Age設置爲0,當這個LSA經過1臺路由器以後,Age就會增加1個LSA保存在LSDB中的時候,老化時間也會增加.

當收到相同的LSA的多個實例的時候,將通過下面的方法來確定哪個LSA是最新的:

1. 比較LSA實例的序列號,越大的越新.

2. 如果序列號相同,就比較校驗和,越大越新.

3. 如果校驗和也相同,就比較老化時間,如果只有1個LSA擁有MaxAge(3600秒)的老化時間,它就是最新的.

4. 如果LSA老化時間相差15分鐘以上,(叫做MaxAgeDiff),老化時間越小的越新.

5. 如果上述都無法區分,則認爲這2個LSA是相同的.

五 OSPF區域

區域長度32位,可以用10進制,也可以類似於IP地址的點分十進制分3種通信量

1. Intra-Area Traffic:域內間通信量

2. Inter-Area Traffic:域間通信量

3. External Traffic:外部通信量

路由器類型

1. Internal Router:內部路由器

2. ABR(Area Border Router):區域邊界路由器

3. Backbone Router(BR):骨幹路由器

4. ASBR(Autonomous System Boundary Router):自治系統邊界路由器。

虛鏈路(Virtual Link)

以下2中情況需要使用到虛鏈路:

1. 通過一個非骨幹區域連接到一個骨幹區域.

2. 通過一個非骨幹區域連接一個分段的骨幹區域兩邊的部分區域.

虛鏈接是一個邏輯的隧道(Tunnel),配置虛鏈接的一些規則:

1. 虛鏈接必須配置在2個ABR之間.

2. 虛鏈接所經過的區域叫Transit Area,它必須擁有完整的路由信息.

3. Transit Area不能是Stub Area.

4. 盡口的避免使用虛鏈接,它增加了網絡的複雜程度和加大了排錯的難度.

OSPF區域—OSPF的精華

Link-state 路由在設計時要求需要一個層次性的網絡結構.

OSPF網絡分爲以下2個級別的層次:

骨幹區域 (backbone or area 0)

非骨幹區域 (nonbackbone areas)

在一個OSPF區域中只能有一個骨幹區域,可以有多個非骨幹區域,骨幹區域的區域號爲0。

各非骨幹區域間是不可以交換信息的,他們只有與骨幹區域相連,通過骨幹區域相互交換信息。

非骨幹區域和骨幹區域之間相連的路由叫邊界路由(ABRs-Area Border Routers),只有ABRs記載了各區域的所有路由表。各非骨幹區域內的非ABRs只記載了本區域內的路由表,若要與外部區域中的路由相連,只能通過 本區域的ABRs,由ABRs連到骨幹區域的BR,再由骨幹區域的BR連到要到達的區域。

骨幹區域和非骨幹區域的劃分,大大降低了區域內工作路由的負擔。

六 LSA類型

1.類型1:Router LSA:每個路由器都將產生Router LSA,這種LSA只在本區域內傳播,描述了路由器所有的鏈路和接口,狀態和開銷.

2.類型2:Network LSA:在每個多路訪問網絡中,DR都會產生這種Network LSA,它只在產生這條Network LSA的區域泛洪描述了所有和它相連的路由器(包括DR本身).

3.類型3:Network Summary LSA :由ABR路由器始發,用於通告該區域外部的目的地址.當其他的路由器收到來自ABR的Network Summary LSA以後,它不會運行SPF算法,它只簡單的加上到達那個ABR的開銷和Network Summary LSA中包含的開銷,通過ABR,到達目標地址的路由和開銷一起被加進路由表裏,這種依賴中間路由器來確定到達目標地址的完全路由(full route)實際上是距離矢量路由協議的行爲

4.類型4:ASBR Summary LSA:由ABR發出,ASBR彙總LSA除了所通告的目的地是一個ASBR而不是一個網絡外,其他同NetworkSummary LSA.

5.類型5:AS External LSA:發自ASBR路由器,用來通告到達OSPF自主系統外部的目的地,或者OSPF自主系統那個外部的缺省路由的LSA.這種LSA將在全AS內泛洪

6.類型6:Group Membership LSA

7.類型7:NSSA External LSA:來自非完全Stub區域(not-so-stubby area)內ASBR路由器始發的LSA通告它只在NSSA區域內泛洪,這是與LSA-Type5的區別.

不透明LSA:

8.類型8:External Attributes LSA

9.類型9:Opaque LSA(link-local scope,)

10.類型10:Opaque LSA(area-local scope)

11.類型11:Opaque LSA(AS scope)

OSPF末節區域

這種區域不接受本自治系統以外的路由信息,位於Stub邊界的ABR將宣告一條默認路由到所有的Stub區域內的內部路由器.

末節區域限制:

a) 所有位於stub area的路由器必須保持LSDB信息同步, 並且它們會在它的Hello包中設置一個值爲0的E位(E-bit),因此這些路由器是不會接收E位爲1的Hello包,也就是說在stub area裏沒有配置成stub router的路由器將不能和其他配置成stub router的路由器建立鄰接關係.

b) 不能在stub area中配置虛鏈接(virtual link),並且虛鏈接不能穿越stub area.

c) stub area裏的路由器不可以是ASBR.stub area可以有多個ABR,但是由於默認路由的緣故,內部路由器無法判定哪個ABR纔是到達ASBR的最佳選擇.

完全末節區域:不接受外部自治系統路由或來自本自治系統內其他區域的的彙總路由(Cisco專有特性)。

次末節區域(NSSA):允許外部路由被宣告OSPF域中來,同時保留Stub Area的特徵,因此NSSA裏可以有ASBR,ASBR將使用type7-LSA來宣告外部路由,但經過ABR,Type7被轉換爲Type5.7類 LSA通過OSPF報頭的一個P-bit作Tag,如果NSSA裏的ABR收到P位設置爲1的NSSA External LSA,它將把LSA類型7轉換爲LSA類型5.並把它洪泛到其他區域中;如果收到的是P位設置爲0的NSSAExternal LSA,它將不會轉換成類型5的LSA,並且這個類型7的LSA裏的目標地址也不會被宣告到NSSA的外部NSSA在IOS11.2後支持.

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章