路由和路由表生成演算法

2021-08-03 16:45:27 字數 3239 閱讀 4937

*

路由:資料報從源位址到目的位址所需要經過的路徑,由一系列節點組成。

路由節點:乙個具有路由功能的主機或者路由器,維護一張路由表,通過查詢路由表來決定向那個姐傳送資料報。

路由表:由很多路由條目組成,每個條目都指明去往某個網路的資料報應該經由哪個接收和傳送,其中最後乙個是預設路由條目。

路由條目:路由表中的每一行,每個條目主要由網路位址、子網掩碼、下一跳位址、傳送接收四部分組成,如果要傳送的資料報的目的網路位址匹配到路由表中的某一行,就按照規定接受傳送到下一跳。

在linux下可以使用route檢視路由表:

destination是目的網路位址

gateway是下一跳位址

genmask是子網掩碼

iface是傳送介面

flags中的u標誌表示此條目有效(可以禁用某些條目),g標誌表示此條目的下一跳位址是某個路由器的位址,沒有g標誌的條目表示目的網路位址是與本機介面直接相連的網路,不必經路由器**,因此下一跳位址處記為* 號。

iface是傳送介面

距離向量演算法

路由器周期性地向其相鄰路由器廣播自己知道的路由資訊,用以通知相鄰路由器自己可以到達的網路以及到達該網路的距離。相鄰路由器可以根據收到的路由資訊修改和重新整理自己的路由表。優點是演算法簡單、易於實現。缺點是慢收斂問題,路由器的路徑變化需要像波浪一樣從相鄰路由器傳播出去,過程緩慢。 

每乙個距離向量包括到達目的節點的最佳輸出線路和到達目的節點所需時間或者距離。每過一段時間,路由器會向所有的鄰居節點傳送它到每個目的節點的距離表,同時也接受每個鄰居節點發來的距離表。這樣經過一段時間就可以將網路當中每個路由器所獲得的距離向量資訊在各路由器上統一起來,這樣路由器只需要檢視這個距離向量表就可以為不同**分組找到一條最佳的路由。

鏈路-狀態路由選擇演算法

鏈路-狀態演算法(link-status,簡稱l-s),也叫最短路徑優先(shortest path first spf)演算法,它的主要做法如下:

首先由路由器向相鄰路由器傳送查詢報文,測試和它相鄰路由器的鏈路狀態。如果可以收到相鄰路由器發回的響應,則說明該相鄰路由器和這個路由器之間可以正常通訊;

在收到該路由器和其他相鄰路由器的鏈路狀態後,還向系統中所有參加最短路徑優先演算法的路由器傳送鏈路狀態報文;

各路由器收到其他路由器發來的鏈路狀態報文後,根據報文中的資料重新整理本路由器所儲存的網路拓撲結構圖。如果鏈路發生變化,路由器將啟用dijkstra演算法生成新的最短路徑優先數,並重新整理本地路由表。

ls演算法

採用ls演算法時,每個路由器必須遵循以下步驟:

確認在物理上與之相連的路由器並獲得它們的ip位址。當乙個路由器開始工作後,它首先向整個網路傳送乙個「hello」 分組資料報。每個接收到資料報的路由器都將返回一條訊息,其中包含它自身的ip位址。

測量相鄰路由器的延時(或者其他重要的網路引數,比如平均流量)。為做到這一點,路由器向整個網路傳送響應分組資料報。每個接收到資料報的路由器返回乙個應答分組資料報。將路程往返時間除以2,路由器便可以計算出延時。(路程往返時間是網路當前延遲的量度,通過乙個分組資料報從遠端主機返回的時間來測量。)該時間包括了傳輸和處理兩部分的時間——也就是將分組資料報傳送到目的地的時間以及接收方處理分組資料報和應答的時間。

向網路中的其他路由器廣播自己的資訊,同時也接收其他路由器的資訊。

在這一步中,所有的路由器共享它們的知識並且將自身的資訊廣播給其他每乙個路由器。這樣,每乙個路由器都能夠知道網路的結構以及狀態。

使用乙個合適的演算法,確定網路中兩個節點之間的最佳路由。

在這一步中,路由器選擇通往每乙個節點的最佳路由。它們使用乙個演算法來實現這一點,如dijkstra最短路徑演算法。

在這個演算法中,乙個路由器通過收集到的其他路由器的資訊,建立乙個網路圖。這個圖描述網路中的路由器的位置以及它們之間的鏈結關係。每個鏈結都有乙個數字標註,稱為權值或成本。這個數字是延時和平均流量的函式,有時它僅僅表示節點間的躍點數。

例如,如果乙個節點與目的地之間有兩條鏈路,路由器將選擇權值最低的鏈路。

dijkstra演算法

dijkstra演算法執行下列步驟:

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

路由器為網路中的每乙個節點建立一組狀態記錄。此記錄包括三個字段:

前序字段——表示當前節點之前的節點。

長度字段——表示從源節點到當前節點的權值之和。

標號字段——表示節點的狀態。每個節點都處於乙個狀態模式:「永久」或「暫時」。

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

路由器設定乙個t節點。例如,如果設v1是源t節點,路由器將v1的標號更改為「永久」。當乙個標號更改為「永久」後,

它將不再改變。乙個t節點僅僅是乙個**而已。

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

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

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

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

** 基本概念

路由收斂指網路的拓撲結構發生變化後,路由表重新建立到傳送再到學習直至穩定,並通告網路中所有相關路由器都得知該變化的過程,也就是網路拓撲變化引起的通過重新計算路由而發現替代路由的行為。通過路由收斂可以使路由域中所有路由器對當前的網路結構和路由**達成一致的狀態。收斂時間記錄的是從網路的拓撲結構發生變化到網路中所有路由裝置中路由表重新保持一致的狀態轉換過程。

觸發條件

1)路由器失效

2)連線失效

3)管理度量調整等

步驟包括:

在**層面啟動定時器,所述定時器的時長用於限定路由收斂的速度;當**層面監測到網路異常時或者控制層面對埠的關閉(shut down)命令後,在相應的**條目中置上標記;根據所述被置上的標記,取次優先的下一跳和出介面進行**;控制層面重新計算相應目的位址的路由,並且更新到**表中。本方法可以在網路狀態發生變化、需要路由收斂的第一時間,由**層面先偵測出這一變化,並直接執行收斂的結果,然後再更新路由表。由於將路由更新,**更新的操作置後,使得路由的收斂時間大大減少。

路由表生成演算法

一 幾個概念 1 路由器 是連線網際網路中的個區域網,廣域網的裝置,它會根據通道的情況自動選擇和設定路由,以最佳路徑,按前後順序傳送訊號.路由器又稱閘道器裝置是用於連線多個邏輯上分開的網路,所謂邏輯網路是代表乙個單獨的網路或者乙個子網,當資料從乙個子網傳輸到另乙個子網時,可通過路由器的路由功能來完成...

路由表條目生成演算法

在linux系統中可以使用route命令檢視路由表 destination 目的網路位址 gateway 下一跳位址 genmask 子網掩碼 iface 傳送介面 flags u標誌表示此條目有效 可以禁用某些條目 g標誌表示此條目的下一跳位址是某個路由器的位址,沒有g標誌的條目表示目的網路位址是...

路由表的生成演算法

一 幾個概念 1 路由器 是連線網際網路中的個區域網,廣域網的裝置,它會根據通道的情況自動選擇和設定路由,以最佳路徑,按前後順序傳送訊號.路由器又稱閘道器裝置是用於連線多個邏輯上分開的網路,所謂邏輯網路是代表乙個單獨的網路或者乙個子網,當資料從乙個子網傳輸到另乙個子網時,可通過路由器的路由功能來完成...