劉敬玲,黃家瑋,蔣萬春,王建新
(中南大學(xué) 計(jì)算機(jī)學(xué)院,湖南 長沙 410083)
在計(jì)算機(jī)技術(shù)和互聯(lián)網(wǎng)應(yīng)用迅猛發(fā)展的推動(dòng)下,用戶對數(shù)據(jù)訪問的需求日益增多,信息對儲存容量的要求日益提高.云計(jì)算使用戶可以按需地享受高質(zhì)量服務(wù)和無處不在的網(wǎng)絡(luò)訪問[1],但是用戶將數(shù)據(jù)外包給云服務(wù)器,使數(shù)據(jù)脫離了物理控制,隨之帶來了數(shù)據(jù)隱私泄露的問題.
隨著云計(jì)算技術(shù)的興起,數(shù)據(jù)中心(data center)作為云計(jì)算的硬件基礎(chǔ)架構(gòu)也在不斷普及和應(yīng)用.為了構(gòu)建高可用、高性能、低成本的云計(jì)算基礎(chǔ)存儲和計(jì)算設(shè)施[1-5],數(shù)據(jù)中心通常部署了大量商用交換機(jī)和服務(wù)器.數(shù)據(jù)中心網(wǎng)絡(luò)連接了大規(guī)模服務(wù)器集群,是傳遞計(jì)算和存儲數(shù)據(jù)的橋梁[6].為了提供超高帶寬,數(shù)據(jù)中心網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)普遍采用CLOS 結(jié)構(gòu)[7],在主機(jī)之間提供了多條可用路徑.在網(wǎng)絡(luò)高負(fù)載狀態(tài)下,為了降低鏈路擁塞和數(shù)據(jù)包丟失的概率[8],數(shù)據(jù)中心負(fù)載均衡機(jī)制將網(wǎng)絡(luò)流量分配到所有可用路徑上,充分利用了網(wǎng)絡(luò)中存在的冗余鏈路,提高網(wǎng)絡(luò)傳輸性能.
由于數(shù)據(jù)中心之間的流量相對穩(wěn)定,通常采用中心控制器統(tǒng)計(jì)數(shù)據(jù)中心間的流量狀態(tài)信息,并下發(fā)負(fù)載均衡控制規(guī)則以均衡流量.而數(shù)據(jù)中心內(nèi)部流量占數(shù)據(jù)中心網(wǎng)絡(luò)流量的絕大部分,且數(shù)據(jù)中心內(nèi)部流量具有高動(dòng)態(tài)和強(qiáng)突發(fā)的特性[9,10],給負(fù)載均衡工作帶來了更大的挑戰(zhàn).因此,本文僅對數(shù)據(jù)中心內(nèi)部的負(fù)載均衡工作進(jìn)行討論.本文主要綜述了數(shù)據(jù)中心負(fù)載均衡的相關(guān)研究工作.具體來說,本文根據(jù)負(fù)載均衡方案部署的位置將它們劃分成了三大類.
· 基于中央控制器的負(fù)載均衡方案:采用集中式的思想,基于中央控制器的負(fù)載均衡方案,通過引入中央控制器,收集各個(gè)交換機(jī)上的流量信息,得到關(guān)于網(wǎng)絡(luò)路徑和動(dòng)態(tài)流量的全局視圖,并根據(jù)中央控制器上的全局視圖對網(wǎng)絡(luò)擁塞作出快速反應(yīng),自動(dòng)調(diào)整網(wǎng)絡(luò)流量的轉(zhuǎn)發(fā)路徑.
· 基于主機(jī)的負(fù)載均衡方案:基于主機(jī)的負(fù)載均衡方案將負(fù)載均衡操作轉(zhuǎn)移到分布式的主機(jī)上進(jìn)行.主機(jī)依據(jù)端到端的擁塞信息,通過修改TCP/IP 協(xié)議?;蛞胩摂M軟件交換機(jī)技術(shù),以重路由、切分流量或細(xì)粒度調(diào)度的方式實(shí)施負(fù)載均衡.
· 基于交換機(jī)的負(fù)載均衡方案:多對一的通信模式使得瓶頸交換機(jī)上的負(fù)載過高,形成鏈路擁塞.基于交換機(jī)的負(fù)載均衡方案在交換機(jī)上感知網(wǎng)絡(luò)擁塞,并采用不同的調(diào)度粒度將網(wǎng)絡(luò)流量發(fā)送到不同的路徑,實(shí)現(xiàn)快速的流量均衡.
本文第1 節(jié)描述數(shù)據(jù)中心的背景和負(fù)載均衡研究的意義.第2 節(jié)介紹數(shù)據(jù)中心網(wǎng)絡(luò)結(jié)構(gòu)與流量特征.第3節(jié)具體介紹相關(guān)的負(fù)載均衡方案,并對比分析各方案的基本思想、實(shí)現(xiàn)方法及均衡效果.最后探討未來值得關(guān)注的研究方向.
近年來,隨著云計(jì)算、大數(shù)據(jù)、分布式存儲等新興技術(shù)飛速發(fā)展,越來越多的企業(yè)和政府部門搭建了大型數(shù)據(jù)中心來提供金融、電商、交通等各種各樣的在線服務(wù).作為下一代互聯(lián)網(wǎng)應(yīng)用服務(wù)的基礎(chǔ)架構(gòu),數(shù)據(jù)中心吸引了工業(yè)界和學(xué)術(shù)界的關(guān)注,成為了研究的熱點(diǎn)領(lǐng)域.為了充分利用數(shù)據(jù)中心強(qiáng)大的計(jì)算和存儲能力,網(wǎng)頁訪問、即時(shí)通信、財(cái)經(jīng)金融、在線游戲等延時(shí)敏感型服務(wù)和數(shù)據(jù)分析、科學(xué)計(jì)算、網(wǎng)頁內(nèi)容索引等計(jì)算密集型服務(wù)被遷移到數(shù)據(jù)中心.隨著數(shù)據(jù)中心在線應(yīng)用服務(wù)規(guī)模的不斷擴(kuò)大,對數(shù)據(jù)中心網(wǎng)絡(luò)帶寬和性能提出了更高的挑戰(zhàn).為了向用戶提供滿意的服務(wù)質(zhì)量,數(shù)據(jù)中心網(wǎng)絡(luò)(data center networks)的傳輸性能備受關(guān)注[11-13].
數(shù)據(jù)中心網(wǎng)絡(luò)通過交換機(jī)連接數(shù)據(jù)中心內(nèi)部的大量主機(jī),獲取規(guī)模效應(yīng).為了提高網(wǎng)絡(luò)傳輸性能,在數(shù)據(jù)中心網(wǎng)絡(luò)架構(gòu)設(shè)計(jì)方面,出現(xiàn)了胖樹(fat-tree)[14]、VL2[15]、DCell[16]、BCube[17]等新型的“富連接”的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu).這些新型網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)在源和目的主機(jī)之間提供了多條可用傳輸路徑,可以利用并行多路徑傳輸來提升數(shù)據(jù)中心的網(wǎng)絡(luò)吞吐率和可靠性[18-20].
在數(shù)據(jù)中心網(wǎng)絡(luò)特有的網(wǎng)絡(luò)流量和應(yīng)用需求背景下,針對日益增長的用戶規(guī)模,數(shù)據(jù)中心供應(yīng)商不斷升級硬件設(shè)備,使用 10Gb/s,100Gb/s 級別的高帶寬和微秒級別的低延時(shí)鏈路來提升傳輸速率.學(xué)術(shù)界提出了DCTCP[1]、D3[21]、D2TCP[22]等新型傳輸控制協(xié)議和PDQ[23]、PIAS[24]等交換機(jī)調(diào)度算法,同時(shí)利用新型的多路徑網(wǎng)絡(luò)架構(gòu)來提高并發(fā)傳輸速度和網(wǎng)絡(luò)整體健壯性.這些方案在一定程度上提升了網(wǎng)絡(luò)性能,但無法解決數(shù)據(jù)中心網(wǎng)絡(luò)中并行路徑傳輸?shù)牧髁坎痪鈫栴}.研究數(shù)據(jù)表明:不同類型的數(shù)據(jù)中心通常只有不到25%的核心鏈路利用率,其余鏈路總是處于空閑狀態(tài),存在著嚴(yán)重的負(fù)載不均衡問題[25].
負(fù)載均衡的首要目標(biāo)是將流量均勻地分配到各條并行路徑上,提升網(wǎng)絡(luò)鏈路利用率,避免高負(fù)載流量引發(fā)網(wǎng)絡(luò)擁塞.作為數(shù)據(jù)中心負(fù)載均衡的標(biāo)準(zhǔn)方案,等價(jià)多路徑路由(equal-cost multipath routing,簡稱ECMP)[26]策略采用靜態(tài)哈希機(jī)制,依據(jù)數(shù)據(jù)包頭的源IP 地址、目的IP 地址、源端口號、目的端口號和協(xié)議這五元組信息,利用哈希函數(shù)將不同的數(shù)據(jù)流分散到等價(jià)多路徑上.ECMP 雖然實(shí)現(xiàn)部署簡單,但并不感知路徑的擁塞狀態(tài)和流量特征,容易造成多條數(shù)據(jù)流(特別是長流)在路徑上發(fā)生哈希沖突,導(dǎo)致鏈路擁塞和應(yīng)用性能下降.
顯然,在數(shù)據(jù)中心多路徑網(wǎng)絡(luò)環(huán)境和特有的網(wǎng)絡(luò)應(yīng)用下,如何設(shè)計(jì)高效的網(wǎng)絡(luò)流量負(fù)載均衡機(jī)制,就成為了一個(gè)重要的研究問題.
為保證數(shù)據(jù)中心網(wǎng)絡(luò)傳輸和應(yīng)用服務(wù)的性能的關(guān)鍵技術(shù),需要結(jié)合以下數(shù)據(jù)中心的拓?fù)浣Y(jié)構(gòu)和流量特性開展數(shù)據(jù)中心負(fù)載均衡機(jī)制的設(shè)計(jì)和優(yōu)化.
數(shù)據(jù)中心利用交換機(jī)和路由器等網(wǎng)絡(luò)設(shè)備將大量服務(wù)器連接起來,以建設(shè)高性能的計(jì)算和存儲基礎(chǔ)設(shè)施.隨著用戶需求迅猛發(fā)展,數(shù)據(jù)中心的服務(wù)器數(shù)目在高速增長.由于傳統(tǒng)基于樹狀的3 層數(shù)據(jù)中心網(wǎng)絡(luò)結(jié)構(gòu)難以滿足大規(guī)模數(shù)據(jù)中心的要求[7,27],如圖1 所示的Fat-Tree[14]、VL2[15]、DCell[16]、BCube[17]等新型數(shù)據(jù)中心網(wǎng)絡(luò)結(jié)構(gòu)不斷涌現(xiàn),以提供超高帶寬,降低大規(guī)模部署的開銷,并適應(yīng)不同應(yīng)用需求.新型數(shù)據(jù)中心網(wǎng)絡(luò)結(jié)構(gòu)具有以下特點(diǎn):(1) 主機(jī)之間存在大量可用并行路徑,增加了網(wǎng)絡(luò)的容錯(cuò)性和帶寬;(2) 拓?fù)浣Y(jié)構(gòu)規(guī)則、對稱,利于網(wǎng)絡(luò)布線、自動(dòng)化配置和擴(kuò)展升級;(3) 對分帶寬隨著網(wǎng)絡(luò)規(guī)模的擴(kuò)展而增大,能為數(shù)據(jù)中心提供高速傳輸服務(wù).
Fig.1 Typical architecture of modern data center network圖1 典型的新型數(shù)據(jù)中心網(wǎng)絡(luò)結(jié)構(gòu)
數(shù)據(jù)中心中運(yùn)行著網(wǎng)頁搜索、零售和廣告等大量不同的應(yīng)用系統(tǒng),這些應(yīng)用是數(shù)據(jù)中心的建設(shè)和研究的主要驅(qū)動(dòng)因素,也是數(shù)據(jù)中心運(yùn)營商的主要業(yè)務(wù),它們會產(chǎn)生各種類型的數(shù)據(jù)流量.不同于傳統(tǒng)的廣域網(wǎng),數(shù)據(jù)中心的網(wǎng)絡(luò)流量和應(yīng)用需求具有以下特點(diǎn).
· 數(shù)據(jù)中心不同應(yīng)用產(chǎn)生的數(shù)據(jù)流具有各不相同的網(wǎng)絡(luò)傳輸性能需求[21,22].例如,在線搜索和實(shí)時(shí)推薦等應(yīng)用的數(shù)據(jù)流往往有嚴(yán)格的延時(shí)期限需求,而虛擬機(jī)遷移和文件備份等應(yīng)用的數(shù)據(jù)流則要求很高的網(wǎng)絡(luò)吞吐率.
· 數(shù)據(jù)中心網(wǎng)絡(luò)數(shù)據(jù)流的長度呈現(xiàn)重尾分布特性.據(jù)統(tǒng)計(jì),大部分應(yīng)用中數(shù)據(jù)流的數(shù)據(jù)量很小,90%的數(shù)據(jù)流屬于小于100KB 的短流,其數(shù)據(jù)傳輸在10ms 內(nèi)完成.數(shù)據(jù)量大于100KB 的長流只占數(shù)據(jù)流總量的10%,但這些長流卻發(fā)送了超過80%的數(shù)據(jù)量[1].其中,0.1%的長流發(fā)送時(shí)間超過200s,其數(shù)據(jù)量占了總數(shù)據(jù)量的20%[28].長流的大量數(shù)據(jù)包容易占據(jù)交換機(jī)緩存隊(duì)列,對短流數(shù)據(jù)包形成線頭阻塞,增大短流的延時(shí).
· 數(shù)據(jù)中心網(wǎng)絡(luò)流量呈現(xiàn)較強(qiáng)的突發(fā)性[29,30].在硬件設(shè)計(jì)上,目前高速網(wǎng)卡普遍采用了負(fù)載卸除設(shè)計(jì)來降低CPU 的系統(tǒng)開銷,以支持超高的鏈路帶寬,但這使得大量數(shù)據(jù)包在極短時(shí)間內(nèi)發(fā)送而形成突發(fā)流量;在傳輸控制協(xié)議TCP 的擁塞控制機(jī)制下,發(fā)送方也會成簇發(fā)送擁塞窗口內(nèi)的所有數(shù)據(jù)包;在應(yīng)用層,數(shù)據(jù)中心通常采用劃分聚合(partition/aggregate)的并發(fā)通信模式,即向服務(wù)器群發(fā)送請求后,服務(wù)器會同步地返回?cái)?shù)據(jù)并匯聚生成響應(yīng)結(jié)果,進(jìn)一步加大了并行數(shù)據(jù)流的突發(fā)強(qiáng)度[30,31].
在本節(jié)中,我們將根據(jù)部署位置將數(shù)據(jù)中心網(wǎng)絡(luò)流量負(fù)載均衡機(jī)制分成了3 大類,包括基于中央控制器、基于主機(jī)和基于交換機(jī)的負(fù)載均衡機(jī)制.本節(jié)將具體介紹相關(guān)的負(fù)載均衡方案,并對比分析各方案的設(shè)計(jì)思想和工作原理.
采用集中式的思想,基于中央控制器的負(fù)載均衡方案利用控制器對網(wǎng)絡(luò)設(shè)備進(jìn)行集中控制.中央控制器收集擁塞信息,并基于全局視圖為數(shù)據(jù)流分配傳輸路徑.控制器與交換機(jī)之間采用OpenFlow 等協(xié)議通信.控制器定期測量各個(gè)交換機(jī)擁塞情況,根據(jù)全局鏈路利用率和流量信息向交換機(jī)下發(fā)轉(zhuǎn)發(fā)表,以此決定數(shù)據(jù)流的轉(zhuǎn)發(fā)路徑,從而實(shí)現(xiàn)整體網(wǎng)絡(luò)的負(fù)載均衡.近年來,學(xué)術(shù)界提出了多種基于中央控制器的方案,見表1,它們的解決思路包括:①Hedera[32]、MicroTE[33]、Mahout[34]、OmniFlow[35]、Shafiee[36]等重路由方法;② Fastpass[37]、SAPS[38]、MSaSDN[39]等細(xì)粒度控制方法;③RAPIER[40]、FDALB[41]、Freeway[42]、OFLoad[43]、AuTO[44]、SOFIA[45]等區(qū)分長短流的調(diào)度方法;④ LBDC[46]等多控制器間的負(fù)載均衡方法.
Table 1 Comprehensive comparison of central controller-based load balancing mechanisms表1 基于中央控制器的負(fù)載均衡機(jī)制的綜合對比
Table 1 Comprehensive comparison of central controller-based load balancing mechanisms (Continued)表1 基于中央控制器的負(fù)載均衡機(jī)制的綜合對比(續(xù))
3.1.1 基于重路由的中央控制器負(fù)載均衡機(jī)制
Hedera[32]方案是一個(gè)集中式的主動(dòng)負(fù)載均衡算法,如圖2 所示.中央控制器從ToR 交換機(jī)上收集流信息以檢測長流,計(jì)算沖突路徑后,通告各交換機(jī)為遭遇擁塞的長流重新切換轉(zhuǎn)發(fā)路徑.為了實(shí)現(xiàn)最大最小公平的帶寬分配,Hedera 建立長流的帶寬需求矩陣,通過多次調(diào)整速率,以收斂至公平帶寬.Hedera 采用了全局最先匹配和模擬退火算法兩個(gè)調(diào)度算法,以增加對分帶寬.全局最先匹配算法遍歷所有可能路徑,將長流分配到第1 條能夠滿足帶寬需求的路徑上.同時(shí),Hedera 為各目標(biāo)主機(jī)而不是為各流分配核心交換機(jī),以縮小搜索空間,再利用模擬退火算法為長流選擇路徑.Hedera 利用全局信息避免了長流間的沖突,但是對短流并不友好.
Fig.2 Schematic diagram of Hedera圖2 Hedera 原理圖
針對流量相對穩(wěn)定的長流和突發(fā)性強(qiáng)的短流,MicroTE[33]方案使用中央控制器來跟蹤長流,并優(yōu)先分配轉(zhuǎn)發(fā)路徑,剩余帶寬則按加權(quán)等價(jià)多路徑路由策略分配給難以預(yù)測的短流.MicroTE 包含3 個(gè)組件:監(jiān)測組件,用于監(jiān)控ToR 間的流量模式和確定流量的可預(yù)測性;路由組件,基于控制器提供的網(wǎng)絡(luò)信息確定路由;網(wǎng)絡(luò)控制器,收集服務(wù)器的流量需求,并下發(fā)轉(zhuǎn)發(fā)表給交換機(jī).
Mahout[34]方案首先在主機(jī)端依據(jù)套接字緩存占用情況探測長流,當(dāng)套接字緩存占用超過閾值時(shí),判定該主機(jī)所發(fā)送的流為長流.主機(jī)端利用數(shù)據(jù)包包頭DSCP 字段通知中央控制器對該流進(jìn)行重路由.具體來說:當(dāng)交換機(jī)接收到帶標(biāo)記的數(shù)據(jù)包時(shí),將其轉(zhuǎn)發(fā)給中央網(wǎng)絡(luò)控制器,中央控制器為相應(yīng)長流分配最輕負(fù)載的路徑;對于其他流量,交換機(jī)則采用ECMP 對它們進(jìn)行轉(zhuǎn)發(fā).Mahout 利用主機(jī)檢測長流,提高了檢測效率同時(shí)降低了交換機(jī)的開銷,但同時(shí)也需要修改主機(jī)內(nèi)核.
由于數(shù)據(jù)中心負(fù)載均衡器容易將長流的數(shù)據(jù)包分散到各條路徑上,造成短流經(jīng)歷較長的排隊(duì)延時(shí);主動(dòng)降低流速的流控方案雖減小了緩沖占用,但易引起多路徑的帶寬損失.OmniFlow[35]方案是一個(gè)在傳輸層結(jié)合負(fù)載均衡和流控來優(yōu)化數(shù)據(jù)中心傳輸?shù)姆椒?基于不同的網(wǎng)絡(luò)狀況,OmniFlow 動(dòng)態(tài)地調(diào)整流量轉(zhuǎn)發(fā)路徑以充分利用帶寬,或主動(dòng)調(diào)整流速限制隊(duì)列長度.OmniFlow 包括3 個(gè)模塊.
(1) 隊(duì)列監(jiān)視器:首先測量主機(jī)間多路徑的排隊(duì)延時(shí),然后根據(jù)測量結(jié)果評估當(dāng)前路徑的質(zhì)量,并相應(yīng)地選擇優(yōu)化策略(負(fù)載均衡或流量控制)以改善傳輸.若負(fù)載適中,采用負(fù)載均衡充分利用網(wǎng)絡(luò)帶寬;當(dāng)網(wǎng)絡(luò)嚴(yán)重飽和時(shí),使用流控方法快速排空隊(duì)列.
(2) 負(fù)載均衡模塊:重新路由流量到緩存隊(duì)列長度低于給定閾值的路徑.
(3) 流量控制模塊:檢測到所有路徑的隊(duì)列長度超過給定閾值時(shí),降低流速以減輕網(wǎng)絡(luò)擁塞.OmniFlow 在不損失長流吞吐率的同時(shí)降低了短流的延時(shí).
Shafiee 等人[36]提出一種基于流級別的擁塞感知的數(shù)據(jù)中心網(wǎng)絡(luò)負(fù)載均衡方法,該方法根據(jù)鏈路利用率為鏈路動(dòng)態(tài)調(diào)整權(quán)重,并將新生成的流量放置在網(wǎng)絡(luò)中的最小權(quán)重路徑上傳輸.作者在理論和實(shí)踐上證明了該算法具有良好的負(fù)載均衡性能,并證明了該算法能漸近地最小化網(wǎng)絡(luò)開銷.該算法不受流量模式的限制,且在不同的數(shù)據(jù)中心網(wǎng)絡(luò)狀態(tài)下良好地運(yùn)行.雖然該算法的復(fù)雜度較低,但其性能會受到權(quán)重更新和最小權(quán)重路徑計(jì)算速度的影響.
以上方案利用中央控制器實(shí)現(xiàn)網(wǎng)絡(luò)流量的全局負(fù)載均衡,容易造成兩個(gè)問題:一方面,由于控制周期過長,無法應(yīng)對毫秒級甚至微秒級的突發(fā)流量;另一方面,難以保證長流識別準(zhǔn)確性,無法避免數(shù)據(jù)包排隊(duì)問題.
3.1.2 細(xì)粒度控制的中央控制器負(fù)載均衡機(jī)制
Fastpass[37]是一種細(xì)粒度的集中式傳輸控制架構(gòu),實(shí)現(xiàn)了多路徑傳輸?shù)牡团抨?duì)延時(shí)和高利用率.Fastpass 使用中央控制器為每個(gè)數(shù)據(jù)包分配發(fā)送時(shí)隙和傳輸路徑來提升網(wǎng)絡(luò)利用率和避免擁塞,有效降低了排隊(duì)延時(shí).收到終端主機(jī)向控制器發(fā)送的請求后,控制器為終端主機(jī)分配傳輸數(shù)據(jù)時(shí)隙;然后,控制器采用ToR 著色算法為已分配時(shí)隙的數(shù)據(jù)包分配路徑.但Fastpass 的性能取決于發(fā)送時(shí)隙的利用率.當(dāng)發(fā)送時(shí)隙被浪費(fèi)時(shí),很容易降低鏈路利用率.另外,Fastpass 為每包分配時(shí)隙和路徑,難以大規(guī)模部署和擴(kuò)展.
SAPS[38]方案是一個(gè)基于軟件定義網(wǎng)絡(luò)的包分散機(jī)制.SAPS 借助中央控制器檢測鏈路故障,并建立對稱的虛擬拓?fù)?虛擬拓?fù)鋵τ谝粭l流來說,其源端和目的端之間的所有路徑具有對稱的帶寬和延時(shí).每條流的數(shù)據(jù)包被分散到一個(gè)虛擬拓?fù)渲?每條流依據(jù)其流大小與虛擬拓?fù)涞亩謳掃x擇虛擬拓?fù)?其中,短流和長流分別映射到擁有更小和更大的二分帶寬的虛擬拓?fù)渲?SAPS 可在非對稱拓?fù)渲袑?shí)現(xiàn)高性能.
組播不僅能降低任務(wù)完成時(shí)間,也能提高吞吐量.但由組播流量引起的網(wǎng)絡(luò)阻塞嚴(yán)重影響數(shù)據(jù)中心的性能.在胖樹拓?fù)涞臄?shù)據(jù)中心中,組播流量更容易造成負(fù)載不均衡和突發(fā)的流量沖突.MSaSDN[39]方案提出了一種面向胖樹數(shù)據(jù)中心的組播調(diào)度算法.MSaSDN 方案首次構(gòu)建了軟件定義胖樹數(shù)據(jù)中心中組播阻塞模型,并通過鏈路權(quán)重定義鏈路阻塞代價(jià).SDN 控制器在接收到組播請求后,根據(jù)收集的網(wǎng)絡(luò)信息計(jì)算鏈路阻塞代價(jià),選擇具有最小阻塞代價(jià)的鏈路作為最優(yōu)路徑.MSaSDN 方案借助SDN 控制策略可以防止對其他子網(wǎng)中組播流量的干擾,降低網(wǎng)絡(luò)阻塞概率.
3.1.3 區(qū)分長短流調(diào)度方式的中央控制器負(fù)載均衡機(jī)制
數(shù)據(jù)中心絕大部分?jǐn)?shù)據(jù)流量是由少量的長流產(chǎn)生,大量的短流則通常都有嚴(yán)格的完成期限.吞吐量敏感的長流和延時(shí)敏感的短流之間存在資源競爭問題.
RAPIER[40]方案是一個(gè)任務(wù)敏感的優(yōu)化系統(tǒng).RAPIER 為了降低平均任務(wù)完成時(shí)間,結(jié)合路由和調(diào)度機(jī)制,構(gòu)建了一個(gè)聯(lián)合優(yōu)化模型.RAPIER 使用中央控制器確定任務(wù)中每條流的轉(zhuǎn)發(fā)路徑、轉(zhuǎn)發(fā)時(shí)間和服務(wù)速率,以最優(yōu)化平均任務(wù)完成時(shí)間.當(dāng)新任務(wù)到達(dá)時(shí),RAPIER 為新任務(wù)中每條流計(jì)算路由路徑和傳輸速率.當(dāng)已存在的任務(wù)完成時(shí),網(wǎng)絡(luò)資源被釋放,RAPIER 再重新分配帶寬.RAPIER 主要處理數(shù)據(jù)敏感的大任務(wù),而延時(shí)敏感的獨(dú)立流和小任務(wù)直接以ECMP 的方式路由.相比于只關(guān)注流調(diào)度的方案,RAPIER 提升了任務(wù)的性能.
FDALB[41]方案是一個(gè)感知流大小分布的負(fù)載均衡機(jī)制.FDALB 在主機(jī)端測量流大小分布,檢測并標(biāo)記長流.當(dāng)一條流的已發(fā)送字節(jié)數(shù)超過一個(gè)閾值時(shí),其數(shù)據(jù)包包頭將被標(biāo)記.一旦一條流結(jié)束,FDALB 重新計(jì)算長短流區(qū)分的閾值.交換機(jī)在接收到被標(biāo)記的包時(shí),將其轉(zhuǎn)發(fā)給中央控制器.中央控制器收到被標(biāo)記的包后,基于全局的擁塞信息為其做負(fù)載均衡決策.為了防止長流同步到達(dá)交換機(jī)時(shí),中央控制器為它們選擇相同的路徑帶來的碰撞問題,FDALB 使用了一個(gè)貪婪輪詢算法調(diào)度長流到有最大共享剩余帶寬的路徑上傳輸.交換機(jī)在接收到短流的包時(shí),直接以ECMP 的方式傳輸.FDALB 方案減少了流碰撞事件數(shù)量,同時(shí)實(shí)現(xiàn)了高可擴(kuò)展性.但是FDALB 僅感知發(fā)送端本地的流量分布,沒有考慮其他發(fā)送端的流量,難以計(jì)算得到最優(yōu)的區(qū)分長短流閾值.
Freeway[42]方案是一個(gè)區(qū)分長短流調(diào)度方式的機(jī)制.為了避免長短流間的資源競爭,Freeway 將長短流分別隔離到高帶寬路徑和低延時(shí)路徑上傳輸.Freeway 利用控制器收集流量和路徑狀態(tài)信息,動(dòng)態(tài)地調(diào)整低延時(shí)路徑和高帶寬路徑的數(shù)量,以保證短流的完成期限和長流的吞吐率.Freeway 的路徑分割算法依據(jù)實(shí)時(shí)短流負(fù)載情況變化調(diào)節(jié)低延時(shí)路徑的數(shù)量.Freeway 基于M/G/1 排隊(duì)理論為短流建立了隊(duì)列模型,以SLA(service-level agreement)定義的短流完成期限為約束,分析了低延時(shí)路徑的最高延時(shí)閾值.當(dāng)?shù)脱訒r(shí)路徑的平均延時(shí)超過2 倍閾值時(shí),增加低延時(shí)路徑數(shù)量;否則,將低延時(shí)路徑調(diào)整為高吞吐量路徑,分配給長流以增加可用帶寬.在Freeway中,短流采用本地調(diào)度策略ECMP 算法,而長流用中心調(diào)度的方式調(diào)度.Freeway 將長短流隔離在不同的路徑上傳輸,能有效地解決長短流的資源競爭問題.但由于采用了流級別的調(diào)度方式,無法靈活使用多路徑.
OFLoad[43]是一種基于OpenFlow 的數(shù)據(jù)中心網(wǎng)絡(luò)動(dòng)態(tài)負(fù)載平衡方案,可實(shí)現(xiàn)數(shù)據(jù)中心的自動(dòng)路由配置和負(fù)載優(yōu)化.OFLoad 在主機(jī)上利用應(yīng)用層信息區(qū)分和標(biāo)記長流和短流.在OpenFlow 交換機(jī)上首先執(zhí)行ECMP 路由策略,然后定期向控制器發(fā)送流信息.控制器為長流和短流采用不同的路由規(guī)則.對于長流,控制器將其分配到一條利用率最低的路徑上傳輸.同時(shí),控制器收集到同一目的ToR 交換機(jī)的短流,并依據(jù)路徑負(fù)載為這些短流分配路徑,使得負(fù)載重的路徑被分配較少量的短流.屬于同一條短流的數(shù)據(jù)包在一條路徑上傳播,以避免亂序問題.OFLoad 可有效解決長流阻塞短流的問題.
除了將長短流分配到不同的路徑上傳輸,學(xué)者們也提出將長短流隔離在不同的優(yōu)先級隊(duì)列中來保證長短流的性能[24,47].然而,區(qū)分優(yōu)先級隊(duì)列的閾值直接影響網(wǎng)絡(luò)性能.由于流量的動(dòng)態(tài)性和流大小的多樣性,無法采用固定的優(yōu)先級閾值,AuTO[44]采用了強(qiáng)化學(xué)習(xí)的方法實(shí)現(xiàn)自動(dòng)的流量優(yōu)化.AuTO 的中央系統(tǒng)收集各主機(jī)上的流信息,使用了深度強(qiáng)化學(xué)習(xí)技術(shù)來確定長短流的優(yōu)先級和長流的發(fā)送速率與發(fā)送路徑.為了最小化短流的延時(shí),短流被給予高的優(yōu)先級,同時(shí)直接以ECMP 的方式傳輸;為了保證長流的吞吐率,中央系統(tǒng)單獨(dú)給長流分配發(fā)送速率和發(fā)送路徑.AuTO 解決了短流被長流阻塞的問題,同時(shí)也保證了長流的吞吐量,但AuTO 依賴于機(jī)器學(xué)習(xí)方法的準(zhǔn)確性,高動(dòng)態(tài)和強(qiáng)突發(fā)的流量會增加AuTO 的復(fù)雜性.
數(shù)據(jù)中心中,SDN 控制器通常被用來為流量分配路徑.新流或需要重路由的流在交換機(jī)上無法匹配流表項(xiàng)時(shí),會向控制器發(fā)送packet-in 消息請求分配路徑.每條流的路由建立會消耗控制器的內(nèi)存,同時(shí),頻繁的packet-in事件易引起過大的延時(shí).為了降低控制器的內(nèi)存和延時(shí)開銷,控制器通常只重路由流大小大于給定靜態(tài)閾值的長流來減輕ECMP 的哈希沖突問題.但理想情況下,任何一條流都應(yīng)該被路由到最佳路徑上傳輸.SOFIA[45]設(shè)計(jì)了一種最佳流量分割控制策略.控制器利用在線學(xué)習(xí)算法根據(jù)流大小分布計(jì)算區(qū)分長短流的最佳閾值,并統(tǒng)一通告給所有交換機(jī).交換機(jī)根據(jù)分割閾值判定可重路由的流.SOFIA 減少了packet-in 消息延遲,降低了路由開銷和鏈路擁塞程度.
3.1.4 針對多個(gè)中央控制器的負(fù)載均衡機(jī)制
大型數(shù)據(jù)中心網(wǎng)絡(luò)通常被分割成多個(gè)區(qū)域,每個(gè)區(qū)域分別由一個(gè)控制器監(jiān)測和重路由流量.多個(gè)控制器能有效分擔(dān)負(fù)載,但也帶來了控制器間負(fù)載不均衡的問題.LBDC[46]首次提出數(shù)據(jù)中心中分布式控制器的負(fù)載平衡問題,并證明該問題是NP 完全的.同時(shí),LBDC 給出了集中式和分布式的貪婪方法來遷移交換機(jī)的控制權(quán),以解決控制器間負(fù)載不均衡的問題.集中式和分布式方案分別利用了全局網(wǎng)絡(luò)視圖和本地信息,在控制器間流量不均衡時(shí)遷移交換機(jī)的控制權(quán),將具有最大流量的交換機(jī)移交給負(fù)載最輕的控制器管理.
雖然集中式的負(fù)載均衡方案可利用中央控制器收集全局流量信息,根據(jù)全局信息實(shí)現(xiàn)最優(yōu)的負(fù)載均衡決策,但是獲取和維護(hù)全局信息需要一定的部署開銷,較大的反饋和控制延時(shí)也會降低動(dòng)態(tài)突發(fā)流量下的集中式負(fù)載均衡性能.另外,還需要部署額外的網(wǎng)絡(luò)組件,增加實(shí)施成本.基于主機(jī)的負(fù)載均衡方案將負(fù)載均衡操作轉(zhuǎn)移到分布式的主機(jī)上進(jìn)行,降低了部署開銷.近年來,學(xué)術(shù)界提出了多種基于主機(jī)的方案,見表2,它們的解決思路可分為:①FlowBender[48]、CLOVE[49]、ALB[50]、Hermes[51]、ELAB[52]等重路由方法;② MPTCP[53]、FUSO[54]、DCMPTCP[55]、DC2-MTCP[56]、MMPTCP[57]、Presto[58]、VMS[59]、DumbNet[60]、Flicr[61]等流量切分協(xié)議;③DRB[62]、JUGGLER[63]、NDP[64]、CAPS[65]、MP-RDMA[66]等細(xì)粒度調(diào)度機(jī)制.
Table 2 Comprehensive comparison of host-based load balancing mechanisms表2 基于主機(jī)的負(fù)載均衡機(jī)制的綜合對比
Table 2 Comprehensive comparison of host-based load balancing mechanisms (Continued)表2 基于主機(jī)的負(fù)載均衡機(jī)制的綜合對比(續(xù))
3.2.1 基于重路由的主機(jī)負(fù)載均衡機(jī)制
FlowBender[48]是一個(gè)基于主機(jī)的負(fù)載均衡機(jī)制.針對ECMP 的哈希碰撞問題,FlowBender 動(dòng)態(tài)地重路由遭遇擁塞的流.FlowBender 利用ECN 和TCP 超時(shí)信號檢測擁塞和鏈路故障.類似于DCTCP 的標(biāo)記機(jī)制,當(dāng)交換機(jī)隊(duì)列長度超過一個(gè)給定閾值時(shí),所經(jīng)過的數(shù)據(jù)包的ECN 字段被標(biāo)記.若一條流中被標(biāo)記的包的數(shù)量超過給定閾值時(shí),FlowBender 重路由該流.FlowBender 在交換機(jī)中配置哈希函數(shù),將TTL(time to live)的值作為哈希函數(shù)的額外輸入值.當(dāng)FlowBender 檢測到擁塞時(shí),在發(fā)送主機(jī)上修改包頭的TTL 字段,重新計(jì)算哈希值來實(shí)現(xiàn)重路由.FlowBender 感知路徑擁塞,實(shí)現(xiàn)對擁塞流的重路由,有效減輕了哈希碰撞的影響.但由于路徑選擇的隨機(jī)性和被動(dòng)性,重新選擇的路徑難以取得最優(yōu)效果.
CLOVE[49]是一個(gè)部署在軟件交換機(jī)上的負(fù)載均衡算法,軟件交換機(jī)部署在源端主機(jī)的虛擬機(jī)管理器上.CLOVE 在物理交換機(jī)上使用ECMP 路由,利用源路由機(jī)制發(fā)現(xiàn)等價(jià)多路徑.CLOVE 使用ECN 或INT 技術(shù)[67-69]來檢測路徑的擁塞狀況,在軟件交換機(jī)上,通過改變包頭五元組將流換到最好的路徑上.為了防止換路帶來的數(shù)據(jù)包亂序問題,CLOVE 采用包簇作為調(diào)度粒度.CLOVE 是數(shù)據(jù)中心中,第1 個(gè)虛擬化技術(shù)下感知擁塞的數(shù)據(jù)平面負(fù)載均衡器,不用修改物理交換機(jī)或虛擬機(jī),但是INT 技術(shù)通用性不強(qiáng),僅使用ECN 來檢測擁塞也不夠準(zhǔn)確.
針對CLOVE-ECN 擁塞檢測不準(zhǔn)確的問題,ALB[50]提出了一個(gè)基于準(zhǔn)確擁塞反饋的自適應(yīng)負(fù)載均衡方案.ALB 采用基于延時(shí)的擁塞檢測,準(zhǔn)確地將包簇轉(zhuǎn)發(fā)至輕擁塞的路徑.ALB 的源端主機(jī)上部署了虛擬交換機(jī),在虛擬交換機(jī)上采用源路由機(jī)制實(shí)現(xiàn)多路徑傳輸.ALB 利用DPDK 技術(shù)[70]在TCP 數(shù)據(jù)包頭可選字段寫入時(shí)間戳,準(zhǔn)確地測量每一條流的RTT 和單向延時(shí),并且解決了源和目的主機(jī)時(shí)間不同步問題.但是,軟件交換機(jī)的處理時(shí)間可能影響延時(shí)檢測的準(zhǔn)確性.
Hermes[51]采用主動(dòng)的擁塞檢測和謹(jǐn)慎的路由決策以降低數(shù)據(jù)包亂序影響.Hermes 利用了ECN、延時(shí)和探測包來檢測路徑擁塞和失效狀態(tài),預(yù)估切換路徑的收益來決定是否切換路徑,以緩解盲目切換路徑導(dǎo)致的亂序影響,避免鏈路狀態(tài)和擁塞窗口不匹配的問題.Hermes 主要由感知模塊和重路由模塊兩個(gè)模塊組成,如圖3 所示.感知模塊利用RTT 和ECN 兩種擁塞信號感知網(wǎng)絡(luò)擁塞和鏈路故障.當(dāng)RTT 和ECN 信號都顯示擁塞輕時(shí),該路徑被認(rèn)為是非擁塞路徑;當(dāng)檢測的RTT 和ECN 信號都顯示重?fù)砣麜r(shí),該路徑被認(rèn)為是擁塞路徑;其他情況,該路徑被認(rèn)為是灰色路徑.另外,當(dāng)Hermes 檢測到某條路徑上的流超時(shí)事件超過3 次或者收不到任何ACK 包時(shí),該路徑被認(rèn)為是故障路徑,重路由時(shí)會忽略此類路徑.重路由模塊采用包級別的調(diào)度粒度以及時(shí)反應(yīng)網(wǎng)絡(luò)擁塞.為了防止擁塞不匹配和數(shù)據(jù)包亂序問題,Hermes根據(jù)路徑狀態(tài)和流狀態(tài)來做重路由決策.只有新流出現(xiàn)或流遭遇超時(shí),或者當(dāng)前路徑被認(rèn)定為擁塞路徑時(shí),Hermes 才觸發(fā)重路由機(jī)制.而且,Hermes 只重路由低于一定發(fā)送速率的長流,同時(shí)要保證切換的路徑是有收益的.Hermes 適用于非對稱網(wǎng)絡(luò),但是重路由的決策過于保守,易導(dǎo)致鏈路利用率低.
Fig.3 Schematic diagram of Hermes圖3 Hermes 原理圖
ELAB[52]是一種基于主機(jī)端的負(fù)載均衡機(jī)制,不但易于部署,而且能動(dòng)態(tài)感知網(wǎng)絡(luò)擁塞.ELAB 部署在主機(jī)系統(tǒng)協(xié)議棧的網(wǎng)絡(luò)層和傳輸層之間,首先將數(shù)據(jù)包進(jìn)行封裝,加入隧道包頭;然后,通過改變隧道包頭的五元組在主機(jī)上實(shí)現(xiàn)主動(dòng)路由.ELAB 在主機(jī)進(jìn)行第1 次通信時(shí)探測路徑狀態(tài),再以較長的周期反復(fù)探測以感知網(wǎng)絡(luò)拓?fù)涞淖兓?ELAB 主機(jī)端維護(hù)路徑上限帶寬、實(shí)際發(fā)送速率和可用帶寬這3 個(gè)狀態(tài).其中,上限帶寬初始化為鏈路物理帶寬,然后依據(jù)是否收到ECN 標(biāo)記包,以實(shí)際發(fā)送速率來更新上限帶寬.在收到ECN 標(biāo)記包的一段時(shí)間后,主機(jī)端在擁塞路徑上發(fā)送一組探測包以重新探測上限帶寬.實(shí)際發(fā)送速率由接收端的數(shù)據(jù)包接收速率決定.可用帶寬為上限帶寬和實(shí)際發(fā)送速率的差值.最后,ELAB 主機(jī)端按照可用帶寬比例,以比例輪詢的方式在各條路徑上分配流量.ELAB 機(jī)制無需修改交換機(jī),實(shí)現(xiàn)了路徑擁塞狀態(tài)敏感的負(fù)載均衡.
3.2.2 流量切分的主機(jī)負(fù)載均衡機(jī)制
MPTCP[53]是一種基于主機(jī)的多路徑傳輸控制協(xié)議,在發(fā)送主機(jī)上,將原本的單條數(shù)據(jù)流劃分成多條并行的子流在不同路徑上傳輸.MPTCP 在發(fā)送端和接收端之間建立多條子流,各子流擁有獨(dú)立的序號空間和擁塞窗口,執(zhí)行類似TCP 的加性增窗乘性減窗策略,可自適應(yīng)地將流量從擁塞路徑上轉(zhuǎn)移到非擁塞路徑上,從而實(shí)現(xiàn)多路徑的負(fù)載均衡.盡管MPTCP 提升了長流的性能,但在丟包情況下,它嚴(yán)重加劇了延時(shí)敏感短流的拖尾時(shí)間.當(dāng)路徑發(fā)生擁塞的時(shí)候,短流在擁塞路徑上的子流很容易發(fā)生全窗丟失而觸發(fā)超時(shí)事件.而MPTCP 的子流僅僅處理自身的丟包事件,無法快速解決超時(shí)問題,導(dǎo)致長的拖尾延時(shí),從而影響整體的流完成時(shí)間.
FUSO[54]改進(jìn)了MPTCP 協(xié)議,能更快速地恢復(fù)丟包.FUSO 利用輕擁塞子流的空閑擁塞窗口快速重傳其他子流沒有確認(rèn)的數(shù)據(jù)包,避免了拖尾子流的影響,減少流傳輸?shù)目傮w完成時(shí)間.當(dāng)發(fā)送端發(fā)現(xiàn)應(yīng)用層沒有新的數(shù)據(jù)包發(fā)送,同時(shí)傳輸層擁有空閑擁塞窗口的時(shí)候,擁塞最輕的子流會重傳擁塞最重子流的未確認(rèn)的包.此外,MPTCP 的接收端有一個(gè)共享緩沖區(qū),每條子流擁有一個(gè)映射到該共享緩沖區(qū)的虛擬接收緩沖區(qū).FUSO 的接收端直接將恢復(fù)的包放在共享緩沖區(qū),加快數(shù)據(jù)的提交.
MPTCP 使用子流均衡網(wǎng)絡(luò)中的流量,每條子流維護(hù)獨(dú)立的擁塞窗口,最大化每條路徑的吞吐量,提升了數(shù)據(jù)中心中數(shù)據(jù)傳輸性能.但MPTCP 不適用于ToR 內(nèi)的流和多對一模式下的短流.一方面,同一ToR 內(nèi)的主機(jī)對之間只有一條路徑,多條子流同時(shí)發(fā)送到一條路徑上會增加鏈路擁塞;另一方面,增加多對一短流的子流數(shù)會加重網(wǎng)絡(luò)擁塞,短流的子流過小又容易遭遇丟包超時(shí).DCMPTCP[55]方案是對MPTCP 的改進(jìn):首先,使用TCP 協(xié)議控制ToR 內(nèi)流量,消除不必要的子流減少開銷;然后,DCMPTCP 依據(jù)已發(fā)送字節(jié)數(shù)評估流大小.短流用一條子流傳輸所有的數(shù)據(jù)以減輕多條子流造成的突發(fā)丟包問題.對于ToR 間的流量,當(dāng)一條路徑上發(fā)生擁塞時(shí),發(fā)送端的所有子流共享擁塞信息并減小擁塞窗口.
為了充分利用數(shù)據(jù)中心網(wǎng)絡(luò)的鏈路帶寬,多路徑TCP 將一條流切分為多條子流,在多條并行路徑上傳輸.但是:當(dāng)短流被切分為多條子流時(shí),每條子流的擁塞窗口過小,在遭遇丟包時(shí)易發(fā)生超時(shí),嚴(yán)重影響短流的延時(shí);而當(dāng)長流被切分為多條子流時(shí),擁塞路徑上的子流也容易阻塞整體傳輸.DC2-MTCP[56]作為一個(gè)多路徑傳輸協(xié)議,利用網(wǎng)絡(luò)編碼技術(shù)來快速恢復(fù)丟失和被阻塞的數(shù)據(jù)包.發(fā)送端首先通過監(jiān)測數(shù)據(jù)包的丟失事件,推測路徑質(zhì)量,以選擇合適的包進(jìn)行編碼:若路徑間質(zhì)量差異小,使用前向糾錯(cuò)編碼技術(shù)對總發(fā)送窗口中最后若干個(gè)未被確認(rèn)的包進(jìn)行編碼,以加快數(shù)據(jù)包恢復(fù);若路徑間質(zhì)量差異大,選擇總發(fā)送窗口中最先若干個(gè)未被確認(rèn)的包進(jìn)行后向糾錯(cuò)編碼,以減少編碼開銷.然后,將編碼包分配給不同的子流.DC2-MTCP 依據(jù)路徑的質(zhì)量調(diào)整長流的編碼冗余度:輕擁塞的子流主動(dòng)傳輸更多的冗余包,以恢復(fù)重?fù)砣恿鞯膩G包;在高質(zhì)量路徑上傳輸更多的編碼包,以均衡冗余負(fù)載.對于無法準(zhǔn)確感知路徑質(zhì)量的短流,通過歷史統(tǒng)計(jì)信息來調(diào)整編碼冗余度.DC2-MTCP 降低了短流的延時(shí),同時(shí)提高了長流的吞吐量.
針對數(shù)據(jù)中心長流和短流各自的性能需求[71],MMPTCP[57]采用包分散和子流傳輸相結(jié)合的方式,提高網(wǎng)絡(luò)鏈路利用率.在初始階段,使用隨機(jī)包分散方法快速利用所有可用路徑資源,有效降低了延時(shí)敏感短流的完成時(shí)間;當(dāng)已發(fā)送字節(jié)大于一定閾值時(shí),采用MPTCP 協(xié)議來傳輸,MMPTCP 的長流被分割成多條子流,保證了較高的吞吐率.包分散的方法易帶來數(shù)據(jù)包亂序問題,可通過動(dòng)態(tài)調(diào)節(jié)快速重傳門限值來防止由數(shù)據(jù)包亂序引起的虛假重傳.MMPTCP 根據(jù)拓?fù)湫畔⒄{(diào)節(jié)快速重傳門限值,當(dāng)源端發(fā)送的流量需要通過核心層交換機(jī)時(shí),采用較高的快速重傳門限;當(dāng)流量僅在同一ToR 交換機(jī)內(nèi)傳輸時(shí),采用較低的快速重傳門限.MMPTCP 使用胖樹尋址方案作為設(shè)置快速重傳門限的基礎(chǔ),每個(gè)源端通過檢查源IP 地址和目的IP 地址來推斷其流量將穿越的網(wǎng)絡(luò)拓?fù)鋵?當(dāng)主機(jī)對間的流量在同一ToR 交換機(jī)下傳輸時(shí),采用默認(rèn)的快速重傳閾值3;當(dāng)主機(jī)對間的流量必須經(jīng)過匯聚層和核心層交換機(jī)時(shí),則使用較高的閾值.
在虛擬化多租戶數(shù)據(jù)中心,客戶通常會部署自定義虛擬機(jī).各虛擬機(jī)管理器(如hypervisor)下的虛擬交換機(jī)可利用多條等價(jià)路徑實(shí)現(xiàn)負(fù)載均衡,而無需物理網(wǎng)絡(luò)中的特殊功能或修改客戶虛擬機(jī)TCP/IP 協(xié)議棧,有利于移植與擴(kuò)展.
Presto[58]使用軟件交換機(jī)將流切分成64KB 的數(shù)據(jù)切片.Presto 利用中央控制器收集拓?fù)湫畔?并將信息轉(zhuǎn)發(fā)給在主機(jī)上的軟件交換機(jī).控制器首先將網(wǎng)絡(luò)分割成一組生成樹,每個(gè)軟件交換機(jī)對應(yīng)一個(gè)生成樹.然后為每一個(gè)生成樹中的每一個(gè)軟件交換機(jī)分配一個(gè)唯一的轉(zhuǎn)發(fā)標(biāo)簽,并安裝相關(guān)的轉(zhuǎn)發(fā)規(guī)則.為了實(shí)現(xiàn)有效的負(fù)載均衡,軟件交換機(jī)以輪詢的方式訪問影子MAC 地址,使得數(shù)據(jù)切片均勻地分布在網(wǎng)絡(luò)中.雖然小于64KB 的流不會發(fā)生亂序,但大于64KB 的流仍然可能亂序.Presto 修改的GRO(generic receive offload)算法區(qū)分了丟包和亂序.當(dāng)發(fā)生亂序時(shí),因?yàn)閬y序的包還在網(wǎng)絡(luò)中,修改的GRO 不直接提交原來的段,而是等待亂序包到達(dá)后再提交給上層.由于數(shù)據(jù)切片內(nèi)不會發(fā)生亂序,當(dāng)屬于同一個(gè)數(shù)據(jù)切片中的包出現(xiàn)空缺時(shí),Presto 認(rèn)為這是丟包引起.此時(shí),GRO 立即向上層提交數(shù)據(jù)段.當(dāng)流切片的邊界出現(xiàn)空缺,無法判斷是丟包還是亂序時(shí),Presto 則依據(jù)是否超時(shí)判斷丟包.
虛擬多信道散射VMS[59]方案是一個(gè)基于虛擬交換機(jī)的負(fù)載均衡機(jī)制.VMS 通過在發(fā)送端改變五元組,將一條流的包分散到多條轉(zhuǎn)發(fā)路徑上;接收端接收到數(shù)據(jù)包后,改回原來的五元組,并重新排序數(shù)據(jù)包以避免亂序.VMS 估算每一條轉(zhuǎn)發(fā)路徑的可用帶寬,用虛擬窗口大小表示,在TCP 包頭中設(shè)置窗口大小,調(diào)節(jié)流傳輸速率.VMS 根據(jù)不同路徑的虛擬窗口大小,自適應(yīng)地為數(shù)據(jù)包選擇轉(zhuǎn)發(fā)路徑.VMS 在虛擬機(jī)交換機(jī)上部署,不需要修改網(wǎng)絡(luò)協(xié)議棧和主機(jī)底層協(xié)議,可近似實(shí)現(xiàn)MPTCP 的性能.但是VMS 兩端都需支持虛擬交換機(jī),同時(shí),軟件交換機(jī)的處理延時(shí)大,影響延時(shí)敏感流的性能.
為了簡化數(shù)據(jù)平面交換機(jī)的操作,DumbNet[60]在主機(jī)上實(shí)現(xiàn)拓?fù)浒l(fā)現(xiàn)、網(wǎng)絡(luò)路由和故障處理.主機(jī)使用源路由對數(shù)據(jù)包進(jìn)行轉(zhuǎn)發(fā),數(shù)據(jù)包的包頭包含一組代表其傳輸路徑的端口號;交換機(jī)僅依據(jù)數(shù)據(jù)包攜帶的端口號轉(zhuǎn)發(fā)數(shù)據(jù)包,完全實(shí)現(xiàn)了網(wǎng)絡(luò)數(shù)據(jù)平面無狀態(tài)化.DumbNet 使用基于主機(jī)的機(jī)制來收集路徑信息,按照廣度優(yōu)先搜索算法發(fā)送探測包到其他主機(jī)來發(fā)現(xiàn)拓?fù)浣Y(jié)構(gòu).然后,主機(jī)將路徑信息存儲在中央控制器中,由中央控制器維護(hù)全局拓?fù)湫畔⒑蛢?yōu)化轉(zhuǎn)發(fā)路由.同時(shí),主機(jī)從中央控制器獲得所有的可用路徑,并存儲在主機(jī)緩存中,以避免由鏈路故障引起的通信中斷問題.最后,主機(jī)在數(shù)據(jù)包的包頭寫入其傳輸路徑信息.DumbNet 的每臺主機(jī)維護(hù)了流信息,并存儲了多條可選路徑信息,實(shí)現(xiàn)了包簇級別的負(fù)載均衡.
Flicr[61]是一個(gè)針對直連網(wǎng)絡(luò)的主機(jī)端負(fù)載均衡方案.直連網(wǎng)絡(luò)是指ToR 交換機(jī)之間直接相連的網(wǎng)絡(luò)拓?fù)?其包含了多條不同長度的路徑.Flicr 利用ECN 和TCP 重傳超時(shí)檢測路徑擁塞和故障.每條流開始發(fā)送時(shí)被路由到最短路徑,而當(dāng)發(fā)生擁塞時(shí)被重新路由.Flicr 以RTT 為周期做路由決策,并以固定大小的包簇作為重路由的粒度以均衡負(fù)載.具體來說,Flicr 使用了交換機(jī)上的擴(kuò)展哈希功能和VLAN 標(biāo)簽,將交換機(jī)上的可用端口分配給最短路徑和非最短路徑的兩個(gè)轉(zhuǎn)發(fā)表,然后將兩組VLAN 標(biāo)簽值映射到這兩個(gè)轉(zhuǎn)發(fā)表.交換機(jī)依據(jù)包頭的VLAN標(biāo)簽值,在對應(yīng)的路由表中查找轉(zhuǎn)發(fā)端口.Flicr 部署在主機(jī)端,根據(jù)擁塞信號更新數(shù)據(jù)包包頭字段的VLAN 標(biāo)簽值,以重路由流量.Flicr 考慮了端到端的擁塞信息,可適用拓?fù)浜土髁坎粚ΨQ場景.
主動(dòng)式的流量切分負(fù)載均衡可以將任意長度的流切分成多段數(shù)據(jù)來實(shí)現(xiàn)負(fù)載均衡,可在一定程度上減少長流堵塞短流的問題,同時(shí)提高了網(wǎng)絡(luò)鏈路的利用率.但是,流量切分方案容易發(fā)生擁塞路徑上的拖尾問題.
3.2.3 細(xì)粒度調(diào)度的主機(jī)負(fù)載均衡機(jī)制
大多數(shù)負(fù)載均衡方案都以提高網(wǎng)絡(luò)利用率為目標(biāo),沒有同時(shí)考慮低延時(shí)和高吞吐量的需求.細(xì)粒度的負(fù)載均衡方案較好地平衡兩個(gè)目標(biāo).DRB[62]是一個(gè)部署在胖樹和VL2 拓?fù)涞姆植际截?fù)載均衡機(jī)制,以數(shù)據(jù)包作為調(diào)度粒度.DRB 選擇交錯(cuò)路徑傳輸數(shù)據(jù)包,以避免連續(xù)的數(shù)據(jù)包被轉(zhuǎn)發(fā)到同一條鏈路引起的隊(duì)列堆積問題.例如,在胖樹拓?fù)渲?發(fā)送主機(jī)將第1 個(gè)數(shù)據(jù)包隨機(jī)發(fā)送至一個(gè)匯聚交換機(jī),然后為下一個(gè)數(shù)據(jù)包以輪詢的方式選擇下一個(gè)匯聚交換機(jī),以避免連續(xù)的數(shù)據(jù)包轉(zhuǎn)發(fā)至同一個(gè)核心交換機(jī).DRB 將數(shù)據(jù)包均勻地分配到各個(gè)路徑上,充分利用了網(wǎng)絡(luò)資源,避免了交換機(jī)隊(duì)列堆積,降低了拖尾延時(shí).
JUGGLER[63]是用來解決數(shù)據(jù)中心中負(fù)載均衡機(jī)制下數(shù)據(jù)包亂序問題的方案.GRO(generic receive offload)合并接收的有序數(shù)據(jù)包提交給上層,以減少每個(gè)數(shù)據(jù)包的CPU 處理開銷.但數(shù)據(jù)包亂序會引起很高的CPU 開銷.JUGGLER 在網(wǎng)絡(luò)堆棧的入口GRO 層盡可能多地對數(shù)據(jù)包進(jìn)行排序.JUGGLER 先緩存活躍流的亂序數(shù)據(jù)包以等待亂序包達(dá)到,再有序地提交給上層.JUGGLER 可解決嚴(yán)重亂序問題,減少CPU 的開銷,但其需要修改網(wǎng)絡(luò)協(xié)議棧.
NDP[64]采用包級別的轉(zhuǎn)發(fā)方式,均勻地將流量分布到所有平行路徑上傳輸,加快傳輸速度,實(shí)現(xiàn)了低延時(shí)和高吞吐量的目標(biāo).NDP 的發(fā)送端對所有可用路徑隨機(jī)排序,然后按隨機(jī)的順序在每條路徑上發(fā)送一個(gè)數(shù)據(jù)包,發(fā)完一輪數(shù)據(jù)后重新排序路徑,有效避免了多個(gè)發(fā)送方同時(shí)選擇相同的路徑傳輸.NDP 采用了剔除數(shù)據(jù)包負(fù)載保留包頭的方式來避免數(shù)據(jù)包丟失.當(dāng)交換機(jī)的隊(duì)列長度超過一定閾值(比如8 個(gè)數(shù)據(jù)包)時(shí),數(shù)據(jù)包的負(fù)載被剔除,只保留其數(shù)據(jù)包頭,有效降低了排隊(duì)延時(shí).數(shù)據(jù)包頭優(yōu)先正常數(shù)據(jù)包出隊(duì),驅(qū)動(dòng)快速重傳,有效降低了重傳延時(shí).同時(shí),NDP 是一個(gè)接收端驅(qū)動(dòng)的方案.接收端根據(jù)接收的數(shù)據(jù)包驅(qū)動(dòng)響應(yīng)包(PULL 包),發(fā)送端以接收的響應(yīng)包來發(fā)送數(shù)據(jù)包或重傳包,可保證數(shù)據(jù)包的發(fā)送速率與接收端的鏈路速率匹配,實(shí)現(xiàn)了高吞吐率.
為了消除數(shù)據(jù)包亂序的影響,CAPS[65]提出了基于編碼的自適應(yīng)包分散機(jī)制,在傳輸層和網(wǎng)絡(luò)層之間增加了數(shù)據(jù)包編碼層,利用編碼包恢復(fù)亂序的數(shù)據(jù)包.為了利用多路徑和防止短流遭遇線端阻塞,CAPS 對短流的數(shù)據(jù)包進(jìn)行編碼,并將其散射到所有路徑上.同時(shí),為了提高長流的吞吐量,長流在短流的ON 階段用ECMP 傳輸;而在短流OFF 階段,則使用所有路徑以包粒度傳輸.
CAPS 由3 個(gè)模塊組成.
· 第一,編碼模塊.發(fā)送端使用前向糾錯(cuò)編碼技術(shù)(forward error correction,簡稱FEC)[72]對短流的數(shù)據(jù)包進(jìn)行編碼,每k個(gè)數(shù)據(jù)包被編碼成k+r個(gè)編碼包,其中產(chǎn)生了r個(gè)冗余包.冗余包影響解碼速率和網(wǎng)絡(luò)負(fù)載開銷,因此,CAPS 根據(jù)實(shí)時(shí)網(wǎng)絡(luò)狀況調(diào)節(jié)冗余包的數(shù)量,以實(shí)現(xiàn)收益的最大化.
· 第二,包散射模塊.為了減輕長短流間的相互影響,CAPS 對長短流采取不同的調(diào)度策略:短流使用隨機(jī)包散射(RPS)方案隨機(jī)散射到所有路徑上;而長流與短流共存時(shí),長流使用ECMP 路由機(jī)制避免亂序,否則使用RPS 機(jī)制.
· 第三,解碼模塊.接收端在網(wǎng)絡(luò)層獲得任意k個(gè)編碼包后,解碼出k個(gè)原始數(shù)據(jù)包,提交給上層.
基于編碼技術(shù)的負(fù)載均衡方案可有效地減輕數(shù)據(jù)包亂序的問題,但是會增加網(wǎng)絡(luò)中冗余包的數(shù)量,加重網(wǎng)絡(luò)擁塞.
RDMA 因其低時(shí)延、高吞吐量和低CPU 開銷的特性被廣泛部署使用,但目前的RDMA 采用單條路徑傳輸機(jī)制,無法利用數(shù)據(jù)中心中豐富的并行路徑資源.MP-RDMA[66]方案為RDMA 提供了一種多路徑傳輸機(jī)制,采用了3 種新的技術(shù)解決RDMA 網(wǎng)卡芯片內(nèi)存容量有限的問題.
(1) 采取一個(gè)多路徑的ACK-clocking 機(jī)制來分配流量.具體來說,發(fā)送方依據(jù)接收的每個(gè)ACK 所攜帶的ECN 標(biāo)志位來調(diào)整擁塞窗口:若ECN 標(biāo)志位為0,則擁塞窗口增加1;若ECN 標(biāo)志位為1,則擁塞窗口減半.
(2) 使用一個(gè)亂序感知的路徑選擇機(jī)制,主動(dòng)剔除慢路徑并自適應(yīng)地選擇一組快速且延遲相似的路徑.
(3) 利用同步機(jī)制,以確保在需要時(shí)按順序更新內(nèi)存.
與單路徑RDMA 相比,MP-RDMA 僅為每個(gè)連接狀態(tài)增加66B 額外內(nèi)存大小,可以顯著提高異常情況下的健壯性,并改善整體網(wǎng)絡(luò)利用率.
集中式負(fù)載均衡方案部署開銷大,反饋和控制延時(shí)長;基于主機(jī)的負(fù)載均衡方案則需要修改主機(jī)協(xié)議棧.因此,目前主流的數(shù)據(jù)中心網(wǎng)絡(luò)負(fù)載均衡策略是通過在交換機(jī)上快速感知網(wǎng)絡(luò)擁塞,采用不同的調(diào)度粒度將網(wǎng)絡(luò)流量發(fā)送到不同的路徑上.近年來,學(xué)術(shù)界提出了多種基于交換機(jī)的方案,見表3,它們的解決思路可按調(diào)度粒度劃分為:①WCMP[73]、Expeditus[74]、TinyFlow[75]、DiFS[76]、DFFR[77]、Beamer[78]、iLoad[79]、Al-Tarazi[80]、Dart[81]等流級別的調(diào)度方法;② Detail[82]、RPS[83]、DRILL[84]、GRR[85]、QDAPS[86]、RMC[87]、OPER[88]等包級別的調(diào)度方法;③Flare[89]、CONGA[90]、HULA[91]、Multi-hop CONGA[92]、LetFlow[93]、Luopan[94]和MLAB[95]等包簇級別的調(diào)度方法;④ AG[96]、TLB[97]等自適應(yīng)粒度的調(diào)度方法.
Table 3 Comprehensive comparison of switch-based load balancing mechanisms表3 基于交換機(jī)的負(fù)載均衡機(jī)制的綜合對比
Table 3 Comprehensive comparison of switch-based load balancing mechanisms (Continued 1)表3 基于交換機(jī)的負(fù)載均衡機(jī)制的綜合對比(續(xù)1)
Table 3 Comprehensive comparison of switch-based load balancing mechanisms (Continued 2)表3 基于交換機(jī)的負(fù)載均衡機(jī)制的綜合對比(續(xù)2)
3.3.1 流級別的交換機(jī)負(fù)載均衡
由于ECMP 不感知路徑的擁塞狀態(tài)和流量特征,容易造成多條數(shù)據(jù)流在路徑上發(fā)生哈希沖突.為了避免路徑流量的不均衡,加權(quán)等價(jià)多路徑路由WCMP[73]利用中央控制器得到的網(wǎng)絡(luò)拓?fù)浜土髁啃畔?根據(jù)路徑的帶寬容量為每條路徑分配權(quán)重,以加權(quán)公平方法將流量哈希到不同的路徑.WCMP 可以改善ECMP 中哈希沖突的問題,同時(shí)適用不對稱網(wǎng)絡(luò).但是作為一種流粒度的負(fù)載均衡方法,WCMP 不夠靈活,不能依據(jù)網(wǎng)絡(luò)擁塞信息對流進(jìn)行重路由.
擁塞感知負(fù)載均衡方案要求知道源目的端之間所有路徑的實(shí)時(shí)擁塞信息,通常由ToR 交換機(jī)維護(hù)從其自身到其他ToR 交換機(jī)之間所有路徑的端到端擁塞狀態(tài)信息.雖然可以通過數(shù)據(jù)包攜帶擁塞狀態(tài),但這種信息反饋方法難以在復(fù)雜的3 層CLOS 拓?fù)渲惺褂?Expeditus[74]方案是一個(gè)適用于3 層網(wǎng)絡(luò)架構(gòu)的分布式擁塞感知的負(fù)載均衡協(xié)議.Expeditus 首先通過監(jiān)測本地出端口和進(jìn)端口的鏈路負(fù)載,確保擁塞狀態(tài)的實(shí)時(shí)性.然后,Expeditus 使用兩階段路徑選擇機(jī)制來匯總跨交換機(jī)的擁塞信息并做負(fù)載均衡決策.
· 第1 階段,只有源和目的ToR 交換機(jī)選擇從ToR 交換機(jī)到匯聚層的最好的路徑.源ToR 交換機(jī)發(fā)送其出端口的擁塞信息給目的ToR 交換機(jī),目的ToR 交換機(jī)將接收的擁塞信息與本地進(jìn)端口擁塞信息相結(jié)合,選出到匯聚層的最佳路徑.
· 第2 階段,被選擇的匯聚層交換機(jī)以同樣的方式根據(jù)2 層和3 層的擁塞信息選擇最佳的核心層交換機(jī).最終,ToR 和匯聚層交換機(jī)保存路徑選擇的結(jié)果.
Expeditus 為每條流在其TCP 三次握手期間做路徑選擇,可防止數(shù)據(jù)包亂序問題,同時(shí)也不會引入延時(shí)開銷.
針對ECMP 不區(qū)分長短流帶來的線端阻塞和拖尾延時(shí)的問題,以及哈希碰撞帶來的帶寬利用不足的問題,TinyFlow[75]將長流分割成多條10KB 的短流,讓所有的短流以ECMP 的路由方式均勻分布在所有路徑上.TinyFlow 主要包括兩個(gè)部分:長流檢測和動(dòng)態(tài)隨機(jī)路由.在TinyFlow 中,ToR 交換機(jī)通過采樣與主機(jī)相連的端口的流量檢測流信息.TinyFlow 利用OpenFlow 實(shí)現(xiàn)動(dòng)態(tài)隨機(jī)路由.當(dāng)監(jiān)測到長流時(shí),交換機(jī)隨機(jī)選擇一個(gè)不同的出端口傳輸該流,同時(shí)修改流表、重置字節(jié)數(shù).TinyFlow 可降低短流的完成時(shí)間,同時(shí)提高長流的吞吐率.但是,TinyFlow 易造成長流亂序的問題.
DiFS[76]方案將數(shù)據(jù)中心中的流量沖突分為本地沖突和遠(yuǎn)端沖突.在交換機(jī)一條出口鏈路上遭遇的并且可以通過本地調(diào)整傳輸路徑解決的沖突,稱為本地沖突;從多個(gè)核心交換機(jī)經(jīng)過同一匯聚交換機(jī)到同一ToR 交換機(jī)引起的流量沖突,稱為遠(yuǎn)端沖突.DiFS 的每個(gè)交換機(jī)采用分布式貪婪路徑分配算法將流量均勻分配到所有出口鏈路,以避免本地流量沖突.同時(shí),每個(gè)交換機(jī)運(yùn)行不均衡檢測算法監(jiān)測進(jìn)口鏈路的流量.如果檢測到流量沖突,交換機(jī)將發(fā)送顯式適應(yīng)請求(EAR)消息給流的發(fā)送交換機(jī),建議其更改轉(zhuǎn)發(fā)路徑.收到EAR 消息后,發(fā)送交換機(jī)運(yùn)行顯式適應(yīng)算法,避免遠(yuǎn)端流量沖突.DiFS 作為分布式流量調(diào)度算法,可擴(kuò)展性強(qiáng),但也存在路徑振蕩問題,需要較長的收斂時(shí)間.
DFFR[77]方案是一種分布式自適應(yīng)負(fù)載均衡算法,從理論上最大化匯聚層網(wǎng)絡(luò)利用率.已存在的分布式算法利用重路由流量來達(dá)到負(fù)載均衡的效果,這會引起路徑振蕩問題或者TCP 亂序問題.DFFR 通過維護(hù)每個(gè)交換機(jī)上每個(gè)出端口的流量信息,不采用重路由和流量分割,而是所有交換機(jī)將流量均勻分配給到同一目的ToR交換機(jī)的所有路徑,從而使得網(wǎng)絡(luò)達(dá)到最佳平衡,最大程度地利用所有帶寬.DFFR 在理論上和理想的情況下可以實(shí)現(xiàn)最優(yōu)平衡,但其分布式的方案難以適應(yīng)高動(dòng)態(tài)和強(qiáng)突發(fā)的數(shù)據(jù)中心流量.同時(shí)在不對稱網(wǎng)絡(luò)下,難以只根據(jù)本地信息實(shí)現(xiàn)理想的負(fù)載均衡.
數(shù)據(jù)中心負(fù)載均衡器(MUX)通過一組動(dòng)態(tài)后臺服務(wù)器實(shí)現(xiàn)了請求的分發(fā),均衡多個(gè)服務(wù)器之間的請求分布,避免單個(gè)服務(wù)器出現(xiàn)過載.現(xiàn)在,負(fù)載均衡方法在MUX 上保存了每個(gè)連接所選服務(wù)器的狀態(tài)信息,保證每個(gè)連接的數(shù)據(jù)都發(fā)送到同一個(gè)服務(wù)器,但是存在MUX 與服務(wù)器之間的狀態(tài)不匹配問題.當(dāng)MUX 和服務(wù)器數(shù)量同時(shí)發(fā)生變化時(shí),會使連接中斷.當(dāng)請求連接數(shù)量很多時(shí),負(fù)載均衡器的吞吐量下降.Beamer[78]不需要在MUX 中保存每條流的狀態(tài),而是利用存儲在后臺服務(wù)器中的連接狀態(tài)確保連接不會丟失.當(dāng)服務(wù)器接收到一個(gè)無連接狀態(tài)的數(shù)據(jù)包時(shí),會將其轉(zhuǎn)發(fā)到另一臺保持該數(shù)據(jù)包所在連接狀態(tài)的服務(wù)器.Beamer實(shí)現(xiàn)了穩(wěn)定哈希.連接先被哈希映射到一組固定的桶上,每個(gè)桶能映射到任何一個(gè)服務(wù)器.當(dāng)服務(wù)器池發(fā)生變化時(shí),Beamer利用控制器更新并保存服務(wù)器和桶之間的新映射,MUX 再把流量分配到新服務(wù)器,保證了不中斷、平滑的流量遷移.Beamer 能高效處理增加、移除MUX 和服務(wù)器的情況.
iLoad[79]是一種基于可編程數(shù)據(jù)平面的綠色數(shù)據(jù)中心負(fù)載均衡體系結(jié)構(gòu),其中部署了iLoad 的服務(wù)器向可編程交換機(jī)發(fā)送能源可用性信息.交換機(jī)根據(jù)該信息構(gòu)建哈希表,以均衡服務(wù)器的工作負(fù)載與可用能源,使得可用能源多的服務(wù)器能承擔(dān)更多的工作負(fù)載.
數(shù)據(jù)中心現(xiàn)有的大多數(shù)節(jié)能方案側(cè)重于最大程度地降低能耗,而忽視了網(wǎng)絡(luò)傳輸性能.Al-Tarazi 等人[80]首先證明了數(shù)據(jù)中心的最小化能耗問題是一個(gè)混合整數(shù)線性規(guī)劃問題,提出了啟發(fā)式節(jié)能算法,然后通過負(fù)載均衡機(jī)制提升網(wǎng)絡(luò)傳輸性能.該節(jié)能算法盡可能地關(guān)閉所有空閑的端口和交換機(jī),最小化活躍交換機(jī)和鏈路的數(shù)量,以最大程度地降低能耗.該方案同時(shí)使用了負(fù)載均衡機(jī)制在活躍鏈路上分配負(fù)載.該機(jī)制將流量負(fù)載分配到一個(gè)隨機(jī)選擇的活躍交換機(jī),同時(shí)確保該交換機(jī)出口鏈路的可用帶寬能滿足流量負(fù)載的帶寬需求,又不會造成該鏈路的利用率過載.該機(jī)制可有效緩解延時(shí)、丟包和鏈路擁塞問題.
在基于RDMA 的數(shù)據(jù)中心中,現(xiàn)有的大部分擁塞控制機(jī)制需要通過多次迭代才能調(diào)節(jié)速率至目標(biāo)速率,收斂速度較慢.Dart[81]方案將擁塞分為接收端擁塞和網(wǎng)內(nèi)擁塞,以分治的思想快速緩解擁塞.其中,接收端擁塞的產(chǎn)生原因是同一接收端的并發(fā)流匯聚于連接接收端的最后一跳鏈路,網(wǎng)內(nèi)擁塞是由不同接收端的流在網(wǎng)絡(luò)中其他鏈路上發(fā)生碰撞而產(chǎn)生.對于接收端的擁塞,接收端通過顯式分配速率的方式快速調(diào)節(jié)發(fā)送方的發(fā)送速率;對于網(wǎng)內(nèi)擁塞,Dart 在硬件交換機(jī)部署按序流偏轉(zhuǎn)機(jī)制對流進(jìn)行重路由,以快速響應(yīng)擁塞.當(dāng)某條流遇到擁塞時(shí),交換機(jī)為該流選取其他替代路徑,以避開擁塞鏈路.為了避免亂序和減少CPU 開銷,Dart 只對部分短流進(jìn)行路徑偏轉(zhuǎn).對于發(fā)生網(wǎng)內(nèi)擁塞的長流,則采用DCQCN[98]機(jī)制緩解擁塞.
流級別的負(fù)載均衡方法將同一條流的數(shù)據(jù)包在相同路徑上傳輸,能有效地避免亂序問題.但在高動(dòng)態(tài)和強(qiáng)突發(fā)的網(wǎng)絡(luò)流量下,靜態(tài)負(fù)載均衡方法不但容易發(fā)生擁塞沖突導(dǎo)致拖尾,而且無法靈活切換路徑,難以充分利用網(wǎng)絡(luò)帶寬.
3.3.2 包級別的交換機(jī)負(fù)載均衡
為了充分利用網(wǎng)絡(luò)帶寬,許多負(fù)載均衡方案以數(shù)據(jù)包為調(diào)度粒度.Detail[82]是一個(gè)跨層的方案,如圖4 所示,通過快速檢測下層的擁塞狀態(tài),驅(qū)動(dòng)上層的路由決策,以減少拖尾流完成時(shí)間.Detail 利用鏈路層信息減少丟包,在網(wǎng)絡(luò)層執(zhí)行包級別的負(fù)載均衡以均勻流量來減少拖尾程度,在傳輸層關(guān)閉TCP 協(xié)議的快速恢復(fù)和重傳機(jī)制來抵抗包亂序帶來的虛假擁塞通知,在應(yīng)用層提升延時(shí)敏感流的優(yōu)先級以保證其性能.
具體來說,在鏈路層,Detail 使用優(yōu)先級流控機(jī)制(PFC)[99]構(gòu)建了一個(gè)無損結(jié)構(gòu).交換機(jī)監(jiān)控入口隊(duì)列占用情況,當(dāng)隊(duì)列長度超過一定閾值時(shí),交換機(jī)發(fā)送暫停消息(pause)給上一跳,要求其停止發(fā)送數(shù)據(jù)包;當(dāng)隊(duì)列長度減小,交換機(jī)發(fā)送重啟消息(unpause)給上一跳,要求其恢復(fù)數(shù)據(jù)包傳輸.通過這種快速響應(yīng),無損結(jié)構(gòu)可確保數(shù)據(jù)包不會因擁塞而丟失.在網(wǎng)絡(luò)層,Detail 根據(jù)出端口隊(duì)列占用信息,動(dòng)態(tài)地為每個(gè)數(shù)據(jù)包選擇擁塞最輕的下一跳.由于鏈路層的無損結(jié)構(gòu)避免了網(wǎng)絡(luò)擁塞丟包,Detail 關(guān)閉TCP 協(xié)議的快速恢復(fù)和重傳機(jī)制來避免數(shù)據(jù)包亂序觸發(fā)的虛假重傳.在應(yīng)用層設(shè)置延時(shí)敏感流和延時(shí)不敏感流的優(yōu)先級,確保高優(yōu)先級的延時(shí)敏感流先被轉(zhuǎn)發(fā).
Fig.4 Schematic diagram of Detail圖4 Detail 原理圖
相對于復(fù)雜的跨層方法,RPS[83]方案實(shí)現(xiàn)了一個(gè)簡單的包級別負(fù)載均衡,在交換機(jī)上隨機(jī)地將數(shù)據(jù)包發(fā)送到所有的可用發(fā)送路徑,提高了鏈路利用率.RPS 不要求修改主機(jī),得到了很多商用交換機(jī)的支持.RPS 可以提高網(wǎng)絡(luò)利用率,保證負(fù)載均衡,但是它無法適應(yīng)非對稱拓?fù)?易遭受數(shù)據(jù)包亂序問題.由于TCP 無法區(qū)分亂序包和丟失的包,亂序包會導(dǎo)致?lián)砣翱诮荡?從而降低TCP 的性能.為了解決非對稱問題,RPS 采用了隊(duì)列管理機(jī)制限制隊(duì)列長度,減小隊(duì)列間的延時(shí)差異,以減輕數(shù)據(jù)包亂序程度.
為了更快速地緩解突發(fā)流量引起的擁塞,DRILL[84]提出了一個(gè)針對微突發(fā)流量的負(fù)載均衡策略.由于基于全局流量信息的負(fù)載均衡系統(tǒng)的控制周期很長,可能無法檢測和緩解生命周期短暫而又容易引起丟包的微突發(fā)流量.DRILL 僅利用本地信息快速做決策,通過比較當(dāng)前隨機(jī)選擇的兩個(gè)端口和上一輪最好端口的隊(duì)列長度,選擇最小隊(duì)列長度的端口作為當(dāng)前數(shù)據(jù)包的轉(zhuǎn)發(fā)端口.DRILL 可以及時(shí)地解決微突發(fā)流量帶來的擁塞問題,但是只依據(jù)本地交換機(jī)緩存隊(duì)列長度判斷路徑狀態(tài),不能準(zhǔn)確感知全局的擁塞信息,無法避免亂序問題.為了解決拓?fù)洳粚ΨQ帶來的亂序問題,DRILL 將不對稱的網(wǎng)絡(luò)拓?fù)浞指畛啥鄠€(gè)對稱的子拓?fù)?在每個(gè)子拓?fù)淅飯?zhí)行基于本地隊(duì)列的負(fù)載均衡決策.同時(shí),DRILL 根據(jù)每個(gè)子拓?fù)涞穆窂饺萘繛槠浞峙錂?quán)重,按權(quán)重將流量負(fù)載分配到各個(gè)子拓?fù)?以均衡流量負(fù)載.DRILL 根據(jù)交換機(jī)本地隊(duì)列長度快速地執(zhí)行數(shù)據(jù)包級別的轉(zhuǎn)發(fā)決策,可實(shí)現(xiàn)微秒級別的負(fù)載均衡,有效地解決了微突發(fā)流量帶來的擁塞問題.
全局輪詢GRR[85]方案是一個(gè)適用于胖樹拓?fù)涞陌墑e負(fù)載均衡路由算法.假設(shè)每個(gè)時(shí)隙容納一個(gè)數(shù)據(jù)包.在每個(gè)時(shí)隙中,GRR 為每個(gè)主機(jī)選擇從服務(wù)器到一個(gè)主干交換機(jī)端口的路由路徑,且任何路徑都不會相互交叉.GRR 使用了一種快速轉(zhuǎn)發(fā)且沒有緩存隊(duì)列的直通轉(zhuǎn)發(fā)交換機(jī).數(shù)據(jù)包通過直通轉(zhuǎn)發(fā)交換機(jī)從源服務(wù)器發(fā)送到主干交換機(jī).每個(gè)時(shí)隙內(nèi),路由路徑以輪詢的方式更新,實(shí)現(xiàn)了每包的負(fù)載均衡.GRR 方案可以保證100%的吞吐量,但是它依賴于直通轉(zhuǎn)發(fā)交換機(jī).當(dāng)交換機(jī)的端口變多,交換矩陣變得復(fù)雜時(shí),難以實(shí)現(xiàn)理想的直通交換.
包級別的負(fù)載均衡方案可以充分利用多路徑資源,提高網(wǎng)絡(luò)的利用率.但在非對稱拓?fù)湎?包級別的方案的魯棒性不強(qiáng),極易發(fā)生亂序問題,導(dǎo)致TCP 性能下降.QDAPS[86]方案設(shè)計(jì)了一種排隊(duì)延時(shí)敏感的包粒度負(fù)載均衡方案,以對抗數(shù)據(jù)包亂序問題.QDAPS 在交換機(jī)上根據(jù)同一條流的上一個(gè)數(shù)據(jù)包的剩余排隊(duì)時(shí)間為該流當(dāng)前數(shù)據(jù)包選擇合適的出端口隊(duì)列,使數(shù)據(jù)包能夠有序到達(dá)接收端.
QDAPS 由3 個(gè)模塊組成.
· 第一,估計(jì)隊(duì)列延時(shí).當(dāng)交換機(jī)接收了一個(gè)新包時(shí),QDAPS 根據(jù)該包所在隊(duì)列的實(shí)時(shí)隊(duì)列長度估計(jì)其排隊(duì)延時(shí).QDAPS 只需記錄每條流最新到達(dá)包的排隊(duì)延時(shí).
· 第二,解決包亂序.QDAPS 為流的第1 個(gè)數(shù)據(jù)包選擇最短隊(duì)列,然后在后續(xù)到達(dá)的數(shù)據(jù)包選擇出端口時(shí)保證了該出端口的排隊(duì)延時(shí)大于該流上一個(gè)數(shù)據(jù)包的剩余排隊(duì)時(shí)間,使得該流的數(shù)據(jù)包按序轉(zhuǎn)發(fā).
· 第三,重路由長流.由于QDPAS 的每個(gè)數(shù)據(jù)包總是排在該流上一個(gè)數(shù)據(jù)包的后面,長流易經(jīng)歷較長的排隊(duì)延時(shí).當(dāng)隊(duì)列長度超過某一閾值時(shí),QDAPS 重新選擇最短出端口隊(duì)列,防止出端口隊(duì)列堆積的問題.重路由長流一方面降低長流的排隊(duì)延時(shí),另一方面增加亂序降窗的概率,因此,QDAPS 選取了合適的重路由閾值以權(quán)衡排隊(duì)延時(shí)收益和亂序開銷.
QDAPS 作為包級別的負(fù)載均衡方案,增加了調(diào)度的靈活度,能快速地提升鏈路利用率;同時(shí),根據(jù)交換機(jī)隊(duì)列延時(shí)信息選擇合適的出端口隊(duì)列,有效地避免了亂序問題.但是QDAPS 要為每條流最新到達(dá)包記錄排隊(duì)延時(shí),受交換機(jī)有限的狀態(tài)內(nèi)存的限制.另外,QDAPS 需要為每個(gè)數(shù)據(jù)包計(jì)算非亂序路徑,無法忽略大規(guī)模流量下的計(jì)算開銷.
在數(shù)據(jù)中心的非對稱網(wǎng)絡(luò)拓?fù)湎?負(fù)載均衡機(jī)制容易出現(xiàn)亂序問題.由于缺乏顯式的亂序反饋,當(dāng)發(fā)送端收到重復(fù)ACK 的數(shù)量大于預(yù)先設(shè)定的閾值時(shí),發(fā)送端誤認(rèn)為網(wǎng)絡(luò)出現(xiàn)擁塞從而觸發(fā)快速重傳.這些不必要的快速重傳勢必降低鏈路利用率,增加流的完成時(shí)間.RMC[87]方案顯式反饋包亂序,并采用編碼技術(shù)來減少拖尾時(shí)間.交換機(jī)根據(jù)本地隊(duì)列長度和全局路徑延遲主動(dòng)地標(biāo)識亂序包,避免不必要的快速重傳.發(fā)送端依據(jù)亂序包的占比計(jì)算冗余編碼包的數(shù)量,減少拖尾時(shí)間.
數(shù)據(jù)包級別的細(xì)粒度負(fù)載均衡機(jī)制可以充分利用多條路徑,從而實(shí)現(xiàn)高鏈路帶寬利用率和均衡流量.但是網(wǎng)絡(luò)拓?fù)洳粚ΨQ時(shí)的包丟失問題導(dǎo)致了較大的流完成時(shí)間,造成了傳輸性能的下降.雖然基于網(wǎng)絡(luò)編碼的解決方案可以有效地解決亂序問題,但也會引入過多的冗余編碼包,帶來過多的流量開銷,導(dǎo)致較長的排隊(duì)延遲甚至丟包.為了解決這個(gè)問題,OPER[88]提出了一種具有自適應(yīng)能力的冗余編碼包替換機(jī)制.在嚴(yán)重?fù)砣麜r(shí),OPER 在交換機(jī)緩存中用新到達(dá)的數(shù)據(jù)包替換冗余編碼包,來避免冗余包產(chǎn)生的額外排隊(duì)延遲;否則,OPER 不替換或者少量替換冗余編碼包,保證亂序情況下的健壯性.OPER 極大地減少了網(wǎng)絡(luò)擁塞時(shí)編碼包導(dǎo)致的排隊(duì)延遲,提升了負(fù)載均衡機(jī)制的傳輸性能.
3.3.3 包簇級別的交換機(jī)負(fù)載均衡
流級別的負(fù)載均衡方案可有效避免數(shù)據(jù)包亂序,但易發(fā)生擁塞碰撞且無法充分利用多路徑資源.包級別的負(fù)載均衡方案充分利用了多路徑資源,但極易發(fā)生亂序問題.包簇級別負(fù)載均衡的切換粒度介于以上兩類之間,可有效保證鏈路利用率和降低數(shù)據(jù)包亂序程度.包簇一般是由包間時(shí)間間隔區(qū)分的,當(dāng)包間時(shí)間間隔大于某個(gè)值時(shí),則產(chǎn)生一個(gè)新的包簇,由交換機(jī)來重新選擇路由.
FLARE[89]為了避免亂序問題,僅當(dāng)兩個(gè)連續(xù)數(shù)據(jù)包間的時(shí)間間隔大于路徑延時(shí)的最大差異時(shí),才將下一包簇發(fā)送到其他的路徑上.FLARE 實(shí)時(shí)測量所有路徑的延時(shí),保證流量切割的動(dòng)態(tài)性和準(zhǔn)確性,但同時(shí)也帶來了很大的測量和計(jì)算開銷.
CONGA[90]是一種擁塞感知的負(fù)載均衡方案,采用包簇作為調(diào)度粒度,如圖5 所示.
Fig.5 Schematic diagram of CONGA圖5 CONGA 原理圖
CONGA 利用DRE(discounting rate estimator)技術(shù)測量和量化鏈路的擁塞程度.用VXLAN[100]封裝的數(shù)據(jù)包在網(wǎng)絡(luò)傳輸過程中不斷地依據(jù)路徑上交換機(jī)的最重?fù)砣畔砀掳^攜帶的路徑擁塞量化值.源和目的ToR 交換機(jī)各自維護(hù)一張擁塞信息表,其中:目的ToR 交換機(jī)解析正向數(shù)據(jù)包包頭中的路徑擁塞量化值,并記錄在擁塞信息表中;由反向傳輸?shù)臄?shù)據(jù)包將各條路徑的擁塞信息攜帶給源ToR 交換機(jī).源ToR 交換機(jī)接收到反向數(shù)據(jù)包后,更新其擁塞信息表.此外,源ToR 交換機(jī)還維護(hù)了一張包簇表,記錄了活躍包簇的序號和所選的路徑.源ToR 交換機(jī)根據(jù)擁塞信息表和包簇表為每個(gè)包簇選擇最輕擁塞路徑.CONGA 基于端到端的路徑狀態(tài)反饋信息實(shí)現(xiàn)了全局擁塞感知的負(fù)載均衡,能夠感知路徑的擁塞和失效,可適用于非對稱網(wǎng)絡(luò).但是CONGA 需要存儲大量路徑信息,并使用定制的交換機(jī),使得CONGA 難以大規(guī)模部署;另外,從遠(yuǎn)端交換機(jī)得到的反饋可能無法準(zhǔn)確反映實(shí)時(shí)路徑狀態(tài).
HULA[91]采用可編程交換機(jī)實(shí)現(xiàn)擁塞感知的負(fù)載均衡,克服了CONGA 的擴(kuò)展性問題.一方面,HULA 交換機(jī)僅通過鄰居交換機(jī)維護(hù)到目的交換機(jī)的最佳下一跳路徑,無需記錄所有路徑的鏈路利用率,從而降低了維護(hù)路徑狀態(tài)的開銷;另一方面,HULA 利用P4 語言實(shí)現(xiàn)了在可編程交換機(jī)上運(yùn)行的原型,不需要定制的交換機(jī)硬件,便于修改和擴(kuò)展.具體地,HULA 定期發(fā)送探測包到所有可用路徑,以收集全局鏈路利用率信息.基于探測包反饋信息,每個(gè)交換機(jī)選擇路徑利用率最小的下一跳路徑,并將其通告給所有鄰居節(jié)點(diǎn).同時(shí),每個(gè)交換機(jī)維護(hù)一張擁塞信息表用來存儲到目的地的最佳下一跳路徑,有效消除了路徑爆炸對交換機(jī)的存儲壓力.另外,HULA使用探測包主動(dòng)獲得路徑擁塞信息,感知網(wǎng)絡(luò)拓?fù)涞淖兓?探測包由ToR 交換機(jī)生成,它們經(jīng)過的每個(gè)交換機(jī)會更新?lián)砣畔⒈?為了避免亂序,HULA 也選擇包簇作為調(diào)度粒度,為每一個(gè)包簇選擇最佳路徑.HULA 雖然解決了CONGA 的可擴(kuò)展性問題,但由于HULA 只選擇最佳下一跳路徑,容易發(fā)生羊群效應(yīng),導(dǎo)致在最佳路徑上發(fā)生擁塞.同時(shí),最佳路徑的更新速度取決于探測頻率,而頻繁使用探測包會降低網(wǎng)絡(luò)的有效利用率.
CONGA 方案主要均衡Leaf-Spine 拓?fù)浣Y(jié)構(gòu)中單跳路徑上的網(wǎng)絡(luò)流量.單跳路徑是指數(shù)據(jù)包首先從與發(fā)送端相連的ToR 交換機(jī)上行鏈路向核心交換機(jī)傳輸,然后從核心交換機(jī)的下行鏈路向與接收端連接的ToR 交換機(jī)傳輸.但當(dāng)路徑中的某條鏈路發(fā)生擁塞時(shí),發(fā)送方誤認(rèn)為整條單跳路徑擁塞.當(dāng)所有單跳路徑均發(fā)生擁塞時(shí),發(fā)送端將認(rèn)為所有鏈路都發(fā)生了擁塞.而實(shí)際上,此時(shí)仍然可能存在部分非擁塞鏈路.Multi-hop CONGA[92]在所有單跳路徑負(fù)載重時(shí),使用兩跳路由路徑繞過擁塞鏈路,通過利用相對較長傳輸路徑上的非擁塞鏈路來緩解局部流量壓力.Multi-hop CONGA 利用數(shù)據(jù)包攜帶的延時(shí)信息判定路徑的擁塞程度:首先,在可選的單跳路徑中選擇最輕擁塞路徑作為傳輸路徑;當(dāng)所有單跳路徑的延時(shí)超過一定閾值時(shí),搜索最輕負(fù)載的兩跳路徑作為傳輸路徑;當(dāng)所有兩跳路徑都擁塞時(shí),則使用最輕擁塞的單跳路徑作為傳輸路徑.為了降低計(jì)算的復(fù)雜性和提高網(wǎng)絡(luò)利用率,Multi-hop CONGA 采用包簇作為調(diào)度粒度.作為全局擁塞感知的負(fù)載均衡機(jī)制,Multi-hop CONGA 可解決非對稱網(wǎng)絡(luò)的問題,但是數(shù)據(jù)包中攜帶反饋信息過多,容易浪費(fèi)帶寬.
為了完全避免交換機(jī)檢測路徑擁塞的開銷,LetFlow[93]利用數(shù)據(jù)包間的自然屬性自動(dòng)地感知路徑擁塞.當(dāng)流在某條路徑上遭遇擁塞時(shí),其數(shù)據(jù)包間的間隔會增長,自然形成具有時(shí)間間隔的包簇.LetFlow 按時(shí)間間隔閾值來區(qū)分包簇,并將包簇隨機(jī)發(fā)送到其他路徑.由于間隔閾值的選取一般大于最大路徑差異,LetFlow 可以避免亂序,有效對抗非對稱問題.LetFlow 不需要獲得全局擁塞情況,相比于CONGA 等全局擁塞信息感知的方案,可擴(kuò)展性更好.但由于LetFlow 調(diào)度的隨機(jī)性,無法取得最優(yōu)負(fù)載均衡性能.
以上依據(jù)包間隔來被動(dòng)地劃分包簇的負(fù)載均衡方法,難以適應(yīng)快速變化的網(wǎng)絡(luò)流量,而且不合理的間隔閾值容易造成鏈路空閑或過于頻繁的路徑切換.Luopan[94]是一個(gè)基于采樣的負(fù)載均衡方案.Luopan 采用固定大小的包簇作為調(diào)度單元,包簇大小被定為服務(wù)器限制的最大TSO 大小64KB.針對在源目的交換機(jī)之間存在多條等價(jià)路徑,Luopan 定期采樣部分路徑,然后將包簇直接轉(zhuǎn)發(fā)到最小隊(duì)列長度的路徑上以實(shí)現(xiàn)負(fù)載均衡.
具體來說,源端交換機(jī)定期發(fā)送少量探測包到目的交換機(jī),以探測幾條隨機(jī)路徑的擁塞情況.探測包包頭包括路徑編號PID、包類型Type 和量化擁塞指標(biāo)QCM 這3 個(gè)字段.每一個(gè)探測包遍歷所在路徑所有交換機(jī)出端口的隊(duì)列長度,并將隊(duì)列信息累計(jì)值存儲在包頭的QCM 字段.目的端交換機(jī)接收到探測包時(shí),立即生成對應(yīng)ACK 反饋包,將擁塞信息發(fā)送給源端交換機(jī).當(dāng)源端交換機(jī)依據(jù)收到的路徑擁塞信息更新?lián)砣畔⒈?并為每個(gè)包簇選擇最佳路徑傳輸.作為一個(gè)擁塞感知的方案,Luopan 降低了流完成時(shí)間,增加了非對稱拓?fù)洵h(huán)境下的魯棒性.同時(shí),相比于CONGA 等感知整個(gè)網(wǎng)絡(luò)擁塞的方案,Luopan 還減小了擁塞信息探測和存儲的開銷,具有更好的擴(kuò)展性.
MLAB[95]方案是一個(gè)模塊化負(fù)載感知的負(fù)載均衡方案.MLAB 首先提出了一個(gè)分布式數(shù)據(jù)驅(qū)動(dòng)的反饋機(jī)制,在所有交換機(jī)的每個(gè)端口部署了一個(gè)負(fù)載檢測器,由經(jīng)過的數(shù)據(jù)包反饋給ToR 交換機(jī)以檢測遠(yuǎn)端負(fù)載.為了避免亂序問題,采用了包簇作為調(diào)度粒度,基于全局負(fù)載信息為包簇作路由決策.然后,MLAB 將網(wǎng)絡(luò)分割為多個(gè)路由域,每個(gè)域中包含在兩個(gè)ToR 交換機(jī)之間同一條路徑上的所有的匯聚交換機(jī)和核心交換機(jī).從ToR 交換機(jī)的角度看,每個(gè)域就是一個(gè)黑盒,用于傳輸它們的數(shù)據(jù)給另一個(gè)ToR 交換機(jī).每個(gè)域中的路由算法相互獨(dú)立,域內(nèi)的負(fù)載信息只能給域中的交換機(jī)使用,域外的交換機(jī)只能通過該域出端口獲得其負(fù)載信息.因此,數(shù)據(jù)包只需攜帶域內(nèi)最重的負(fù)載信息,減少了數(shù)據(jù)包的開銷,降低了通信存儲更新的難度.MLAB 方案便于部署和模塊化升級.但其簡化了遠(yuǎn)端的負(fù)載信息,每跳選擇最輕的出端口不一定得到全局的最輕負(fù)載路徑.
3.3.4 自適應(yīng)調(diào)度粒度的交換機(jī)負(fù)載均衡
由于動(dòng)態(tài)流量、鏈路故障和異構(gòu)交換設(shè)備,數(shù)據(jù)中心網(wǎng)絡(luò)容易出現(xiàn)拓?fù)洳粚ΨQ問題.在不對稱的網(wǎng)絡(luò)拓?fù)湎?流級別和包簇級別的負(fù)載均衡方案采用較大的路徑切換粒度,可有效防止亂序問題,但網(wǎng)絡(luò)利用率較低.包級別的負(fù)載均衡器采用細(xì)的路徑切換粒度,可充分利用各條路徑,但易產(chǎn)生亂序問題,無法獲得最優(yōu)性能.AG 方案[96]根據(jù)拓?fù)洳粚ΨQ程度自適應(yīng)調(diào)節(jié)路徑切換的粒度:在拓?fù)洳粚ΨQ程度高的情況下,AG 增加切換粒度以減輕亂序影響;在拓?fù)洳粚ΨQ程度低的情況下,AG 降低切換粒度以獲取高的鏈路利用率.AG 利用探測包定期測量交換機(jī)間的單向延時(shí)以獲得準(zhǔn)確的路徑擁塞狀態(tài)信息,計(jì)算最佳的調(diào)度粒度大小,并為每個(gè)調(diào)度單元隨機(jī)分配一條傳輸路徑以防止同步問題.
隨著延遲敏感型和吞吐率導(dǎo)向型應(yīng)用程序的流量需求不斷增加,如何有效地平衡多路徑之間的流量以提升用戶的體驗(yàn)和服務(wù)的質(zhì)量,成為大型數(shù)據(jù)中心網(wǎng)絡(luò)中一個(gè)至關(guān)重要的問題.雖然近年在DCN 中出現(xiàn)了很多負(fù)載均衡設(shè)計(jì),現(xiàn)有的負(fù)載均衡方法并不感知長流和短流混合的流量特性,也沒有考慮不同類型流的需求,為不同類型的流都使用相同的粒度切換路徑.TLB[97]提出了一種數(shù)據(jù)中心網(wǎng)絡(luò)中路徑切換粒度自適應(yīng)的負(fù)載均衡方法,交換機(jī)根據(jù)數(shù)據(jù)流的已發(fā)送數(shù)據(jù)量區(qū)分長流和短流:對于短流,以數(shù)據(jù)包為粒度選擇隊(duì)列長度最短的出端口轉(zhuǎn)發(fā)其新到達(dá)的數(shù)據(jù)包;對于長流,則在滿足短流延時(shí)截止期限的前提下,根據(jù)短流到達(dá)強(qiáng)度計(jì)算長流切換路徑的隊(duì)列長度閾值.若某條長流在交換機(jī)出端口的隊(duì)列長度大于或等于長流切換路徑的隊(duì)列長度閾值,則選擇隊(duì)列長度最短的出端口轉(zhuǎn)發(fā)該長流新到達(dá)的數(shù)據(jù)包.TLB 減小了短流平均完成時(shí)間,同時(shí)提高長流吞吐率,但在非對稱拓?fù)湎麓嬖趤y序問題.
基于中央控制器的方案通過中央控制器收集和分析全網(wǎng)的路徑信息和流量信息,并集中式地選擇傳輸路徑.基于主機(jī)的負(fù)載均衡方案利用主機(jī)感知所有轉(zhuǎn)發(fā)路徑的擁塞信息,顯式地控制每條流的路由路徑.基于交換機(jī)的負(fù)載均衡機(jī)制依據(jù)交換機(jī)上的隊(duì)列長度或者ToR 交換機(jī)之間的擁塞信息,為各調(diào)度單元選擇不同的出端口.總體上,基于中央控制器的、基于主機(jī)的和基于交換機(jī)的負(fù)載均衡機(jī)制各有優(yōu)點(diǎn)和缺點(diǎn),見表4.
Table 4 Comprehensive comparison of different categories of load balancing mechanisms表4 不同類型負(fù)載均衡機(jī)制的綜合對比
Table 4 Comprehensive comparison of different categories of load balancing mechanisms (Continued)表4 不同類型負(fù)載均衡機(jī)制的綜合對比(續(xù))
針對數(shù)據(jù)中心網(wǎng)絡(luò)的負(fù)載均衡問題,已經(jīng)有了多種改進(jìn)方案來緩解路徑擁塞、提高利用率和降低傳輸延時(shí),最終提升整體性能.但我們看到,在數(shù)據(jù)中心網(wǎng)絡(luò)流量特性和應(yīng)用需求下,目前改進(jìn)方案還存在以下一些關(guān)鍵的問題.
· 在負(fù)載均衡的控制機(jī)理方面,設(shè)計(jì)擁塞狀態(tài)的快速感知方法和切換粒度的動(dòng)態(tài)調(diào)節(jié)機(jī)制仍然是關(guān)鍵問題.感知端到端路徑上的擁塞狀態(tài),可獲取準(zhǔn)確的全局負(fù)載信息,但其反饋周期過長,難以適應(yīng)快速突發(fā)的網(wǎng)絡(luò)流量;感知交換機(jī)本地緩存狀態(tài)可快速獲取局部負(fù)載信息,但可能與全局擁塞狀態(tài)不符,容易導(dǎo)致錯(cuò)誤的負(fù)載均衡行為.同時(shí),路由的切換粒度也影響負(fù)載均衡性能:當(dāng)切換粒度過大時(shí),易發(fā)生網(wǎng)絡(luò)利用率不足的問題;否則,容易導(dǎo)致數(shù)據(jù)包亂序問題.因此,如何進(jìn)一步優(yōu)化負(fù)載均衡的控制機(jī)理仍然值得研究.
· 在擁塞控制和負(fù)載均衡的一體化設(shè)計(jì)方面,存在著傳輸層和網(wǎng)絡(luò)層之間狀態(tài)不匹配的問題.目前的擁塞控制算法僅依據(jù)當(dāng)前路徑上的擁塞狀態(tài)調(diào)整速率.而負(fù)載均衡做重路由操作時(shí),新路徑狀態(tài)可能與當(dāng)前路徑不一致,容易發(fā)生發(fā)送速率與路徑擁塞狀態(tài)不匹配的問題.例如,重路由到空閑路徑,發(fā)送速率過低會導(dǎo)致鏈路利用率低;而重路由到擁塞路徑時(shí),發(fā)送速率過高又會進(jìn)一步加劇網(wǎng)絡(luò)擁塞.從跨層設(shè)計(jì)的角度,如何實(shí)現(xiàn)網(wǎng)絡(luò)層和傳輸層的協(xié)調(diào)聯(lián)動(dòng),是整體性能提升的關(guān)鍵.
· 隨著軟件定義網(wǎng)絡(luò)技術(shù)在負(fù)載均衡機(jī)制中的不斷普及應(yīng)用,如何降低SDN 中央控制器處理信息的開銷和如何解決控制器間同步性問題變得十分重要.SDN 負(fù)載均衡的決策依托于網(wǎng)絡(luò)狀態(tài)采集,而現(xiàn)有的信息采集是通過節(jié)點(diǎn)主動(dòng)發(fā)送狀態(tài)信息或者通過探測報(bào)文探測狀態(tài)信息.探測周期、報(bào)文格式和狀態(tài)信息不統(tǒng)一,增加了控制器的處理難度[101].另外,SDN 控制器的TCAM 內(nèi)存有限,過多的探測信息不但增加了網(wǎng)絡(luò)流量負(fù)載,同時(shí)增加了控制器處理的延遲[45].在大規(guī)模數(shù)據(jù)中心中,單個(gè)控制器的計(jì)算能力有限,需要多個(gè)控制器協(xié)同[102,103].當(dāng)多個(gè)控制器做決策時(shí),控制器間的同步性也是一個(gè)重要的問題.
· 目前,RDMA[98,104-108]已經(jīng)被廣泛部署到數(shù)據(jù)中心中,以提升傳輸效率.但一旦發(fā)生亂序,RDMA 的goback-to-zero[108]或go-back-to-N[108]機(jī)制需重傳全部數(shù)據(jù)包,使得RDMA 只能執(zhí)行流級別的負(fù)載均衡,容易導(dǎo)致鏈路利用率降低.雖然文獻(xiàn)[66]在專用網(wǎng)卡使用類似于MPTCP 的多條并行子流進(jìn)行傳輸,但是專用網(wǎng)卡增加了大規(guī)模部署的難度.因此,如何在基于RDMA 技術(shù)的數(shù)據(jù)中心中設(shè)計(jì)高效的負(fù)載均衡方法,也是值得關(guān)注的研究方向.