本文**人人小站
路由器是網路間的連線裝置,它重要工作之一是路徑選擇。這個功能是路由器智慧型的核心,它是由管理員的配置和一系列的路由演算法實現的。路由演算法可分為distance vector(dv)algorithm和link_state(ls)algorithms兩種。
1、工作原理的不同
ls演算法中,網路拓撲和所有的鏈路費用都是已知的,也就是說可用來做ls演算法的輸入。在實踐中,這是通過讓每個節點向網路中所有其他路由器廣播狀態分組來完成,其中每個鏈路分組包含它所連線的鏈路的特徵和費用,這經常用鏈路廣播演算法來完成。節點廣播的結果是所有節點具有了該網路的同乙個以及完整的檢視。於是每個節點都可像其他節點一樣,執行ls演算法並計算相同的最低費用路徑集。在此演算法中,每個節點經廣播與所有其他節點交談。
dv演算法中,每個節點僅與他的直接鄰居交談,但它為他的鄰居提供了從其自己到網路中所有其他節點的最低費用。dv演算法要求每個路由器都要向其他鄰接的路由器發布乙個距離向量,距離向量是該路由器到其他已知的各網路的相對距離。通告內容基本上是告訴其鄰接的路由器:你可以通過我到達網路x,距離是y。從本地路由器到x的有效距離等於該路由器從各鄰接路由器接收到的最短距離,再加上他與該鄰接路由器之間的鏈路距離。
2、演算法結構不同
顯然ls演算法是一種全域性資訊的演算法,而dv演算法是一種迭代的,非同步的和分布式的演算法。說它是分布式的,是因為每個節點都要從乙個或多個直接相連鄰居接受某些資訊,執行計算,然後將計算結果發回給鄰居。說它是迭代的,是因為此過程一直要持續到鄰居之間沒有更多要交換的資訊為止。說該演算法是非同步的,是因為他不要求所有節點相互之間鎖步,即步伐一致的工作。
3、時間複雜性
考慮ls演算法,即給定n個節點,考慮最壞情況下需要經多少次計算才能找到從源節點到所有目的節點的最低費用呢。
1)在第一次迭代時,我們需要搜尋所有的n個節點以確定出節點w,w不在n-1中且具有最低費用。
2)第二次我們需要檢查所有的n-1個節點以確定最低費用。
3)第三次,需要檢查n-2個節點,依此類推。
因此,我們在所有迭代中需檢索n+(n-1)+(n-2)+…+1=n(n+1)/2個節點。所以我們可以得出ls演算法在最差情況下的時間複雜度為n的平方階。
考慮dv演算法,它存在對好訊息的反應迅速,但對壞訊息卻反應遲鈍。特別是對壞訊息存在計數無窮大問題。當鏈路的權值變化很大時,它的時間複雜性也就很難確定了。
4、報文複雜性
ls演算法要求每個節點知道網路中每條鏈路的費用。這就要傳送o(|n||e|)個報文。
dv演算法要求在每次迭代時,在兩個直接相連的鄰居之間交換報文。在鏈路費用改變時,dv演算法僅當在新費用導致與該鏈路相連節點的最低費用路徑發生改變時,才傳播已改變的鏈路費用。
5、收斂速度
收斂是路由演算法選擇時所遇到的乙個重要問題。收斂時間是指從網路的拓撲結構發生變化到網路上所有的相關路由器都得知這一變化,並且相應地做出改變所需要的時間。這一時間越短,網路變化對全網的擾動就越小。收斂時間過長會導致路由迴圈的出現。
ls在直接相連的路由之間維護正常的鄰居關係。這允許路由更快收斂。鏈路狀態路由協議在會話期間通過交換hello包(也叫鏈路狀態資訊)建立對等關係,這種關係加速了路由的收斂。
而dv演算法收斂較慢,且在收斂過程中會遇到選路環路。dv演算法還會遭到計數無窮大的問題。
6、跳數的限制
dv使用跳數或向量來確定從乙個裝置到另乙個裝置的距離。不考慮每跳鏈路的速率。
ls沒有跳數的限制,使用「圖形理論」演算法或最短路徑優先演算法。
7、路由表的更新
dv演算法根據相鄰節點的路由資訊更新自己的路由表並傳送整個路由表。dv的這種特性隨著路由表的增大,需要消耗更多的cpu資源,並消耗了記憶體。
ls演算法,每個節點都有乙個全域性的拓撲結構,根據此拓撲結構計算路由表。不像dv那樣,更新時傳送整個路由表。ls只廣播更新的或改變的網路拓撲,這使得更新資訊更小,節省了頻寬和cpu利用率。另外,如果網路不發生變化,更新包只在特定的時間內發出(通常為30min到2h)。
8、健壯性
如果一台路由器發生故障,行為錯亂或受到破壞時情況會怎樣呢?
對於ls演算法,路由器能夠向其連線的的一條鏈路廣播不正確費用。乙個節點作為ls廣播的一部分也可損壞或丟棄它收到的任何ls廣播分組。但是乙個ls節點僅計算自己的**表:其他節點為自己做類似的計算。這就意味這在ls演算法下,路由計算有些是孤立的,提供了一定程度的健壯性。
在dv演算法下,乙個節點可向任意或所有的目的節點通告其不正確的最低費用路徑。dv演算法中乙個不正確的節點計算值會擴散到整個網路。
9、可擴充套件性
dv演算法可擴充套件性差。相對而言,ls演算法可擴充套件性好,可靠。
10、環路
儘管最基本的dv協議描述和實現起來非常簡單,但是會導致網路中的最短通路樹在短時間內出現環路。乙個基於dv的網路路由可能需要花費幾十秒到幾分鐘才能匯聚到乙個無環路的拓撲。如果本地路由器對於本地鏈路以外的網路屬性只能掌握一些二手的,已被解釋過的資訊,那麼在任何一種這樣的方案中低速匯聚都是一種根本的侷限性。ls協議,雖然與dv協議相比較,即便是對於最基本的形式,它的描述和實現都是很複雜的,但它有乙個優點,當鏈路狀態發生變化時,在變化的資訊傳播到網路中以後,我們立即就可以得到不存在環路的最短通路樹。
路由和路由表生成演算法
路由 資料報從源位址到目的位址所需要經過的路徑,由一系列節點組成。路由節點 乙個具有路由功能的主機或者路由器,維護一張路由表,通過查詢路由表來決定向那個姐傳送資料報。路由表 由很多路由條目組成,每個條目都指明去往某個網路的資料報應該經由哪個接收和傳送,其中最後乙個是預設路由條目。路由條目 路由表中的...
加密演算法的安全性和特點
常見演算法歸類 雜湊函式不屬於加密演算法 國內國外 分類演算法 簡述國內 對稱sm1 演算法未公開,只能採用硬體實現 國內對稱 sm4無線區域網標準的分組資料演算法 國內對稱 sm7採用硬體實現 國內對稱 zuc祖沖之演算法 國內非對稱 sm2橢圓雙曲線公鑰密碼演算法,基於ecc 國內非對稱 sm9...
KNN與K Means演算法的區別和共同特點
1 解決什麼問題?knn是有監督的學習演算法,解決的是分類問題,也就是說,knn使用有分類標籤的資料集通過計算對新的資料進行分類 k means是無監督學習,解決的是聚類問題,即訓練資料集沒有分類標籤,通過k means演算法將資料集劃分為k類。2 k是什麼?knn演算法的原理 a 對於乙個待劃分類...