本專利屬于計(jì)算機(jī)網(wǎng)絡(luò)領(lǐng)域,特別涉及一種數(shù)據(jù)中心網(wǎng)絡(luò)流的調(diào)度方案和系統(tǒng)。
背景技術(shù):
互聯(lián)網(wǎng)向人類展示了全新的生活視角,將人們的生產(chǎn),生活和學(xué)習(xí)方式得到了質(zhì)的飛越和提升。數(shù)據(jù)中心網(wǎng)絡(luò)作為存儲傳輸處理大數(shù)據(jù)的基礎(chǔ)設(shè)施,已經(jīng)成為支撐現(xiàn)代經(jīng)濟(jì)發(fā)展和積極創(chuàng)新的基礎(chǔ)保障。
用戶向數(shù)據(jù)中心網(wǎng)絡(luò)請求各種資源,數(shù)據(jù)中心網(wǎng)絡(luò)也以不同的承載量回應(yīng)著每一位用戶。不可避免的,有的用戶請求的數(shù)據(jù)比較少,形成小的數(shù)據(jù)流,希望得到更快的響應(yīng)。有的用戶發(fā)出服務(wù)器備份的請求,對完成時間并沒有特別的要求。所以,區(qū)分流的大小進(jìn)行調(diào)度具有很大的意義。區(qū)分調(diào)度能夠滿足不同用戶對于傳輸時間的期望,提高用戶的工作效率,提升用戶體驗(yàn)。
對于企業(yè)來說,網(wǎng)絡(luò)中數(shù)據(jù)的傳輸延遲也是一個很關(guān)心的指標(biāo)。因?yàn)榫W(wǎng)絡(luò)延遲直接影響著企業(yè)收益。比如,對于亞馬遜來說,每100ms的延遲將會損失1%的業(yè)務(wù)利潤,每500ms的延遲就會減少20%的用戶請求。鑒于網(wǎng)絡(luò)傳輸時間延遲對于用戶和企業(yè)都具有重大意義,好多科學(xué)工作者投入到如何減小網(wǎng)絡(luò)時延的工作中。目前有很多工作都集中于數(shù)據(jù)中心網(wǎng)絡(luò)的流的調(diào)度方案。一些調(diào)度方案關(guān)注數(shù)據(jù)中心網(wǎng)絡(luò)的利用率,集中在數(shù)據(jù)中心的流調(diào)度的負(fù)載均衡上。關(guān)注負(fù)載均衡的流調(diào)度方案不能保證短任務(wù)的完成時間,也不能保證其優(yōu)先完成。還有一些研究,是在預(yù)先知道流的大小,傳輸截止時間等信息的條件下提高流調(diào)度的效率。雖然在一定的場景下,其可以獲得很好的調(diào)度性能,但在一般情況下,流的大小或者deadline都是不可預(yù)估的。比如,HTTP協(xié)議在傳輸數(shù)據(jù)塊的時候,先傳輸查詢到的內(nèi)容,這樣及時響應(yīng)用戶。所以在傳輸完成之前,是不知道文件流的大小的。
有一些解決方案為減小流的傳輸時間。大概可以分為兩種,一種是知道流的先驗(yàn)信息,即在進(jìn)行流的傳輸工作之前,預(yù)先知道流的大小和流的傳輸截止時間等信息。有一種是不知道流的先驗(yàn)信息,即在進(jìn)行流傳輸之前,不知道流的大小,到達(dá)時間,持續(xù)時間等信息。在這些解決方案中,有些是需要終端和交換機(jī)互相配合,然而涉及到交換機(jī)的升級就會影響到實(shí)際的部署。有的解決方案在部署時只需要升級終端,卻沒有考慮到網(wǎng)絡(luò)中的流量的實(shí)時變化性。所以,當(dāng)網(wǎng)絡(luò)中流量的分布在改變時,機(jī)制的性能就會下降,影響用戶體驗(yàn)。
常見流的調(diào)度方式主要有三種,最短流優(yōu)先(Shortest Job First:SJF),公平共享(Fair sharing:FS),以及發(fā)送最少者優(yōu)先(Least Attained Service:LAS)。
SJF:已知流的大小或者流的要求完成時間,優(yōu)先調(diào)度小流或者要求完成時間最短的流。然而在現(xiàn)實(shí)生活中,我們一般不能預(yù)先得到流的大小或者時間限制要求。所以,這種調(diào)度方式運(yùn)用在實(shí)際的數(shù)據(jù)中心網(wǎng)絡(luò)中性能并不是很好。
FS:把處理器的時間劃分地?zé)o限小,然后切換處理器的處理時間片,使每一個任務(wù)都能公平的共享處理器。
LAS:優(yōu)先處理被處理最少時間的流。當(dāng)任務(wù)的被處理時間一致時,則采用FS的方式公平的被處理。
如圖1所示,圖中有三條流,A,B,C.大小分別為1,2,4.到達(dá)時間為1,2,0。即C先到達(dá)。圖1表示了三種調(diào)度方式下三條流調(diào)度的完成情況。對于FS,處理器先調(diào)度C流,當(dāng)A在1的時間點(diǎn)到達(dá)時,A和C同時進(jìn)行調(diào)度,B到達(dá)時,A,B和C同時被調(diào)度,直至一條或全部結(jié)束。對于SJF,優(yōu)先調(diào)度比較小的流,當(dāng)A流到達(dá)后,優(yōu)先進(jìn)行A流的調(diào)度,后續(xù)進(jìn)行B流和C流的調(diào)度。對于LAS,當(dāng)A和B到達(dá)時,則優(yōu)先調(diào)度A和B使之和C的調(diào)度時間相等之后再進(jìn)行公平調(diào)度。
當(dāng)前流的調(diào)度方案都是基于上面的三種調(diào)度方式,它們分為以下兩種。
一是調(diào)度之前已知流的先驗(yàn)信息。以pFabric,PDQ,D3和PASE為首的方案就是根據(jù)流的大小和傳輸截止時間來做調(diào)度決策。pFabric把全網(wǎng)的交互機(jī)看成一個大的交換機(jī),當(dāng)端口空閑時,按照流的大小來優(yōu)先調(diào)度小流,從而實(shí)現(xiàn)SJF的調(diào)度方式,最小化流的完成時間。
二是調(diào)度之前未知流的先驗(yàn)信息。以L2DCP及PIAS為首的方案就是在調(diào)度流之前不知道流的大小等信息,其通過在終端設(shè)定固定不變的閾值來標(biāo)記流的優(yōu)先級,然后在交換機(jī)上根據(jù)優(yōu)先級來進(jìn)行調(diào)度。
方案一存在如下的不足:以流的大小,或者流的完成時間為先驗(yàn)信息的調(diào)度方案在實(shí)際環(huán)境中會降低其性能,甚至不可行。方案二雖為不需要流的先驗(yàn)信息的機(jī)制,但需要交換機(jī)和終端同時升級,交換機(jī)升級增加了部署了難度。
另以上方案都存在如下的不足:不能實(shí)時地監(jiān)測網(wǎng)絡(luò)中流量的變化,沒有根據(jù)實(shí)時的流量來合理對流進(jìn)行調(diào)度,流完成的效率不高、應(yīng)變能力小,不能根據(jù)網(wǎng)絡(luò)的狀況自適應(yīng)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提出一種數(shù)據(jù)中心網(wǎng)絡(luò)流的調(diào)度方法和系統(tǒng)。該方法和系統(tǒng)可以自適應(yīng)網(wǎng)絡(luò)的狀況,實(shí)時地監(jiān)測網(wǎng)絡(luò)中流量的變化,根據(jù)實(shí)時流量來合理對流進(jìn)行調(diào)度。
本發(fā)明提供了一種數(shù)據(jù)中心網(wǎng)絡(luò)流的調(diào)度方法,該方法包括如下步驟:
A1.控制器獲取當(dāng)前的網(wǎng)絡(luò)狀況,根據(jù)流的分布計(jì)算閾值列表并進(jìn)行更新,
控制器將閾值列表推送給終端;
A2.終端根據(jù)閾值列表對數(shù)據(jù)包進(jìn)行優(yōu)先級標(biāo)記;
A3.交換機(jī)根據(jù)數(shù)據(jù)包的優(yōu)先級標(biāo)記進(jìn)行優(yōu)先級調(diào)度;
A4.控制器檢測網(wǎng)絡(luò)的變化,根據(jù)網(wǎng)絡(luò)狀況不定時更新閾值列表。
優(yōu)選地,所述步驟A1閾值列表通過將流的分布代入閾值列表優(yōu)化模型,最優(yōu)化求解得到。
進(jìn)一步地優(yōu)選,所述閾值列表優(yōu)化模型,通過最小化流的完成時間得到。
定義優(yōu)先級隊(duì)列用Pi表示,優(yōu)先級隊(duì)列的數(shù)據(jù)閾值用αj表示。
根據(jù)流的分布,設(shè)閾值列表中有K-1個數(shù)據(jù)閾值{α1,α2,α3,….αK-1};則有K個隊(duì)列,分別為P1:<α1;P2:[α1,α2);P3:[α2,α3)……;PK-1:[αK-2,αK-1);PK:>αK-1。隊(duì)列用Pi表示,閾值用αj表示,從Pi到Pi+1優(yōu)先級的閾值為αj,其中i=j(luò),1≤i≤K,1≤j≤K-1,α0=0,αK=∞。
對于一個處于[αj-1,αj)大小的流,即在Pi隊(duì)列,已經(jīng)經(jīng)過了到達(dá)Pi隊(duì)列之前i-1個不同的延遲。用Ti表示在Pi隊(duì)列平均排隊(duì)時間,設(shè)隊(duì)列Pi的輸入速率為λi,處理速率μi,那么流在Pi隊(duì)列的排隊(duì)時間為:Li×Ti
Li=(αi-αi-1)×θi 公式(1)
設(shè)數(shù)據(jù)流的累積分布函數(shù)為F(x),F(xiàn)(x)表示為流的大小不超過x的概率,x∈αj。θi=θj=F(αj)-F(αj-1)表示流的大小處于Pi隊(duì)列的比例,其中θi=θj≥0,在Pi隊(duì)列中的比例大于等于0。則在隊(duì)列Pi停留的總時間為:
其中,
λi=(αi-αi-1)×θ×λ公式(6)
假設(shè)隊(duì)列為M/M/1的排隊(duì)隊(duì)列,即數(shù)據(jù)包按照泊松分布到達(dá),服務(wù)時間服從馬爾科夫鏈性質(zhì),只有一個調(diào)度者,K個隊(duì)列的停留總時間為:
更進(jìn)一步地優(yōu)選,所述閾值列表優(yōu)化模型表達(dá)為如下公式:
其中,用n標(biāo)記流,1≤n≤N,N條流的總停留時間表達(dá)為如上公式(8)。
最優(yōu)選,如上所述的閾值列表優(yōu)化模型表達(dá)公式通過MATLAB的遺傳算法計(jì)算得到閾值列表。
優(yōu)選地,所述步驟A2終端根據(jù)流已經(jīng)發(fā)送的數(shù)據(jù)量對數(shù)據(jù)包進(jìn)行優(yōu)先級標(biāo)記。
進(jìn)一步地優(yōu)選,所述優(yōu)先級為流已經(jīng)發(fā)送的數(shù)據(jù)量越小,其數(shù)據(jù)包的優(yōu)先級越高。
即P1具有最高的優(yōu)先級,α0=0,αK=∞。這樣最小的流停留在最高的優(yōu)先級隊(duì)列,最大的流停留在最小的優(yōu)先級隊(duì)列。
本發(fā)明還提供一種數(shù)據(jù)中心網(wǎng)絡(luò)流的調(diào)度系統(tǒng),該系統(tǒng)包括:控制器,終端標(biāo)記模塊,交換機(jī)調(diào)度模塊,其中控制器包括網(wǎng)絡(luò)狀態(tài)獲取模塊,閾值計(jì)算與更新模塊,閾值列表推送模塊;網(wǎng)絡(luò)狀態(tài)獲取模塊用于統(tǒng)計(jì)流量信息,同時通過和終端交互獲取流的發(fā)送速率、發(fā)送大小信息;閾值計(jì)算與更新模塊通過與網(wǎng)絡(luò)狀態(tài)獲取模塊交互,從而知道當(dāng)前的網(wǎng)絡(luò)狀況,進(jìn)行閾值的計(jì)算與更新;閾值列表推送模塊將最新的閾值列表推送給相應(yīng)的終端;終端標(biāo)記模塊用于包的優(yōu)先級標(biāo)記;交換機(jī)調(diào)度模塊用于數(shù)據(jù)包的調(diào)度。
本發(fā)明的有益效果為:通過控制器實(shí)時監(jiān)測網(wǎng)絡(luò)中的流量變化,計(jì)算更新閾值列表并且推送給終端,終端對數(shù)據(jù)包進(jìn)行優(yōu)先級的標(biāo)記,從而使得交換機(jī)根據(jù)優(yōu)先級進(jìn)行調(diào)度,該方法利用控制器的計(jì)算和處理能力,實(shí)時檢測網(wǎng)絡(luò)變化,提高流的應(yīng)變能力,該方法可以自適應(yīng)網(wǎng)絡(luò)的狀況,使得更加智能和高效。該系統(tǒng)通過終端對數(shù)據(jù)包進(jìn)行標(biāo)記,沒有修改現(xiàn)有的TCP/IP棧,避免了修改交換機(jī)設(shè)備,提高了方案的易用性,降低了部署性。
本發(fā)明的實(shí)施例還具有如下的有益效果:將流的分布代入通過最小化流的完成時間得到的閾值列表優(yōu)化模型,根據(jù)該模型計(jì)算得到的閾值列表進(jìn)行優(yōu)先級標(biāo)記和優(yōu)先級調(diào)度,能將流的完成時間最小化;通過利用MATLAB的遺傳算法,能快速并準(zhǔn)確計(jì)算得到閾值列表;根據(jù)流已經(jīng)發(fā)送的數(shù)據(jù)量對數(shù)據(jù)包進(jìn)行優(yōu)先級標(biāo)記,不要求應(yīng)用程序提供關(guān)于數(shù)據(jù)流的大小以及截止時間等信息,使得更容易部署,具有更強(qiáng)的魯棒性。通過流已經(jīng)發(fā)送的數(shù)據(jù)量越小,其數(shù)據(jù)包的優(yōu)先級越高,使得請求數(shù)據(jù)較少的用戶得到更快的響應(yīng),滿足不同用戶對傳輸時間的期望,提升用戶體驗(yàn)。
附圖說明
圖1為本發(fā)明背景技術(shù)中流的三種調(diào)度方式對流調(diào)度完成時間的影響,圖1a為FS調(diào)度方式,圖1b為SJF調(diào)度方式,圖1c為LAS調(diào)度方式。
圖2為本發(fā)明實(shí)施例數(shù)據(jù)中心網(wǎng)絡(luò)流的調(diào)度方法示意圖。
圖3為本發(fā)明實(shí)施例流的分布與閾值列表的關(guān)系示意圖。
圖4為本發(fā)明實(shí)施例終端標(biāo)記流的優(yōu)先級示意圖。
圖5為本發(fā)明實(shí)施例Linux kernel的網(wǎng)絡(luò)過濾模型。
具體實(shí)施方式
下面結(jié)合具體實(shí)施方式并對照附圖對本發(fā)明作進(jìn)一步詳細(xì)說明,應(yīng)該強(qiáng)調(diào)的是,下述說明僅僅是示例性的,而不是為了限制本發(fā)明的范圍及其應(yīng)用。
當(dāng)前有3條流,分別為流a,b,c。其數(shù)據(jù)中心網(wǎng)絡(luò)流的調(diào)度方法如圖2所示,包括如下步驟:
A1.控制器獲取當(dāng)前的網(wǎng)絡(luò)狀況,根據(jù)流的分布計(jì)算閾值列表并進(jìn)行更新,控制器將閾值列表推送給終端;
A2.終端根據(jù)閾值列表對數(shù)據(jù)包進(jìn)行優(yōu)先級標(biāo)記;
A3.交換機(jī)根據(jù)數(shù)據(jù)包的優(yōu)先級標(biāo)記進(jìn)行優(yōu)先級調(diào)度;
A4.控制器檢測網(wǎng)絡(luò)的變化,根據(jù)網(wǎng)絡(luò)狀況不定時更新閾值列表。
圖3表示了當(dāng)前流的分布與閾值列表的關(guān)系。閾值列表中有K-1個數(shù)據(jù)閾值{α1,α2,α3,….αK-1};有K個隊(duì)列,分別為P1:<α1;P2:[α1,α2);P3:[α2,α3)……;PK-1:[αK-2,αK-1);PK:>αK-1。隊(duì)列為Pi,閾值為αj。從Pi到Pi+1優(yōu)先級的閾值為αj,其中i=j(luò),1≤i≤K,1≤j≤K-1,α0=0,αK=∞。
K個隊(duì)列的停留總時間為:
其有4條流,其總停留時間為:
設(shè)將上述的閾值列表優(yōu)化模型表達(dá)公式(9)通過MATLAB的遺傳算法計(jì)算得到閾值列表{3KB,5KB,10KB}。終端根據(jù)閾值列表對數(shù)據(jù)包進(jìn)行優(yōu)先級標(biāo)記,其示意圖如圖4所示。
一條流發(fā)送的數(shù)據(jù)量小于3KB的時候,其數(shù)據(jù)包被標(biāo)記為1,即第一優(yōu)先級。當(dāng)發(fā)送的數(shù)據(jù)量大于3KB并且小于5KB的時候,將這個區(qū)間發(fā)送的數(shù)據(jù)包標(biāo)記為第二優(yōu)先級。相應(yīng)優(yōu)先級的數(shù)據(jù)包進(jìn)入對應(yīng)的交換機(jī)的多重優(yōu)先級隊(duì)列。交換機(jī)的多重優(yōu)先級隊(duì)列是內(nèi)置的,并不需要做任何升級,所以部署起來比較方便。在圖4中,流a,c是大于10KB的流,所以,其數(shù)據(jù)包在第四個隊(duì)列有駐留;流b小于10KB,所以其數(shù)據(jù)包都被標(biāo)記為前三個優(yōu)先級。
終端根據(jù)流已經(jīng)發(fā)送的數(shù)據(jù)量對數(shù)據(jù)包標(biāo)記優(yōu)先級。流發(fā)送的數(shù)據(jù)量越小,則其數(shù)據(jù)包的優(yōu)先級越高。流的優(yōu)先級不是固定不變的,而是隨著其發(fā)送的數(shù)據(jù)包的增多在慢慢減小。這是利用了現(xiàn)有的商用交換機(jī)內(nèi)置的多重優(yōu)先級隊(duì)列機(jī)制。在交換機(jī)內(nèi),不同優(yōu)先級的包按照其優(yōu)先級進(jìn)行嚴(yán)格的優(yōu)先級調(diào)度。在一條流被調(diào)度的整個過程中,這條流的優(yōu)先級不斷的下降隨著它發(fā)送的包的數(shù)量的增加。當(dāng)發(fā)送的數(shù)據(jù)量大于一個隊(duì)列的閾值時,數(shù)據(jù)包將會被賦予更低的優(yōu)先級從而進(jìn)入下一個隊(duì)列。
本方案只需要對終端進(jìn)行簡單修改升級,對于DCN網(wǎng)絡(luò)中的交換機(jī)設(shè)備不需要進(jìn)行任何修改??刂破餍枰黾泳W(wǎng)絡(luò)狀態(tài)獲取模塊,閾值計(jì)算與更新模塊,閾值列表推送模塊。
數(shù)據(jù)中心網(wǎng)絡(luò)流的調(diào)度系統(tǒng)包括:控制器,終端標(biāo)記模塊,交換機(jī)調(diào)度模塊,其中控制器包括網(wǎng)絡(luò)狀態(tài)獲取模塊,閾值計(jì)算與更新模塊,閾值列表推送模塊。其每一個模塊的功能和實(shí)現(xiàn)如下:
(1)網(wǎng)絡(luò)狀態(tài)獲取模塊
該模塊使用SNMP協(xié)議的協(xié)議報文(get-request操作,get-next-request操作,set-request操作)可以獲取交換機(jī)的信息(吞吐量、網(wǎng)絡(luò)負(fù)載)。同時交互機(jī)也會在發(fā)生網(wǎng)絡(luò)異常時及時通知(get–response操作,trap操作)管理進(jìn)程??刂破骺梢酝ㄟ^這個模塊統(tǒng)計(jì)流量信息,同時通過和終端交互來獲取手機(jī)流的發(fā)送速率,發(fā)送大小等信息,為閾值計(jì)算與更新模塊提供智能化和精確的數(shù)據(jù)。
(2)閾值計(jì)算與更新模塊
該模塊與網(wǎng)絡(luò)狀態(tài)獲取模塊進(jìn)行交互,從而知道當(dāng)前的網(wǎng)絡(luò)狀況,然后利用閾值列表優(yōu)化模型進(jìn)行最優(yōu)化目標(biāo)的求解。此優(yōu)化問題可以使用MATLAB的遺傳算法進(jìn)行解決,得到一個閾值列表。終端根據(jù)這個閾值列表來標(biāo)記流的優(yōu)先級。當(dāng)有網(wǎng)絡(luò)狀況改變時,通過SNMP協(xié)議可以更新當(dāng)前的網(wǎng)絡(luò)狀態(tài),重新根據(jù)優(yōu)化模型計(jì)算閾值列表。由于每一個終端所處的網(wǎng)絡(luò)狀況不同,所以終端的閾值列表是不相同的。
(3)閾值列表推送模塊
閾值列表推送模塊拿到最新的閾值列表之后,推送給相應(yīng)的終端。因?yàn)槊總€終端所處的網(wǎng)絡(luò)狀況不同,其閾值列表也不一致。該模塊在網(wǎng)絡(luò)狀況穩(wěn)定的情況下,每1s推送一次更新的閾值列表,如果網(wǎng)絡(luò)中狀況不穩(wěn)定,則每個RTT都推送更新的閾值列表,來保證閾值列表對網(wǎng)絡(luò)的自適應(yīng)性和實(shí)時性。
(4)終端標(biāo)記模塊
終端標(biāo)記數(shù)據(jù)包的優(yōu)先級是通過修改Linux kernel中的Netfilter框架來實(shí)現(xiàn)的。Linux kernel的網(wǎng)絡(luò)過濾模型如圖5所示,當(dāng)一個包進(jìn)入IP棧的時候,它的校驗(yàn)碼就會被驗(yàn)證,然后這個包會被PRE-ROUTE這個鉤子函數(shù)進(jìn)行處理,來決定是否提交給主機(jī)還是要被轉(zhuǎn)發(fā)。運(yùn)用Netfilter框架,可以通過注冊鉤子函數(shù)來實(shí)現(xiàn)數(shù)據(jù)包的標(biāo)記,并不需要修改現(xiàn)有的TCP/IP棧。當(dāng)一個終端要發(fā)送數(shù)據(jù)包時,會通過LOCAL-OUT的鉤子函數(shù)來截獲這個數(shù)據(jù)包到一個基于哈希的流表。這個流表表項(xiàng)包括源/目的IP,源/目的端口,以及傳輸協(xié)議。當(dāng)一個新的數(shù)據(jù)包將要被發(fā)送時,哈希函數(shù)檢查這個數(shù)據(jù)包是否屬于已有的流,如果沒有,就會在這個表中新建一個記錄,把這條流包括進(jìn)去。如果屬于已有的流,就會增加已經(jīng)有的流的發(fā)送的數(shù)據(jù)量的大小。最后我們修改這個包的DCSP的字段把它標(biāo)記為相應(yīng)的優(yōu)先級。
通過終端標(biāo)記模塊和控制器的閾值計(jì)算相關(guān)的模塊的配合,可以對流進(jìn)行自適應(yīng)網(wǎng)絡(luò)的優(yōu)先級標(biāo)記,進(jìn)行智能化的流調(diào)度,最小化流的調(diào)度和傳輸延遲,提高流調(diào)度機(jī)制的效率。