常見的路由表生成算法


 

常見的路由表生成算法

發表於2017/6/18 17:00:31  481人閱讀

分類: 網絡

基本概念
路由節點:一個具有路由能力的主機或路由器,它維護一張路由表,通過查詢路由表來決定向哪個接口發送數據包。
接口:路由節點與某個網絡相連的網卡接口
路由表:由很多路由條目組成,每個條目都指明去往某個網路的數據包應該由哪個接口發送,最后一條是缺省路由條目
路由條目:路由表中的一行,每個條目主要由目的網絡地址,子網掩碼,下一跳地址,發送接口四部分組成,如果要發送的數據包目的網絡地址匹配路由表中的某一行,就按規定的接口發送到下一跳地址。
缺省的路由條目:路由表中的最后一行,主要由下一跳地址和發送接口兩部分組成,當目的地址與路由表中的其他地址都不匹配的時候,就按缺省路由條目規定的接口發送到下一跳地址。
可以用route查看路由表。
這里寫圖片描述

  通過掩碼+路由器划分內網

主要算法
大的方向分為靜態路由和動態路由,也可稱為非自適應路由選擇和自使用路由選擇。
靜態路由特點:簡單和開銷較小,但不能適應網絡狀態的變化。適用簡單的小網絡,可人工配置每一條路由。
動態路由特點:較好的適應網絡狀態的變化,但實施起來比較復雜,開銷也較大。使用較復雜的大網絡。
Internet選擇的是動態路由。
距離向量算法
步驟:
(1)對地址中為X的相鄰路由器發來的數據報,先修改此報文的所有項目:把“下一跳”的字段中地址都改為X,並把所有的“距離”字段的值加1(見后面解釋1)。每一個項目都有三個關鍵數據,即:到目的網絡N,距離是d,下一跳路由器是X。
(2)對修改后的數據報的每一個項目,進行以下步驟:
①若原來的路由表中沒有目的網絡N,則把該項目添加到路 由表中。(見解釋2)。
②若則(即原來的路由表中有目的網絡N,這時就再看下一跳路由器地址)
若下一跳路由器地址是X,則把收到的項目替換為 原來的路由表項目(見解釋3)。
否則(即這個項目是:到目的地址N,但下一跳路由器不是X)
若收到的項目中的距離d小於路由表中的距離,則進行更新(見解釋4),否則什么也不做(見解釋5)。
(3)若3分鍾還沒有收到相鄰路由器的更新路由表,則把此相鄰路由器記為不可達的路由器,即距離置為16(16表示距離不可達)。
(4)返回。
解釋1:便於更新本路由器表。比如說位於地址X的相鄰路由器發來的報文為:“NET2,3,Y”,意思是“我經過路由器Y到NET2的距離是3”,那么本路由器就可推斷出:“我經過路由器X到NET2的距離是3+1=4”,路由器把收到的該報文項目修改為“NET2,4,X”,作為下一步和路由器中原來項目進行比較時使用。
解釋2:表明這是新的目的網絡,應當加入到路由表中。例如表中沒有到NET2的路由,那么就要在表中加入新的項目“NET2,4,X”。
解釋3:保證這是最新的消息。
解釋4:例如,若路由表中已有項目為“NET2,5,Y”,就要更新為“NET2,4,X”。因為到網絡NET2的距離原來為5,現在減到4,更短了,所以需要更新。
解釋5:若距離更大或者距離不變,就不用更新。
LS算法
這里寫圖片描述
步驟:
1、確認在物理上與之相連的路由器並獲得它們的IP地址。當一個路由器開始工作后,它首先向整個網絡發送一個“HELLO”分組數據包。每個接收到數據包的路由器都將返回一條消息,其中包含它自身的IP地址。
2、測量相鄰路由器的延時(或者其他重要的網絡參數,比如平均流量)。為做到這一點,路由器向整個網絡發送響應分組數據包。每個接收到數據包的路由器返回一個應答分組數據包。將路程往返時間除以2,路由器便可以計算出延時。(路程往返時間是網絡當前延遲的量度,通過一個分組數據包從遠程主機返回的時間來測量。)該時間包括了傳輸和處理兩部分的時間——也就是將分組數據包發送到目的地的時間以及接收方處理分組數據包和應答的時間。
3、向網絡中的其他路由器廣播自己的信息,同時也接收其他路由器的信息。
在這一步中,所有的路由器共享它們的知識並且將自身的信息廣播給其他每一個路由器。這樣,每一個路由器都能夠知道網絡的結構以及狀態。
4、使用一個合適的算法,確定網絡中兩個節點之間的最佳路由。
在這一步中,路由器選擇通往每一個節點的最佳路由。它們使用一個算法來實現這一點,如Dijkstra最短路徑算法。在這個算法中,一個路由器通過收集到的其他路由器的信息,建立一個網絡圖。這個圖描述網絡中的路由器的位置以及它們之間的鏈接關系。每個鏈接都有一個數字標注,稱為權值或成本。這個數字是延時和平均流量的函數,有時它僅僅表示節點間的躍點數。例如,如果一個節點與目的地之間有兩條鏈路,路由器將選擇權值最低的鏈路。
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的最佳路由。
鏈路向量選路算法
鏈路狀態算法(也稱最短路徑算法)發送路由信息到互聯網上所有的結點,然而對於每個路由器,僅發送它的路由表中描述了其自身鏈路狀態的那一部分。
這里寫圖片描述
路由收斂
概念:
路由收斂指網絡的拓撲結構發生變化后,路由表重新建立到發送再到學習直至穩定,並通告網絡中所有相關路由器都得知該變化的過程。也就是網絡拓撲變化引起的通過重新計算路由而發現替代路由的行為。
作用:
通過路由收斂可以使路由域中所有路由器對當前的網絡結構和路由轉發達成一致的狀態。
觸發條件:
路由器失效
連接失效
管理度量調整


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM