多路徑路由算法選擇(1)——ECMP、WCMP


不要問為什么,現在的工作轉向了網絡路由協議的設計。

 

傳統的網絡拓朴結構可以形象的表示為樹結構,我們稱之為“有中心的網絡拓撲結構”,簡單地認為很多流量請求最終會匯聚到主干網這樣的路由中心,才能轉發到下一條路徑。

傳統的路由協議都是采用單路徑路由的方式,簡單地認為,從源到目的,所有的包都通過一條路徑轉發(如果某條最優路徑出現了問題,再考慮下一條最優路徑),其它鏈路處於備份狀態或無效狀態,並且在動態路由環境下相互的切換需要一定時間。

 

現在問題來了:

1)主干網總有一天會承受不了過多的流量請求;

2)單一的路徑路由會使很多路由路徑處於相對空閑的狀態。

那么一個解決問題的辦法就產生了,使用多路徑路由,因為路由器是有多個端口的,所以這樣的路由方式在硬件上是有支持的。好處就是,在網絡環境下同時使用多條鏈路,不僅增加了傳輸帶寬,並且可以無時延無丟包地備份失效鏈路的數據傳輸。

多路徑路由特點:(1)可以為不同的服務質量要求提供不同的路徑。(2)多路可以為同一種類型的服務提供多條路徑,經聚集可實現更高的服務質量。(3)由於主機對路徑有自主的使用權,它可以通過探測各路徑的狀況(比如丟包率)猜測網絡的擁塞程度,據此調整對各路徑的使用,從而在得到優質服務的同時也提高了網絡的利用率。因此,多路的正確使用還可以提高網絡的利用率。

根據不相交性,多路徑路由可以分為3種:節點不相交(Node-Disjoint)多路徑、鏈路不相交(Link-Disjoint)多路徑和相交多路徑。節點不相交多路徑,也稱為完全不相關多路徑,就是各條路徑中除源節點和目的節點之外沒有其他任何共用節點。鏈路不相交多路徑是指各條路徑間沒有任何共用的鏈路,但有可能有共用的節點。相交多路徑是指各條路徑間既有共用的節點,又有共用的鏈路。表1是3種路徑間的比較。

 

 

那下面的問題就是如何進行多路徑路由。關鍵問題就兩個:

1)多路徑選擇

2)流量的動態分配

---------------------------------------------------------------------------------

 

下面看一下目前的多路徑選擇算法都有哪些:

1)ECMP(Equal-Cost Multi-Path Routing,等價多路徑路由)。

Equal-cost  multi-path  (ECMP)  [8]  is  a  routing  technique  for  routing  packets  along  multiple  paths  of 
equal cost.  Load is distributed equally over multiple equal-cost paths typically using simple round-robin 
distribution. Optimal splitting with ECMP has been researched in OSPF-Optimized Multi Path (OMP) [9]. 
OSPF-OMP  uses  ECMP,  but  instead  of  depending  upon  weight  assignments,  it  samples  traffic  load 
information  and  floods  it  via  opaque  LSAs.  This  information  is  used  to  change  local  load  splitting 
decisions.

ECMP是指,到達一個目的地有多條相同度量值的路由項(路由路徑),這樣就可以使用不超過3條這樣的路徑來轉發流量。ECMP最大的特點是實現了等值情況下,多路徑負載均衡和鏈路備份的目的,在靜態路由和OSPF中基本上都支持ECMP功能。

 

但是實際情況是,各路徑的帶寬、時延和可靠性等不一樣,把Cost認可成一樣,不能很好地利用帶寬,尤其在路徑間差異大時,效果會非常不理想。例如,路由器兩個出口,兩路徑,一個帶寬是100M,一個是2M,如果部署是ECMP,則網絡總帶寬只能達到4M的利用率。(在RFC2991中討論了一般的多路徑路由。每一封包多路徑路由的負載平衡通常不適用因為大輻變化的延遲、數據包重新排序,以及可以破壞許多互聯網協定運作的最大傳輸單元(MTU)在網絡流量的差異,最特別是傳輸控制協議(TCP)和path MTU discovery。)另外一種情況下等價多路徑路由也不能提供真正的最佳路徑路由的優點,例如,如果多個最佳的next-hop的路徑到目的地重新匯聚到一個單一的低帶寬的路徑(一種常見的情形)下游,它只會增加到該目的地流量路徑的復雜性,而無法提高帶寬的能力。

有篇專利可供參考:http://www.google.com/patents/CN103607358A?cl=zh

我們可以看到,“等價路徑的計算”妨礙了這個算法的使用。

 

2)WCMP(Weight-Cost Multi-Path Routing,加權多路徑路由)。

WCMP能夠非常靈活地按照比例在鏈路上傳遞流量,ECMP是它的特例。IGRP、EIGRP和部分靜態路由也支持WCMP,但因為IGRP和EIGRP為非標准私有協議(Cisco的私有協議),不適宜擴展,因此只能采用靜態路由,在中小網絡部署。

貌似也不需要考慮。

 

3)MPA、DSPA、CRA、MDVA、MPDA/QMPDA、MPTAH、MARA、ST、NPMA等算法稍后講解

 

 

關於流量的動態分配,即所謂的負載均衡問題:

1)負載分擔方式有3種。

基於流負載分擔:路由器根據IP報文的五元組信息(是指源IP地址,源端口,目的IP地址,目的端口,和傳輸層協議這五個量組成的一個集合。 例如:192.168.1.1 10000 TCP 121.14.88.76 80 就構成了一個五元組)將數據分成不同的流。具有相同五元組信息的IP報文屬於同一個流。轉發數據時,路由器把不同的數據流根據算法從多個路徑上依次發送出去。

基於包負載分擔:轉發數據時,路由器把數據包從多個路徑上依次發送出去。

基於帶寬的非平衡負載分擔:報文按接口物理帶寬進行負載分擔(即基於報文的負載分擔)。當用戶為接口配置了指定的負載帶寬后,設備將按用戶指定的接口帶寬進行負載分擔,即根據各接口物理帶寬比例關系進行分配。

 

基於包轉發能夠做到更精確的負載分擔。但是由於路由器要對每一個包進行路由查表與轉發操作,所以無法使用快速轉發緩存來轉發數據,轉發效率降低了。另外,Internet應用都是基於流的,如果路由器采用基於包的負載分擔,一條流中的數據包會經過不同路徑到達目的地,可能會造成接收方的亂序接收,從而影響應用程序的正常運行。

 


免責聲明!

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



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