天天看點

溫故而知新——OSPF(二)

Network Types

OSPF定義了五種網絡類型,分别是:

1、點到點網絡(Point-to-point networks)

2、廣播網絡(Broadcast networks)

3、非廣播多點通路網絡(Non-broadcast Multi-access networks NBMA)

4、點到多點網絡(Point-to-multipoint networks)

5、虛拟鍊路(Virtual links)

點到點網絡連接配接一對路由器。在點到點網絡上,有效的OSPF鄰居路由器之間總會形成鄰接關系。在點到點網絡上,OSPF資料包的目的位址始終是224.0.0.5。這個位址稱為AllSPFRouters,是一個預留的D類IP位址。

廣播網絡是一個多點通路的網絡,在廣播網絡中可以連接配接兩台以上的裝置。并且在這個網絡上可以傳輸廣播資料包。一個廣播資料包被發送到這個網絡後,所有裝置都可以接收到。連接配接到廣播網絡上的OSPF路由器會推選出一個路由器作為DR和一個路由器作為BDR。由DR和BDR以多點傳播方式發送目的位址為224.0.0.5的Hello資料包到廣播網絡上,承載這個資料包的幀的目的MAC位址為0100.5E00.0005。廣播網絡上的其它OSPF路由器會以多點傳播方式發送鍊路狀态更新(LSU:Link State Update)和鍊路狀态回執(LSA:Link State Acknowledgment)資料包,多點傳播資料包的目的IP位址是224.0.0.6,這個位址稱為AllDRouter。承載這個多點傳播資料包的幀的目的MAC位址是0100.5E00.0006。

非廣播多點通路網絡可以連接配接兩個以上的路由器,但是不支援廣播功能。一個資料包發送出去後,不能夠被所有的路由器接收到。是以需要對非廣播多點通路網絡上的路由器進行額外的配置,以便他們能夠發現鄰居路由器。連接配接到NBMA網絡上的OSPF路由器也會推舉DR和BDR,但是OSPF資料包是以單點傳播資料包的形式發送的。

點到多點網絡,是一種特殊配置的NBMA網絡,可以看做是多個點到點鍊路組合在一起形成的網絡類型。在點到多點網絡上,路由器之間不會推舉DR和BDR。OSPF資料包是以多點傳播方式傳輸的。

虛拟鍊路,是一種特殊配置,可以認為是一個未編号的點到點的網絡。OSPF資料包在虛拟鍊路上是以單點傳播方式傳輸。

針對上面這五種網絡類型,我們還可以進一步将它們歸納為兩種類型:Transit網絡和Stub網絡。

1、Transit網絡,連接配接有兩台或兩台以上的路由器。通常Transit網絡上的資料包僅僅是通過這個網絡傳輸。生成這個資料包的網絡和資料包傳輸的目的網絡都位于其它的位置。資料包僅僅是路過。

2、Stub網絡,要注意差別于Stub Area,在Stub網絡上隻連接配接了一個路由器。在Stub網絡上傳輸的資料包要不源位址屬于這個網絡,要不目的位址屬于這個網絡。在Stub網絡上的OSPF路由器會通告主機路由。Loopback接口也被看做是Stub網絡,并且作為主機路由來進行通告。

Designated Routers and Backup Designated Routers

在多點通路網絡中,OSPF路由協定存在着兩個和LSA擴散有關的問題:

1、位于多點通路網絡中的路由器彼此之間傳輸的鄰接資訊會生成許多不必要的LSA。

2、多點通路網絡中的LSA資料包的擴散顯得很混亂。

為了避免這些問題的出現,需要推舉一個路由器作為DR,完成以下的工作:

1、用來描述這個多點通路網絡和網絡上其它的路由器。

2、管理在多點通路網絡上的OSPF資料包的擴散操作。

采用DR的根本用于是将這個多點通路網絡看做是一個僞節點,或者說是一個虛拟的路由器。網絡上的每個路由器都與這個DR形成鄰接關系。隻有DR可以發送LSA資料包到其它的路由器。執行DR工作的實際上是一個路由器的接口,而不是一個完整的路由器。是以,我們可以看到一個路由器在一個多點通路網絡中擔任DR的角色,而在另一個多點通路網絡中隻是一台普通的路由器。

采用DR這種配置方式存在這一個問題,就是當擔任DR角色的路由器失敗後,網絡中需要重新選舉一台路由器擔任DR角色。所有的鄰接關系需要重建立立,并且所有的路由器需要與新推舉DR重新同步鍊路狀态資料庫。當執行這些操作的時候,網絡是無效的,無法傳輸資料包。

為了防止發生這種事情,在推舉DR的同時,另外增加了推舉BDR的操作。所有的路由器不僅與DR形成鄰接關系,而且也與BDR形成鄰接關系。DR和BDR之間也會建立鄰接關系。如果DR失敗,BDR就會更新為新的DR,由于其它的路由器已經與BDR形成了鄰接關系,是以網絡的失效時間就會降低到最小限度。

DR和BDR的推舉操作是由接口狀态機觸發進行的。為了能夠使DR和BDR的推舉操作能夠順利進行,必須滿足下面的前提條件:

1、路由器的每一個多點通路接口都配置設定了一個Router Priority,這是一個8bit長度的整數,取值範圍是0到255。Cisco路由器預設的優先級是1。通過執行指令ip ospf priority指令,可以在多點通路接口上修改優先級值。優先級值為0的路由器将不會成為DR或BDR。

2、在Hello資料包中包含有一個區域,這個區域中記錄了路由器的優先級值和連接配接接口的IP位址。

3、當一個多點通路接口啟動後,它将設定DR和BDR為0.0.0.0。同時設定一個時鐘:wait timer。這個時鐘值等于RouterDeadInterval時鐘值。

4、已經連接配接在多點通路網絡上的接口将會把DR和BDR的位址記錄在接口的資料結構裡。

DR和BDR的選舉過程如下:

1、鄰居路由器之間在建立了雙向的通信之後,路由器會檢查從鄰居接收到得Hello資料包裡面的優先級、DR和BDR區域。列出所有可以參與DR和BDR推舉操作的路由器清單。此後,網絡上的所有路由器都會宣稱自己就是DR和BDR,并将自己的接口位址設定到Hello資料包中的DR區域和BDR區域。路由器在進行DR和BDR的推舉計算時,也将把自己包含在内,除非路由器不具備參與DR、BDR推舉的資格。

2、從所有具備參與DR、BDR推舉資格的路由器中建立一個子集,在這個子集中包含所有那些沒有宣稱自己是DR的路由器。宣稱自己是DR的路由器不能被推舉成為BDR。

3、如果在這個子集中包含有一個或多個鄰居路由器将它們自己的IP位址設定在Hello資料包的BDR區域,那麼這些鄰居路由器中具有最高優先級的路由器将被設定成為BDR。如果優先級都相同,那麼具有最高RouterID的路由器将成為BDR。

4、如果在這個子集中沒有路由器宣稱自己是BDR,那麼,具有最高優先級的鄰居路由器将被推舉成為BDR。如果所有的鄰居路由器的優先級相同,那麼,具有最高RouterID的路由器将被推舉成為BDR。

5、一個或多個具有參與DR推舉的路由器如果将它們的IP位址設定在Hello資料包的DR區域,宣稱自己是DR。那麼具有最高優先級的鄰居路由器将會被推舉為DR。如果優先級都相同,具有最高RouterID的鄰居路由器會被推舉為DR。

6、如果沒有路由器宣稱自己是DR,那麼新推舉的BDR就會更新為DR。整個過程是先推舉BDR,再開始推舉DR。

7、如果完成計算的路由器是新被推舉的DR或BDR,或者如果他不在是DR或BDR,重複第2步到第6步的操作。

簡單來說,當OSPF路由器在網絡中激活後,它将檢查它的鄰居路由器,看是否能夠發現DR和BDR。如果它發現了一個活動的DR和BDR,這個路由器就會接受這個網絡設定。如果網絡中沒有BDR,網絡中就會開始推舉操作,并且具有最高優先級的路由器成為BDR。如果多個路由器具有相同的優先級,具有最高RouterID的路由器會成為BDR。如果沒有活動的DR,BDR就會被提升成為DR,然後執行新的BDR推舉操作。

優先級會影響到DR、BDR的推舉結果,但是如果網絡中已經存在着活動的DR和BDR,那麼路由器的優先級不會影響到已經活動的DR和BDR。也就是說,當一個具有較高優先級的路由器加入到一個網絡,而這個網絡内已經推舉有DR和BDR。那麼,這個路由器不會替代已經存在的DR和BDR。是以,在一個多點通路的網絡中,最先進行初始化的具有參與DR推舉資格的兩個路由器将會分别成為DR和BDR。

一旦完成DR和BDR推舉,其它的路由器将會僅和DR、BDR建立鄰接關系。所有的路由器繼續使用AllSPFRouter位址224.0.0.5作為目的位址多點傳播Hello資料包,目的是跟蹤它們的鄰居路由器的狀态。所有的DRothers路由器,也就是所有的非DR和非BDR路由器會使用AllDRouters位址224.0.0.6作為目的位址多點傳播更新資料包(LSU)。這個位址僅僅是會被DR和BDR監聽。DR會使用DRothers位址224.0.0.5作為目的位址以多點傳播方式擴散更新資料包。

如果網絡上隻有一台路由器有資格參與DR和BDR的推舉操作,那麼這個路由器将會成為DR,網絡上将不會出現BDR,其它所有的路由器和DR建立鄰接關系。如果在多點通路網絡上沒有一台路由器具有參與DR和BDR推舉的資格,那麼這個網絡上将不會出現DR和BDR。并且也不會有鄰接關系建立。所有的鄰居之間将會保持雙向通信的狀态。

繼續閱讀