一、相關名詞
1.路由
路由(名詞):資料報從源位址到目的位址所經過的路徑,由一系列路由節點組成。
路由(動詞):從乙個介面上收到資料報,根據資料報的目的位址進行定向並**到另乙個介面的過程。
2.路由節點
⼀個具有路由能⼒的主機或路由器,它維護⼀張路由表,通過查詢路由表來決定向哪個介面傳送資料報。
3.介面
路由節點與某個⽹絡相連的⽹卡介面。
4.路由表
由很多路由條⽬組成,每個條⽬都指明去往某個⽹絡的資料報應該經由哪個接⼜傳送,其中最後⼀條是預設路由條⽬。
路由條⽬
路由表中的⼀⾏,每個條⽬主要由⽬的⽹絡位址、⼦⽹掩碼、下⼀跳位址、傳送接⼜四部分組成,如果要傳送的資料報的⽬的⽹絡位址匹配路由表中的某⼀⾏,就按規定的接⼜傳送到下⼀跳位址。
檢視命令:route
這台主機有乙個網路介面,連到192.168.226.0/24 網路,destination是目的網路位址,genmask是子網掩碼,geteway是下一條網路位址,flags中的u標誌表示此條目有效(可以禁用某些條目),g標誌表示此條目的下一條位址是某個路由器的位址,沒有g標誌的條目表示目的網路位址是與本機介面直接相連的網路,因此可以直接傳送到目的主機,不需要經路由器**。
二、路由演算法
路由演算法,又名選路演算法,演算法的目的是找到一條從源路由器到目的路由器的「好」路徑(即具有最低費用的路徑)。路由器使用路由演算法來找到到達目的地的最佳路由。
路由演算法通常具有下列設計目標的乙個或多個:優化、簡單、低耗、健壯、穩定、快速聚合、靈活性。
1.常見的路由生成演算法
(1)ls演算法
採用ls演算法時,每個路由器必須遵循以下步驟:
①確認在物理上與之相連的路由器並獲得它們的ip位址。當乙個路由器開始工作後,它首先向整個網路傳送乙個「hello」分組資料報。每個接收到資料報的路由器都將返回一條訊息,其中包含它自身的ip位址。
②測量相鄰路由器的延時(或者其他重要的網路引數,比如平均流量)。為做到這一點,路由器向整個網路傳送響應分組資料報。每個接收到資料報的路由器返回乙個應答分組資料報。將路程往返時間除以2,路由器便可以計算出延時。(路程往返時間是網路當前延遲的量度,通過乙個分組資料報從遠端主機返回的時間來測量。)該時間包括了傳輸和處理兩部分的時間——也就是將分組資料報傳送到目的地的時間以及接收方處理分組資料報和應答的時間。
③向網路中的其他路由器廣播自己的資訊,同時也接收其他路由器的資訊。
在這一步中,所有的路由器共享它們的知識並且將自身的資訊廣播給其他每乙個路由器。這樣,每乙個路由器都能夠知道網路的結構以及狀態。
④ 使用乙個合適的演算法,確定網路中兩個節點之間的最佳路由。
在這一步中,路由器選擇通往每乙個節點的最佳路由。它們使用乙個演算法來實現這一點,如dijkstra最短路徑演算法。在這個演算法中,乙個路由器通過收集到的其他路由器的資訊,建立乙個網路圖。這個圖描述網路中的路由器的位置以及它們之間的鏈結關係。每個鏈結都有乙個數字標註,稱為權值或成本。這個數字是延時和平均流量的函式,有時它僅僅表示節點間的躍點數。例如,如果乙個節點與目的地之間有兩條鏈路,路由器將選擇權值最低的鏈路。
(2)dijkstra演算法
①路由器建立一張網路圖,並且確定源節點和目的節點,在這個例子裡我們設為v1和v2。然後路由器建立乙個矩陣,稱為「鄰接矩陣」。在這個矩陣中,各矩陣元素表示權值。例如,[i, j]是節點vi與vj之間的鏈路權值。如果節點vi與vj之間沒有鏈路直接相連,它們的權值設為「無窮大」。
②路由器為網路中的每乙個節點建立一組狀態記錄。此記錄包括三個字段:
前序字段——表示當前節點之前的節點。
長度字段——表示從源節點到當前節點的權值之和。
標號字段——表示節點的狀態。每個節點都處於乙個狀態模式:「永久」或「暫時」。
③路由器初始化(所有節點的)狀態記錄集引數,將它們的長度設為「無窮大」,標號設為「暫時」。
④路由器設定乙個t節點。例如,如果設v1是源t節點,路由器將v1的標號更改為「永久」。當乙個標號更改為「永久」後,它將不再改變。乙個t節點僅僅是乙個**而已。
⑤路由器更新與源t節點直接相連的所有暫時性節點的狀態記錄集。
⑥路由器在所有的暫時性節點中選擇距離v1的權值最低的節點。這個節點將是新的t節點。
⑦如果這個節點不是v2(目的節點),路由器則返回到步驟⑤。
⑧如果節點是v2,路由器則向前回溯,將它的前序節點從狀態記錄集中提取出來,如此迴圈,直到提取到v1為止。這個節點列表便是從v1到v2的最佳路由。
(3)鏈路向量選路演算法
鏈路狀態演算法(也稱最短路徑演算法)傳送路由資訊到網際網路上所有的結點,然而對於每個路由器,僅傳送它的路由表中描述了其自身鏈路狀態的那一部分。
(4)距離向量演算法
距離向量演算法(也稱為bellman-ford演算法)則要求每個路由器傳送其路由表全部或部分資訊,但僅傳送到鄰近結點上。從本質上來說,鏈路狀態演算法將少量更新資訊傳送至網路各處,而距離向量演算法傳送大量更新資訊至鄰接路由器。 ——由於鏈路狀態演算法收斂更快,因此它在一定程度上比距離向量演算法更不易產生路由迴圈。但另一方面,鏈路狀態演算法要求比距離向量演算法有更強的cpu能力和更多的記憶體空間,因此鏈路狀態演算法將會在實現時顯得更昂貴一些。
2、路由收斂
收斂是指在最佳路徑的判斷上所有路由器達到一致的過程。
當某個網路事件引起路由可用或不可用時,路由器就發出更新資訊。路由更新資訊遍及整個網路,引發重新計算最佳路徑,最終達到所有路由器一致公認的最佳路徑。
收斂慢的路由演算法會造成路徑迴圈或網路中斷。
路由生產演算法
1 路由的一些概念 路由節點 乙個具有路由能力的主機或路由器,它維護一張路由表,通過查詢路由表來決定向哪個介面傳送資料報。介面 路由節點與某個網路相連的網絡卡介面。路由表 由很多路由條目組成,每個條目都指明去往某個網路的資料報應該經由哪個介面傳送,其中最後一條是預設路由條目。路由條目 路由表中的一行...
網路 簡述路由演算法之動態路由演算法
在計算機網路中,路由器的乙個很重要責任就是要在端對端的節點中找出一條最佳路徑出來,通過自己與相鄰節點之間的資訊,來計算出從自己位置到目的節點之間的最佳線路,這種演算法我們可以理解為路由演算法。路由的模式又主要分為 靜態路由 和 動態路由 靜態路由協議是由網路管理員手動輸入配置的,適用於小型的不太複雜...
ZigBee網路路由演算法設計
zigbee技術是一種低功耗 低成本 低速率的無線通訊技術。目前在工業領域 醫學領域 軍事領域 智慧型家居 道路監測 家庭自動化等方面有著良好的應用前景。zigbee網路常用的路由演算法有cluster tree演算法 aodvjr演算法和cluster tree aodvjr演算法。其中aodvj...