網路中的 動態路由演算法 ,你了解嗎?

2021-08-28 07:43:40 字數 2648 閱讀 3507

在計算機網路中,路由器的乙個很重要責任就是要在端對端的節點中找出一條最佳路徑出來,通過自己與相鄰節點之間的資訊,來計算出從自己位置到目的節點之間的最佳線路,這類演算法我們稱之為路由演算法。

路由的模式又主要分為「靜態路由」和「動態路由」。靜態路由協議是由網路管理員手動輸入配置的,適用於小型的不太複雜的網路環境中,或者有特定需求的網路場景中。而動態路由協議是現代計算機網路中最為常用的一種方式。動態路由演算法能夠根據網路拓撲結構去適應流量的變化。

本文主要聊的就是「動態路由演算法」,你知道動態路由演算法有哪些嗎?

動態路由演算法大致可以分為兩類:

下面我們來看一下這兩類演算法的特點:

一、距離向量路由演算法

距離向量路由演算法(distance vector routing),它是網路上最早使用的動態路由演算法,也稱為bellman-ford或者ford-fulkerson演算法。基於這類演算法實現的協議有:rip、bgp等。

如圖,這類演算法的基本思路是:網路中每乙個路由器都要維護一張 向量表 ,這個 向量表 中的每一行都記錄了從當前位置能到達的目標路由器的最佳出口(介面)和距離(跳數)。

每隔一段時間當前路由器會向所有的鄰居節點傳送自己的這個表,同時它也會接收每個鄰居發來的它們的表。並會將鄰居的表和自己的表做乙個對比更新。

比如當前 路由器x 離 鄰居y路由器 的距離是m,此時收到 鄰居y 發來的表中寫到了「 鄰居y離路由器z的距離是n 」,那 當前路由器x 就知道它離 路由器z 的距離可能就是 m+n 了,如圖:

就這樣繼續類推,要不了多久,每個路由器就可以將網路中所有路由節點和子網線路都匯聚起來了。這樣的話,每個路由器只需要查詢自己的表就可以很容易的知道到達目的地的最佳出口(介面)是哪個了。

當然,當網路結構發生變化的時候,各個路由器中的向量表也會隨之動態更新。

好了,講到這裡,基本上對「距離向量路由演算法」大概原理有個認識了,現在我們再來仔細分析分析這個演算法的名字,可以發現,它的名字取的還是蠻有意思的,非常貼切。「距離」這個詞就基本表明了這個演算法是通過 距離(跳數/時間)來度量2個路由網路之間的線路的,而「向量」這個詞,可以看出線路是有方向性的,且路由表中只記錄了資料報去往目的地應該走哪個出口方向,並不會記錄到達目的地的整條路徑。

「距離向量路由演算法」的優點很明顯:非常簡單清晰,且任何加入到網路中的新節點都能很快的與其它節點建立起聯絡獲得補充資訊。

缺點呢,首先就是每次傳送資訊的時候,要傳送整個全域性路由表,太大了,因為每個路由器需要在向量表中記錄下整個網路的資訊,導致需要較大儲存、cpu、網路開銷,對資源的要求越來越高。還有乙個問題就是收斂時間太慢,也就是路由器共享路由資訊並使各台路由器掌握的網路情況達到一致所需的時間比較久,收斂速度慢會導致有些路由器的表更新慢,從而造成路由環路的問題。

二、鏈路狀態路由演算法

鏈路狀態路由演算法(link state routing ),基於dijkstra演算法,它是以圖論作為理論基礎,用圖來表示網路拓撲結構,用圖論中的最短路徑演算法來計算網路間的最佳路由。基於這類演算法實現的協議有:ospf 等。

如圖,

這類演算法的基本思路是:採用的是不停的拼接地圖的方式。每乙個路由器首先都會發現自己身邊的鄰居節點,然後將自己與鄰居節點之間的鏈路狀態包廣播出去,傳送到整個網路。這樣,當某個路由器收到從網路中其它路由器廣播來的路由資訊包(鏈路狀態包)之後,會將這個包中的資訊與自己路由器上的資訊進行拼裝,最終形成乙個全網的拓撲檢視。

當路由器中形成了全網的拓撲檢視後,它就可以通過最短路徑演算法來計算當前節點到其它路由器之間的最短路徑了。當某台路由器的鏈路狀態發生變化時,路由器採用洪氾法向所有路由器傳送此資訊,其它路由器使用收到的資訊重新計算最佳路徑,重新生成路由表(拓撲圖)。

這裡可以做乙個模擬,有乙個路人甲人去問路,然後本地人a只知道a自己生活方圓5公里的地圖,本地人b只知道b自己生活的方圓5公里的地圖,但是路人甲要去的地方需要穿過a和b所在區域,那麼就把a和b的2份地圖拿來拼裝在一起,然後去往目的地的完整路線就可以查出來了。

鏈路狀態路由演算法簡單而言就是五個步驟:

發現鄰居節點,並了解鄰居網路位址

測量到鄰居節點的距離或成本度量值

構建乙個包含自己所擁有資訊的鏈路狀態包

將這個包廣播到網路中,並接收其它路由器的鏈路狀態包

計算出當前節點到其它節點之間的最短路徑(基於dijkstra演算法)

鏈路狀態路由演算法 不會像 距離向量路由演算法 那樣傳送整個路由表,鏈路狀態路由協議只會廣播更新的或者改變了的網路拓撲,這樣傳播的資訊量會少很多,同時對頻寬和cpu資源也是一種節省。

「鏈路狀態路由演算法」具有很好的擴充套件能力,也具有更快的收斂速度,能夠快速的適應網路變化,且由於乙個路由器的鏈路狀態只涉及與其相鄰的路由器的聯通狀態,因而與整個網際網路的規模並無直接關係,因此鏈路狀態路由演算法可以用於大型的或者路由資訊變化劇烈的網際網路環境。

將上述兩種演算法做乙個簡單的對比:

**網路,經供參考。

網路 簡述路由演算法之動態路由演算法

在計算機網路中,路由器的乙個很重要責任就是要在端對端的節點中找出一條最佳路徑出來,通過自己與相鄰節點之間的資訊,來計算出從自己位置到目的節點之間的最佳線路,這種演算法我們可以理解為路由演算法。路由的模式又主要分為 靜態路由 和 動態路由 靜態路由協議是由網路管理員手動輸入配置的,適用於小型的不太複雜...

你了解你自己的公司嗎?

市場定位是什麼?你是否想像過你現在的客戶都是什麼樣的人?如果可能的話,先試著統計一下他們的基本情況,如 性別 年齡 婚姻狀況 工作內容和工作領域。再想像一下客戶們的價值觀,如他們的生活方式 生活態度等。你對你潛在的客戶了解的越多,就越容易和他們溝通,也越容易取得他們的信賴。無論是新客戶還是老客戶,信...

你了解你自己的公司嗎?

市場定位是什麼?你是否想像過你現在的客戶都是什麼樣的人?如果可能的話,先試著統計一下他們的基本情況,如 性別 年齡 婚姻狀況 工作內容和工作領域。再想像一下客戶們的價值觀,如他們的生活方式 生活態度等。你對你潛在的客戶了解的越多,就越容易和他們溝通,也越容易取得他們的信賴。無論是新客戶還是老客戶,信...