OSPF路由協議

1.Ospf的概述:

Ospf(Open shortest Path First 開放式最短路徑優先)協議是一種典型的鏈路狀態(LS)的路由協議,一般用於同一個路由域內。在這裏,路由域是指一個自治系統(Autonomous System),即AS,它是指一組通過統一的路由政策或路由協議互相交換路由信息的網絡。在這個AS中,所有的OSPF路由器都維護一個相同的描述這個AS結構的數據庫,該數據庫中存放的是路由域中相應鏈路的狀態信息,OSPF路由器正是通過這個數據庫計算出其OSPF路由表的。作爲一種鏈路狀態的路由協議,OSPF將鏈路狀態廣播數據包LSALink State Advertisement)傳送給在某一區域內的所有路由器,這一點與距離矢量路由協議不同。運行距離矢量路由協議的路由器是將部分或全部的路由表傳遞給與其相鄰的路由器。

Ospf的數據全是靠數據包在網絡中傳輸,ospf的數據包結構圖如下:


2.OSPF基本特徵:

採用觸發更新:當鏈路狀態發生改變的時候,觸發更新路由表;

更新路由表時採用組播發送【組播地址:224.0.0.5和224.0.0.6】組播與廣播的明顯區別是無害,佔用資源少;

發送的是鏈路狀態【接口類型 地址 帶寬】;

只發送增量減少資源佔用;

支持vlsm 及子網不連續;

metric 的計算靠cost計算而cost的值的計算靠帶寬計算的,帶寬越高,metric越小而非距離矢量路由協議的hop跳數;

負載均衡等代價;

網絡規模大整個網絡能容納1000臺;

不會產生路由環路;

收斂速度快【收斂:當網絡拓撲發生變化時,路由表恢復穩定的狀態的過程】;

三張表格:爲維護這三張表消耗大量資源

i.鄰居表通過hello包來確定鄰居

ii.Lsdb(鏈路狀態數據庫)表

iii.ospf—>>產生路由表

體系化路由;

3.ospf的區域:(單區域和多區域)

單區域:在一個運行ospf的AS中,所有的路由器都在同一個區域—area0內,我們稱這樣的網絡爲單區域。

名詞解析:

Interface:路由器連入網絡的端口

Neighbors:在一個公共網絡都有端口的路由器就是鄰居。

Cost值:數據經過該端口的開銷是cost值,cost值的多少和帶寬相關,且與帶寬成反比。

Cost值的計算:在一條鏈路中各個路由器出口的cost值之和,就是該路由器到該鏈路相應路由器的開銷。


OSPF多區域:

由於每個ospf網絡內最多可以有1000臺路由器,如果所有的路由器全部都在同一個區域的話,路由器要維護路由器內的三張表格是相當耗費資源與時間的,於是我們就把一個AS劃分成多個區域。

名詞解析:

內部路由器:所有的接口屬於同一個區域

區域邊界路由器—ABR:連接一個區域和骨幹區域的路由器

骨幹路由器:至少有一個接口處在0區域的路由器

自治系統邊界路由---ASBR:執行了路由重分佈,將其他路由信息注入到OSPF協議中的

路由器

4.OSPF的hello協議:

1.hello協議的目的:

a.用於發現鄰居

b.在成爲鄰居之前,必須對hello包裏的一些參數協商成功

c.Hello包在鄰居之間扮演者keepalive的角色

d.允許鄰居之間的雙向通信

e.它在NBMA網絡上選舉DR和BDR  

     2.hello包的包含的信息:

源路由器的RID

源路由器接口的hello包發送的時間間隔,源路由器接口的無效時間間隔

源路由器的所有鄰居

源路由器的Area ID

優先級

DR/BDR ip地址

源路由器的接口的認證類型和認證信息

      末節標記位(flag bit)


5.Ospf的網絡類型:

a.廣播多路網絡:比如以太網、Token Ring(令牌環網)和FDDI,在這樣的網絡上都要進行DR和BDR的選舉。DR/BDR發送OSPF包的組播地址爲:224.0.0.5,除了BR/BDR的所有路由器發送OSPF包的組播地址爲:224.0.0.6。

b.點到點網絡(數據包採用ppp或者HDLC進行封裝):比如T1線路,是單獨連接一對路由器的網絡,也只有兩臺路由器成爲鄰居關係。

c.非廣播多路網絡(NBMA):比如X.25、幀中繼和ATM網。不具備廣播能力,鄰居需要人工指定。

d.點對多點網絡:特殊的NBMA網絡,在這個網絡上不選舉DR/BDR。

e.虛鏈路:ospf包是以unicast的方式發送的。

6.OSPF的DR/BDR的選舉

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

DR和BDR將完成如下工作:

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

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

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


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

1.路由器的每個多路訪問接口都有個路由器的優先級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 DeadInterval).


DR、BDR的選舉過程:

1.在和鄰居建立雙向(2-Way)通信之後,檢查鄰居的hello包中的priority,DR和BDR字段,列出所有可以參與選舉DR/BDR的鄰居。所有的路由器都聲明自己就是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後,又出現了一臺優先級更高的路由器的話,DR/BDR是不會重新選舉的;

6.DR/BDR選舉完成後,DRother只和DR/BDR形成鄰接關係,所有的路由器將組播hello包發到ALLSPFRouters地址224.0.0.5以便他們能跟蹤其他鄰居的信息


   7.OSPF鄰居關係的建立

OSPF路由協議通過建立交互關係來交換路由信息,但是並不是所有相鄰的路由器會建立OSPF交互關係。下面是OSPF建立交互關係的過程。

OSPF協議是通過Hello協議數據包建立及維護相鄰關係的,同時也用其來保證相鄰路由器之間的雙向通信。OSPF路由器會週期性地發送Hello數據包,當這個路由器看到自身被列於其它路由器的Hello數據包裏時,這兩個路由器之間會建立起雙向通信。

兩個OSPF路由器建立雙向通信這後的第二個步驟是進行數據庫的同步,數據庫同步是所有鏈路轉狀態路由協議的最大的共性。在OSPF路由協議中,數據庫同步關係僅僅在建立交互關係的路由器之間保持。

OSPF的數據庫同步是通過OSPF數據庫描述數據包來進行的。OSPF路由器週期性地產生數據庫描述數據包,該數據包是有序的,即附帶有序列號,並將這些數據包對相鄰路由器廣播。相鄰路由器可以根據數據庫描述數據包的序列號與自身數據庫的數據作比較,若發現接收到的數據比數據庫內的數據序列號大,則相鄰路由器會針對序列號較大的數據發出請求,並用請求得到的數據來更新其鏈路狀態數據庫。

我們可以將OSPF相鄰路由器從發送Hello數據包,建立數據庫同步至建立完全的OSPF交互關係的過程分成幾個不同的狀態,分別爲:

Down:這是OSPF建立交互關係的初始化狀態,表示在一定時間之內沒有接收到從某一相鄰路由器發送來的信息。在非廣播性的網絡環境內,OSPF路由器還可能對處於Down狀態的路由器發送Hello數據包。

Attempt:該狀態僅在NBMA環境,例如幀中繼、X.25或ATM環境中有效,表示在一定時間內沒有接收到某一相鄰路由器的信息,但是OSPF路由器仍必須通過以一個較低的頻率向該相鄰路由器發送Hello數據包來保持聯繫。

Init:在該狀態時,OSPF路由器已經接收到相鄰路由器發送來的Hello數據包,但自身的IP地址並沒有出現在該Hello數據包內,也就是說,雙方的雙向通信還沒有建立起來。

2-Way:這個狀態可以說是建立交互方式真正的開始步驟。在這個狀態,路由器看到自身已經處於相鄰路由器的Hello數據包內,雙向通信已經建立指定路由器及備份指定路由器的選擇正是在這個狀態完成的。

Exstart:這個狀態是建立交互狀態的第一個步驟。在這個狀態,路由器要決定用於數據交換的初始的數據庫描述數據包的序列號,以保證路由器得到的永遠是最新的鏈路狀態信息。同時,在這個狀態路由器還必須決定路由器之間的主備關係,處於主控地位的路由器會向處於備份地位的路由器請求鏈路狀態信息。

Exchange:在這個狀態,路由器向相鄰的OSPF路由器發送數據庫描述數據包來交換鏈路狀態信息,每一個數據包都有一個數據包序列號。在這個狀態,路由器還有可能向相鄰路由器發送鏈路狀態請求數據包來請求其相應數據。從這個狀態開始,我們說OSPF處於Flood狀態。

Loading:在loading狀態,OSPF路由器會就其發現的相鄰路由器的新的鏈路狀態數據及自身的已經過期的數據向相鄰路由器提出請求,並等待相鄰路由器的回答。

Full:這是兩個OSPF路由器建立交互關係的最後一個狀態,在這時,建立起交互關係的路由器之間已經完成了數據庫同步的工作,它們的鏈路狀態數據庫已經一致。


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