多路径路由算法选择(1)——ECMP、WCMP
不要問為什么,現(xiàn)在的工作轉(zhuǎn)向了網(wǎng)絡(luò)路由協(xié)議的設(shè)計(jì)。
傳統(tǒng)的網(wǎng)絡(luò)拓樸結(jié)構(gòu)可以形象的表示為樹結(jié)構(gòu),我們稱之為“有中心的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)”,簡單地認(rèn)為很多流量請求最終會匯聚到主干網(wǎng)這樣的路由中心,才能轉(zhuǎn)發(fā)到下一條路徑。
傳統(tǒng)的路由協(xié)議都是采用單路徑路由的方式,簡單地認(rèn)為,從源到目的,所有的包都通過一條路徑轉(zhuǎn)發(fā)(如果某條最優(yōu)路徑出現(xiàn)了問題,再考慮下一條最優(yōu)路徑),其它鏈路處于備份狀態(tài)或無效狀態(tài),并且在動態(tài)路由環(huán)境下相互的切換需要一定時間。
現(xiàn)在問題來了:
1)主干網(wǎng)總有一天會承受不了過多的流量請求;
2)單一的路徑路由會使很多路由路徑處于相對空閑的狀態(tài)。
那么一個解決問題的辦法就產(chǎn)生了,使用多路徑路由,因?yàn)槁酚善魇怯卸鄠€端口的,所以這樣的路由方式在硬件上是有支持的。好處就是,在網(wǎng)絡(luò)環(huán)境下同時使用多條鏈路,不僅增加了傳輸帶寬,并且可以無時延無丟包地備份失效鏈路的數(shù)據(jù)傳輸。
多路徑路由特點(diǎn):(1)可以為不同的服務(wù)質(zhì)量要求提供不同的路徑。(2)多路可以為同一種類型的服務(wù)提供多條路徑,經(jīng)聚集可實(shí)現(xiàn)更高的服務(wù)質(zhì)量。(3)由于主機(jī)對路徑有自主的使用權(quán),它可以通過探測各路徑的狀況(比如丟包率)猜測網(wǎng)絡(luò)的擁塞程度,據(jù)此調(diào)整對各路徑的使用,從而在得到優(yōu)質(zhì)服務(wù)的同時也提高了網(wǎng)絡(luò)的利用率。因此,多路的正確使用還可以提高網(wǎng)絡(luò)的利用率。
根據(jù)不相交性,多路徑路由可以分為3種:節(jié)點(diǎn)不相交(Node-Disjoint)多路徑、鏈路不相交(Link-Disjoint)多路徑和相交多路徑。節(jié)點(diǎn)不相交多路徑,也稱為完全不相關(guān)多路徑,就是各條路徑中除源節(jié)點(diǎn)和目的節(jié)點(diǎn)之外沒有其他任何共用節(jié)點(diǎn)。鏈路不相交多路徑是指各條路徑間沒有任何共用的鏈路,但有可能有共用的節(jié)點(diǎn)。相交多路徑是指各條路徑間既有共用的節(jié)點(diǎn),又有共用的鏈路。表1是3種路徑間的比較。
那下面的問題就是如何進(jìn)行多路徑路由。關(guān)鍵問題就兩個:
1)多路徑選擇
2)流量的動態(tài)分配
---------------------------------------------------------------------------------
下面看一下目前的多路徑選擇算法都有哪些:
1)ECMP(Equal-Cost Multi-Path Routing,等價(jià)多路徑路由)。
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是指,到達(dá)一個目的地有多條相同度量值的路由項(xiàng)(路由路徑),這樣就可以使用不超過3條這樣的路徑來轉(zhuǎn)發(fā)流量。ECMP最大的特點(diǎn)是實(shí)現(xiàn)了等值情況下,多路徑負(fù)載均衡和鏈路備份的目的,在靜態(tài)路由和OSPF中基本上都支持ECMP功能。
但是實(shí)際情況是,各路徑的帶寬、時延和可靠性等不一樣,把Cost認(rèn)可成一樣,不能很好地利用帶寬,尤其在路徑間差異大時,效果會非常不理想。例如,路由器兩個出口,兩路徑,一個帶寬是100M,一個是2M,如果部署是ECMP,則網(wǎng)絡(luò)總帶寬只能達(dá)到4M的利用率。(在RFC2991中討論了一般的多路徑路由。每一封包多路徑路由的負(fù)載平衡通常不適用因?yàn)榇筝椬兓难舆t、數(shù)據(jù)包重新排序,以及可以破壞許多互聯(lián)網(wǎng)協(xié)定運(yùn)作的最大傳輸單元(MTU)在網(wǎng)絡(luò)流量的差異,最特別是傳輸控制協(xié)議(TCP)和path MTU discovery。)另外一種情況下等價(jià)多路徑路由也不能提供真正的最佳路徑路由的優(yōu)點(diǎn),例如,如果多個最佳的next-hop的路徑到目的地重新匯聚到一個單一的低帶寬的路徑(一種常見的情形)下游,它只會增加到該目的地流量路徑的復(fù)雜性,而無法提高帶寬的能力。
有篇專利可供參考:http://www.google.com/patents/CN103607358A?cl=zh
我們可以看到,“等價(jià)路徑的計(jì)算”妨礙了這個算法的使用。
2)WCMP(Weight-Cost Multi-Path Routing,加權(quán)多路徑路由)。
WCMP能夠非常靈活地按照比例在鏈路上傳遞流量,ECMP是它的特例。IGRP、EIGRP和部分靜態(tài)路由也支持WCMP,但因?yàn)镮GRP和EIGRP為非標(biāo)準(zhǔn)私有協(xié)議(Cisco的私有協(xié)議),不適宜擴(kuò)展,因此只能采用靜態(tài)路由,在中小網(wǎng)絡(luò)部署。
貌似也不需要考慮。
3)MPA、DSPA、CRA、MDVA、MPDA/QMPDA、MPTAH、MARA、ST、NPMA等算法稍后講解
關(guān)于流量的動態(tài)分配,即所謂的負(fù)載均衡問題:
1)負(fù)載分擔(dān)方式有3種。
基于流負(fù)載分擔(dān):路由器根據(jù)IP報(bào)文的五元組信息(是指源IP地址,源端口,目的IP地址,目的端口,和傳輸層協(xié)議這五個量組成的一個集合。 例如:192.168.1.1 10000 TCP 121.14.88.76 80 就構(gòu)成了一個五元組)將數(shù)據(jù)分成不同的流。具有相同五元組信息的IP報(bào)文屬于同一個流。轉(zhuǎn)發(fā)數(shù)據(jù)時,路由器把不同的數(shù)據(jù)流根據(jù)算法從多個路徑上依次發(fā)送出去。
基于包負(fù)載分擔(dān):轉(zhuǎn)發(fā)數(shù)據(jù)時,路由器把數(shù)據(jù)包從多個路徑上依次發(fā)送出去。
基于帶寬的非平衡負(fù)載分擔(dān):報(bào)文按接口物理帶寬進(jìn)行負(fù)載分擔(dān)(即基于報(bào)文的負(fù)載分擔(dān))。當(dāng)用戶為接口配置了指定的負(fù)載帶寬后,設(shè)備將按用戶指定的接口帶寬進(jìn)行負(fù)載分擔(dān),即根據(jù)各接口物理帶寬比例關(guān)系進(jìn)行分配。
基于包轉(zhuǎn)發(fā)能夠做到更精確的負(fù)載分擔(dān)。但是由于路由器要對每一個包進(jìn)行路由查表與轉(zhuǎn)發(fā)操作,所以無法使用快速轉(zhuǎn)發(fā)緩存來轉(zhuǎn)發(fā)數(shù)據(jù),轉(zhuǎn)發(fā)效率降低了。另外,Internet應(yīng)用都是基于流的,如果路由器采用基于包的負(fù)載分擔(dān),一條流中的數(shù)據(jù)包會經(jīng)過不同路徑到達(dá)目的地,可能會造成接收方的亂序接收,從而影響應(yīng)用程序的正常運(yùn)行。
總結(jié)
以上是生活随笔為你收集整理的多路径路由算法选择(1)——ECMP、WCMP的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言 sizeof_c语言详解size
- 下一篇: [BJOI2014]大融合