在計算機網路中,路由器的乙個很重要責任就是要在端對端的節點中找出一條最佳路徑出來,通過自己與相鄰節點之間的資訊,來計算出從自己位置到目的節點之間的最佳線路,這種演算法我們可以理解為路由演算法。
路由的模式又主要分為「靜態路由」和「動態路由」。靜態路由協議是由網路管理員手動輸入配置的,適用於小型的不太複雜的網路環境中,或者有特定需求的網路場景中。而動態路由協議是現代計算機網路中最為常用的一種方式。動態路由演算法能夠根據網路拓撲結構去適應流量的變化。
動態路由演算法大致可以分為兩類:
距離向量路由演算法
鏈路狀態路由演算法
距離向量路由演算法(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資源也是一種節省。
「鏈路狀態路由演算法」具有很好的擴充套件能力,也具有更快的收斂速度,能夠快速的適應網路變化,且由於乙個路由器的鏈路狀態只涉及與其相鄰的路由器的聯通狀態,因而與整個網際網路的規模並無直接關係,因此鏈路狀態路由演算法可以用於大型的或者路由資訊變化劇烈的網際網路環境。
將上述兩種演算法做乙個簡單的對比:
參考:
靜態路由演算法 vs 動態路由演算法
靜態路由演算法主要有洪氾法,隨機走動法,最短路徑法,基於流量的路由演算法 1 洪氾法 flooding 節點收到乙個報文分組後,向所有可能的方向複製 每個節點不接受重複分組,網路區域性故障也不影響通訊,但大量重複分組加重了網路負擔。這種方法適宜於網路規模小,通訊負載輕,可靠性要求極高的通訊場合 如軍...
路由!路!由!靜態 預設 動態的簡述
靜態路由 英語 static routing 一種路由的方式,路由項 routing entry 由手動配置,而非動態決定。與動態路由不同,靜態路由是固定的,不會改變,即使網路狀況已經改變或是重新被組態。一般來說,靜態路由是由網路管理員逐項加入路由表。使用靜態路由的另乙個好處是網路安全保密性高。動態...
網路 動態路由
動態路由的優缺點 優點 實時基於拓撲的變化而進行路由表的收斂 缺點 動態路由協議的分類 as 自治系統 標準編號 0 65535,其中1 64511為共有,64512 65535私有 基於as進行分類 igp 內部閘道器協議 egp外部閘道器協議 igp路由協議分類 2.基於工作特點進行分類 路由協...