天天看點

OSPF協定詳解

CCNP OSPF協定詳解

 ​

OSPF(Open Shortest Path Fitst,ospf)開放最短路徑優先協定,是由Internet工程任務組開發的路由選擇協定,公用協定,任何廠家的裝置。

鍊路狀态路由協定(也可以說OSPF)工作原理:

每台路由器通過使用Hello封包與它的鄰居之間建立鄰接關系

每台路由器向每個鄰居發送鍊路狀态通告(LSA),有時叫鍊路狀态封包(LSP). 每個鄰居在收到LSP之後要依次向它的鄰居轉發這些LSP(泛洪)

每台路由器要在資料庫中儲存一份它所收到的LSA的備份,所有路由器的資料庫應該相同

依照拓撲資料庫每台路由器使用Dijkstra

算法(SPF算法)計算出到每個網絡的最短路徑,并将結果輸出到路由選擇表中

OSPF的簡化原理:發Hello封包——建立鄰接關系——形成鍊路狀态資料庫——SPF算法——形成路由表。

幾個概念:

OSPF的特征:

1.快速适應網絡變化

2.在網絡發生變化時,發送觸發更新

3.以較低的頻率(每30分鐘)發送定期更新,這被稱為鍊路狀态重新整理

4.支援不連續子網和CIDR

5.支援手動路由彙總

6.收斂時間短

7.采用Cost作為路徑成本

8.使用區域概念,這可有效的減少協定對路由器的CPU和記憶體的占用.

9.有路由驗證功能,支援等價負載均衡

運作OSPF的路由器需要一個能夠唯一标示自己的

Router ID

OSPF 的網絡類型:

廣播型網絡, 比如以太網,Token Ring和FDDI,這樣的網絡上會選舉一個DR和BDR,DR/BDR的發送的OSPF包的目标位址為224.0.0.5,運載這些OSPF包的幀的目标MAC位址為0100.5E00.0005;而除了DR/BDR以外的OSPF包的目标位址為224.0.0.6,這個位址叫AllDRouters

NBMA網絡, 比如X.25,Frame Relay,和ATM,不具備廣播的能力,在這樣的網絡上要選舉DR和BDR,是以鄰居要人工來指定

點到多點網絡, 是NBMA網絡的一個特殊配置,可以看成是點到點鍊路的集合. 在這樣的網絡上不選舉DR和BDR

點到點網絡, 比如T1線路,是連接配接單獨的一對路由器的網絡,點到點網絡上的有效鄰居總是可以形成鄰接關系的,在這種網絡上,OSPF包的目标位址使用的是224.0.0.5,這個多點傳播位址稱為AllSPFRouters

虛連結,它被認為是沒有編号的點到點網絡的一種特殊配置.OSPF封包以單點傳播方式發送

OSPF的DR(指定路由)與BDR(備份路由):

通過多點傳播發送Hello封包

具有最高OSPF優先級的路由器會被選為DR(255最高)

如果OSPF優先級相同具有最高路由器ID,路由器會被選為DR

DR與BDR的選舉過程?

1. 在和鄰居建立雙向通信之後,檢查鄰居的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

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

6. DR/BDR選舉完成後,其他Rother隻和DR/BDR形成鄰接關系.所有的路由器将多點傳播Hello包到224.0.0.5,以便它們能跟蹤其他鄰居的資訊.其他Rother隻多點傳播update packet到224.0.0.6,隻有DR/BDR監聽這個位址 .一旦出問題,反過來,DR将使用224.0.0.5泛洪更新到其他路由器

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中

在OSPF協定的環境下,區域(Area)是一組邏輯上的OSPF路由器和鍊路,區域是通過一個32位的區域ID(Area ID)來識别的

OSPF的區域:

在一個區域内的路由器将不需要了解它們所在區域外部的拓撲細節。在這種環境下:

路由器僅僅需要和它所在區域的其他路由器具有相同的鍊路狀态資料庫

鍊路狀态資料庫的減小也就意味着處理較少的LSA通告 

大量的LSA泛洪被限制在一個區域裡面

對于和區域相關的通信量定義了下面3種通信量的類型:

域内通信量(Intra-Area Traffic)

域間通信量(Inter-Area Traffic)

外部通信量(External Traffic) 

OSPF的路由器類型

内部路由器(Internal Router)

區域邊界路由器(Area Border Routers,ABR)

骨幹路由器(Back bone Router)

自主系統邊界路由器(Autonomous System Boundary Router,ASBR)

分段區域(Partitioned Area)是指一個區域由于鍊路的失效而使這個區域的一個部分和其他部分隔離開來的情形。

虛鍊路(Virtual Link)是指一條通過一個非骨幹區域連接配接到骨幹區域的鍊路。

在配置虛鍊路的時候,有幾條相關的規則,

虛鍊路必須配置在兩台ABR路由器之間

配置了虛鍊路所經過的區域必須擁有全部的路由選擇資訊,這樣的區域又被稱為傳送區域(Transit Area)  傳送區域不能是一個末梢區 

配置一個基本的OSPF的過程含有以下3個必要的步驟:

步驟1:确定和每一個路由器接口相連的區域;

步驟2:使用router ospf process-id指令來啟動一個OSPF程序;

步驟3:使用network area指令來指定運作OSPF協定的接口和它們所在的區域。

配置OSPF具體指令:

Router(config)#router ospf process-id

Router(config-router)#network address mask area area-id

好了我們今天所讨論的就是,OSPF網絡類型三種。通過實驗來驗證前面的理論拓撲如下,

OSPF協定詳解

基本配置,根據拓撲配置IP位址。

OSPF協定詳解
OSPF協定詳解
OSPF協定詳解
OSPF協定詳解

在路由器啟動期間,路由器上所有的接口都是管理關閉(administratively shutdown)的,如果OSPF不能發現一個有效的IP位址作為它的路由器ID,那麼OSPF将不會啟動。

解決方法-使用一個loopback接口(環回接口)

Loopback接口是一個僅在軟體上有意義的、虛拟的接口并且它總是有效(up)的,我們來給路由器設定上loopback接口,

OSPF協定詳解
OSPF協定詳解
OSPF協定詳解
OSPF協定詳解

給路由器配置OSPF協定

OSPF協定詳解
OSPF協定詳解
OSPF協定詳解
OSPF協定詳解

起了路由器協定之後檢視網絡是不是相通?

OSPF協定詳解

我們來進行檢視Router1的網絡類型

OSPF協定詳解

進入Router1、Router2的接口下進行更改,

router(config)#ip ospf network broadcast 廣播

router(config)#ip ospf network non-broadcast 非廣播

router(config)#ip ospf network point-to-point 點對點

router(config)#ip ospf network point-to-multipoint 點對多點

我們要把它改成廣播型網絡

OSPF協定詳解
OSPF協定詳解

更改後再進行檢視

OSPF協定詳解

前面我們說了,在廣播型網絡中是選擇DR與BDR的,而且是通過優先級選擇的,在優先級相同的時候看路由ID。我們的路由二的路由ID比Router1的高,是以應該是Router2為DR

OSPF協定詳解

那麼我想把Router1變成DR有沒有辦法?可以改變優先級實作

在路由器選擇好DR和BDR之後,在進入一個更高的路由器的時候是不重新選擇DR與BDR的,是以我們可以先儲存,之後在重新開機或者是重新打開(模拟器存在BUG)

OSPF協定詳解

看看是不是見效了,使得Router2變成的是BDR

OSPF協定詳解

完成了第一個實驗我們再來進行把Router2和Router3之間變成NBMA網絡

我們之前把Router2的串行接口變成的廣播

OSPF協定詳解

在Router3上進行更改

OSPF協定詳解

變成NBMA之前還得給路由器指定鄰接鄰居,因為在NBMA網絡中是不具備廣播能力,在這樣的網絡上選舉DR與BDR的時候鄰居需人工指定。

OSPF協定詳解
OSPF協定詳解

再來Router3上進行檢視是不是達到我們要的?

OSPF協定詳解

變為了NBMA網絡了,

OSPF協定詳解

ping一下看是不是已經學到相連的鄰居

OSPF協定詳解

接下來我們進行第三個實驗,把Router3和Router4變成點對多點之後還可以正常通訊,在這樣的網絡中是不選舉DR和BDR的

在Router3的串行線S1/1上是點對點網絡

OSPF協定詳解

還和剛才的指令一樣,在Router3和Router4上進行更改

OSPF協定詳解
OSPF協定詳解

更改之後檢視結果

OSPF協定詳解
OSPF協定詳解

檢查網絡的相關性,看看是不是相通

OSPF協定詳解

網絡很正常,你做了嗎?