常見的路由選擇演算法

2021-08-03 20:53:52 字數 3730 閱讀 6778

一、路由表

所謂路由表,指的是路由器或者其他網際網路網路裝置上儲存的表,該表中存有到達特定網路終端的路徑,在某些情況下,還有一些與這些路徑相關的度量。

二、常見路由表生成演算法

路由演算法是提高路由協議功能,儘量減少路由時所帶來開銷的演算法。當實現路由演算法的軟體必須執行在物理資源有限的計算機上時高效尤其重要。路由演算法必須健壯,即在出現不正常或不可預見事件的情況下必須仍能正常處理,例如硬體故障、高負載和不正確的實現。因為路由器位於網路的連線點,當它們失效時會產生重大的問題。最好的路由演算法通常是那些經過了時間考驗,證實在各種網路條件下都很穩定的演算法。

此外路由演算法必須能快速聚合,聚合是所有路由器對最佳路徑達成一致的過程。當某網路事件使路徑斷掉或不可用時,路由器通過網路分發路由更新資訊,促使最佳路徑的重新計算,最終使所有路由器達成一致。聚合很慢的路由演算法可能會產生路由環或網路中斷。

(一)靜態路由演算法

1.dijkstra演算法(最短路徑演算法)

dijkstra(迪傑斯特拉)演算法是典型的單源最短路徑演算法,用於計算乙個節點到其他所有節點的最短路徑。主要特點是以起始點為中心向外層層擴充套件,直到擴充套件到終點為止。dijkstra演算法是很有代表性的最短路徑演算法,在很多專業課程中都作為基本內容有詳細的介紹,如資料結構,圖論,運籌學等等。dijkstra一般的表述通常有兩種方式,一種用永久和臨時標號方式,一種是用open, close表的方式,這裡均採用永久和臨時標號的方式。注意該演算法要求圖中不存在負權迴路。

dijkstra演算法執行下列步驟:

1)路由器建立一張網路圖,並且確定源節點和目的節點,在這個例子裡我們設為v1和v2。然後路由器建立乙個矩陣,稱為「鄰接矩陣」。在這個矩陣中,各矩陣元素表示權值。例如,[i, j]是節點vi與vj之間的鏈路權值。如果節點vi與vj之間沒有鏈路直接相連,它們的權值設為「無窮大」。

2)路由器為網路中的每乙個節點建立一組狀態記錄。此記錄包括三個字段: 前序字段——表示當前節點之前的節點。

長度字段——表示從源節點到當前節點的權值之和。 標號字段——表示節點的狀態。每個節點都處於乙個狀態模式:「永久」或「暫時」。

3)路由器初始化(所有節點的)狀態記錄集引數,將它們的長度設為「無窮大」,標號設為「暫時」。

4)路由器設定乙個t節點。例如,如果設v1是源t節點,路由器將v1的標號更改為「永久」。當乙個標號更改為「永久」後,它將不再改變。乙個t節點僅僅是乙個**而已。

5)路由器更新與源t節點直接相連的所有暫時性節點的狀態記錄集。

6)路由器在所有的暫時性節點中選擇距離v1的權值最低的節點。這個節點將是新的t節點。

7)如果這個節點不是v2(目的節點),路由器則返回到步驟5。

8)如果節點是v2,路由器則向前回溯,將它的前序節點從狀態記錄集中提取出來,如此迴圈,直到提取到v1為止。這個節點列表便是從v1到v2的最佳路由。

2.擴散法

事先不需要任何網路資訊;路由器把收到的每乙個分組,向除了該分組到來的線路外的所有輸出線路傳送。 將來會有多個分組的副本到達目的地端,最先到達的,可能是走了「最優」的路徑 常見的擴散法是選擇性擴散演算法。

(二)動態路由演算法

1.距離向量路由演算法

距離向量路由演算法(bellman-ford routing algorithm),也叫做最大流量演演算法(ford-fulkersonalgorithm),其被距離向量協議作為乙個演算法,如rip, bgp, iso idrp, novell ipx。使用這個演算法的路由器必須掌握這個距離表(它是乙個一維排列-「乙個向量」),它告訴在網路中每個節點的最遠和最近距離。在距離表中的這個資訊是根據臨近接點資訊的改變而時時更新的。表中資料的量和在網路中的所有的接點(除了它自己本身)是等同的。這個表中的列代表直接和它相連的鄰居,行代表在網路中的所有目的地。每個資料報括傳送資料報到每個在網上的目的地的路徑和距離/或時間在那個路徑上來傳輸(我們叫這個為「成本」)。這個在那個演算法中的度量公式是跳躍的次數,等待時間,流出資料報的數量,等等。在距離向量路由演算法中,相鄰路由器之間周期性地相互交換各自的路由表備份。當網路拓撲結構發生變化時,路由器之間也將及時地相互通知有關變更資訊。 其優點是演算法簡單容易實現。缺點是慢收斂問題,路由器的路徑變化需要像波浪一樣從相鄰路由器傳播出去,過程緩慢。

每乙個相鄰路由器傳送過來的路由表都要經過以下步驟:

1)對位址為x的 路由器發過來的路由表,先修改此路由表中的所有專案:把」下一跳」欄位中的位址改為x,並把所有」距離」欄位都加1。

2)對修改後的路由表中的每乙個專案,進行以下步驟:

(1)將x的路由表(修改過的),與s的路由表的目的網路進行對比。若在x中出現,在s中沒出現,則將x路由表中的這一條專案新增到s的路由表中。

(2)對於目的網路在s和x路由表中都有的專案進行下面步驟 :

(2.1)在s的路由表中,若下一跳位址是x,則直接用x路由表中這條專案替換s路由表中的專案。

(2.2)在s的路由表中,若下一跳位址不是x

,若x路由表專案中的距離d小於s路由表中的距離,則進行更新。

3)若3分鐘還沒有收到相鄰路由器的更新表,則把此相鄰路由器記為不可到達路由器,即把距離設定為16。

2.鏈路狀態最短路由優先演算法spf

1)發現鄰居結點,並學習它們的網路位址;

2)測量到各鄰居節點的延遲或者開銷;

3)建立鏈路狀態分組;

4)使用擴散法發布鏈路狀態分組;

5)計算到每個其它路由器的最短路徑。

使用dijkstra演算法處理鏈路資訊

四、路由收斂原理

路由收斂:指網路的拓撲結構發生變化後,路由表重新建立到傳送再到學習直至穩定,並通告網路中所有相關路由器都得知該變化的過程。也就是網路拓撲變化引起的通過重新計算路由而發現替代路由的行為。

通過路由收斂可以使路由域中所有路由器對當前的網路結構和路由**達成一致的狀態。

收斂時間是指從網路的拓撲結構發生變化到網路中所有路由裝置中路由表重新保持一致的狀態轉換過程。

觸發條件

1、路由器失效

2、連線失效

3、管理度量調整等

路由表及路由選擇演算法

標準的路由表 1 下一站選路的基本思想 路由表僅指定從該路由器到目的地路徑上的下一步,而不知道到達目的地的完整路徑。2 標準的ip路由表包含許多 n,r 對序偶 n 目的網路的ip位址 routedatagram datagram,routingtable 從datagram中提取目的ip位址d,計...

計算機網路 路由選擇演算法 分類

目的 確定一條通過路由器網路好的路徑 通過,一條好的路徑指的是最低開銷的路徑。我們用圖 graph g 來描述路由選擇問題。因此,我們可以使用圖論中的一些演算法,如dijkstra演算法等等。在上圖中可以看到乙個計算機網路的抽象圖模型。一條邊的開銷可反映出對應鏈路的物理長度,上圖中未標出邊的值。對於...

路由常見演算法

1.路由演算法 路由演算法,又名選路演算法,可以根據多個特性來加以區分。演算法的目的是找到一條從源路由器到目的路由器的 好 路徑 即具有最低費用的路徑 演算法設計者的特定目標影響了該路由協議的操作 具體來說存在著多種路由演算法,每種演算法對網路和路由器資源的影響都不同 由於路由演算法使用多種度量標準...