1.鏈路狀態資料庫(lsdb)
除了洪氾擴散lsa,發現鄰居外,鏈路狀態協議的第三個任務就是建立鏈路狀態資料庫。鏈路狀態資料庫把接收的lsa作為一串記錄儲存下來。雖然lsa中包括年齡、序列號和其他資訊,但這些資訊都是用於管理lsa洪氾擴散程序。對於最短路徑的決策程序來說,通告路由器id,連線網路和鄰居路由器以及網路和鄰居相關聯的代價是非常重要的資訊。
lsa中的兩類通用資訊:
路由器鏈路資訊——使用三元組(路由器id,鄰居id,代價)通告鄰居路由器。這裡的代價是鏈路到鄰居的代價。
末梢網路資訊——使用三元組(路由器id,網路id,代價)通告路由器直接相連的末梢網路。
最短路徑優先演算法對路由器鏈路資訊進行計算以建立到達每台路由器的最短路徑樹,然後使用末梢網路資訊新增網路。
上圖中給出的網路包括路由器及路由器之間的鏈路。簡單起見沒有末梢網路。注意,在幾條鏈路兩端的代價是不同的。因為代價是按照介面的出站方向計算的,且在乙個網路中所有的代價沒有必要完全相同。如,rb到rc的鏈路代價為1,但對於相同鏈路,從rc到rb的代價為5.
拓撲圖所示網路的鏈路狀態資料庫大致如下:
2.spf演算法
spf演算法中的三個資料庫:
1)樹資料庫——通過向資料庫中新增鏈路實現向最短路徑樹中新增分支。當演算法完成時,這個資料庫可以描述最短路徑樹。
2)候選物件資料庫——按照規定的順序從鏈路狀態資料庫中複製鏈路到該資料庫中,作為向樹資料庫新增的候選物件。演算法完成時該資料庫為空。
3)鏈路狀態資料庫——儲存著網路中的所有鏈路。
spf演算法計算過程:
第1步:路由器初始化樹資料庫,將自己作為樹的根。代價為0.
第2步:檢視鏈路狀態資料庫,將所有描述通向根的路由器鄰居鏈路三元組新增到候選物件資料庫中。
第3步:計算從根到每條鏈路的代價,將候選物件資料庫中代價最小的鏈路新增到樹資料庫中,如果2條或多條鏈路距離根的最小代價相同,選擇其中一條新增。
第4步:檢查新增到樹資料庫中的鄰居id,除了已經新增到樹資料庫中的三元組之外,將鏈路狀態資料庫中描述路由器鄰居的三元組都新增到候選物件資料庫中。
第5步:如果候選物件資料庫中還有剩餘的表項,回到第3步。如果候選物件資料庫為空,那麼終止演算法。在演算法終止時,樹資料庫中的每個單一的鄰居id表項將表示一台路由器。此時,最短路徑樹構建完成。
第6步:新增末梢網路。到此spf演算法完成。
以拓撲圖中的路由器a為例,計算最短路徑樹:
SPF演算法介紹
當鏈路狀態路由演算法構建完lsdb後,接下來節要呼叫spf演算法,對lsdb內的lsa進行處理,計算出所有路徑。spf演算法在 routing tcp ip volmun i 的ospf章節中有描述。spf演算法簡單描述如下 lsdb已收斂 一 選定根節點 二 遍歷該選定節點的所有直連節點。遍歷過程...
SPF(最短路徑樹)演算法
構造一棵樹 a 使n個節點之間的總長最小 樹是乙個在每兩個節點之間僅有一條路徑的圖 在我們給出構造過程中,分支被分成3個集合 被明確分配給構造中的樹的分支 他們將在子樹中 這個分支的隔壁分枝被新增到集合1 剩餘的分支 拋棄或不考慮 節點被分成兩個集合 a 被集合1中的分支連線的節點 b 剩餘的節點 ...
SPF的最短路徑演算法
常見的路由協議比如rip igrp bgp是距離向量協議,ospf和isis是資料鏈路狀態協議。向量協議路由器只知道本身和與自身相連的介面路由資訊,向量圖只是一張方向圖,在路由傳播的過程中,容易造成環路。rip路由器採用扁平化設計規避環路,bgp則採用as path規避環路。ospf是資料鏈路狀態路...