路由算法简介
文章目錄
- 1、路由算法簡介
- 1.1、主要目的
- 1.2、設計目標
- 1.3、技術要素
- 1.4、區分要素
- 1.5、度量標準
- 1.6、典型種類
- 2、路由選擇算法的功能
- 3、自治系統 AS (Autonomous System)
- 4、兩大類路由選擇協議
- 5、RIP(路由信息協議)
- 6、OSPF(開放最短路徑優先)
1、路由算法簡介
路由算法是用于找到一條從源路由器到目的路由器的最佳路徑的算法
- 存在著多種路由算法,每種算法對網絡和路由器資源的影響都不同
- 由于路由算法使用多種度量標準 (metric),所以不同路由算法的最佳路徑選擇也有所不同
路由算法是提高路由協議功能,盡量減少路由時所帶來開銷的算法。
- 當實現路由算法的軟件必須運行在物理資源有限的計算機上時高效尤其重要
- 路由算法必須健壯,即在出現不正常或不可預見事件的情況下必須仍能正常處理,例如硬件故障、高負載和不正確的實現
- 因為路由器位于網絡的連接點,當它們失效時會產生重大的問題
- 最好的路由算法通常是那些經過了時間考驗,證實在各種網絡條件下都很穩定的算法
- 此外路由算法必須能快速聚合,聚合是所有路由器對最佳路徑達成一致的過程
- 當某網絡事件使路徑斷掉或不可用時,路由器通過網絡分發路由更新信息,促使最佳路徑的重新計算,最終使所有路由器達成一致
- 聚合很慢的路由算法可能會產生路由環或網路中斷
1.1、主要目的
路由器使用路由算法來找到到達目的地的最佳路由
當說“最佳路由”時,考慮的參數包括諸如跳躍數(分組數據包在網絡中從一個路由器或中間節點到另外的節點的行程)、延時以及分組數據包傳輸通信耗時。關于路由器如何收集網絡的結構信息以及對之進行分析來確定最佳路由
- 有兩種主要的路由算法:
總體式路由算法
采用總體式路由算法時,每個路由器都擁有網絡中所有其他路由器的全部信息以及網絡的流量狀態。這些算法也被稱為LS(鏈路狀態)算法
分散式路由算法
采用分散式路由算法時,每個路由器只有與它直接相連的路由器的信息——而沒有網絡中的每個路由器的信息。這些算法也被稱為DV(距離向量)算法
1.2、設計目標
路由算法通常具有下列設計目標的一個或多個:
優化、簡單、低耗、健壯、穩定、快速聚合、靈活性
(1)最優化: 指路由算法選擇最佳路徑的能力。根據metric的值和權值來計算
(2)簡潔性: 算法設計必須簡潔。路由協議在網絡中必須高效地提供其功能,盡量減少軟件和應用的開銷。這在當實現路由算法的軟件必須運行在物理資源有限的計算機上時尤其重要。
(3)堅固性: 路由算法處于非正常或不可預料的環境時,如硬件故障、負載過高或操作失誤時,都能正確運行。由于路由器分布在網絡聯接點上,所以在它們出故障時會產生嚴重后果。最好的路由器算法通常能經受時間的考驗,并在各種網絡環境下被證實是可靠的
(4)快速收斂: 收斂是在最佳路徑的判斷上所有路由器達到一致的過程。當某個網絡事件引起路由可用或不可用時,路由器就發出更新信息。路由更新信息遍及整個網絡,引發重新計算最佳路徑,最終達到所有路由器一致公認的最佳路徑。收斂慢的路由算法會造成路徑循環或網絡中斷
(5)靈活性: 路由算法要求可以快速、準確地適應各種網絡環境。例如,某個網段發生故障,路由算法要能很快發現故障,并為使用該網段的所有路由選擇另一條最佳路徑。
1.3、技術要素
- 路由算法還應該是靈活的,即它們應該迅速、準確地適應各種網絡環境
- 路由算法可以設計得可適應網絡帶寬、路由器隊列大小和網絡延遲
- 路由算法的核心是路由選擇算法
- 設計路由算法時要考慮的技術要素有:
1、選擇最短路由還是最佳路由;
2、通信子網是采用虛電路操作方式還是采用數據報的操作方式;
3、采用分布式路由算法還是采用集中式路由算法;
4、考慮關于網絡拓撲、流量和延遲等網絡信息的來源;
5、確定采用靜態路由還是動態路由
優化指路由算法選擇最佳路徑的能力,根據metric的值和權值來計算
例如有一種路由算法可能使用跳數和延遲,但可能延遲的權值要大些。當然,路由協議必須嚴格定義計算metric的算法
1.4、區分要素
各路由算法的區別點包括:
- 靜態與動態
- 單路徑與多路徑
- 平坦與分層
- 主機智能與路由器智能
- 域內與域間
- 鏈接狀態與距離向量
靜態與動態
- 靜態路由算法很難算得上是算法,只不過是開始路由前由網管建立的表映射。這些映射自身并不改變,除非網管去改動
- 使用靜態路由的算法較容易設計,在網絡通信可預測及簡單的網絡中工作得很好
- 由于靜態路由系統不能對網絡改變做出反映,通常被認為不適用于的大型、易變的網絡
- 九十年代主要的路由算法都是動態路由算法,通過分析收到的路由更新信息來適應網絡環境的改變。如果信息表示網絡發生了變化,路由軟件就重新計算路由并發出新的路由更新信息。這些信息滲入網絡,促使路由器重新計算并對路由表做相應的改變
- 動態路由算法可以在適當的地方以靜態路由作為補充。例如,最后可選路由(router of last resort),作為所有不可路由分組的去路,保證了所有的數據至少有方法處理
單路徑與多路徑
- 一些復雜的路由協議支持到同一目的多條路徑
- 與單路徑算法不同,這些多路徑算法允許數據在多條線路上復用
- 多路徑算法的優點很明顯:它們可以提供更好的吞吐量和可靠性
平坦與分層
- 一些路由協議在平坦的空間里運作,其它的則有路由的層次
- 在平坦的路由系統中,每個路由器與其它所有路由器是對等的
- 在分層次的路由系統中,一些路由器構成了路由主干,數據從非主干路由器流向主干路由器,然后在主干上傳輸直到它們到達目標所在區域,在這里,它們從最后的主干路由器通過一個或多個非主干路由器到達終點。路由系統通常設計有邏輯節點組,稱為域、自治系統或區間
- 在分層的系統中,一些路由器可以與其它域中的路由器通信,其它的則只能與域內的路由器通信。在很大的網絡中,可能還存在其它級別,最高級的路由器構成了路由主干
- 分層路由的主要優點是它模擬了多數公司的結構,從而能很好地支持其通信
多數的網絡通信發生在小組中(域)。因為域內路由器只需要知道本域內的其它路由器,它們的路由算法可以簡化,根據所使用的路由算法,路由更新的通信量可以相應地減少
主機與路由器
一些路由算法假定源結點來決定整個路徑,這通常稱為源路由。在源路由系統中,路由器只作為存貯轉發設備,無意識地把分組發向下一跳。其它路由算法假定主機對路徑一無所知,在這些算法中,路由器基于自己的計算決定通過網絡的路徑。前一種系統中,主機具有決定路由的智能,后者則為路由器具有此能力。
主機智能和路由器智能的折衷實際是最佳路由與額外開銷的平衡。主機智能系統通常能選擇更佳的路徑,因為它們在發送數據前探索了所有可能的路徑,然后基于特定系統對“優化”的定義來選擇最佳路徑。然而確定所有路徑的行為通常需要很多的探索通信量和很長的時間
域內與域間
一些路由算法只在域內工作,其它的則既在域內也在域間工作。這兩種算法的本質是不同的。其遵循的理由是優化的域內路由算法沒有必要也成為優化的域間路由算法
鏈接與距離
- 鏈接狀態算法(也叫做短路徑優先算法)把路由信息散布到網絡的每個節點,不過每個路由器只發送路由表中描述其自己鏈接狀態的部分
- 距離向量算法(也叫做Bellman-Ford算法)中每個路由器發送路由表的全部或部分,但只發給其鄰居。也就是說,鏈接狀態算法到處發送較少的更新信息,而距離向量算法只向相鄰的路由器發送較多的更新信息
- 由于鏈接狀態算法聚合得較快,它們相對于距離算法產生路由環的傾向較小
- 在另一方面,鏈接狀態算法需要更多的CPU和內存資源,因此鏈接狀態算法的實現和支持較昂貴。雖然有差異,這兩種算法類型在多數環境中都可以工作得很好
1.5、度量標準
- 路由算法使用了許多種不同的度量標準去決定最佳路徑
- 復雜的路由算法可能采用多種度量來選擇路由,通過一定的加權運算,將它們合并為單個的復合度量、再填入路由表中,作為尋徑的標準
- 通常所使用的度量有:路徑長度、可靠性、時延、帶寬、負載、通信成本等
路徑長度
路徑長度是最常用的路由metric。一些路由協議允許網管給每個網絡鏈接人工賦以代價值,這種情況下,路由長度是所經過各個鏈接的代價總和。其它路由協議定義了跳數,即分組在從源到目的的路途中必須經過的網絡產品,如路由器的個數
可靠性
可靠性,在路由算法中指網絡鏈接的可依賴性(通常以位誤率描述),有些網絡鏈接可能比其它的失效更多,網路失效后,一些網絡鏈接可能比其它的更易或更快修復。任何可靠性因素都可以在給可靠率賦值時計算在內,通常是由網管給網絡鏈接賦以metric值
路由延遲
路由延遲指分組從源通過網絡到達目的所花時間。很多因素影響到延遲,包括中間的網絡鏈接的帶寬、經過的每個路由器的端口隊列、所有中間網絡鏈接的擁塞程度以及物理距離。因為延遲是多個重要變量的混合體,它是個比較常用且有效的metric
帶寬
帶寬指鏈接可用的流通容量。在其它所有條件都相等時,10Mbps的以太網鏈接比64kbps的專線更可取。雖然帶寬是鏈接可獲得的最大吞吐量,但是通過具有較大帶寬的鏈接做路由不一定比經過較慢鏈接路由更好。例如,如果一條快速鏈路很忙,分組到達目的所花時間可能要更長
負載
負載指網絡資源,如路由器的繁忙程度。負載可以用很多方面計算,包括CPU使用情況和每秒處理分組數。持續地監視這些參數本身也是很耗費資源的
通信成本
通信成本是另一種重要的metric,尤其是有一些公司可能關心運作費用甚于關心性能。即使線路延遲可能較長,他們也寧愿通過自己的線路發送數據而不采用昂貴的公用線路
1.6、典型種類
LS算法
采用LS算法時,每個路由器必須遵循以下步驟:
- 1、確認在物理上與之相連的路由器并獲得它們的IP地址。當一個路由器開始工作后,它首先向整個網絡發送一個“HELLO”分組數據包。每個接收到數據包的路由器都將返回一條消息,其中包含它自身的IP地址
- 2、測量相鄰路由器的延時(或者其他重要的網絡參數,比如平均流量)。為做到這一點,路由器向整個網絡發送響應分組數據包。每個接收到數據包的路由器返回一個應答分組數據包。將路程往返時間除以2,路由器便可以計算出延時。(路程往返時間是網絡當前延遲的量度,通過一個分組數據包從遠程主機返回的時間來測量。)該時間包括了傳輸和處理兩部分的時間——也就是將分組數據包發送到目的地的時間以及接收方處理分組數據包和應答的時間
- 3、向網絡中的其他路由器廣播自己的信息,同時也接收其他路由器的信息在這一步中,所有的路由器共享它們的知識并且將自身的信息廣播給其他每一個路由器。這樣,每一個路由器都能夠知道網絡的結構以及狀態
- 4、使用一個合適的算法,確定網絡中兩個節點之間的最佳路由,在這一步中,路由器選擇通往每一個節點的最佳路由。它們使用一個算法來實現這一點,如Dijkstra最短路徑算法。在這個算法中,一個路由器通過收集到的其他路由器的信息,建立一個網絡圖。這個圖描述網絡中的路由器的位置以及它們之間的鏈接關系。每個鏈接都有一個數字標注,稱為權值或成本。這個數字是延時和平均流量的函數,有時它僅僅表示節點間的躍點數。例如,如果一個節點與目的地之間有兩條鏈路,路由器將選擇權值最低的鏈路。
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的最佳路由。
鏈路狀態路由算法
- 鏈路狀態算法(也稱最短路徑算法)發送路由信息到互聯網上所有的結點,然而對于每個路由器,僅發送它的路由表中描述了其自身鏈路狀態的那一部分
距離向量算法
- 距離向量算法(也稱為Bellman-Ford算法)則要求每個路由器發送其路由表全部或部分信息,但僅發送到鄰近結點上。從本質上來說,鏈路狀態算法將少量更新信息發送至網絡各處,而距離向量算法發送大量更新信息至鄰接路由器。 ——由于鏈路狀態算法收斂更快,因此它在一定程度上比距離向量算法更不易產生路由循環。但另一方面,鏈路狀態算法要求比距離向量算法有更強的CPU能力和更多的內存空間,因此鏈路狀態算法將會在實現時顯得更昂貴一些
2、路由選擇算法的功能
源/宿對之間的路徑選擇,以及選定路由之后將報文傳送到它們的目的地
路由選擇算法的要求:
- 正確性:確保分組從源節點傳送到目的節點
- 簡單性:實現方便,軟硬件開銷小
- 自適應性:也稱健壯性,算法能夠適應業務量和網絡拓撲的變化
- 穩定性:能長時間無故障運行
- 公平性:每個節點都有機會傳送信息
- 最優性:盡量選取好的路由
3、自治系統 AS (Autonomous System)
由一個組織管理的一整套路由器和網絡
- 使用一種AS 內部的路由選擇協議和共同的度量以確定分組在該 AS 內的路由
- 使用一種 AS 之間的路由選擇協議用以確定分組在AS之間的路由
- 盡管一個 AS 使用了多種內部路由選擇協議和度量,但對其他 AS 表現出的是一個單一的和一致的路由選擇策略
4、兩大類路由選擇協議
因特網的中,路由協議可以分為
內部網關協議 IGP (Interior Gateway Protocol)
外部網關協議 EGP (External Gateway Protocol)
IGP是在一個AS內部使用的路由選擇協議,如RIP和OSPF協議,是域內路由選擇 (interdomain routing)
當源主機和目的主機處在不同的AS中,在數據報到達AS的邊界時,使用外部網關協議 EGP 將路由選擇信息傳遞到另一個自治系統中,如BGP-4,是域間路由選擇 (intradomain routing)
5、RIP(路由信息協議)
路由信息協議 (Routing Information Protocol, RIP) 是一種基于距離 向量的路由選擇協議
RIP 協議要求網絡中的每一個路由器都要維護從它自己到自治系統內其他每一個目的網絡的距離和下一跳路由器地址
6、OSPF(開放最短路徑優先)
開放最短路徑優先(Open Shortest Path First,OSPF),這個算法名為“最短路徑優先”是因為使用了 Dijkstra 提出的最短路徑算法SPF,只是一個協議的名字,它并不表示其他的路由選擇協議不是“最短路徑優先”
小知識
路由算法與路由協議的區別:
區別一:概念不同
路由算法是指路由器根據多種路由測度(比如長度)來選擇路由,確定路由表的方法,路由協議就是在路由指導IP數據包發送過程中事先約定好的規定和標準。路由器之間運行路由協議交換路由信息,路由協議交換的路由信息最終會形成路由表保持在路由器中,而路由器就是根據路由表來決定分組的轉發
常用的路由協議:RIP,OSPF,BGP
區別二:關系不同
協議是兩端協商的一種約定,算法是協議使用以計算路由去向的一種方法。各種路由協議之間采取不同的路由算法進行路由選擇。
【參考鏈接-百度百科】
【路由算法有哪些類型】
總結
- 上一篇: 精进3步:破除我执,重塑我想,实现我行,
- 下一篇: OPPO Java后端校招提前批面试