王 莉,趙阿群 ,2,趙晨輝
1.北京交通大學(xué) 計(jì)算機(jī)與信息技術(shù)學(xué)院,北京 100044
2.東南大學(xué) 計(jì)算機(jī)網(wǎng)絡(luò)和信息集成教育部重點(diǎn)實(shí)驗(yàn)室,南京 211189
在現(xiàn)代互聯(lián)網(wǎng)應(yīng)用和云計(jì)算技術(shù)的推動(dòng)下,數(shù)據(jù)中心正在全球范圍內(nèi)得到極大的發(fā)展。數(shù)據(jù)中心由大量服務(wù)器和交換機(jī)組成,這些服務(wù)器和交換機(jī)連接在一起形成數(shù)據(jù)中心網(wǎng)絡(luò)(DCN)。目前,數(shù)據(jù)中心已成為許多企業(yè)提供各種服務(wù)的關(guān)鍵基礎(chǔ)設(shè)施,許多應(yīng)用程序都已托管在數(shù)據(jù)中心內(nèi),因此數(shù)據(jù)中心在數(shù)據(jù)傳輸方面的要求越來(lái)越高。
為了獲得高帶寬并實(shí)現(xiàn)容錯(cuò),數(shù)據(jù)中心網(wǎng)絡(luò)(DCN)通常在任意兩臺(tái)服務(wù)器之間設(shè)計(jì)有多條路徑[1-3]。多條路徑不僅可用于處理潛在的故障,還可用于提高網(wǎng)絡(luò)性能。特別是,當(dāng)網(wǎng)絡(luò)的流量負(fù)載變大時(shí),可以使用多條路徑來(lái)降低延遲并有效提高吞吐量。因此,平衡數(shù)據(jù)中心網(wǎng)絡(luò)上的工作負(fù)載,實(shí)現(xiàn)多路徑的有效使用,提高吞吐量以及減少流完成時(shí)間對(duì)于提高數(shù)據(jù)中心網(wǎng)絡(luò)的整體性能來(lái)說(shuō)是非常重要的。
目前,在工業(yè)界應(yīng)用最廣泛的數(shù)據(jù)中心網(wǎng)絡(luò)拓?fù)涫且越粨Q機(jī)為中心的三層級(jí)聯(lián)的多根樹(shù)拓?fù)浼軜?gòu),稱(chēng)為Fat-tree結(jié)構(gòu)[4]。它具有簡(jiǎn)單易部署等優(yōu)點(diǎn),同時(shí)該拓?fù)涫沟萌我鈨膳_(tái)服務(wù)器間存在多路徑,數(shù)據(jù)包進(jìn)行通信時(shí)若一個(gè)結(jié)點(diǎn)癱瘓底層結(jié)點(diǎn)還可以通過(guò)其他路徑進(jìn)行轉(zhuǎn)發(fā),具有很好的容錯(cuò)性。Fat-tree 網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)分為三層,分別為核心層、聚合層及邊緣層,所有的服務(wù)器與邊緣層的交換機(jī)相連。如圖1為4-port胖樹(shù)模型。
圖1 4-port胖樹(shù)網(wǎng)絡(luò)拓?fù)?/p>
一般來(lái)說(shuō),數(shù)據(jù)中心的流量可以分為兩種類(lèi)型:大流,它們攜帶大量數(shù)據(jù)并且存在時(shí)間較長(zhǎng);小流,通常是對(duì)延遲敏感的流,它們數(shù)量很多但攜帶的數(shù)據(jù)量較少[5]。由于大流將占用大量網(wǎng)絡(luò)資源,因此如果沒(méi)有合理的進(jìn)行大流調(diào)度,數(shù)據(jù)中心網(wǎng)絡(luò)可能會(huì)發(fā)生擁塞,目前已經(jīng)提出了許多解決方案來(lái)調(diào)度大流[2,6-7]。
傳統(tǒng)的負(fù)載均衡算法是等價(jià)多路徑路由算法(ECMP)[5,8]。ECMP 易于實(shí)施,不需要在交換機(jī)上進(jìn)行流量統(tǒng)計(jì)。然而,ECMP 還存在兩個(gè)缺點(diǎn)[9-10]:首先,ECMP不區(qū)分小流和大流。因此,經(jīng)常發(fā)現(xiàn)小流排在出口端口的隊(duì)列中,遭受長(zhǎng)排隊(duì)延遲從而影響流完成時(shí)間(FCT)[10-11]。其次,由于哈希沖突,ECMP 無(wú)法有效利用可用帶寬,從而導(dǎo)致“大流碰撞”的問(wèn)題[12-13]。除了ECMP之外,還提出了許多其他解決方案。Hedera是利用控制器收集從數(shù)據(jù)平面交換機(jī)的流量統(tǒng)計(jì)信息,采用啟發(fā)式的算法對(duì)大象流進(jìn)行路由[4]。SD-LB是根據(jù)網(wǎng)絡(luò)鏈路狀態(tài)對(duì)多路徑進(jìn)行動(dòng)態(tài)加權(quán),并結(jié)合交換機(jī)中的組表信息對(duì)大象流進(jìn)行分配路徑,從而緩解大象流造成的網(wǎng)絡(luò)擁塞[14]。Fincher是收集全網(wǎng)信息形成流與交換機(jī)的偏好列表,從而對(duì)所有的流分配較合適的路徑[15]。TinyFlow是將大流切分成多個(gè)小流,從而減少大流對(duì)鏈路的負(fù)載[7]。CONGA 利用了分布式技術(shù)來(lái)感知網(wǎng)絡(luò)狀況,依賴(lài)邊緣路由器來(lái)對(duì)網(wǎng)絡(luò)鏈路狀況進(jìn)行擁塞探測(cè)及負(fù)載調(diào)度[16]。這些解決方案相較于ECMP 都可以提高網(wǎng)絡(luò)的性能,但還存在一些問(wèn)題。例如Hedrea、SD-LB、Fincher在進(jìn)行流處理時(shí)都需要交換機(jī)做一些額外的操作,影響交換機(jī)的轉(zhuǎn)發(fā)效率。TinyFlow等將大流切分成小流的方法則會(huì)導(dǎo)致數(shù)據(jù)包的重組問(wèn)題,從而導(dǎo)致更多的開(kāi)銷(xiāo)。CONGA則對(duì)交換機(jī)的要求過(guò)高,并且也對(duì)邊緣交換機(jī)的負(fù)載過(guò)大,不利于部署。
負(fù)載均衡算法的設(shè)計(jì)對(duì)數(shù)據(jù)中心網(wǎng)絡(luò)的性能有著重要影響。另一方面,隨著網(wǎng)絡(luò)規(guī)模和帶寬需求的增加,數(shù)據(jù)中心網(wǎng)絡(luò)的成本和功耗迅速增長(zhǎng),對(duì)于整個(gè)數(shù)據(jù)中心網(wǎng)絡(luò)的整體性能也會(huì)有較大影響。傳統(tǒng)的數(shù)據(jù)中心網(wǎng)絡(luò)使用的是基于交換機(jī)轉(zhuǎn)發(fā)的方式,交換機(jī)需要參與到數(shù)據(jù)包的轉(zhuǎn)發(fā)決策中,因此交換機(jī)中需要存儲(chǔ)并維護(hù)轉(zhuǎn)發(fā)表。文獻(xiàn)[17]提出了一種基于端口編址的DCN 體系架構(gòu)。不同于傳統(tǒng)的轉(zhuǎn)發(fā)方式,該方法不需要交換機(jī)每次查表進(jìn)行分組轉(zhuǎn)發(fā)。數(shù)據(jù)包在發(fā)送時(shí)就記錄了轉(zhuǎn)發(fā)路徑的所有端口號(hào)序列(PA),端口號(hào)序列是由控制平面在數(shù)據(jù)包生成時(shí)就已經(jīng)計(jì)算得出。因此交換設(shè)備不需要做任何的處理,讓交換設(shè)備只專(zhuān)注于基于端口的轉(zhuǎn)發(fā)數(shù)據(jù),而不用判斷任何的狀態(tài)信息,完全契合了未來(lái)網(wǎng)絡(luò)“胖終端,瘦網(wǎng)絡(luò)”的思想[17],實(shí)現(xiàn)了交換機(jī)“啞交換”,大大提高了轉(zhuǎn)發(fā)效率。
結(jié)合以上,本文提出了一種基于Fat-Tree 的虛擬分片負(fù)載均衡方法(Virtual Slice Load Balance,VSLB)。該方法利用基于端口編址的轉(zhuǎn)發(fā)方式,并且將大流分為多個(gè)子流,為了解決包排序的問(wèn)題,本文根據(jù)文獻(xiàn)[8]TSO 原理將小流的上限定為64 KB,并為這些小流分別選取更優(yōu)的路徑進(jìn)行轉(zhuǎn)發(fā),從而解決了大流碰撞的問(wèn)題。
本章主要從整體上來(lái)介紹VSLB的設(shè)計(jì)。如圖2為VSLB概述圖。
圖2 VSLB整體概述圖
圖2 為4-port Fat-Tree 的半結(jié)構(gòu)圖,服務(wù)器A 向服務(wù)器B發(fā)送數(shù)據(jù)流m,服務(wù)器C向服務(wù)器D發(fā)送數(shù)據(jù)流n,假設(shè)m和n均為大流,流m沿著路徑A→E→F→G→I→J→B 發(fā)送,流n沿著 C→K→F→G→I→J→D 發(fā)送,顯然m和n在F→G→I→J鏈路發(fā)生了重合,如果兩條大流在同一時(shí)間到達(dá),這樣就會(huì)產(chǎn)生“大流碰撞”的問(wèn)題。本文提出的VSLB的思想是把大流進(jìn)行分片處理,拆分出多個(gè)小流。如圖中所示,子流m1沿著原路徑發(fā)送,而子流m2沿著A→E→F→H→I→J→B 發(fā)送,同理流n也進(jìn)行同樣的子流選路處理。在5.2節(jié)中本文還提出了基于端口編址的全路徑計(jì)算和路徑尋優(yōu)的方法,確保所選路徑為網(wǎng)路中最優(yōu)的路徑。
從圖2 還可以看出,VSLB 的幾乎所有的部署都在在服務(wù)器端,這樣就可以大大減少交換機(jī)的負(fù)載,交換機(jī)只需要進(jìn)行流數(shù)據(jù)的轉(zhuǎn)發(fā)即可,從而提高整個(gè)網(wǎng)絡(luò)性能。
為了更好地對(duì)大流和小流進(jìn)行決策,需要在服務(wù)器終端上部署和維護(hù)三種存儲(chǔ)表。三種表分別為小流輪詢表RR_M、大流輪詢表RR_E 和總的流記錄表Flow_All。其中,RR_M 的作用是維護(hù)小流的發(fā)送路徑;RR_E記錄了該大流的所有可能發(fā)送路徑,發(fā)送路徑是根據(jù)全路徑計(jì)算模塊來(lái)進(jìn)行計(jì)算,并且會(huì)根據(jù)路徑探測(cè)包的探測(cè)結(jié)果對(duì)路徑做優(yōu)先級(jí)的排序。全路徑計(jì)算及路徑尋優(yōu)將會(huì)在下文5.2.1小節(jié)和5.2.2小節(jié)中詳細(xì)介紹;Flow_All是記錄所有經(jīng)過(guò)本服務(wù)器終端出去的消息流,以便更好地維護(hù)RR_M和RR_E。
VSLB 設(shè)計(jì)部署在服務(wù)器端,本節(jié)將從單個(gè)服務(wù)器的角度進(jìn)行介紹,具體詳細(xì)步驟如下:
(1)當(dāng)一個(gè)流達(dá)到時(shí),由于流是由多個(gè)數(shù)據(jù)包組成,因此每個(gè)數(shù)據(jù)包到達(dá)時(shí),首先由包處理模塊對(duì)數(shù)據(jù)包進(jìn)行包到流的映射(這里是通過(guò)Hash 來(lái)實(shí)現(xiàn)),得到流的“名字”,然后根據(jù)總的流存儲(chǔ)表Flow_All判斷該流是否存在,如果存在進(jìn)入步驟(2),否則進(jìn)入步驟(3)。
(2)從Flow_All 取出該流并更新此流的大小,接著判斷此時(shí)流大小是否大于64 KB,如果大于則此流被判定為“大流”,調(diào)用大流處理模塊進(jìn)行處理。若小于64 KB,則此流被判定為“小流”,根據(jù)小流輪詢表取出該流的PA值,同時(shí)更新總的流記錄表,進(jìn)入步驟(4)。
(3)若總的流記錄表Flow_All 中不存在該流的記錄,則判定此流為一個(gè)新流并按小流處理,調(diào)用小流處理模塊中的流初始化模塊進(jìn)行處理,本文將在4.1 節(jié)中詳細(xì)介紹小流處理模塊,然后進(jìn)入步驟(4)
(4)無(wú)論是進(jìn)行大流處理還是小流處理,結(jié)果都會(huì)返回一串PA值,接著調(diào)用消息發(fā)送模塊,即利用服務(wù)器的發(fā)送機(jī)制進(jìn)行數(shù)據(jù)包的轉(zhuǎn)發(fā)。
上章介紹了VSLB的整體設(shè)計(jì)架構(gòu),本章主要介紹流處理模塊。流處理模塊可以拆分為分為大流處理模塊(包括全路徑計(jì)算和路徑尋優(yōu))和小流處理模塊(流初始化和地址輪詢)。這樣拆分既實(shí)現(xiàn)了整體方法的解耦和,并且在一定程度上提高了VSLB整體的性能。
在一個(gè)流沒(méi)有被判定為大流之前這個(gè)流都按小流來(lái)處理。當(dāng)一條流到達(dá)時(shí),根據(jù)RR_M表來(lái)判斷此流是否存在,如果不存在則調(diào)用流初始化模塊進(jìn)行初始化;若存在且此流為小流則調(diào)用地址輪詢模塊對(duì)此小流分配新的發(fā)送路徑。
5.1.1流初始化
在進(jìn)行流初始化時(shí),首先需要判斷源服務(wù)器和目的服務(wù)器是否在同一個(gè)子網(wǎng)內(nèi)(連接同一個(gè)邊緣交換機(jī))或者是否在同一個(gè)pod 內(nèi)。表1 是針對(duì)以上不同情況RR_M 表存儲(chǔ)的PA值,其中RR代表 RR_M 中的實(shí)體項(xiàng),x代表邊緣層交換機(jī)的上行端口,y代表聚合層交換機(jī)的上行端口,x,y∈[k/2,k-1],k值是由DCN的端口值決定。
表1 RR_M流初始化取值表
5.1.2地址輪詢
5.1.1 小節(jié)中介紹了小流初始化。如果一條流達(dá)到時(shí),且經(jīng)過(guò)驗(yàn)證此流為小流,則需要對(duì)此流進(jìn)行重路由,這里采用ECMP的思想來(lái)對(duì)端口進(jìn)行輪詢,即讓不同的流沿著不用的路徑發(fā)送,需要對(duì)此流計(jì)算新的PA 值。計(jì)算新的PA值要根據(jù)源PA值進(jìn)行判斷,表2為針對(duì)不同情況計(jì)算出的新的PA值。
如表2,分為四種情況,如果源服務(wù)器與目的服務(wù)器在同一子網(wǎng),則PA為原PA值;如果在同一pod 中,則需要對(duì)對(duì)邊緣交換機(jī)的上行端口進(jìn)行輪詢;如果在不同pod,則根據(jù)聚合層交換機(jī)的上行端口號(hào)是否為邊界值分兩種情況進(jìn)行端口的輪詢操作。
表2 RR_M地址輪詢?nèi)≈当?/p>
大流處理作為整個(gè)負(fù)載均衡算法的核心部分,不僅包含將大流拆分成多個(gè)小流,更重要的是對(duì)流做全路徑計(jì)算和路徑尋優(yōu)。當(dāng)一條大流達(dá)到時(shí),按每個(gè)小流最大64 KB 來(lái)切分成多個(gè)小流并對(duì)每個(gè)小流分配最優(yōu)的轉(zhuǎn)發(fā)路徑。其中路徑尋優(yōu)算法采用“動(dòng)態(tài)規(guī)劃”的思想,保證所選路徑能夠在有效時(shí)間內(nèi)為最優(yōu)的路徑。
5.2.1全路徑計(jì)算
大流處理過(guò)程中,路徑尋優(yōu)模塊需要對(duì)多路徑進(jìn)行路徑擁塞程度探測(cè),因此首先要先得到這些可能的發(fā)送路徑并存儲(chǔ)到大流輪詢表中RR_E 中。為了快速的計(jì)算出所有的路徑,本文提出了一種全路徑的計(jì)算算法,如算法1。
算法1 全路徑計(jì)算算法
輸入:source locator and destination locator
輸出:the path array P of from source to destination
1. ifs0=d0then
2. ifs1=d1then
3.p[0]←{0,d2}
4. else
5. fori=k/2 →kdo
6.p[i-k/2]={0,i,d1,d2}
7. end if
8. else
9.index←0
10. fori=k/2 →kdo
11. forj=k/2 →kdo
12.p[index+ +]←{0,i,j,d0,d1,d2}
13. end if
14. returnp
如算法1所示,當(dāng)“源”服務(wù)器和“目的”服務(wù)器在同一個(gè)子網(wǎng)時(shí),路徑是唯一確定的。當(dāng)不在一個(gè)子網(wǎng)內(nèi)時(shí),所求路徑會(huì)根據(jù)數(shù)據(jù)中心網(wǎng)絡(luò)的交換機(jī)端口個(gè)數(shù)k動(dòng)態(tài)計(jì)算。
5.2.2 路徑尋優(yōu)
路徑尋優(yōu)算法采用了“消息反饋”機(jī)制,對(duì)所有可能發(fā)送的路徑進(jìn)行探測(cè)處理,然后對(duì)所有反饋的探測(cè)包的往返時(shí)延進(jìn)行排序處理。在這里排序策略采用的是“大頂堆”的堆排序的思想,當(dāng)交換機(jī)端口數(shù)量k大到一定程度時(shí),使用堆排序可以更好地提高排序性能。此外,大流切分為多個(gè)子流的數(shù)量要遠(yuǎn)小于全路徑的數(shù)量,因此使用堆排序的思想還可以根據(jù)不同的交換機(jī)端口數(shù)靈活的設(shè)置“大頂堆”的節(jié)點(diǎn)數(shù)。具體的路徑尋優(yōu)算法如算法2。
算法2 路徑尋優(yōu)算法
輸入:source locator,destination locator and path arrayp
輸出:the new path arrayPof from source to destination after sort
1. ifs0=d0then
2. ifs1=d1then
3.probePath[0]←{0,d2}
4. else
5. fori=k/2 →kdo
6.probePath[i-k/2]←{0,i,d1,i,s1,s2}
7. end if
8. else
9.index←0
10. else
11. fori=k/2 →kdo
12. forj=k/2 →kdo
13.probePath[index+ +]←{0,i,j,d0,d1,i,j,s0,s1,s2}
14. end if
15. Send allprobePacketwithprobePath
16. Collect all RTT and sortpwith RTTs
17. returnp
本文在OMNET++軟件上進(jìn)行實(shí)驗(yàn)的仿真。OMNET++是一款強(qiáng)大的網(wǎng)絡(luò)仿真工具,利用它可以構(gòu)建包括交換機(jī)、鏈路和主機(jī)在內(nèi)的數(shù)據(jù)中心網(wǎng)絡(luò)[18]。本文實(shí)驗(yàn)搭建的網(wǎng)絡(luò)環(huán)境為16-port的Fat-tree數(shù)據(jù)中心網(wǎng)絡(luò),共包含了1 024臺(tái)服務(wù)器與320臺(tái)交換機(jī),其中交換機(jī)包括了64 臺(tái)核心交換機(jī);128 臺(tái)匯聚層交換機(jī)及128臺(tái)邊緣交換機(jī)。整個(gè)Fat-tree網(wǎng)絡(luò)拓?fù)浒?6個(gè)pod,每一個(gè)pod包含了8臺(tái)匯聚層交換機(jī);8臺(tái)邊緣層交換機(jī)和64 臺(tái)服務(wù)器。本文提出的VSLB 算法將與基于端口編址的ECMP(Port-Base ECMP、PB-ECMP)與基于端口編址的CONGA(Port-Base CONGA、PB-CONGA)方法進(jìn)行對(duì)比,仿真結(jié)果將從平均吞吐量、小流的平均流完成時(shí)間和平均端到端時(shí)延三個(gè)方面進(jìn)行評(píng)估。具體計(jì)算如下:
(1)平均吞吐量
采用單個(gè)可用服務(wù)器多次仿真的平均吞吐量。假設(shè)仿真時(shí)可用服務(wù)器為n個(gè),進(jìn)行了m次的仿真,則平均吞吐量的計(jì)算公式如公式(1)所示:
其中ATj為第j次仿真的平均吞吐量,ATj的計(jì)算如公式(2)所示:
其中Ti為第i個(gè)服務(wù)器的吞吐量,通過(guò)統(tǒng)計(jì)平均吞吐量,由此作為評(píng)價(jià)網(wǎng)絡(luò)性能的一項(xiàng)指標(biāo)。平均吞吐量越大,說(shuō)明數(shù)據(jù)中心網(wǎng)絡(luò)的整體性能越好,進(jìn)而說(shuō)明負(fù)載均衡方法越高效。
(2)小流完成時(shí)間(Flow Complete Time)
小流FCT值取多個(gè)服務(wù)器的多個(gè)小流的平均值,假設(shè)仿真時(shí)可用服務(wù)器為n個(gè),第i(1 ≤i≤n)個(gè)服務(wù)器在一次仿真中接收了s條小流數(shù)據(jù),共進(jìn)行了m次仿真,則FCT的計(jì)算公式如公式(3)所示:
其中tj為第j此仿真的平均流完成時(shí)間,tj的計(jì)算如公式(4)所示:
其中tk為第k個(gè)小流的流完成的時(shí)間,小流的FCT 作為評(píng)估數(shù)據(jù)中心網(wǎng)絡(luò)的性能指標(biāo),如果負(fù)載均衡方法沒(méi)有很好地解決大流碰撞問(wèn)題,則大流造成的網(wǎng)絡(luò)阻塞問(wèn)題同時(shí)會(huì)影響小流的傳輸性能,故當(dāng)FCT 值越小,負(fù)載均衡方法越好。
(3)平均端到端時(shí)延(End-to-end Delay)
數(shù)據(jù)中心網(wǎng)絡(luò)在一定周期內(nèi)會(huì)產(chǎn)生很多的數(shù)據(jù)流,而從網(wǎng)絡(luò)層看來(lái),這些都是大量的數(shù)據(jù)包,平均端到端時(shí)延就是計(jì)算數(shù)據(jù)包發(fā)送時(shí)延的平均值,假設(shè)可用服務(wù)器依然為n個(gè),做m次仿真,第i臺(tái)服務(wù)器接收的數(shù)據(jù)包為s個(gè),則:
其中τj為第j此仿真的平均時(shí)延,τj的計(jì)算如公式(6)所示:
其中ti為第i臺(tái)服務(wù)器的平均時(shí)延,ti的計(jì)算如公式(7)所示:
大量的數(shù)據(jù)包如果遇到了大流碰撞引起的鏈路帶寬問(wèn)題,會(huì)產(chǎn)生長(zhǎng)時(shí)間的阻塞,所以當(dāng)平均端到端時(shí)延越小,則說(shuō)明負(fù)載均衡的效果越好。
由于目前很難獲得實(shí)際可用的數(shù)據(jù)中心網(wǎng)絡(luò)的trace數(shù)據(jù)集,本文參考文獻(xiàn)[19]的思想,通過(guò)模擬多種通訊模式的方式來(lái)模擬實(shí)際的數(shù)據(jù)中心網(wǎng)絡(luò)。通訊模式主要分為兩大類(lèi),分別是One_To_One和Multi_To_Multi 模式,其中這兩類(lèi)又分別包含了Stride、incoming、outgoing、Random 模式。具體模式如下,其中服務(wù)器位置標(biāo)識(shí)為(s0,s1,s2),s0(s0∈[0,k-1])代表該服務(wù)器所在的pod 編號(hào),s1(s1∈[0,k/2-1])代表該服務(wù)器所在pod 中與其相連的邊緣交換機(jī)的編號(hào),s2(s2∈[0,k/2-1])代表該服務(wù)器是邊緣交換機(jī)連接的第幾個(gè)服務(wù)器,k代表該數(shù)據(jù)中心網(wǎng)絡(luò)的交換機(jī)端口數(shù)。
(1)One_To_One通信模式
Stride:每臺(tái)服務(wù)器(s0,s1,s2)向服務(wù)器((s0+1)modk,s1,s2)進(jìn)行通信。
Same-pod incoming:多個(gè) pod 的任意k24 臺(tái)服務(wù)器向集中向一個(gè)pod 中的k24 臺(tái)服務(wù)器進(jìn)行隨機(jī)的一對(duì)一通信。
Same-pod outgoing:一個(gè) pod 中的k24 臺(tái)服務(wù)器隨機(jī)的向其他任意pod 中的k24 臺(tái)服務(wù)器進(jìn)行一對(duì)一通信。
Random:整個(gè)拓?fù)渲衚34 臺(tái)服務(wù)器隨機(jī)挑選一個(gè)服務(wù)器對(duì)象進(jìn)行一對(duì)一通信。
(2)Multi_To_Multi通信模式
Stride:每臺(tái)服務(wù)器(s0,s1,s2)向pod((s0+1)modk)中的k24 臺(tái)服務(wù)器分別進(jìn)行通信。
Same-pod incoming:多個(gè) pod 的任意k24 臺(tái)服務(wù)器分別向一個(gè)pod中的k24 臺(tái)服務(wù)器進(jìn)行通信。
Same-pod outgoing:一個(gè)pod中的k24 臺(tái)服務(wù)器分別向其他任意pod中的k24 臺(tái)服務(wù)器進(jìn)行通信。
Random:整個(gè)拓?fù)渲衚34 臺(tái)服務(wù)器分別向其他k34 臺(tái)服務(wù)器進(jìn)行通信。
具體模式參數(shù)設(shè)置如下:
(1)One_To_One通信模式下,鏈路寬帶和時(shí)延初始化值分別設(shè)置為1 024 Mb/s和0.05 μs,單周期內(nèi)任意服務(wù)器隨機(jī)產(chǎn)生的大流和小流的個(gè)數(shù)比為1∶4,大流與小流總的大小比為4∶1,從而保證了大流始終占有80%左右的帶寬。每個(gè)周期的時(shí)間根據(jù)隨機(jī)產(chǎn)生的流的個(gè)數(shù)和大小而發(fā)生變動(dòng),仿真次數(shù)設(shè)定在10~20次。
(2)Multi_To_Multi模式下,服務(wù)器和邊緣交換機(jī)之間的鏈路帶寬初始初始化值設(shè)置為16 Mb/s,其他參數(shù)同One_To_One模式,為了實(shí)現(xiàn)流量突發(fā)性,參照實(shí)際數(shù)據(jù)中心網(wǎng)路,仿真過(guò)程中隨機(jī)產(chǎn)生同一個(gè)服務(wù)器發(fā)往不同目的服務(wù)器的時(shí)間差值。
(1)One_To_One
圖 3、圖 4 和圖 5 為 One_To_One 模式下,VSLB 和PB-ECMP 和PB-CONGA 在不同指標(biāo)值下的實(shí)驗(yàn)結(jié)果對(duì)比圖。
圖3 One_To_One平均吞吐量對(duì)比圖
圖4 One_To_One小流FCT對(duì)比圖
圖5 One_To_One端到端時(shí)延對(duì)比圖
根據(jù)圖3、圖4、圖5 可以看出,不論是在Stride、Incoming、Outgoing,還是在 Random 模式下。VSLB 在吞吐量、小流完成時(shí)間及時(shí)延方面均優(yōu)于PB-ECMP 和PB-CONGA。這是由于VSLB 對(duì)大流進(jìn)行了“細(xì)粒度”的劃分處理,并且還通過(guò)路徑尋優(yōu)的策略大大減少了大流碰撞的概率。相比于CONGA,VSLB 不需要總是接受鏈路的反饋包,只有在進(jìn)行大流處理時(shí),才需要進(jìn)行鏈路探測(cè),因此交換機(jī)不需要解析數(shù)據(jù)包來(lái)維護(hù)轉(zhuǎn)發(fā)表。另一方面VSLB中利用了端口編址的方法,使得交換機(jī)不需要參與轉(zhuǎn)發(fā)決策,只進(jìn)行包轉(zhuǎn)發(fā)操作即可,大大加快了數(shù)據(jù)包的轉(zhuǎn)發(fā)效率。因此VSLB 在性能上都優(yōu)于PB-ECMP與PB-CONGA。
(2)Multi_To_Multi模式
圖6、圖7和圖8為Multi_To_Multi模式下,VSLB和PB-ECMP在不同指標(biāo)值下的實(shí)驗(yàn)結(jié)果對(duì)比圖。
圖6 Multi_To_Multi平均吞吐量對(duì)比圖
圖7 Multi_To_Multi小流FCT對(duì)比圖
圖8 Multi_To_Multi端到端時(shí)延對(duì)比圖
根據(jù)圖6、圖 7、圖 8 可以看出,在Multi_To_Multi 模式下,四種子模式的各個(gè)結(jié)果都與One_To_One 模式有所差別。這是因?yàn)樵贛ulti_To_Multi模式下,每臺(tái)服務(wù)器都會(huì)以一對(duì)多的方式發(fā)送數(shù)據(jù),因此會(huì)有更多的流碰撞現(xiàn)象發(fā)生。但從以上圖中可以看出,VSLB的性能也明顯優(yōu)于PB-ECMP和PB-CONGA。
本文針對(duì)“大流碰撞”提出了一種基于Fat-Tree的虛擬分片負(fù)載均衡算法。通過(guò)對(duì)大流進(jìn)行“細(xì)粒度”的分片處理,并對(duì)切片后的子流進(jìn)行路徑尋優(yōu)處理,大大降低了“大流碰撞”的概率。通過(guò)實(shí)驗(yàn)對(duì)比,驗(yàn)證了VSLB相比于ECMP 與CONGA 能夠大大提升數(shù)據(jù)中心網(wǎng)絡(luò)性能。
隨著研究的逐漸深入,發(fā)現(xiàn)還有許多工作值得后續(xù)的關(guān)注和研究。由于本文所提出的負(fù)載均衡方法更偏向于對(duì)大流的處理,因此小流處理部分相對(duì)比較簡(jiǎn)單,未來(lái)的工作將針對(duì)小流處理模塊提出更好的解決方法。