路由表的生成算法

一:幾個概念
1:路由器:
是連接因特網中的個局域網,廣域網的設備,它會根據信道的情況自動選擇和設定路由,以最佳路徑,按前後順序發送信號.

路由器又稱網關設備是用於連接多個邏輯上分開的網絡,所謂邏輯網絡是代表一個單獨的網絡或者一個子網,當數據從一個子網傳輸到另一個子網時,可通過路由器的路由功能來完成.因此,路由器具有潘丹網絡地址和選擇IP路徑的功能,它能在多個網絡互聯的環境中,簡歷靈活的連接,可用完全不同的數據分組和介質訪問方法連接各種網絡,路由器只接受受源站或其他路由器的信息,屬於網絡層的互聯設備.

2:路由表
是指路由器或者其他互聯網的網絡設備上存儲的一張信息表, 該表中存有到達特定網絡終端的路徑,在某些情況下,還有一些與這些路徑相關的度量。

lLinux下查看路由設備
這裏寫圖片描述
Destination:是目的網絡地址
Genmask:是子網掩碼
Gateway:是下一條地址
Iface是發送接口
Flags中的U標誌表示此條目有效,G標誌表示此條目的下一條地址是某個路由器的地址,沒有G標誌的條目表示目的網絡地址是與本機接口直接相連的網絡,不必經路由轉發,因此下一條地址地址處記爲*號.

如果發送數據包的目的地址是192.168.0.0根第一韓的子網掩碼做與運算得到192.168.0.0與第一行的目的網絡地址相符.因此從etho接口發送出去,.如果要發送的數據包的目的地址跟前面庫右邊條目不匹配,那麼就要按照缺省路由條目,從eth0接口發出去,首先發往192.168.0.1路由器,在讓路由器根據它的路由表決定下一跳地址.
二:常見的路由表的生成算法
1:向量-距離算法
路由器週期性地向其相鄰路由器廣播自己知道的路由信息,用以通知相鄰路由器自己可以到達的網絡以及到達該網絡的距離.相鄰路由器可以根據收到的路由信息修改和刷新自己的路由表
優點:算法簡單,易於實現
缺點:是慢收斂問題,路由器的路徑變化需要像波浪一樣從相鄰路由器傳輸出去,過程緩慢
給個例子:
已知路由器R6有表1所示的路由表,現在收到相鄰路由表R4發來路由更新消息,如表2所示.試更新路由器R6的路由表.
表1:
這裏寫圖片描述

表2:
這裏寫圖片描述
先把表2中距離都加1,並把下一跳路由器都改爲R4,得到表3
這裏寫圖片描述
表3和表1做比較.
第一行在表1中沒有,因此把這一行添加到表1中,
第二行的Net2在表1中有,且下一跳路由器也是R4,因此要更新
第三行的Net3在表1中有,但是下一條路由器不用,於是就要比較距離,新的路由信息的距離是2,小於原來表中的4,因此要更新
更新後的R6 的路由表如下所示:
這裏寫圖片描述
2:鏈路-狀態算法
也叫最短路徑優先算法(LS),它的思路是:
(1):路由器向相鄰路由器發送查詢報文,測試它和相鄰路由器的鏈路狀態,如果可以收到相鄰路由器發回的相應,說明該路由器和相鄰路由器可以正常通信
(2):收到該路由器和其他相鄰路由器的鏈路狀態後,還向系統找那個所有參加最短路徑優先算法的路由器發送鏈路狀態報文
(3):個路由器收到其他路由器發送的鏈路狀態後,根據報文中的數據刷新本路由保存的網絡拓撲結構圖.如果鏈路發生變化,路由器將採用Dijkstra算法生成新的最短路徑優先數並刷新路由表.
3:Dijkstra算法( 又叫狄克斯特拉算法)
(1):路由器建立一張網絡圖,並且確定源節點和目的節點,我們假定爲V1和V2,然後路由器建立一個矩陣. 稱”鄰接矩陣”.在這個矩陣中,各矩陣元素表示權值,如[i,j]是節點之間鏈路權值如果節點Vi和節點VJ之間沒有鏈路直接相連,它們的權值設爲”無窮大”
(2)路由器爲網絡中每一節點建立一組狀態記錄.次記錄包括三個字段
前序字段–表示當前節點之前的節點
長度字段–表示從源節點到當前節點的權值之和
標號字段–表示節點的狀態.每個節點都處於一個狀態模式:”永久”或”暫時”
3:路由器初始化(所有節點的)狀態記錄集參數,將它們的長度設爲”無窮大”,標號設爲”暫時”
4:路由器設置一個T節點.例如,如果設V1是源T節點,路由器將V1的標號更改爲”永久”,當一個標號更改爲”永久”後,它講不再改變,一個T節點僅僅是一個代理而已
5:路由器更新與源T節點直接相連的所有暫時性節點的狀態記錄集
6: 6、路由器在所有的暫時性節點中選擇距離V1的權值最低的節點。這個節點將是新的T節點。
7、如果這個節點不是V2(目的節點),路由器則返回到步驟5。
8、如果節點是V2,路由器則向前回溯,將它的前序節點從狀態記錄集中提取出來,如此循環,直到提取到V1爲止。這個節點列表便是從V1到V2的最佳路由。

發佈了113 篇原創文章 · 獲贊 62 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章