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網絡類型三種。經過實驗來驗證前面的理論拓撲以下,
基本配置,根據拓撲配置IP地址。
在路由器啓動期間,路由器上全部的接口都是管理關閉(administratively shutdown)的,若是OSPF不能發現一個有效的IP地址做爲它的路由器ID,那麼OSPF將不會啓動。
解決方法-使用一個loopback接口(環回接口)
Loopback接口是一個僅在軟件上有意義的、虛擬的接口而且它老是有效(up)的,咱們來給路由器設置上loopback接口,
給路由器配置OSPF協議
起了路由器協議以後查看網絡是否是相通?
咱們來進行查看Router1的網絡類型
進入Router一、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 點對多點
咱們要把它改爲廣播型網絡
更改後再進行查看
前面咱們說了,在廣播型網絡中是選擇DR與BDR的,並且是經過優先級選擇的,在優先級相同的時候看路由ID。咱們的路由二的路由ID比Router1的高,因此應該是Router2爲DR
那麼我想把Router1變成DR有沒有辦法?能夠改變優先級實現
在路由器選擇好DR和BDR以後,在進入一個更高的路由器的時候是不從新選擇DR與BDR的,因此咱們能夠先保存,以後在重啓或者是從新打開(模擬器存在BUG)
看看是否是見效了,使得Router2變成的是BDR
完成了第一個實驗咱們再來進行把Router2和Router3之間變成NBMA網絡
咱們以前把Router2的串行接口變成的廣播
在Router3上進行更改
變成NBMA以前還得給路由器指定鄰接鄰居,由於在NBMA網絡中是不具有廣播能力,在這樣的網絡上選舉DR與BDR的時候鄰居需人工指定。
再來Router3上進行查看是否是達到咱們要的?
變爲了NBMA網絡了,
ping一下看是否是已經學到相連的鄰居
接下來咱們進行第三個實驗,把Router3和Router4變成點對多點以後還能夠正常通信,在這樣的網絡中是不選舉DR和BDR的
在Router3的串行線S1/1上是點對點網絡
還和剛纔的命令同樣,在Router3和Router4上進行更改
更改以後查看結果
檢查網絡的相關性,看看是否是相通
網絡很正常,你作了嗎?