不同狀態下的路由選擇協議
在我們學習路由選擇協議的時候,可以針對鏈路狀態和矢量狀態兩個區分開來學習。這樣也是比較形象的便于我們來記憶。現在針對這兩方面我們來簡單的介紹一下,那么重點還是對鏈路狀態路由選擇協議的相關內容的學習。
概述
如果把距離矢量路由選擇協議比作是由路標提供的信息,那么鏈路狀態路由選擇協議就是一張交通線路圖;因為它有一張完整的網絡圖,所以它是不容易被欺騙而作出錯誤的路由決策的;鏈路狀態不同于距離矢量依照傳聞進行路由選擇的工作方式,每臺路由器都會產生一些關于自己、本地直連鏈路以及這些鏈路的狀態(以此而得名)和所有直接相連鄰居的信息。這些信息從一臺路由器傳送到另一臺路由器,每臺路由器都做一份信息拷貝,但是決不改動這些信息,最終每臺路由器都有一個相同的有關網絡的信息,并且每臺路由器可以獨立地計算各自的最優路徑;
鏈路狀態協議,有時也叫最短路徑優先協議或分布式數據庫協議,是圍繞著圖論中的一個著名算法-E.W.Dijkstra的最短路徑算法設計的;
鏈路狀態協議有以下幾種:
IP開放式最短路徑優先OSPF;
CLNS或IPISO的中間系統到中間系統IS-IS;
DEC的DNA階段5;
Novell的NetWare鏈路服務協議NLSP.
鏈路狀態路由選擇協議的基本步驟如下:
1、每臺路由器與它的鄰居之間建立聯系,這種聯系稱為鄰接關系;
2、每臺路由器向每個鄰居發送鏈路狀態通告LSA。對每臺路由器鏈路都會生成一個LSA,LSA用于標識這條鏈路、鏈路狀態、路由器接口到鏈路的代價度量值以及鏈路所連接的所有鄰居。每個鄰居在收到通告后將依次向它的鄰居轉發(泛洪)這些通告;
3、每臺路由器要在數據庫中保存一份它所收到的LSA的備份,如果所有路由器工作正常,那么它們的鏈路狀態數據庫應該相同;
4、完整的拓撲數據庫,也叫做鏈路狀態數據庫,Dijkstra算法使用它對網絡圖進行計算得出到每臺路由器的最短路徑;接著鏈路狀態協議對鏈路狀態數據庫進行查詢找到每臺路由器所連接的子網,并把這些信息輸入到路由表中.
鄰居
鄰居發現是建立鏈路狀態環境并運轉的第一步,它將使用Hello協議(HelloProtocol)。Hello協議定義了一個Hello數據包的格式和交換數據包并處理數據包信息的過程;Hello數據包至少應包含一個路由器IDCRID和發送數據包的網絡地址。路由器ID可以將發送該數據包的路由器與其他路由器惟一地區分開,例如,路由器ID可以是路由器一個接口的IP地址。數據包的其他字段可以攜帶子網掩碼、Hello間隔、線路類型描述符和幫助建立鄰居關系的標記,其中Hello間隔是路由器在宣布鄰居死亡之前等待的最大周期;
當兩臺路由器已經互相發現并將對方視為鄰居時,它們要進行數據庫同步過程,即交換和確認數據庫信息,直到數據庫相同為至;為了執行數據庫同步,鄰居之間必須建立鄰接關系,即這們必須就某些特定的協議參數,如計時器和對可選擇能力的支持,達成一致意見。通過使用Hello數據包建立鄰接關系,鏈路狀態協議就可以在受控的方式下交換信息,與距離矢量相比,這種方式僅在配置了路由選擇協議的接口上廣播更新信息(組播)!
除建立鄰接關系外,Hello數據包還可作為監視鄰接關系的握手信號。如果在特定的時間內沒有從鄰接路由器收到Hello數據包,那么就認為鄰居路由器不可達,隨即鄰接關系被解除。典型的Hello數據包交換間隔為10s,典型的死亡周期是交換間隔的4倍.