本發(fā)明涉及通信領(lǐng)域,尤其涉及混合網(wǎng)絡(luò)流調(diào)度方法和交換機(jī)。
背景技術(shù):
云應(yīng)用向數(shù)據(jù)中心網(wǎng)絡(luò)(DCN,Datacenter Network)注入網(wǎng)絡(luò)流。所述網(wǎng)絡(luò)流可以分為三類。
類型1:有截止時(shí)間的網(wǎng)絡(luò)流。有一些應(yīng)用,例如網(wǎng)絡(luò)搜索、推薦和廣告等,生成的網(wǎng)絡(luò)流通常都是有截止時(shí)間的。這些有截止時(shí)間的網(wǎng)絡(luò)流的大小通常也是容易提前獲取的。對(duì)這些應(yīng)用而言,延遲會(huì)影響其用戶體驗(yàn),因此,這些應(yīng)用對(duì)網(wǎng)絡(luò)流都會(huì)設(shè)定一些延遲條件,例如截止時(shí)間。對(duì)于只包含這一類網(wǎng)絡(luò)流的流量,基于EDF(Earliest Deadline First,最早截止時(shí)間優(yōu)先)的算法(例如,給截止時(shí)間早的網(wǎng)絡(luò)流更高優(yōu)先級(jí)的pFabric,和利用剩余期限作為網(wǎng)絡(luò)流的臨界的PDQ)是用來最小化截止時(shí)間錯(cuò)過率最常見的算法。
類型2:無截止時(shí)間但大小已知的網(wǎng)絡(luò)流。有一些應(yīng)用,例如虛擬機(jī)遷移(VM-migration)、數(shù)據(jù)備份等,生成的網(wǎng)絡(luò)流沒有延遲條件。這些網(wǎng)絡(luò)流的大小通常在傳輸前就已經(jīng)知道。這一類網(wǎng)絡(luò)流雖然沒有截止時(shí)間,但也都希望能夠早點(diǎn)完成。對(duì)于只包含這一類網(wǎng)絡(luò)流的流量,基于SJF(Shortest Job First,最短任務(wù)優(yōu)先)的算法(例如,給更小的網(wǎng)絡(luò)流更高優(yōu)先級(jí)的PASE和pFabric,和利用剩余期限作為網(wǎng)絡(luò)流的臨界的PDQ)是用來最小化平均FCT(Flow Completion Time,網(wǎng)絡(luò)流完成時(shí)間)最常見的方法。
類型3:無截止時(shí)間且大小未知的網(wǎng)絡(luò)流。其他的網(wǎng)絡(luò)流可以被歸于這一類。有很多應(yīng)用無法在網(wǎng)絡(luò)流開始的時(shí)候就提供大小/截止時(shí)間信息(例如:數(shù)據(jù)庫查詢響應(yīng)和HTTP分塊傳輸。對(duì)于只包含這一類網(wǎng)絡(luò)流的流量,最常見的方法是盡力而為算法(例如DCTCP)。近來,PIAS在不知道網(wǎng)絡(luò)流大小的情況下模仿SJF實(shí)現(xiàn)了比DCTCP更優(yōu)的FCT。
以上三種類型的網(wǎng)絡(luò)流是共存于數(shù)據(jù)中心網(wǎng)絡(luò)(DCN)中的。而如何調(diào)度這些混合網(wǎng)絡(luò)流是一個(gè)很重要的問題。雖然針對(duì)每一種類型的網(wǎng)絡(luò)流都有已知的調(diào)度算法(基于SJF或者EDF),但罕見能夠處理混合網(wǎng)絡(luò)流的算法。已經(jīng)被提出的這些算法要么注重最大化有截止時(shí)間的網(wǎng)絡(luò)流在截止時(shí)間前的完成率,要么注重最小化無截止時(shí)間的網(wǎng)絡(luò)流的FCT(Flow Completion Time,網(wǎng)絡(luò)流完成時(shí)間),然而它們并沒有同時(shí)將這兩方面都考慮進(jìn)來。更糟的是,如果只是簡單地將現(xiàn)有的調(diào)度算法進(jìn)行合并,其效果也并不好。比如說,針對(duì)有截止時(shí)間的網(wǎng)絡(luò)流的調(diào)度策略為了讓有截止時(shí)間的網(wǎng)絡(luò)流能夠在其截止時(shí)間前完成,可能會(huì)過于激進(jìn)的占據(jù)所有帶寬,從而影響到無截止時(shí)間網(wǎng)絡(luò)流的FCT。例如pFabric或者基于EDF(Earliest Deadline First,最早截止時(shí)間優(yōu)先)的調(diào)度算法,它們不適合應(yīng)用于混合網(wǎng)絡(luò)流調(diào)度的主要原因就是他們會(huì)激進(jìn)地為有截止時(shí)間的網(wǎng)絡(luò)流搶占帶寬從而影響到那些無截止時(shí)間的網(wǎng)絡(luò)流。pFabric令有截止時(shí)間的網(wǎng)絡(luò)流的優(yōu)先級(jí)高于無截止時(shí)間的網(wǎng)絡(luò)流。因此,有截止時(shí)間的網(wǎng)絡(luò)流會(huì)激進(jìn)地占據(jù)所有的帶寬很快地完成(早于其截止時(shí)間很多就完成,這是不必要的)。而相應(yīng)的代價(jià)是增加了短的無截止時(shí)間網(wǎng)絡(luò)流的FCT。網(wǎng)絡(luò)中有截止時(shí)間的流越多,這個(gè)問題就越嚴(yán)重。
為了更加清楚的表示僅僅使用基于臨界的調(diào)度算法(SJF或EDF)會(huì)影響混合網(wǎng)絡(luò)流中不同類型網(wǎng)絡(luò)流的表現(xiàn),下面將用ns-3實(shí)驗(yàn)數(shù)據(jù)進(jìn)行說明。實(shí)驗(yàn)中發(fā)送端和接收端通過交換機(jī)連接,所述服務(wù)器的輸出容量為1Gbps。實(shí)驗(yàn)中還使用DCTCP在端主機(jī)處進(jìn)行速率控制。
圖1示出僅使用SJF算法對(duì)網(wǎng)絡(luò)流進(jìn)行調(diào)度時(shí)有截止時(shí)間網(wǎng)絡(luò)流的截止時(shí)間錯(cuò)過率。圖1中橫坐標(biāo)表示在類型2網(wǎng)絡(luò)流中比類型1網(wǎng)絡(luò)流小的網(wǎng)絡(luò)流所占的比例,縱坐標(biāo)表示類型1網(wǎng)絡(luò)流的截止時(shí)間錯(cuò)過率。由圖可見,當(dāng)類型1網(wǎng)絡(luò)流比1%的類型2網(wǎng)絡(luò)流小時(shí),截止時(shí)間錯(cuò)過率為0。當(dāng)所述比例來到20百分位時(shí)(13KB),所述截止時(shí)間錯(cuò)過率超過40%。
由此我們可以得出一個(gè)結(jié)論:僅使用SJF算法對(duì)網(wǎng)絡(luò)流進(jìn)行調(diào)度會(huì)影響到類型1網(wǎng)絡(luò)流。這是由于SJF算法僅由網(wǎng)絡(luò)流的大小便決定哪個(gè)網(wǎng)絡(luò)流可以先執(zhí)行,因此會(huì)阻礙類型1網(wǎng)絡(luò)流在其截止時(shí)間前完成,特別是對(duì)那些相對(duì)大的有截止時(shí)間的網(wǎng)絡(luò)流的影響更大。
下面,將對(duì)有截止時(shí)間的網(wǎng)絡(luò)流的調(diào)度算法改為EDF,并令類型1網(wǎng)絡(luò)流嚴(yán)格擁有比類型2網(wǎng)絡(luò)流更高的優(yōu)先級(jí)。參見圖2,圖2中橫坐標(biāo)表示類型1網(wǎng)絡(luò)流占總流量的比例,縱坐標(biāo)表示類型2網(wǎng)絡(luò)流99百分位的FCT。由圖2可知,類型2網(wǎng)絡(luò)流的尾延遲隨著有截止時(shí)間的網(wǎng)絡(luò)流在總流量中的比例增大而增大。這是因?yàn)椋愋?網(wǎng)絡(luò)流擁有比類型2網(wǎng)絡(luò)流更高的優(yōu)先級(jí),因此類型2網(wǎng)絡(luò)流只能使用類型1網(wǎng)絡(luò)流剩下的帶寬。由于類型1網(wǎng)絡(luò)流通過激進(jìn)的速率控制(DCTCP)激進(jìn)地占據(jù)帶寬,因此會(huì)影響到其他類型網(wǎng)絡(luò)流的表現(xiàn)。
由此我們可以得出一個(gè)結(jié)論:對(duì)類型1網(wǎng)絡(luò)流使用EDF算法,對(duì)類型2和類型3網(wǎng)絡(luò)流使用SJF算法也仍會(huì)影響到類型2和類型3網(wǎng)絡(luò)流。這是因?yàn)?,類?網(wǎng)絡(luò)流占據(jù)了所有的帶寬,使其在截止時(shí)間到來之前很多就早早地完成(然而這并不需要),而代價(jià)就是增加了類型2和類型3網(wǎng)絡(luò)流的FCT。
相關(guān)的傳輸協(xié)議還有很多,下面簡要介紹一些。
DCTCP(Data Center Transmission Control Protocol,數(shù)據(jù)中心傳輸控制協(xié)議)是一種用于DCN(Data Center Network,數(shù)據(jù)中心網(wǎng)絡(luò))的盡力而為的傳輸協(xié)議,它的擁塞控制策略可以很好的與ECN結(jié)合。DCTCP是截止時(shí)間不知曉的,并且由于DCTCP網(wǎng)絡(luò)流平均共享帶寬,因此它不能模擬SJF(Shortest Job First,最短作業(yè)優(yōu)先調(diào)度)。
D3(Deadline-driven Delivery,截止時(shí)間驅(qū)使交付)通過貪婪算法處理有截止時(shí)間的網(wǎng)絡(luò)流,但是會(huì)引起優(yōu)先級(jí)倒置的問題,并且需要對(duì)服務(wù)器做出很大改動(dòng)。具體的,它將網(wǎng)絡(luò)流速率設(shè)為γ=M/δ加上除去所有有截止時(shí)間的網(wǎng)絡(luò)流的需求后剩余鏈路帶寬的平均值。然而,如圖3所示,D3會(huì)出現(xiàn)優(yōu)先級(jí)反轉(zhuǎn)的問題。D3總是盡可能的為先到達(dá)的網(wǎng)絡(luò)流分配速率。在圖3(a)中,網(wǎng)絡(luò)流C沒能在其截止時(shí)間內(nèi)完成,因?yàn)楦绲木W(wǎng)絡(luò)流A和網(wǎng)絡(luò)流B不肯為網(wǎng)絡(luò)流C讓出它們的帶寬。而從圖3(b)中可以看出,對(duì)于網(wǎng)絡(luò)流A和網(wǎng)絡(luò)流B,即使它們?yōu)榫W(wǎng)絡(luò)流C讓出帶寬也并不影響它們自己在截止時(shí)間前完成。
D2TCP(Deadline-aware Datacenter TCP,截止時(shí)間知曉的數(shù)據(jù)中心傳輸控制協(xié)議)在DCTCP的基礎(chǔ)上對(duì)類型1網(wǎng)絡(luò)流增加了截止時(shí)間知曉。但D2TCP不能用來處理類型2和類型3網(wǎng)絡(luò)流。
FCP(Flexible Control Protocol,靈活的控制協(xié)議)同樣應(yīng)用了D3,并且它增加了代價(jià)機(jī)制。
PDQ(Preemptive Distributed Quick flow scheduling,搶占式分布的快速流調(diào)度)和pFabric(最小接近最優(yōu)的數(shù)據(jù)傳輸)都是基于臨界的網(wǎng)絡(luò)流調(diào)度策略,但他們可能會(huì)影響到其他無截止時(shí)間的網(wǎng)絡(luò)流。
PASE綜合了以上傳輸層策略,但是不能直接解決混合網(wǎng)絡(luò)流調(diào)度的問題。并且,PASE需要網(wǎng)絡(luò)控制層的協(xié)調(diào)速率仲裁。
PIAS(Practical Information-Agnostic flow Scheduling,實(shí)際的信息不可知網(wǎng)絡(luò)流調(diào)度)是信息不可知的網(wǎng)絡(luò)流調(diào)度策略,它可以不用知道網(wǎng)絡(luò)流的大小模擬SJF(Shortest Job First,最短任務(wù)優(yōu)先調(diào)度)。PIAS對(duì)大小未知的網(wǎng)絡(luò)流有效,但是對(duì)其它的不行。PIAS將所有的網(wǎng)絡(luò)流都當(dāng)作既不知道截止時(shí)間也不知道大小的網(wǎng)絡(luò)流進(jìn)行處理,這顯然對(duì)無截止時(shí)間的網(wǎng)絡(luò)流造成影響。
除了不能很好地處理混合流的問題外,上述很多調(diào)度算法都需要對(duì)交換機(jī)進(jìn)行很大程度的改動(dòng),或者設(shè)置復(fù)雜的控制面以對(duì)每個(gè)網(wǎng)絡(luò)流設(shè)置速率,這些都使得它們?cè)趯?shí)際應(yīng)用中很難實(shí)行。
總而言之,現(xiàn)有的調(diào)度算法不能同時(shí)滿足以下三個(gè)需求:
第一,最大化有截止時(shí)間的網(wǎng)絡(luò)流在截止時(shí)間前的完成率。
第二,最小化無截止時(shí)間的網(wǎng)絡(luò)流的FCT。
第三,可直接適用于現(xiàn)售的DCN商品硬件。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例所要解決的技術(shù)問題在于,如何在使大部分有截止時(shí)間的網(wǎng)絡(luò)流在其截止時(shí)間之前完成的同時(shí)提升無截止時(shí)間的網(wǎng)絡(luò)流的FCT。
為了解決上述技術(shù)問題,本發(fā)明實(shí)施例提供了一種混合網(wǎng)絡(luò)流的調(diào)度方法,所述混合網(wǎng)絡(luò)流包括類型1、類型2和類型3三種網(wǎng)絡(luò)流,其中所述類型1網(wǎng)絡(luò)流為有截止時(shí)間的網(wǎng)絡(luò)流,所述類型2網(wǎng)絡(luò)流為無截止時(shí)間但大小已知的網(wǎng)絡(luò)流,所述類型3網(wǎng)絡(luò)流為無截止時(shí)間且大小未知的網(wǎng)絡(luò)流,所述混合網(wǎng)絡(luò)流在鏈路上傳輸,所述鏈路具有帶寬,所述調(diào)度方法包括:
將所述類型1網(wǎng)絡(luò)流分配至具有最高優(yōu)先級(jí)的隊(duì)列中,通過公式(a)計(jì)算擁塞窗口,占用與所述擁塞窗口相對(duì)應(yīng)的帶寬向所述鏈路發(fā)送所述類型1網(wǎng)絡(luò)流;
其中,
s表示所述類型1網(wǎng)絡(luò)流,當(dāng)前τs(t)表示在t時(shí)刻所述類型1網(wǎng)絡(luò)流的往返時(shí)間,Ws(t)表示t時(shí)刻的擁塞窗口,Ws(t+τs(t))表示t+τs(t)時(shí)刻的擁塞窗口,L(s)表示所述鏈路,γs(t)表示在t時(shí)刻所述類型1網(wǎng)絡(luò)流的期望速率,Zs(t)表示在t時(shí)刻所述類型1網(wǎng)絡(luò)流的虛擬隊(duì)列,Ms(t)表示在t時(shí)刻要完成所述類型1網(wǎng)絡(luò)流還需要傳輸?shù)氖S鄶?shù)據(jù)大小,δs(t)表示在t時(shí)刻所述類型1網(wǎng)絡(luò)流距離截止時(shí)間到來還剩余的時(shí)間,∑l∈L(s)Ql(t)表示在t時(shí)刻所述鏈路上的總的隊(duì)列長度,∑l∈L(s)λl(t)表示在t時(shí)刻所述鏈路的總的鏈路代價(jià);
將所述類型2和類型3網(wǎng)絡(luò)流分配至其他優(yōu)先級(jí)的隊(duì)列中,占用所述類型1網(wǎng)絡(luò)流使用剩余的帶寬向所述鏈路發(fā)送所述類型2和類型3網(wǎng)絡(luò)流。
優(yōu)選的,在t時(shí)刻的所述總的隊(duì)列長度由公式(b)計(jì)算得到:
∑l∈L(s)Ql(t)≈K+Fs(t)×Ws(t) 公式(b)
其中,K為顯示擁塞指示的閾值,F(xiàn)s(t)表示根據(jù)距t時(shí)刻最近一個(gè)擁塞窗口發(fā)送的類型1網(wǎng)絡(luò)流的數(shù)據(jù)包中所述顯示擁塞指示有標(biāo)記的數(shù)據(jù)包的比例,Ws(t)表示t時(shí)刻的擁塞窗口。
優(yōu)選的,在t時(shí)刻的所述總的鏈路代價(jià)由公式(c)計(jì)算得到:
∑l∈L(s)λl(t)=C-(Fs(t)Ws(t)-Fs(t-τs(t))Ws(t-τs(t))-2)/τs(t) 公式(c)
其中C表示所述鏈路的容量,F(xiàn)s(t)表示根據(jù)距t時(shí)刻最近一個(gè)擁塞窗口發(fā)送的類型1網(wǎng)絡(luò)流的數(shù)據(jù)包中所述顯示擁塞指示有標(biāo)記的數(shù)據(jù)包的比例,F(xiàn)s(t-τs(t))表示根據(jù)距t-τs(t)時(shí)刻最近一個(gè)擁塞窗口發(fā)送的類型1網(wǎng)絡(luò)流的數(shù)據(jù)包中所述顯示擁塞指示有標(biāo)記的數(shù)據(jù)包的比例,Ws(t-τs(t))表示t-τs(t)時(shí)刻的擁塞窗口。
進(jìn)一步地,當(dāng)判斷一個(gè)所述類型1網(wǎng)絡(luò)流不能在其截止時(shí)間前完成時(shí),丟棄所述一個(gè)類型1網(wǎng)絡(luò)流。
優(yōu)選的,若所述一個(gè)類型1網(wǎng)絡(luò)流的虛擬隊(duì)列的隊(duì)列長度大于所述鏈路的容量,則判定所述一個(gè)類型1網(wǎng)絡(luò)流不能在其截止時(shí)間前完成。
優(yōu)選的,若所述一個(gè)類型1網(wǎng)絡(luò)流的期望速率大于所述鏈路的容量,則判定所述一個(gè)類型1網(wǎng)絡(luò)流不能在其截止時(shí)間前完成。
進(jìn)一步地,所述將類型2和類型3網(wǎng)絡(luò)流分配至其他優(yōu)先級(jí)的隊(duì)列中進(jìn)一步包括:
依據(jù)分離閾值{β}對(duì)所述類型2網(wǎng)絡(luò)流進(jìn)行劃分,將大小處于(βi-1,βi]之間的類型2網(wǎng)絡(luò)流分配至優(yōu)先級(jí)為i的隊(duì)列中;
依據(jù)篩選閾值{α}對(duì)所述類型3網(wǎng)絡(luò)流進(jìn)行劃分,將已發(fā)送的字節(jié)數(shù)處于(αi-1,αi]之間的類型3網(wǎng)絡(luò)流分配至優(yōu)先級(jí)為i的隊(duì)列中;
所述i越小優(yōu)先級(jí)越高。
進(jìn)一步地,所述分離閾值{β}和所述篩選閾值{α}基于公式(d)、(e)、(f)計(jì)算得到:
約束條件:
其中M為所述分離閾值{β}或所述篩選閾值{α}所構(gòu)成的區(qū)間的個(gè)數(shù),F(xiàn)1(·)、F2(·)、F3(·)為所述三種類型網(wǎng)絡(luò)流各自的流量分布。
進(jìn)一步地,所述分離閾值{β}和所述篩選閾值{α}隨網(wǎng)絡(luò)中流量的改變而周期性地更新。
進(jìn)一步地,當(dāng)一個(gè)網(wǎng)絡(luò)流經(jīng)歷了N個(gè)TCP超時(shí)時(shí),提升所述一個(gè)網(wǎng)絡(luò)流的優(yōu)先級(jí),所述N為大于1的整數(shù)。
進(jìn)一步地,每一個(gè)網(wǎng)絡(luò)流對(duì)應(yīng)一個(gè)N值,所述N值按照[2,10]的平均分布隨機(jī)選取。
優(yōu)選的,通過以下方式提升所述一個(gè)網(wǎng)絡(luò)流的優(yōu)先級(jí):當(dāng)所述一個(gè)網(wǎng)絡(luò)流為類型2網(wǎng)絡(luò)流時(shí),按照所述一個(gè)網(wǎng)絡(luò)流的剩余數(shù)據(jù)大小重新對(duì)所述一個(gè)網(wǎng)絡(luò)流進(jìn)行劃分并分配至相應(yīng)的優(yōu)先級(jí)隊(duì)列;當(dāng)所述一個(gè)網(wǎng)絡(luò)流為類型3網(wǎng)絡(luò)流時(shí),將所述一個(gè)網(wǎng)絡(luò)流移至用于類型2和類型3網(wǎng)絡(luò)流的隊(duì)列中優(yōu)先級(jí)最高的隊(duì)列。
相應(yīng)地,本發(fā)明還提供一種交換機(jī),所述交換機(jī)向鏈路發(fā)送混合網(wǎng)絡(luò)流,所述混合網(wǎng)絡(luò)流包括類型1、類型2和類型3三種網(wǎng)絡(luò)流,其中所述類型1網(wǎng)絡(luò)流為有截止時(shí)間的網(wǎng)絡(luò)流,所述類型2網(wǎng)絡(luò)流為大小已知的無截止時(shí)間的網(wǎng)絡(luò)流,所述類型3網(wǎng)絡(luò)流為大小未知的無截止時(shí)間的網(wǎng)絡(luò)流,所述鏈路具有帶寬,其特征在于,所述交換機(jī)包括擁塞窗口計(jì)算模塊、調(diào)度模塊,其中
所述擁塞窗口計(jì)算模塊用于根據(jù)公式(a)計(jì)算擁塞窗口;
其中,
s表示所述類型1網(wǎng)絡(luò)流,τs(t)表示在t時(shí)刻所述類型1網(wǎng)絡(luò)流的往返時(shí)間,Ws(t)表示t時(shí)刻的擁塞窗口,Ws(t+τs(t))表示t+τs(t)時(shí)刻的擁塞窗口,L(s)表示所述鏈路,γs(t)表示在t時(shí)刻所述類型1網(wǎng)絡(luò)流的期望速率,Zs(t)表示在t時(shí)刻所述類型1網(wǎng)絡(luò)流的虛擬隊(duì)列,Ms(t)表示在t時(shí)刻要完成所述類型1網(wǎng)絡(luò)流還需要傳輸?shù)氖S鄶?shù)據(jù)大小,δs(t)表示在t時(shí)刻所述類型1網(wǎng)絡(luò)流距離截止時(shí)間到來還剩余的時(shí)間,∑l∈L(s)Ql(t)表示在t時(shí)刻所述鏈路上的總的隊(duì)列長度,∑l∈L(s)λl(t)表示在t時(shí)刻所述鏈路的總的鏈路代價(jià);
所述調(diào)度模塊用于將類型1網(wǎng)絡(luò)流分配至具有最高優(yōu)先級(jí)的隊(duì)列中,占用與所述擁塞窗口相對(duì)應(yīng)的帶寬向所述鏈路發(fā)送所述類型1網(wǎng)絡(luò)流,同時(shí)將所述類型2和類型3網(wǎng)絡(luò)流分配至其他優(yōu)先級(jí)的隊(duì)列中,占用所述類型1網(wǎng)絡(luò)流使用剩余的帶寬向所述鏈路發(fā)送所述類型2和類型3網(wǎng)絡(luò)流。
進(jìn)一步地,所述交換機(jī)支持顯示擁塞指示,在t時(shí)刻所述總的隊(duì)列長度由公式(b)計(jì)算得到:
∑l∈L(s)Ql(t)≈K+Fs(t)×Ws(t) 公式(b)
其中,K為所述顯示擁塞指示的閾值,F(xiàn)s(t)表示根據(jù)距t時(shí)刻最近一個(gè)擁塞窗口發(fā)送的類型1網(wǎng)絡(luò)流的數(shù)據(jù)包中所述顯示擁塞指示有標(biāo)記的數(shù)據(jù)包的比例,Ws(t)表示t時(shí)刻的擁塞窗口。
進(jìn)一步地,在t時(shí)刻所述總的鏈路代價(jià)由公式(c)計(jì)算得到:
∑l∈L(s)λl(t)=C-(Fs(t)Ws(t)-Fs(t-τs(t))Ws(t-τs(t))-2)/τs(t) 公式(c)
其中C表示所述鏈路的容量,F(xiàn)s(t)表示根據(jù)距t時(shí)刻最近一個(gè)擁塞窗口發(fā)送的類型1網(wǎng)絡(luò)流的數(shù)據(jù)包中所述顯示擁塞指示有標(biāo)記的數(shù)據(jù)包的比例,F(xiàn)s(t-τs(t))表示根據(jù)距t-τs(t)時(shí)刻最近一個(gè)擁塞窗口發(fā)送的類型1網(wǎng)絡(luò)流的數(shù)據(jù)包中所述顯示擁塞指示有標(biāo)記的數(shù)據(jù)包的比例,Ws(t-τs(t))表示t-τs(t)時(shí)刻的擁塞窗口。
進(jìn)一步地,所述交換機(jī)還包括判斷模塊,所述判斷模塊用于判斷一個(gè)類型1網(wǎng)絡(luò)流能否在其截止時(shí)間前完成;
所述調(diào)度模塊進(jìn)一步用于在所述判斷模塊判定所述一個(gè)類型1網(wǎng)絡(luò)流不能在其截止時(shí)間前完成時(shí),丟棄所述一個(gè)類型1網(wǎng)絡(luò)流。
優(yōu)選的,所述判斷模塊在所述一個(gè)類型1網(wǎng)絡(luò)流的虛擬隊(duì)列的隊(duì)列長度大于所述鏈路的容量時(shí)判定所述一個(gè)類型1網(wǎng)絡(luò)流無法在其截止時(shí)間前完成。
優(yōu)選的,所述判斷模塊在所述一個(gè)類型1網(wǎng)絡(luò)流的期望速率大于所述鏈路的容量時(shí)判定所述一個(gè)類型1網(wǎng)絡(luò)流無法在其截止時(shí)間前完成。
進(jìn)一步地,所述交換機(jī)還包括閾值計(jì)算模塊,所述閾值計(jì)算模塊用于根據(jù)公式(d)、(e)、(f)計(jì)算分離閾值{β}和篩選閾值{α};
約束條件:
其中M表示所述分離閾值{β}或所述篩選閾值{α}所構(gòu)成的區(qū)間的個(gè)數(shù),F(xiàn)1(·)、F2(·)、F3(·)為所述三種類型網(wǎng)絡(luò)流各自的流量分布;
所述調(diào)度模塊進(jìn)一步用于依據(jù)所述分離閾值{β}對(duì)所述類型2網(wǎng)絡(luò)流進(jìn)行劃分,將大小處于(βi-1,βi]之間的類型2網(wǎng)絡(luò)流分配至優(yōu)先級(jí)為i的隊(duì)列中,依據(jù)篩選閾值{α}對(duì)所述類型3網(wǎng)絡(luò)流進(jìn)行劃分,將已發(fā)送的字節(jié)數(shù)處于(αi-1,αi]之間的類型3網(wǎng)絡(luò)流分配至優(yōu)先級(jí)為i的隊(duì)列中,所述i越小優(yōu)先級(jí)越高。
優(yōu)選的,所述閾值計(jì)算模塊隨網(wǎng)絡(luò)中流量的改變而周期性地計(jì)算所述分離閾值{β}和所述篩選閾值{α}。
進(jìn)一步地,所述交換機(jī)還包括N值選取模塊,所述N值選取模塊用于為每個(gè)網(wǎng)絡(luò)流按照[2,10]的平均分布隨機(jī)選取一個(gè)N值,所N為大于1的整數(shù);
所述調(diào)度模塊進(jìn)一步還用于在一個(gè)網(wǎng)絡(luò)流經(jīng)歷了N個(gè)TCP超時(shí)時(shí),提升所述一個(gè)網(wǎng)絡(luò)流的優(yōu)先級(jí)。
優(yōu)選的,所述調(diào)度模塊通過以下方式提升所述一個(gè)網(wǎng)絡(luò)流的優(yōu)先級(jí):當(dāng)所述一個(gè)網(wǎng)絡(luò)流為類型2網(wǎng)絡(luò)流時(shí),按照所述一個(gè)網(wǎng)絡(luò)流的剩余數(shù)據(jù)大小重新對(duì)所述一個(gè)網(wǎng)絡(luò)流進(jìn)行劃分并分配至相應(yīng)的優(yōu)先級(jí)隊(duì)列;當(dāng)所述一個(gè)網(wǎng)絡(luò)流為類型3網(wǎng)絡(luò)流時(shí),將所述一個(gè)網(wǎng)絡(luò)流移至用于類型2和類型3網(wǎng)絡(luò)流的隊(duì)列中優(yōu)先級(jí)最高的隊(duì)列。
進(jìn)一步地,所述交換機(jī)還包括信息添加模塊,所述信息添加模塊用于在所述交換機(jī)發(fā)送的每個(gè)類型1網(wǎng)絡(luò)流的所述數(shù)據(jù)包中添加所述交換機(jī)處的隊(duì)列長度和鏈路代價(jià)。
進(jìn)一步地,所述交換機(jī)還包括信息傳遞模塊,所述信息傳遞模塊通過發(fā)送套接字并利用setsockopt設(shè)置每個(gè)數(shù)據(jù)包的mark將所述網(wǎng)絡(luò)流的信息傳遞至內(nèi)核空間網(wǎng)絡(luò)堆棧。
實(shí)施本發(fā)明實(shí)施例,具有如下有益效果:
1、本發(fā)明可以系統(tǒng)地處理混合網(wǎng)絡(luò)流,能夠使很大程度地保證有截止時(shí)間的網(wǎng)絡(luò)流在其截止時(shí)間之前完成,同時(shí)減小無截止時(shí)間的網(wǎng)絡(luò)流的FCT。
2、而本發(fā)明只需要網(wǎng)絡(luò)ECN(Explicit Congestion Notification,顯示擁塞指示)的支持,不需要對(duì)交換機(jī)進(jìn)行硬件改動(dòng),也無需設(shè)置復(fù)雜的控制面以對(duì)各個(gè)網(wǎng)絡(luò)流分別設(shè)置速率。
附圖說明
圖1是僅使用SJF算法對(duì)網(wǎng)絡(luò)流進(jìn)行調(diào)度時(shí)有截止時(shí)間網(wǎng)絡(luò)流的截止時(shí)間錯(cuò)過率;
圖2是使用EDF算法進(jìn)行調(diào)度對(duì)有截止時(shí)間網(wǎng)絡(luò)流的完成率的影響的示意圖;
圖3是現(xiàn)有技術(shù)D3和最優(yōu)情況下的對(duì)比圖;
圖4是本發(fā)明一個(gè)實(shí)施例的示意圖;
圖5是本發(fā)明另一個(gè)實(shí)施例的示意圖;
圖6是用于估計(jì)隊(duì)列長度的示意圖;
圖7是本發(fā)明實(shí)施例與現(xiàn)有技術(shù)DCTCP和pFabric的性能對(duì)比圖;
圖8是本發(fā)明實(shí)施例與DCTCP的性能對(duì)比圖;
圖9是三種網(wǎng)流的放棄方案的性能對(duì)比圖;
圖10是ECN的效果的示意圖;
圖11是隊(duì)列數(shù)量對(duì)類型2和類型3網(wǎng)絡(luò)流FCT的影響的示意圖
圖12是脊柱-葉子拓?fù)浣Y(jié)構(gòu)示意圖;
圖13是不同工作負(fù)載的示意圖;
圖14是本發(fā)明實(shí)施例與現(xiàn)有技術(shù)D3、D2TCP和是pFabric的性能對(duì)比圖;
圖15是本發(fā)明實(shí)施例中網(wǎng)絡(luò)流時(shí)效對(duì)抗饑餓的效果示意圖;
圖16是不同閾值用于不同類型的工作負(fù)載產(chǎn)生的場景示意圖;
圖17是類型2網(wǎng)絡(luò)流在不同場景中平均FCT的對(duì)比圖;
圖18是本發(fā)明實(shí)施例在瓶頸鏈路下的性能示意圖。
具體實(shí)施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步地詳細(xì)描述。
面向用戶的數(shù)據(jù)中心應(yīng)用(如網(wǎng)頁搜索,社交網(wǎng)絡(luò),零售,推薦系統(tǒng)等)對(duì)延遲具有嚴(yán)苛的要求。由這些應(yīng)用生成的長短不一的網(wǎng)絡(luò)流都具有嚴(yán)格的截止時(shí)間,那些沒能在截止時(shí)間內(nèi)完成的網(wǎng)絡(luò)流將被直接從結(jié)果中刪除。而這既影響用戶體驗(yàn),又浪費(fèi)帶寬,同時(shí)也造成供應(yīng)商的收入減少。很多現(xiàn)今的數(shù)據(jù)中心傳輸協(xié)議都是在互聯(lián)網(wǎng)剛出現(xiàn)時(shí)制定的,如TCP(Transmission Control Protocol,傳輸控制協(xié)議),他們并沒有對(duì)有關(guān)截止時(shí)間的部分進(jìn)行明確的規(guī)定,因此他們的表現(xiàn)在目前看來很多都不夠理想。有資料顯示,在TCP協(xié)議下,很大一部分網(wǎng)絡(luò)流(7%至25%以上不等)都沒能在截止時(shí)間內(nèi)完成。
而與此同時(shí),其他應(yīng)用的網(wǎng)絡(luò)流的需求也有所不同。例如:并行計(jì)算應(yīng)用、虛擬機(jī)遷移以及數(shù)據(jù)備份,它們并不給網(wǎng)絡(luò)流指定具體的截止時(shí)間,但也是希望所述網(wǎng)絡(luò)流能夠盡早完成。
因此,需要一種能夠系統(tǒng)地解決混合網(wǎng)絡(luò)流問題的方法。所述方法能夠使最大程度地保證有截止時(shí)間的網(wǎng)絡(luò)流在其截止時(shí)間之前完成,同時(shí)能夠減小無截止時(shí)間的網(wǎng)絡(luò)流的FCT。
處理混合網(wǎng)絡(luò)流的核心在于使有截止時(shí)間的網(wǎng)絡(luò)流在其截止時(shí)間前完成,同時(shí)讓無截止時(shí)間的網(wǎng)絡(luò)流盡快地完成。因此,類型1網(wǎng)絡(luò)流應(yīng)該盡量少地占用帶寬,只要類型1網(wǎng)絡(luò)流能夠剛剛好在截止時(shí)間前完成即可,從而最大程度地給類型2和類型3網(wǎng)絡(luò)流讓出帶寬以優(yōu)化他們的FCT。
如圖4所示,在本發(fā)明的一個(gè)實(shí)施例中,本發(fā)明調(diào)度方法首先將所述類型1網(wǎng)絡(luò)流分配至具有最高優(yōu)先級(jí)的隊(duì)列中,通過公式(a)計(jì)算擁塞窗口,占用與所述擁塞窗口相對(duì)應(yīng)的帶寬向所述鏈路發(fā)送所述類型1網(wǎng)絡(luò)流;然后將所述類型2和類型3網(wǎng)絡(luò)流分配至其他優(yōu)先級(jí)的隊(duì)列中,占用所述類型1網(wǎng)絡(luò)流使用剩余的帶寬向所述鏈路發(fā)送所述類型2和類型3網(wǎng)絡(luò)流;
其中,
s表示所述類型1網(wǎng)絡(luò)流τs(t)表示在t時(shí)刻所述類型1網(wǎng)絡(luò)流的往返時(shí)間,Ws(t)表示t時(shí)刻的擁塞窗口,Ws(t+τs(t))表示t+τs(t)時(shí)刻的擁塞窗口,L(s)表示所述鏈路,γs(t)表示在t時(shí)刻所述類型1網(wǎng)絡(luò)流的期望速率,Zs(t)表示在t時(shí)刻所述類型1網(wǎng)絡(luò)流的虛擬隊(duì)列,Ms(t)表示在t時(shí)刻要完成所述類型1網(wǎng)絡(luò)流還需要傳輸?shù)氖S鄶?shù)據(jù)大小,δs(t)表示在t時(shí)刻所述類型1網(wǎng)絡(luò)流距離截止時(shí)間到來還剩余的時(shí)間,∑l∈L(s)Ql(t)表示在t時(shí)刻所述鏈路上的總的隊(duì)列長度,∑l∈L(s)λl(t)表示在t時(shí)刻所述鏈路的總的鏈路代價(jià)。
在該實(shí)施例中,類型1網(wǎng)絡(luò)流被分配至最高優(yōu)先級(jí)的隊(duì)列,而類型2和類型3網(wǎng)絡(luò)流被分配至其他相對(duì)較低的優(yōu)先級(jí)隊(duì)列中,即所述類型1網(wǎng)絡(luò)流的優(yōu)先級(jí)要高于所述類型2和類型3網(wǎng)絡(luò)流。除此之外,所述類型2和類型3網(wǎng)絡(luò)流使用的是類型1網(wǎng)絡(luò)流使用剩余的帶寬。因此,本發(fā)明實(shí)施例可以防止類型1網(wǎng)絡(luò)流被激進(jìn)的類型2或類型3網(wǎng)絡(luò)流搶去帶寬。
其次,本發(fā)明實(shí)施例通過擁塞窗口更新方程,即公式(a),控制類型1網(wǎng)絡(luò)流的發(fā)送速率,使得類型1網(wǎng)絡(luò)流盡可能地在其截止時(shí)間前完成的同時(shí)能夠讓出更多的帶寬給類型2和類型3網(wǎng)絡(luò)流。
具體的,上述公式(a)中的第一項(xiàng)(源):Θ(γs(t),xs(t))是網(wǎng)絡(luò)流期望速率γs(t)的增函數(shù),γs(t)=Ms(t)/δs(t)。一個(gè)網(wǎng)絡(luò)流的γs(t)值越大說明這個(gè)網(wǎng)絡(luò)流越緊急,即它剩余要傳的數(shù)據(jù)還很多和/或它的截止時(shí)間馬上就要到了。這一項(xiàng)保證了越緊急的網(wǎng)絡(luò)流搶奪資源的能力越強(qiáng)。第二項(xiàng)(網(wǎng)絡(luò)):∑ι∈L(s)(Qι(t)+λι(t))是所述類型1網(wǎng)絡(luò)流所要通過的鏈路的擁塞總和。如果某一鏈路處于擁塞狀態(tài),那么使用該鏈路的設(shè)備會(huì)降低發(fā)送速率。這保證了網(wǎng)絡(luò)流能夠根據(jù)擁塞狀況相應(yīng)地做出反應(yīng)。上述第一項(xiàng)和第二項(xiàng)的相互配合,使得類型1網(wǎng)絡(luò)流既能在截止時(shí)間內(nèi)完成又能讓出更多的帶寬給類型2和類型3網(wǎng)絡(luò)流。
需要指出的是,上述第二項(xiàng)(網(wǎng)絡(luò))是依據(jù)路徑而計(jì)算的,這需累計(jì)每一跳信息,因此無法從源處直接獲得。為解決這個(gè)問題,本發(fā)明提出兩種解決方法。
方法一:
在本發(fā)明的一個(gè)實(shí)施例中,提供了一種利用現(xiàn)售交換機(jī)具有的功能,即ECN(Explicit Congestion Notification,顯示擁塞指示),來計(jì)算上述二項(xiàng)(網(wǎng)絡(luò))的方法。
具體的,在該實(shí)施例中,t時(shí)刻的所述總的隊(duì)列長度由公式(b)計(jì)算得到:
∑ι∈L(s)Ql(t)≈K+Fs(t)×Ws(t) 公式(b)
其中,K為顯示擁塞指示的閾值,F(xiàn)s(t)表示根據(jù)距t時(shí)刻最近一個(gè)擁塞窗口發(fā)送的類型1網(wǎng)絡(luò)流的數(shù)據(jù)包中所述顯示擁塞指示有標(biāo)記的數(shù)據(jù)包的比例,Ws(t)表示t時(shí)刻的擁塞窗口。
同時(shí),在t時(shí)刻的所述總的鏈路代價(jià)由公式(c)計(jì)算得到:
∑l∈L(s)λl(t)=C-(Fs(t)Ws(t)-Fs(t-τs(t))Ws(t-τs(t))-2)/τs(t) 公式(c)
其中C表示所述鏈路的容量,F(xiàn)s(t)表示根據(jù)距t時(shí)刻最近一個(gè)擁塞窗口發(fā)送的類型1網(wǎng)絡(luò)流的數(shù)據(jù)包中所述顯示擁塞指示有標(biāo)記的數(shù)據(jù)包的比例,F(xiàn)s(t-τs(t))表示根據(jù)距t-τs(t)時(shí)刻最近一個(gè)擁塞窗口發(fā)送的類型1網(wǎng)絡(luò)流的數(shù)據(jù)包中所述顯示擁塞指示有標(biāo)記的數(shù)據(jù)包的比例,Ws(t-τs(t))表示t-τs(t)時(shí)刻的擁塞窗口。
上述實(shí)施例利用現(xiàn)售交換機(jī)具有的功能,以一種簡便實(shí)用地方式解決了無法從源處直接獲得總的隊(duì)列長度及總的鏈路代價(jià)的問題。
方法二:
在本發(fā)明的另一個(gè)實(shí)施例中,所述交換機(jī)從所述鏈路接收數(shù)據(jù)包,所述接收到的數(shù)據(jù)包中攜帶所述總的隊(duì)列長度和所述總的鏈路代價(jià)的信息,通過讀取所述接收到的數(shù)據(jù)包便可獲取當(dāng)前時(shí)刻的所述總的隊(duì)列長度和當(dāng)前時(shí)刻的所述總的鏈路代價(jià)。
更具體地,在本實(shí)施例中,所述網(wǎng)絡(luò)中的每個(gè)交換機(jī)在其發(fā)送的每個(gè)數(shù)據(jù)包包頭的附加字段中增加并存儲(chǔ)器自己的隊(duì)列長度及鏈路代價(jià)。這樣所述數(shù)據(jù)包在經(jīng)過其路徑上的每一個(gè)交換機(jī)時(shí)都會(huì)獲得該交換機(jī)處的隊(duì)列長度及鏈路代價(jià),從而得到整條路徑上的總的隊(duì)列長度和總的鏈路代價(jià)。
本實(shí)施例不是通過ECN來估計(jì)所述隊(duì)列長度和所述鏈路代價(jià),而是直接將每個(gè)交換機(jī)的信息進(jìn)行記錄,因此得到得隊(duì)列長度和鏈路代價(jià)信息更加的準(zhǔn)確。
在本發(fā)明的另一個(gè)實(shí)施例中,本發(fā)明調(diào)度方法在判斷一個(gè)類型1網(wǎng)絡(luò)流無法在其截止時(shí)間前完成時(shí),丟棄所述一個(gè)類型1網(wǎng)絡(luò)流。
在截止時(shí)間到來之前就丟棄那些肯定無法在其截止時(shí)間前完成的網(wǎng)絡(luò)流,可以更早地讓類型1網(wǎng)絡(luò)流讓出更多的帶寬給類型2和類型3網(wǎng)絡(luò)流,從而減小類型2和類型3網(wǎng)絡(luò)流的FCT。
而選擇丟棄掉哪些網(wǎng)絡(luò)流是一個(gè)NP難的問題。對(duì)此,本發(fā)明實(shí)施例還提出兩種優(yōu)選的丟棄方案。方案1,若判定所述一個(gè)類型1網(wǎng)絡(luò)流的虛擬隊(duì)列的隊(duì)列長度大于所述鏈路的容量,即Zs(t)>maxl∈L(s)Cl,丟棄所述一個(gè)類型1網(wǎng)絡(luò)流。方案2,若判定所述一個(gè)類型1網(wǎng)絡(luò)流的期望速率大于所述鏈路的容量,即γs(t)>maxl∈L(s)Cl,丟棄所述一個(gè)類型1網(wǎng)絡(luò)流,其中γs(t)為所述網(wǎng)絡(luò)流在當(dāng)前時(shí)刻的期望速率,可通過完成所述網(wǎng)絡(luò)流還需要傳輸?shù)氖S鄶?shù)據(jù)大小Ms(t)和距離截止時(shí)間到來還剩的時(shí)間δs(t)來計(jì)算,即γs(t)=Ms(t)/δs(t)。
實(shí)施上述實(shí)施例,可以進(jìn)一步的讓類型1網(wǎng)絡(luò)流讓出更多的帶寬給類型2和類型3網(wǎng)絡(luò)流,從而減小類型2和類型3網(wǎng)絡(luò)流的FCT。
上面描述的實(shí)施例主要介紹了如何對(duì)類型1網(wǎng)絡(luò)流進(jìn)行處理,下面的實(shí)施例將重點(diǎn)介紹如何對(duì)類型2和類型3網(wǎng)絡(luò)流進(jìn)行處理。
本發(fā)明將類型2和類型3網(wǎng)絡(luò)流置于多個(gè)低優(yōu)先級(jí)隊(duì)列中,利用類型1網(wǎng)絡(luò)流剩下的帶寬在端主機(jī)處采用激進(jìn)的速率控制算法占滿鏈路對(duì)類型2和類型3網(wǎng)絡(luò)流進(jìn)行處理。
在本發(fā)明的一個(gè)實(shí)施例中,本發(fā)明調(diào)度方法根據(jù)網(wǎng)絡(luò)流的大小信息對(duì)類型2和類型3網(wǎng)絡(luò)流分別進(jìn)行分離和篩選處理,并進(jìn)一步利用網(wǎng)絡(luò)中多個(gè)低優(yōu)先級(jí)隊(duì)列來最小化這些網(wǎng)絡(luò)流的FCT。
該實(shí)施例的主要思想是:如果網(wǎng)絡(luò)流的大小已知(類型2網(wǎng)絡(luò)流),則按照它們的大小依據(jù)SJF的思想,將它們分離至各個(gè)優(yōu)先級(jí)隊(duì)列中。如果網(wǎng)絡(luò)流的大小未知(類型3網(wǎng)絡(luò)流),則根據(jù)已經(jīng)發(fā)送的比特?cái)?shù)將它們從高優(yōu)先級(jí)隊(duì)列篩選至低優(yōu)先級(jí)隊(duì)列,模仿網(wǎng)絡(luò)流大小未知的SJF。雖然已有文獻(xiàn)提出對(duì)類型3網(wǎng)絡(luò)流實(shí)行篩選處理,然而本發(fā)明是對(duì)類型2和類型3網(wǎng)絡(luò)流一起進(jìn)行處理,因此解決的是不同的技術(shù)問題。
具體的,在該實(shí)施例中,本發(fā)明調(diào)度方法依據(jù)分離閾值{β}對(duì)所述類型2網(wǎng)絡(luò)流進(jìn)行劃分,將大小處于(βi-1,βi]之間的類型2網(wǎng)絡(luò)流分配至優(yōu)先級(jí)為i的隊(duì)列中;并依據(jù)篩選閾值{α}對(duì)所述類型3網(wǎng)絡(luò)流進(jìn)行劃分,將已發(fā)送的字節(jié)數(shù)處于(αi-1,αi]之間的類型3網(wǎng)絡(luò)流分配至優(yōu)先級(jí)為i的隊(duì)列中;其中所述i越小優(yōu)先級(jí)越高。
由于類型2網(wǎng)絡(luò)流的大小是已知的,因此理論上對(duì)它們實(shí)行SJF是比較容易的。本發(fā)明根據(jù)類型2網(wǎng)絡(luò)流的大小將其分離至不同優(yōu)先級(jí)的隊(duì)列中。越小的網(wǎng)絡(luò)流分配至越高優(yōu)先級(jí)的隊(duì)列中。本發(fā)明使用有限個(gè)數(shù)的優(yōu)先級(jí)隊(duì)列,并通過將大小在一個(gè)范圍內(nèi)的類型2網(wǎng)絡(luò)流分配至同一個(gè)優(yōu)先級(jí)隊(duì)列的方法來模仿SJF,這也可以視為是SJF的一個(gè)量子化版本。本發(fā)明使用{β}來表示分離閾值。β0=0,βK=∞。
與類型2網(wǎng)絡(luò)流不同,類型3網(wǎng)絡(luò)流的大小并不知道。因此,沒有真實(shí)的信息讓類型3網(wǎng)絡(luò)流能夠按照近似SJF的方法被分離至不同的優(yōu)先級(jí)隊(duì)列中去。對(duì)此,本發(fā)明提出了一種解決的辦法,能夠在不知道網(wǎng)絡(luò)流大小的情況下模擬SJF。
具體的,在類型3網(wǎng)絡(luò)流存續(xù)的期間,本發(fā)明根據(jù)所述網(wǎng)絡(luò)流已經(jīng)發(fā)送的字節(jié)數(shù)將高優(yōu)先級(jí)隊(duì)列的網(wǎng)絡(luò)流篩選至低先級(jí)隊(duì)列中。在此過程中,小的網(wǎng)絡(luò)流會(huì)在頭幾個(gè)優(yōu)先級(jí)隊(duì)列中就完成,而大的網(wǎng)絡(luò)流最終將沉入最低的優(yōu)先級(jí)隊(duì)列中。用這樣的方法,本發(fā)明可以保證小的網(wǎng)絡(luò)流的優(yōu)先級(jí)總體上是高于長的網(wǎng)絡(luò)流。所有的類型3網(wǎng)絡(luò)流在開始的時(shí)候都給予最高的優(yōu)先級(jí),隨著網(wǎng)絡(luò)流發(fā)送字節(jié)的增加,它們被逐漸移入更低優(yōu)先級(jí)的隊(duì)列。
通過實(shí)施上述實(shí)施例,可以充分地利用剩余的帶寬減小類型2和類型3網(wǎng)絡(luò)流的FCT。
在本發(fā)明的另一個(gè)實(shí)施例中,本發(fā)明調(diào)度方法還提供了一種計(jì)算所述分離閾值{β}和所述篩選閾值{α}的方法。
首先,通過求解下述具有線性約束條件的二次規(guī)劃問題得到相應(yīng)的
約束條件:
其中M為所述分離閾值{β}或所述篩選閾值{α}所構(gòu)成的區(qū)間的個(gè)數(shù),F(xiàn)1(·)、F2(·)、F3(·)為所述三種類型網(wǎng)絡(luò)流各自的流量分布。
其次,根據(jù)公式(e)(f)反推分離閾值{β}和所述篩選閾值{α}。
公式(d)描述的是一個(gè)具有線性約束條件的二次規(guī)劃問題。這種問題可以用半正定規(guī)劃包來求解,所述半正定規(guī)劃包在很多解決程序中都是有的。本發(fā)明使用MATLAB的CVXtoolbox來求解。由于問題的復(fù)雜度與交換機(jī)中隊(duì)列的數(shù)量有關(guān),和網(wǎng)絡(luò)的規(guī)模無關(guān),因此不超過10秒鐘就可以在試驗(yàn)床機(jī)器上完成求解。
實(shí)施上述實(shí)施例,可以利用現(xiàn)有的軟件快速地獲得分離閾值{β}和所述篩選閾值{α},實(shí)用性強(qiáng)。
閾值的計(jì)算需要知道整個(gè)網(wǎng)絡(luò)中網(wǎng)絡(luò)流的大小信息。采集并分析在大型DCN中所有流量軌跡是很耗時(shí)且不實(shí)際的。而本發(fā)明采用端主機(jī)模塊來采集所有網(wǎng)絡(luò)流的包括大小在內(nèi)的信息,并將所述信息報(bào)告給中心主體,由所述中心主體計(jì)算閾值。所述報(bào)告和計(jì)算都是周期性地進(jìn)行。在每個(gè)周期中,一組新的閾值被分發(fā)至端主機(jī)模塊。
DCN中的流量會(huì)隨著時(shí)間和空間變化。由于類型1網(wǎng)絡(luò)流在最高優(yōu)先級(jí)隊(duì)列中,所以這種變化并不會(huì)影響類型1網(wǎng)絡(luò)流。然而所述變化會(huì)對(duì)類型2和類型3網(wǎng)絡(luò)流產(chǎn)生影響,因?yàn)轭愋?和類型3網(wǎng)絡(luò)流需要根據(jù)基于閾值被分離和篩選到多個(gè)隊(duì)列中,而上述閾值是基于全局流量分布而求出的。因此,在本發(fā)明的另一個(gè)實(shí)施例中,所述分離閾值{β}和所述篩選閾值{α}隨網(wǎng)絡(luò)中流量的改變而周期性地更新。
獲得與流量匹配的閾值是件很有挑戰(zhàn)的事。首先,分布是一直變化的,并且采集大小和分發(fā)閾值都需要時(shí)間。其次,流量在空間也是變化的,并且基于全局流量分布而求出的分離閾值和篩選閾值可能無法對(duì)每個(gè)交換機(jī)都是最優(yōu)。當(dāng)流量和閾值出現(xiàn)不匹配的情況時(shí),長的網(wǎng)絡(luò)流的數(shù)據(jù)包可能被錯(cuò)誤的分離(類型2網(wǎng)絡(luò)流),或者在更高優(yōu)先級(jí)的隊(duì)列中停留的時(shí)間過長(類型3網(wǎng)絡(luò)流),或者短的網(wǎng)絡(luò)流的數(shù)據(jù)包被錯(cuò)誤的分離(類型2網(wǎng)絡(luò)流)或者過早的被篩選至更低優(yōu)先級(jí)的隊(duì)列中(類型3網(wǎng)絡(luò)流)。無論這兩種情況的哪一種,短的網(wǎng)絡(luò)流都可能排在長的網(wǎng)絡(luò)流之后,造成延遲的增加。
用于估計(jì)網(wǎng)絡(luò)項(xiàng)的ECN功能同樣也能用于解決這個(gè)問題。通過ECN,本發(fā)明可以有效地保持低緩沖占用,并最小化長的網(wǎng)絡(luò)流對(duì)短的網(wǎng)絡(luò)流的影響。因此,本發(fā)明可以解決閾值-流量不匹配問題,也就是說本發(fā)明對(duì)流量改變具有彈性。
所述彈性讓本發(fā)明不需要頻繁的更新閾值,因此本發(fā)明以固定的時(shí)間周期性地更新所述閾值。時(shí)間間隔主要取決于從網(wǎng)絡(luò)中采集信息和向網(wǎng)絡(luò)中分發(fā)信息的時(shí)間,這與網(wǎng)絡(luò)規(guī)模相關(guān)。然而,本發(fā)明的閾值計(jì)算跟網(wǎng)絡(luò)規(guī)模無關(guān),并且很快,大部分情況下是秒級(jí)的。
在本發(fā)明的另一個(gè)實(shí)施例中,如果一個(gè)網(wǎng)絡(luò)流已經(jīng)經(jīng)歷了N個(gè)TCP超時(shí),則本發(fā)明提升它的優(yōu)先級(jí)。這是因?yàn)?,若交換機(jī)使用嚴(yán)格優(yōu)先級(jí)隊(duì)列則可能會(huì)造成一些網(wǎng)絡(luò)流的饑餓。
在一個(gè)極端的例子中,有截至?xí)r間的網(wǎng)絡(luò)流必須占用所有的帶寬才能在其截止時(shí)間到來之前完成,這種情況下無截止時(shí)間的網(wǎng)絡(luò)流也是會(huì)饑餓。但是并沒有多少傳輸機(jī)制能夠處理這樣的問題,而且如果是這樣的情況發(fā)生,那說明運(yùn)營商應(yīng)該考慮增加整個(gè)網(wǎng)絡(luò)的容量了。
在一個(gè)場景中,有截止時(shí)間的網(wǎng)絡(luò)流和在相對(duì)高優(yōu)先級(jí)隊(duì)列中的小的無截止時(shí)間的網(wǎng)絡(luò)流可能會(huì)造成最低優(yōu)先級(jí)隊(duì)列中的大的無截止時(shí)間流的饑餓??紤]到這一點(diǎn),本發(fā)明通過在端主機(jī)處觀察超時(shí)事件來識(shí)別處于饑餓狀態(tài)的網(wǎng)絡(luò)流,并引入網(wǎng)絡(luò)流時(shí)效N來提升那些處于饑餓狀態(tài)的網(wǎng)絡(luò)流的優(yōu)先級(jí)。
實(shí)施上述實(shí)施例,可以很大程度地解決網(wǎng)絡(luò)流的饑餓問題。
在本發(fā)明的一個(gè)優(yōu)選實(shí)施例中,如果所述網(wǎng)絡(luò)流是一個(gè)類型2網(wǎng)絡(luò)流,則本發(fā)明根據(jù)它剩余的大小重新將它分離至隊(duì)列中。如果所述網(wǎng)絡(luò)流是一個(gè)類型3網(wǎng)絡(luò)流,則本發(fā)明將其移入無截止時(shí)間流的最高優(yōu)先級(jí)的隊(duì)列中,并重新進(jìn)行篩選。
在本發(fā)明的一個(gè)優(yōu)選實(shí)施例中,本發(fā)明為每個(gè)網(wǎng)絡(luò)流依照[2,10]的平均分布選取一個(gè)N,從而避免擁塞碰撞。
雖然這樣提升優(yōu)先級(jí)可能會(huì)造成數(shù)據(jù)包的重排,但這不是個(gè)大問題,因?yàn)門CP可以很好的處理它。網(wǎng)絡(luò)流時(shí)效對(duì)于解決饑餓問題很有效,并且沒有什么副作用。
與所述混合網(wǎng)絡(luò)流的調(diào)度方法對(duì)應(yīng)地,本發(fā)明還提供一種交換機(jī),所述交換機(jī)向鏈路發(fā)送混合網(wǎng)絡(luò)流,所述混合網(wǎng)絡(luò)流包括類型1、類型2和類型3三種網(wǎng)絡(luò)流,其中所述類型1網(wǎng)絡(luò)流為有截止時(shí)間的網(wǎng)絡(luò)流,所述類型2網(wǎng)絡(luò)流為無截止時(shí)間但大小已知的網(wǎng)絡(luò)流,所述類型3網(wǎng)絡(luò)流為無截止時(shí)間且大小未知的網(wǎng)絡(luò)流,所述鏈路具有帶寬。如圖5所示,所述交換機(jī)包括擁塞窗口計(jì)算模塊、調(diào)度模塊,其中所述擁塞窗口計(jì)算模塊用于根據(jù)公式(a)計(jì)算擁塞窗口;所述調(diào)度模塊用于將類型1網(wǎng)絡(luò)流分配至具有最高優(yōu)先級(jí)的隊(duì)列中,占用與所述擁塞窗口相對(duì)應(yīng)的帶寬向所述鏈路發(fā)送所述類型1網(wǎng)絡(luò)流,同時(shí)將所述類型2和類型3網(wǎng)絡(luò)流分配至其他優(yōu)先級(jí)的隊(duì)列中,占用所述類型1網(wǎng)絡(luò)流使用剩余的帶寬向所述鏈路發(fā)送所述類型2和類型3網(wǎng)絡(luò)流;
其中,
s表示所述類型1網(wǎng)絡(luò)流,τs(t)表示在t時(shí)刻所述類型1網(wǎng)絡(luò)流的往返時(shí)間,Ws(t)表示t時(shí)刻的擁塞窗口,Ws(t+τs(t))表示t+τs(t)時(shí)刻的擁塞窗口,L(s)表示所述鏈路,γs(t)表示在t時(shí)刻所述類型1網(wǎng)絡(luò)流的期望速率,Zs(t)表示在t時(shí)刻所述類型1網(wǎng)絡(luò)流的虛擬隊(duì)列,Ms(t)表示在t時(shí)刻要完成所述類型1網(wǎng)絡(luò)流還需要傳輸?shù)氖S鄶?shù)據(jù)大小,δs(t)表示在t時(shí)刻所述類型1網(wǎng)絡(luò)流距離截止時(shí)間到來還剩余的時(shí)間,∑l∈L(s)Ql(t)表示在t時(shí)刻所述鏈路上的總的隊(duì)列長度,∑l∈L(s)λl(t)表示在t時(shí)刻所述鏈路的總的鏈路代價(jià)。
進(jìn)一步地,在本發(fā)明一個(gè)實(shí)施例中,所述交換機(jī)支持顯示擁塞指示,在t時(shí)刻所述總的隊(duì)列長度由公式(b)計(jì)算得到:
∑l∈L(s)Ql(t)≈K+Fs(t)×Ws(t) 公式(b)
其中,K為所述顯示擁塞指示的閾值,F(xiàn)s(t)表示根據(jù)距t時(shí)刻最近一個(gè)擁塞窗口發(fā)送的類型1網(wǎng)絡(luò)流的數(shù)據(jù)包中所述顯示擁塞指示有標(biāo)記的數(shù)據(jù)包的比例,Ws(t)表示t時(shí)刻的擁塞窗口。
在t時(shí)刻所述總的鏈路代價(jià)由公式(c)計(jì)算得到:
∑l∈L(s)λl(t)=C-(Fs(t)Ws(t)-Fs(t-τs(t))Ws(t-τs(t))-2)/τs(t) 公式(c)
其中C表示所述鏈路的容量,F(xiàn)s(t)表示根據(jù)距t時(shí)刻最近一個(gè)擁塞窗口發(fā)送的類型1網(wǎng)絡(luò)流的數(shù)據(jù)包中所述顯示擁塞指示有標(biāo)記的數(shù)據(jù)包的比例,F(xiàn)s(t-τs(t))表示根據(jù)距t-τs(t)時(shí)刻最近一個(gè)擁塞窗口發(fā)送的類型1網(wǎng)絡(luò)流的數(shù)據(jù)包中所述顯示擁塞指示有標(biāo)記的數(shù)據(jù)包的比例,Ws(t-τs(t))表示t-τs(t)時(shí)刻的擁塞窗口。
進(jìn)一步地,在本發(fā)明一個(gè)實(shí)施例中,所述交換機(jī)還包括判斷模塊,所述判斷模塊用于判斷一個(gè)類型1網(wǎng)絡(luò)流能否在其截止時(shí)間前完成;
所述調(diào)度模塊進(jìn)一步用于在所述判斷模塊判定所述一個(gè)類型1網(wǎng)絡(luò)流不能在其截止時(shí)間前完成時(shí),丟棄所述一個(gè)類型1網(wǎng)絡(luò)流。
優(yōu)選的,所述判斷模塊在所述一個(gè)類型1網(wǎng)絡(luò)流的虛擬隊(duì)列的隊(duì)列長度大于所述鏈路的容量時(shí)判定所述一個(gè)類型1網(wǎng)絡(luò)流無法在其截止時(shí)間前完成。
優(yōu)選的,所述判斷模塊在所述一個(gè)類型1網(wǎng)絡(luò)流的期望速率大于所述鏈路的容量時(shí)判定所述一個(gè)類型1網(wǎng)絡(luò)流無法在其截止時(shí)間前完成。
進(jìn)一步地,在本發(fā)明一個(gè)實(shí)施例中,所述交換機(jī)還包括閾值計(jì)算模塊,所述閾值計(jì)算模塊用于根據(jù)公式(d)、(e)、(f)計(jì)算分離閾值{β}和篩選閾值{α};
約束條件:
其中M表示所述分離閾值{β}或所述篩選閾值{α}所構(gòu)成的區(qū)間的個(gè)數(shù),F(xiàn)1(·)、F2(·)、F3(·)為所述三種類型網(wǎng)絡(luò)流各自的流量分布;
所述調(diào)度模塊進(jìn)一步用于依據(jù)所述分離閾值{β}對(duì)所述類型2網(wǎng)絡(luò)流進(jìn)行劃分,將大小處于(βi-1,βi]之間的類型2網(wǎng)絡(luò)流分配至優(yōu)先級(jí)為i的隊(duì)列中,依據(jù)篩選閾值{α}對(duì)所述類型3網(wǎng)絡(luò)流進(jìn)行劃分,將已發(fā)送的字節(jié)數(shù)處于(αi-1,αi]之間的類型3網(wǎng)絡(luò)流分配至優(yōu)先級(jí)為i的隊(duì)列中,所述i越小優(yōu)先級(jí)越高。
優(yōu)選的,所述閾值計(jì)算模塊隨網(wǎng)絡(luò)中流量的改變而周期性地計(jì)算所述分離閾值{β}和所述篩選閾值{α}。
進(jìn)一步地,在本發(fā)明一個(gè)實(shí)施例中,所述交換機(jī)還包括N值選取模塊,所述N值選取模塊用于為每個(gè)網(wǎng)絡(luò)流按照[2,10]的平均分布隨機(jī)選取一個(gè)N值,所N為大于1的整數(shù);
所述調(diào)度模塊進(jìn)一步還用于在一個(gè)網(wǎng)絡(luò)流經(jīng)歷了N個(gè)TCP超時(shí)時(shí),提升所述一個(gè)網(wǎng)絡(luò)流的優(yōu)先級(jí)。
優(yōu)選的,所述調(diào)度模塊通過以下方式提升所述一個(gè)網(wǎng)絡(luò)流的優(yōu)先級(jí):當(dāng)所述一個(gè)網(wǎng)絡(luò)流為類型2網(wǎng)絡(luò)流時(shí),按照所述一個(gè)網(wǎng)絡(luò)流的剩余數(shù)據(jù)大小重新對(duì)所述一個(gè)網(wǎng)絡(luò)流進(jìn)行劃分并分配至相應(yīng)的優(yōu)先級(jí)隊(duì)列;當(dāng)所述一個(gè)網(wǎng)絡(luò)流為類型3網(wǎng)絡(luò)流時(shí),將所述一個(gè)網(wǎng)絡(luò)流移至用于類型2和類型3網(wǎng)絡(luò)流的隊(duì)列中優(yōu)先級(jí)最高的隊(duì)列。
在本發(fā)明的一個(gè)實(shí)施例中,所述交換機(jī)還包括信息添加模塊。所述信息添加模塊用于在所述交換機(jī)發(fā)送的每個(gè)數(shù)據(jù)包包頭的附加字段中增加并存儲(chǔ)器所述交換機(jī)處的隊(duì)列長度及鏈路代價(jià)。這樣所述數(shù)據(jù)包在經(jīng)過其路徑上的每一個(gè)交換機(jī)時(shí)都會(huì)獲得該交換機(jī)處的隊(duì)列長度及鏈路代價(jià),從而得到整條路徑上的總的隊(duì)列長度和總的鏈路代價(jià)。
在實(shí)際應(yīng)用時(shí),實(shí)施本發(fā)明調(diào)度方法還是需要克服很多困難的。首先,對(duì)于類型1和類型2網(wǎng)絡(luò)流,本發(fā)明需要獲得網(wǎng)絡(luò)流信息(例如:大小,截止時(shí)間)才能實(shí)行網(wǎng)絡(luò)流的調(diào)度。所述網(wǎng)絡(luò)流信息可以通過修改用戶空間的應(yīng)用來獲得,一些現(xiàn)有技術(shù)也有相關(guān)內(nèi)容的介紹。然而,將網(wǎng)絡(luò)流信息傳遞至內(nèi)核空間網(wǎng)絡(luò)堆棧還是很具挑戰(zhàn)的?,F(xiàn)有技術(shù)并沒有公開相關(guān)內(nèi)容。
為了解決這個(gè)問題,在本發(fā)明的一個(gè)實(shí)施例中,所述交換機(jī)還包括信息傳遞模塊,所述信息傳遞模塊通過發(fā)送套接字并利用setsockopt設(shè)置每個(gè)數(shù)據(jù)包的mark將所述網(wǎng)絡(luò)流的信息傳遞至內(nèi)核空間網(wǎng)絡(luò)堆棧。在Linux內(nèi)核中,mark是sk_buff結(jié)構(gòu)的一個(gè)無符號(hào)的32位整數(shù)變量。通過改變mark的值可以將每網(wǎng)絡(luò)流信息傳送給內(nèi)核??紤]到mark只有32位,在一個(gè)實(shí)施例中,可以使用12位來表示截止時(shí)間(單位:ms),剩下的20位來表示大小(單位:KB)。因此,mark最大可表示1GB的大小和4s的截止時(shí)間。這已經(jīng)可以滿足絕大多數(shù)數(shù)據(jù)中心應(yīng)用的需求了。
包標(biāo)注模塊用于維持每網(wǎng)絡(luò)流狀態(tài)并在端主機(jī)處給數(shù)據(jù)包標(biāo)注優(yōu)先級(jí)。本發(fā)明的一個(gè)實(shí)施例在Linux內(nèi)核模塊上實(shí)現(xiàn)。包標(biāo)注模塊在TX數(shù)據(jù)路徑NetfilterLocal_Out處設(shè)置掛鉤,位于TCP/IP堆棧和TC之間。
包標(biāo)注操作網(wǎng)絡(luò)流程如下:1)當(dāng)一個(gè)出站包被Netfilter掛鉤攔截下來,它將被導(dǎo)入基于哈希的網(wǎng)絡(luò)流表。2)網(wǎng)絡(luò)流表中的每個(gè)網(wǎng)絡(luò)流具有5個(gè)元組,分別是src IP,dst IP,src port,dst port和protocol.對(duì)每個(gè)出站包都進(jìn)行鑒定,看它屬于哪一個(gè)網(wǎng)絡(luò)流(或者新建一個(gè)網(wǎng)絡(luò)流條目)并更新每網(wǎng)絡(luò)流狀態(tài)(通過mark提取類型1和類型2網(wǎng)絡(luò)流的網(wǎng)絡(luò)流大小以及截止時(shí)間信息,并增加類型3網(wǎng)絡(luò)流已經(jīng)發(fā)送的字節(jié)數(shù))。3)基于所述網(wǎng)絡(luò)流信息,相應(yīng)地更改IP頭的DSCP域以使數(shù)據(jù)包在交換機(jī)上進(jìn)入不同的隊(duì)列。
如今的NIC(Network Interface Card,網(wǎng)絡(luò)接口卡)使用很多卸載機(jī)制來降低CPU(Central Processing Unit,中央處理器)的開支。當(dāng)使用LSO(Large Segmentation Offloading,大段卸載機(jī)制)時(shí),包標(biāo)注模塊可能不能夠?yàn)槊總€(gè)獨(dú)立的具有最大傳輸單元大小的數(shù)據(jù)包(MTU-sized packet)正確地設(shè)定DSCP值。為了評(píng)估因此而帶來的影響,本申請(qǐng)測量1G試驗(yàn)床中有效載荷數(shù)據(jù)的TCP段的長度。平均段長度僅為7.2KB,這對(duì)包標(biāo)注的影響非常小。我們把它歸因?yàn)榫哂行捬舆t積(BDP,bandwidth delay product)的數(shù)據(jù)中心網(wǎng)絡(luò)TCP窗口尺寸較小。將包標(biāo)注模塊設(shè)置在NIC模塊可以徹底避免這個(gè)影響。
本發(fā)明的一個(gè)實(shí)施例采用上述最優(yōu)擁塞窗口更新方法處理類型1網(wǎng)絡(luò)流,同時(shí)在端主機(jī)對(duì)類型2和類型3網(wǎng)絡(luò)流采用DCTCP。在實(shí)施DCTCP時(shí),在Linux內(nèi)核2.6.38.3下使用DCTCP補(bǔ)丁。將上述最優(yōu)擁塞窗口更新方法作為接收方Netfilter內(nèi)核模塊。該模塊攔截有截止時(shí)間網(wǎng)絡(luò)流的TCP包,依據(jù)上述方法更改接收窗口大小。這樣的做法避免了為不同版本操作系統(tǒng)的網(wǎng)絡(luò)堆棧打補(bǔ)丁。
本發(fā)明依據(jù)RTT估計(jì)值和被ECN標(biāo)記的數(shù)據(jù)包的比例更新?lián)砣翱凇R虼?,獲得準(zhǔn)確的RTT對(duì)本發(fā)明是非常重要的。由于由接收端向發(fā)送端的網(wǎng)絡(luò)流量可能不夠,我們只能通過使用TCP時(shí)間戳選項(xiàng)來獲取RTT。然而,現(xiàn)在的TCP時(shí)間戳選項(xiàng)都是毫秒級(jí)別的,達(dá)不到數(shù)據(jù)中心網(wǎng)絡(luò)的要求。因此,我們將時(shí)間戳修改為微秒級(jí)的。
本發(fā)明只要求ECN和嚴(yán)格優(yōu)先級(jí)隊(duì)列,這兩者現(xiàn)售交換機(jī)都是有的。本發(fā)明在交換機(jī)處實(shí)施嚴(yán)格優(yōu)先級(jí)隊(duì)列并依據(jù)DSCP域?qū)?shù)據(jù)包進(jìn)行分類。本發(fā)明基于當(dāng)前隊(duì)列長度和一個(gè)標(biāo)記閾值對(duì)ECN標(biāo)記進(jìn)行配置。
很多現(xiàn)售交換機(jī)芯片都提供多種配置ECN標(biāo)記的方法。例如,本發(fā)明使用的Broadcom BCM#56538,它支持對(duì)不同出口主體(隊(duì)列、端口和服務(wù)池)進(jìn)行ECN標(biāo)記。在每隊(duì)列ECN標(biāo)記(per-queue ECN marking)中,每個(gè)隊(duì)列都有其自己的標(biāo)記閾值并且獨(dú)立地進(jìn)行ECN標(biāo)記。在每端口ECN標(biāo)記(per-port ECN marking)中,每個(gè)端口被分配一個(gè)單獨(dú)的標(biāo)記閾值,并且當(dāng)屬于該端口的所有隊(duì)列大小的總和超過所述標(biāo)記閾值時(shí)標(biāo)記所述數(shù)據(jù)包。每端口ECN標(biāo)記不能像每隊(duì)列ECN標(biāo)記一樣提供隊(duì)列之間的隔離。
盡管如此,本發(fā)明還是使用每端口ECN標(biāo)記。原因有二。一是每端口ECN標(biāo)記具有更高的猝發(fā)容忍能力。對(duì)每隊(duì)列ECN標(biāo)記來說,每個(gè)隊(duì)列都需要一個(gè)ECN標(biāo)記閾值h以充分地獨(dú)立使用所述鏈路(例如,對(duì)1G鏈路,DCTCP需要h=20個(gè)數(shù)據(jù)包)。當(dāng)所有隊(duì)列都處于活躍狀態(tài)時(shí),需要共享內(nèi)存的大小至少是標(biāo)記閾值乘以隊(duì)列數(shù)量那么大,而這對(duì)大多數(shù)淺緩沖的現(xiàn)售交換機(jī)而言都是難以支持的。二是每端口ECN標(biāo)記可以緩和所述饑餓問題。因?yàn)樗谟性S多低優(yōu)先級(jí)網(wǎng)絡(luò)流的數(shù)據(jù)包排隊(duì)時(shí)會(huì)將高優(yōu)先級(jí)的網(wǎng)絡(luò)流往后推。
除了上述有益之處,本發(fā)明對(duì)同向流調(diào)度也是有好處。
同向流是一種重要的抽象,它識(shí)別網(wǎng)絡(luò)流之間的相互依附性。本發(fā)明通過將優(yōu)先級(jí)暴露給網(wǎng)絡(luò)層,有助于同向流的調(diào)度。有截止時(shí)間的同向流可以簡單地看作是本發(fā)明中的類型1網(wǎng)絡(luò)流。由于他們具有最高的優(yōu)先級(jí),因此可以保證他們?cè)诮刂箷r(shí)間前完成。
對(duì)于其他兩種類型,同向流調(diào)度需要多個(gè)服務(wù)器在應(yīng)用級(jí)的共同協(xié)調(diào)來決定同向流的發(fā)送順序。本發(fā)明可以簡單地用數(shù)據(jù)包的優(yōu)先級(jí)來表示所述順序。高優(yōu)先級(jí)的數(shù)據(jù)包早于低優(yōu)先級(jí)的數(shù)據(jù)包被發(fā)送,同樣優(yōu)先級(jí)的數(shù)據(jù)包共享帶寬。
下面,詳細(xì)說明本發(fā)明上述幾個(gè)實(shí)施例中涉及公式的推導(dǎo)及計(jì)算過程。
首先建立系統(tǒng)模型。假設(shè)有所述系統(tǒng)包含L條鏈路,每條所述鏈路具有Clbps(bits per second,每秒傳輸位數(shù))的容量。整個(gè)系統(tǒng)中活躍的網(wǎng)絡(luò)流的數(shù)量為S。在t時(shí)刻,網(wǎng)絡(luò)流s的傳輸速率為xs(t)bps,還需傳輸?shù)氖S鄶?shù)據(jù)大小用Ms(t)來表示。距離截止時(shí)間到來還剩的時(shí)間用δs(t)來表示。在發(fā)送數(shù)據(jù)的請(qǐng)求中,應(yīng)用將截止時(shí)間信息傳遞給傳輸層。定義γs(t)=Ms(t)/δs(t)為網(wǎng)絡(luò)流s在時(shí)刻t的期望速率,在下一個(gè)RTT(Round Trip Time,往返時(shí)間)的期望速率為
其中τs(t)是網(wǎng)絡(luò)流s在t時(shí)刻的RTT。假定網(wǎng)絡(luò)流s通過鏈路L(s)的一個(gè)固定組路由。對(duì)于鏈路l,使用yl來表示總的總的輸入速率,yl=∑s∈S(l)xs,其中S(l)表示在鏈路l上傳輸?shù)囊唤M網(wǎng)絡(luò)流。
最大程度地減少有截止時(shí)間網(wǎng)絡(luò)流造成的影響是本發(fā)明的一個(gè)目的。本發(fā)明沒有選擇使用有截止時(shí)間網(wǎng)絡(luò)流的總的總的速率,而是用每包延遲來表示有截止時(shí)間網(wǎng)絡(luò)流造成的影響。這是因?yàn)闊o截止時(shí)間的網(wǎng)絡(luò)流對(duì)每包延遲更敏感,特別是當(dāng)有截止時(shí)間網(wǎng)絡(luò)流在高優(yōu)先級(jí)隊(duì)列中時(shí)影響最大,如圖2所示。
以最小化每包延遲的長期平均值為目標(biāo)。用dl(yl)表示一個(gè)數(shù)據(jù)包在到達(dá)速率為yl的鏈路l上的延遲。對(duì)于網(wǎng)絡(luò)流s,平均包延遲定義為∑l∈L(s)dl(yl)。鏈路l的延遲,dl(yl),是yl的函數(shù),是鏈路l的總的總的到達(dá)速速率。dl(yl)是一個(gè)正的、凸的、遞增的函數(shù)。定義目標(biāo)方程為每個(gè)源的每包延遲的總和的時(shí)間平均。
其中,是一個(gè)L×1的向量。
為了穩(wěn)定隊(duì)列,需要每個(gè)源都控制其發(fā)送速率xs(t),使每條鏈路l的總的總的速率yl(t)=∑s∈s(l)xs(t)滿足實(shí)際情況下,由于交換機(jī)中存在緩沖裝置,暫時(shí)的過載也是允許的。因此我們將限制條件設(shè)為超過鏈路容量的網(wǎng)絡(luò)流將受到懲罰。
為了使網(wǎng)絡(luò)流能夠在截止時(shí)間前完成,需要令傳輸速率大于等于所述期望速率,用長期時(shí)間平均來放寬所述條件可以得到:
這個(gè)公式基本上在表達(dá),對(duì)于每一個(gè)期望速率是γs(t)的網(wǎng)絡(luò)流,所述傳輸速率xs(t)平均上講要大于所述期望速率γs(t)以實(shí)現(xiàn)在截止時(shí)間前完成所述網(wǎng)絡(luò)流。本發(fā)明對(duì)限制條件的放寬是基于實(shí)際中不存在存續(xù)時(shí)間無限長的網(wǎng)絡(luò)流而做出的。
本發(fā)明的目標(biāo)是導(dǎo)出最優(yōu)源速率一個(gè)S×1的向量,來最小化長期每包延遲,同時(shí)讓網(wǎng)絡(luò)流能夠在截止時(shí)間前完成。為此,本發(fā)明構(gòu)建如下所述隨機(jī)最小化問題來滿足上述需求。
約束條件:xs(t)>0,
本發(fā)明利用李雅普諾夫優(yōu)化框架(Lyapunov optimization framework)將所述最小化問題轉(zhuǎn)換成一個(gè)凸問題,然后基于所述凸問題的最優(yōu)解導(dǎo)出最優(yōu)擁塞窗口更新方程。漂移加懲罰(Drift-plus-penalty)方法是李雅普諾夫優(yōu)化的關(guān)鍵技術(shù)。漂移加懲罰方法在保持排隊(duì)網(wǎng)絡(luò)的穩(wěn)定的同時(shí)最優(yōu)化目標(biāo)的時(shí)間平均(所述目標(biāo)可以是,例如,每包延遲)。
接下來介紹如何利用漂移加懲罰方法將問題(4)轉(zhuǎn)換為凸規(guī)劃問題。在所述李雅普諾夫優(yōu)化框架下,需要考慮以下幾個(gè)方面:
1、所有鏈路的隊(duì)列穩(wěn)定性:首先定義L(t)為排隊(duì)系統(tǒng)在t時(shí)刻的穩(wěn)定性。所述L(t)在控制理論中被稱為李雅普諾夫方程(Lyapunov function)。對(duì)于一個(gè)交換網(wǎng)絡(luò),本發(fā)明使用二次型李雅普諾夫方程:
李雅普諾夫漂移(Lyapunov drift)定義為兩個(gè)連續(xù)時(shí)刻之間的差Δ(tk)=L(tk+1)-L(tk)。要獲得一個(gè)穩(wěn)定的排隊(duì)系統(tǒng),需要使李雅普諾夫方程漂移向負(fù)方向趨近于0。通過使用漂移加懲罰方法,本發(fā)明可以控制源的傳輸速率,最小化網(wǎng)絡(luò)李雅普諾夫漂移的上限,并由此實(shí)現(xiàn)網(wǎng)絡(luò)的穩(wěn)定性。
2、截止時(shí)間約束條件:要解決公式(4)中截止時(shí)間約束條件,本發(fā)明將所述截止時(shí)間約束條件轉(zhuǎn)換為虛擬隊(duì)列。設(shè)網(wǎng)絡(luò)流s在時(shí)刻t的虛擬隊(duì)列為Zs(t),輸入是所述期望速率,輸出是實(shí)際速率。
要使所述虛擬隊(duì)列穩(wěn)定,需要:
類似于交換機(jī)的包隊(duì)列,所述虛擬隊(duì)列也可以通過最小化李雅普諾夫漂移來實(shí)現(xiàn)穩(wěn)定性?,F(xiàn)將所述虛擬隊(duì)列一并進(jìn)行考慮,所述李雅普諾夫方程變?yōu)?/p>
由于所述虛擬隊(duì)列的輸入γs(t)平均而言是小于所述輸出xs(t)的,因此如果所述虛擬隊(duì)列是穩(wěn)定的,那么所述截止時(shí)間約束條件便即可滿足。
3、最小化影響(每包延遲):上述兩點(diǎn)都關(guān)于“漂移”,接下來本發(fā)明進(jìn)一步用“懲罰”來實(shí)現(xiàn)本發(fā)明的目標(biāo),最小化每包延遲。首先建立漂移加懲罰的表達(dá)式其中V是非負(fù)權(quán)重用于確保的時(shí)間平均任意接近最優(yōu)解(在O(1/V)內(nèi)),相應(yīng)的O(V)來平衡平均隊(duì)列大小。通過最小化漂移加懲罰表達(dá)式的上限,可以最小化所述每包延遲的時(shí)間平均,并且使包隊(duì)列和虛擬隊(duì)列的網(wǎng)絡(luò)保持穩(wěn)定。
4、凸問題:最后,本發(fā)明要解決凸問題:
約束條件:
本發(fā)明將每一時(shí)刻t的長期(t→∞)隨機(jī)延遲最小化問題(4)轉(zhuǎn)換為漂移加懲罰最小化問題(7)。為了求出問題的解,本發(fā)明提出自適應(yīng)源速率控制算法。
通過考慮最優(yōu)解的屬性以及上述問題的KKT條件(Karush-Kuhn-Tucker condition),可以得出用于求解問題(7)最優(yōu)解的初級(jí)算法。公式(8)可以解決隊(duì)列系統(tǒng)的穩(wěn)定問題,并可以最小化網(wǎng)絡(luò)的整體每包延遲。
其中,λl(t)=d′l(yl(t))
每個(gè)網(wǎng)絡(luò)流都根據(jù)公式(8)調(diào)整其傳輸速率。公式(8)可以重新寫為:
其中,
然后可以導(dǎo)出最優(yōu)擁塞窗口更新方程:
在擁有公式(10)的基礎(chǔ)上,現(xiàn)在來討論實(shí)際算法設(shè)計(jì)。
上述第一項(xiàng)(源)可以從上層應(yīng)用中獲得。然而,獲取上述第二項(xiàng)(網(wǎng)絡(luò))并不容易。由于鏈路代價(jià)λl(t)以及隊(duì)列的長度Ql(t)的總和是依據(jù)路徑而計(jì)算的,這需累積每一跳信息,因此無法從源處直接獲得??梢詫⑺隹偤痛鎯?chǔ)在數(shù)據(jù)包頭的附加字段,并讓每個(gè)交換機(jī)為每個(gè)數(shù)據(jù)包在所述附加字段增加并存儲(chǔ)其自己的代價(jià)及隊(duì)列長度。然而,現(xiàn)售交換機(jī)并不具有這個(gè)功能。為了實(shí)現(xiàn)本發(fā)明的目的,本發(fā)明采用現(xiàn)售交換機(jī)可用的功能,即ECN,來估計(jì)上述第二項(xiàng)(網(wǎng)絡(luò))。
首先關(guān)注每個(gè)網(wǎng)絡(luò)流的總的總的隊(duì)列長度Q。用F(0≤F≤1)來表示在最后一個(gè)擁塞窗口中被標(biāo)記的數(shù)據(jù)包的比例。F對(duì)每個(gè)擁塞窗口都進(jìn)行更新。DCTCP和D2TCP通過計(jì)算F來估計(jì)擁塞的程度,本發(fā)明進(jìn)一步利用F來估計(jì)隊(duì)列的長度。
本發(fā)明將DCN構(gòu)架視為一個(gè)交換機(jī)。當(dāng)前數(shù)據(jù)中心的拓?fù)浣Y(jié)構(gòu)使得構(gòu)架的對(duì)分帶寬很大。這將帶寬的爭奪推向了邊緣交換機(jī)(假設(shè)負(fù)載平衡做得很好)。作為一個(gè)為數(shù)據(jù)中心設(shè)計(jì)的傳輸協(xié)議,經(jīng)常在構(gòu)架的出口交換機(jī)處發(fā)現(xiàn)瓶頸鏈路。連接瓶頸鏈路的交換機(jī)稱為瓶頸交換機(jī)。本發(fā)明的估計(jì)策略將對(duì)瓶頸交換機(jī)的排隊(duì)行為進(jìn)行建模。
圖6顯示了網(wǎng)絡(luò)流s如何基于F估計(jì)隊(duì)列長度。假設(shè)ECN閾值為K,所述K是判斷交換機(jī)是否處于擁塞狀態(tài)的閾值。假設(shè)當(dāng)前隊(duì)列長度為Q,并且假設(shè)網(wǎng)絡(luò)流s的最后窗口尺寸為Ws(t)。由ECN標(biāo)記的網(wǎng)絡(luò)流s的窗口Ws(t)中的數(shù)據(jù)包的部分在圖中顯示為白色。因此可以得到Fs(t)≈(Ql(t)-K)/Ws(t)。然后可以得到Ql(t)≈K+Fs(t)×Ws(t),本發(fā)明用此近似值作為每個(gè)網(wǎng)絡(luò)流的總的總的隊(duì)列長度。
鏈路代價(jià)代表了具體鏈路的擁塞程度,它通常通過M/M/1延遲公式進(jìn)行估計(jì)。d(y)=1/(C-y)。因此,鏈路代價(jià)與延遲方程的倒數(shù)成正比d′(y)=(C-y)-2。到達(dá)速率可以在源處直接通過兩個(gè)連續(xù)的隊(duì)列進(jìn)行估計(jì)
基于上述估計(jì)以及公式(10),實(shí)際的擁塞窗口更新方程可描述為:
其中
接下來描述如何獲得能夠最小化類型2和類型3網(wǎng)絡(luò)流平均FCT的最佳分離閾值{β}和最佳篩選閾值{α}。
首先,獲取不同類型網(wǎng)絡(luò)流大小的累積密度方程作為已知條件。定義F1(·)、F2(·)、F3(·)為所述三種類型網(wǎng)絡(luò)流各自的流量分布。定義F(·)為總分布。因此有
依據(jù)類型2網(wǎng)絡(luò)流的大小,按照分離閾值{β},類型2網(wǎng)絡(luò)流被分離至不同的優(yōu)先級(jí)。按照篩選閾值{α},類型3網(wǎng)絡(luò)流被篩選至不同個(gè)優(yōu)先級(jí)。定義網(wǎng)絡(luò)的負(fù)載為ρ,0≤ρ≤1。假設(shè)網(wǎng)絡(luò)中的網(wǎng)絡(luò)流按照泊松分布到達(dá)。對(duì)于優(yōu)先級(jí)為j的類型2網(wǎng)絡(luò)流,它的期望FCT的上限為
對(duì)于大小在[αj-1,αj)之間的類型3網(wǎng)絡(luò)流,它將經(jīng)歷各優(yōu)先級(jí)的延遲直至第j個(gè)優(yōu)先級(jí)。一個(gè)上限被定義為其中是類型3網(wǎng)絡(luò)流在第j個(gè)隊(duì)列中平均花費(fèi)的時(shí)間。從而有
因此問題可以描述為選擇閾值{α,β}的一組最優(yōu)解,目標(biāo)是最小化網(wǎng)絡(luò)中類型2和類型3網(wǎng)絡(luò)流的平均FCT。
約束條件:α0=0,αM=∞,αj-1<αj,j=1,…,M
β0=0,βM=∞,βj-1<βj,j=1,…,M
為了簡化符號(hào),定義θj=F3(αj)-F3(αj-1)。表示大小在[βj-1,βj)之間的類型2網(wǎng)絡(luò)流的比例。θj表示大小在[αj-1,αj)之間的類型3網(wǎng)絡(luò)流的比例。要解決的問題可以重寫寫為:
其中是類型1網(wǎng)絡(luò)流的部分。
可以認(rèn)為上述問題是一個(gè)二次比例和的問題(因?yàn)??,F(xiàn)有技術(shù)已經(jīng)有解決這種問題的方法了。本發(fā)明使用松弛技術(shù)解決上述目標(biāo)的下限問題??梢宰⒁獾竭@一項(xiàng)是嚴(yán)格小于1的。因此肯定比上述問題的下限還低。因此,需要一組和{θ}能夠讓下限最低。因此,問題可以重新被寫為:
約束條件:
至此,所述問題被放松成一個(gè)具有線性約束條件的二次規(guī)劃問題。這種問題可以用半正定規(guī)劃包來求解,所述半正定規(guī)劃包在很多解決程序中都是有的。本發(fā)明使用MATLAB的CVXtoolbox來求解。由于問題的復(fù)雜度與交換機(jī)中隊(duì)列的數(shù)量有關(guān),和網(wǎng)絡(luò)的規(guī)模無關(guān),因此不超過10秒鐘就可以在試驗(yàn)床機(jī)器上完成求解。
下面,詳細(xì)介紹對(duì)本發(fā)明上述幾個(gè)實(shí)施例進(jìn)行仿真的實(shí)驗(yàn)結(jié)果。
我們使用試驗(yàn)床實(shí)驗(yàn)和ns-3離散事件模擬器進(jìn)行模擬。
試驗(yàn)床實(shí)驗(yàn)主要從微觀視角對(duì)本發(fā)明的性能進(jìn)行測試。主要目的是顯示本發(fā)明是如何工作的,以及顯示本發(fā)明的運(yùn)行結(jié)果。
首先建立試驗(yàn)床,包括16個(gè)服務(wù)器,每個(gè)服務(wù)器都具有Intel 4核2.8GHz處理器,8G內(nèi)存。所述服務(wù)器運(yùn)行Debian 6.0 64位Linux2.6.38.3內(nèi)核并搭載Broadcom BCM5719NetXtreme Gigabit Ethernet NICs.NIC卸載機(jī)制被設(shè)置為默認(rèn)選項(xiàng)以降低CPU的負(fù)荷。所有服務(wù)器連接至具有4MB共享內(nèi)存的Pronto 3295 48-port Gigabit Ethernet交換機(jī)。所述交換機(jī)支持ECN和嚴(yán)格優(yōu)先權(quán)排隊(duì),最多具有8類服務(wù)隊(duì)列?;A(chǔ)RTT為~100us。
本發(fā)明缺省使用8個(gè)優(yōu)先級(jí)隊(duì)列。設(shè)置每端口ECN標(biāo)記的閾值為30KB。實(shí)驗(yàn)中建立用戶/服務(wù)器模型以產(chǎn)生流量,并在應(yīng)用層測量FCT(flow completion time,網(wǎng)絡(luò)流完成時(shí)間)。在一個(gè)服務(wù)器上運(yùn)行的用戶應(yīng)用向其他15個(gè)服務(wù)器發(fā)出數(shù)據(jù)請(qǐng)求。所述請(qǐng)求是基于泊松過程產(chǎn)生的動(dòng)態(tài)工作負(fù)載。
本發(fā)明只需要?jiǎng)偤脡蛴玫膸捑涂梢宰岊愋?網(wǎng)絡(luò)流在其截止時(shí)間前完成。因此,本發(fā)明可以為類型2和類型3網(wǎng)絡(luò)流讓出更多的帶寬。為了證明這一點(diǎn),我們用圖7來展示本發(fā)明的試驗(yàn)床實(shí)驗(yàn)。在這個(gè)實(shí)驗(yàn)中,4個(gè)網(wǎng)絡(luò)流共享1Gbps鏈路??梢杂^測到,有截止時(shí)間網(wǎng)絡(luò)流如預(yù)期的一樣正常地運(yùn)行著,并且剛好在截止時(shí)間到來前結(jié)束。成功地為其他網(wǎng)絡(luò)流節(jié)省了帶寬。然而,對(duì)DCTCP,可以看到網(wǎng)絡(luò)流1和3沒能在截止時(shí)間內(nèi)完成,他們分別延遲了21ms和13ms,而網(wǎng)絡(luò)流2和網(wǎng)絡(luò)流4又過多的占用帶寬使得他們相對(duì)其截止時(shí)間早早地就完成了。pFabric雖然都在截止時(shí)間內(nèi)完成,但是占用了全部的帶寬。
本發(fā)明通過模仿SJF來優(yōu)化類型2和類型3網(wǎng)絡(luò)流的FCT。類型2網(wǎng)絡(luò)流的優(yōu)先級(jí)基于所述類型2網(wǎng)絡(luò)流的大小而定,并按照量化了的SJF進(jìn)行調(diào)度。類型3網(wǎng)絡(luò)流也是以一種類SJF的方式進(jìn)行調(diào)度。實(shí)驗(yàn)中使用網(wǎng)絡(luò)搜索工作負(fù)載(圖13),并對(duì)比本發(fā)明與DCTCP工作在80%負(fù)載時(shí)的效果,其中所述DCTCP是一種平均共享的調(diào)度方案。圖8顯示了對(duì)應(yīng)于不同大小的網(wǎng)絡(luò)流的FCT??梢杂^察到,對(duì)于小至中等大小的網(wǎng)絡(luò)流,本發(fā)明的效果優(yōu)于DCTCP;而對(duì)于大的網(wǎng)絡(luò)流,本發(fā)明的效果遜于DCTCP。這說明盡管提前不知道類型3網(wǎng)絡(luò)流的大小,本發(fā)明模仿SJF對(duì)類型3網(wǎng)絡(luò)流進(jìn)行調(diào)度。
根據(jù)剩余速率盡早的丟棄網(wǎng)絡(luò)流可以把帶寬讓出給其他的網(wǎng)絡(luò)流,讓其他的網(wǎng)絡(luò)流能夠在截止時(shí)間前完成。圖9示出用于實(shí)現(xiàn)網(wǎng)絡(luò)流的丟棄的3個(gè)方案。1)根據(jù)Z(t)丟棄網(wǎng)絡(luò)流(當(dāng)Zs(t)>maxl∈L(s)Cl時(shí)丟棄所述網(wǎng)絡(luò)流),2)根據(jù)期望速率(當(dāng)γs(t)>maxl∈L(s)Cl時(shí)丟棄所述網(wǎng)絡(luò)流),3)永不放棄??梢钥吹椒桨?的整體效果比較好,雖然方案1丟棄的網(wǎng)絡(luò)流比方案2多,但是錯(cuò)過截止時(shí)間的網(wǎng)絡(luò)流的數(shù)目相對(duì)較少(被丟棄的網(wǎng)絡(luò)流也算入錯(cuò)過截止時(shí)間的網(wǎng)絡(luò)流)。方案2放棄網(wǎng)絡(luò)流的條件比較高,這導(dǎo)致有一些已無法在截止時(shí)間內(nèi)完成的網(wǎng)絡(luò)流還在傳送數(shù)據(jù),浪費(fèi)帶寬。
為了評(píng)估ECN處理閾值-流量不匹配的效果,可以人為地生成工作負(fù)載,令所述工作負(fù)載80%的網(wǎng)絡(luò)流為30KB,20%的網(wǎng)絡(luò)流為10MB。實(shí)驗(yàn)工作在80%負(fù)載的情況下。假設(shè)所有網(wǎng)絡(luò)流都是類型3網(wǎng)絡(luò)流,并分配2個(gè)優(yōu)先級(jí)隊(duì)列。顯然,最佳的分離閾值為30KB。而在實(shí)驗(yàn)中,閾值分別設(shè)為20KB、30KB、2MB。在第一種情況下,短的網(wǎng)絡(luò)流被提早地分離至低優(yōu)先級(jí)的隊(duì)列種。而在第三種情況下,長的網(wǎng)絡(luò)流在高優(yōu)先級(jí)的隊(duì)列中停留的時(shí)間過長。在這兩種情況下,由于長的網(wǎng)絡(luò)流形成的隊(duì)列,短的網(wǎng)絡(luò)流的數(shù)據(jù)包都會(huì)經(jīng)歷長時(shí)間延遲。圖10可見30KB短網(wǎng)絡(luò)流的FCT。當(dāng)閾值為30KB時(shí),兩種方案都實(shí)現(xiàn)了理想的FCT。不具有ECN時(shí)FCT甚至更低9%,這是因?yàn)槊慷丝贓CN的虛假標(biāo)記。然而對(duì)于大閾值(2MB)或者小閾值(20KB),無論是均值還是99百分位,具有ECN時(shí)都能夠獲得比不具有ECN時(shí)更低57%~85%的FCT。具有ECN時(shí),本發(fā)明能夠有效地控制隊(duì)列的形成,從而緩和閾值-流量不匹配的問題。
圖11顯示了隊(duì)列數(shù)量對(duì)類型2和類型3網(wǎng)絡(luò)流的FCT的影響。實(shí)驗(yàn)中使用的流量時(shí)通過網(wǎng)絡(luò)搜索工作負(fù)載生成的。實(shí)驗(yàn)測量2、4和7個(gè)優(yōu)先級(jí)隊(duì)列的情況(第一個(gè)隊(duì)列留給類型1網(wǎng)絡(luò)流)??梢杂^察到:1)隊(duì)列數(shù)量更多時(shí)平均FCT總體上更好。這是因?yàn)殛?duì)列數(shù)量更多時(shí),本發(fā)明可以更好地將類型2和類型3網(wǎng)絡(luò)流分離至不同隊(duì)列中,從而提高總體性能。2)短的網(wǎng)絡(luò)流的平均FCT在三種情況下都差不多。這說明,在只有2個(gè)隊(duì)列時(shí),短的網(wǎng)絡(luò)流最受益。
接下來使用常見的DCN拓?fù)浣Y(jié)構(gòu)下的DCN工作負(fù)載對(duì)本發(fā)明進(jìn)行模擬仿真。測試本發(fā)明在瓶頸場景中網(wǎng)絡(luò)流完成度、饑餓、網(wǎng)絡(luò)流量變化這幾個(gè)方面的極限值。
首先用ns-3模擬器實(shí)施大規(guī)模包級(jí)別仿真,并利用fnss生成不同的場景。如圖12所示,具有葉脊網(wǎng)絡(luò)拓?fù)?spine-and-leaf fabric)的144個(gè)服務(wù)器。這是DCNs產(chǎn)品的的常見拓?fù)浣Y(jié)構(gòu)。包括4個(gè)核心交換機(jī),9個(gè)架頂式交換機(jī)(ToR,Top-of-Rack),每個(gè)所述架頂式交換機(jī)有16個(gè)服務(wù)器。這是一個(gè)多跳、多瓶頸設(shè)置用以完成我們的評(píng)估。服務(wù)器至架頂式交換機(jī)鏈路設(shè)為10G。架頂式交換機(jī)的上行鏈路為40G。
如圖13所示,在這個(gè)測試中使用了兩個(gè)廣泛使用的DCN網(wǎng)絡(luò)流量工作負(fù)載:一個(gè)是網(wǎng)絡(luò)搜索工作負(fù)載,一個(gè)是數(shù)據(jù)挖掘工作負(fù)載。在這些工作負(fù)載中,超過一半的網(wǎng)絡(luò)流都小于100KB。這體現(xiàn)的是真實(shí)DCN網(wǎng)絡(luò)流量的狀況。當(dāng)然也會(huì)存在一些情況傾向于大的尺寸。為了深入研究,我們生成了一個(gè)工作負(fù)載“Long Flow”.在這個(gè)工作負(fù)載中,網(wǎng)絡(luò)流的尺寸均勻分布在1KB到10MB之間.這表示有一半的網(wǎng)絡(luò)流比5MB大。
下面將本發(fā)明與DCTCP,D2TCP,D3和pFabric進(jìn)行比較.首先,設(shè)定DCTCP的參數(shù),按照參考文件(ALIZADEH,M.,GREENBERG,A.,MALTZ,D.A.,PAHDYE,J.,PATEL,P.,PRABHAKAR,B.,SENGUPTA,S.,AND SRIDHARAN,M.Data center tcp(dctcp).In ACM SIGCOMM’10)設(shè)置參數(shù),并設(shè)置交換機(jī)ECN標(biāo)記閥值,將10Gbps鏈路設(shè)為65包,40Gbps鏈路設(shè)為250包。在ns-3上實(shí)行D2TCP和D3。包格式和交換機(jī)操作按照文獻(xiàn)(WILSON,C.,BALLANI,H.,KARAGIANNIS,T.,AND ROWTRON,A.Better never than late:meeting deadlines in datacenter networks.In ACM SIGCOMM’11)中的設(shè)置。并按照文獻(xiàn)(VAMANAN,B.,HASAN,J.,AND VIJAYKUMAR,T.Deadline-aware datacenter tcp(d2tcp).In ACM SIGCOMM’12),將D2TCP的d設(shè)為0.5≤d≤2,將D3的基礎(chǔ)速率設(shè)為每RTT一段。對(duì)于pFabric,按照文獻(xiàn)(MUNIR,A.,BAIG,G.,IRTEZA,S.,QAZI,I.,LIU,I.,AND DOGAR,F.Friends,not foesAaxsynthesizing existing transport strategies for data center networks.In Proc.of SIGCOMM(2014))中的缺省參數(shù)進(jìn)行設(shè)置。并按照EDF調(diào)度。每次仿真持續(xù)60秒。
本發(fā)明在很少地犧牲有截止時(shí)間網(wǎng)絡(luò)流的利益的條件下,可以減少無截止時(shí)間網(wǎng)絡(luò)流的FCT。為了更加清楚的表明這個(gè)結(jié)果,我們將本發(fā)明與D2TCP,D3和pFabric(EDF)進(jìn)行了比較。在該仿真中,網(wǎng)絡(luò)流的大小是依據(jù)數(shù)據(jù)挖掘工作負(fù)載而選擇的,源和目的地是隨機(jī)選擇的。通過按照以下分配原則控制有類型1網(wǎng)絡(luò)流的負(fù)載(總期望速率Γ):記錄所有活躍的類型1網(wǎng)絡(luò)流的總期望速率對(duì)每個(gè)新網(wǎng)絡(luò)流,如果我們標(biāo)記這個(gè)網(wǎng)絡(luò)流為類型1網(wǎng)絡(luò)流,并分配一個(gè)盡可能實(shí)現(xiàn)Γ的截止時(shí)間(最小截止時(shí)間為5ms)否則,我們標(biāo)記這個(gè)網(wǎng)絡(luò)流類型2或類型3網(wǎng)絡(luò)流。Γ在80%到100%之間變化。三種網(wǎng)絡(luò)流的總網(wǎng)絡(luò)負(fù)載總是100%。
由圖14(a)可知,與D2TCP相比,本發(fā)明只有一少部分(7%)網(wǎng)絡(luò)流錯(cuò)過了截止時(shí)間。由圖14(b)可知,在滿負(fù)載時(shí)本發(fā)明與D3,D2TCP,和pFabric相比在95百分位FCT時(shí)分別減少65.12%,42.08%和49.25%。實(shí)際上,在仿真中,本發(fā)明完成了多達(dá)100倍的無截止時(shí)間網(wǎng)絡(luò)流(當(dāng)Γ=100%時(shí),本發(fā)明為4985,pFabric為45,D2TCP為184)??梢宰⒁獾奖景l(fā)明并不是像EDF那樣的最優(yōu)截止時(shí)間調(diào)度法則。有些只有EDF能夠滿足的截止時(shí)間本發(fā)明并不能滿足。然而,本發(fā)明的價(jià)值在于,本發(fā)明在有截止時(shí)間網(wǎng)絡(luò)流存在的情況下,降低無截止時(shí)間網(wǎng)絡(luò)流的FCT,同時(shí)比之前提到的幾個(gè)截止時(shí)間知曉策略效果要好。
仿真中使用了Long Flow流量,因?yàn)樵谄渌?種真實(shí)負(fù)載中只有個(gè)別情況下會(huì)出現(xiàn)饑餓。接下來將對(duì)比幾種與網(wǎng)絡(luò)流時(shí)限相關(guān)的策略。對(duì)類型2網(wǎng)絡(luò)流:1)提升1個(gè)優(yōu)先級(jí)(操作系統(tǒng)中常用方法);2)將優(yōu)先級(jí)提升至和剩余大小對(duì)應(yīng)的優(yōu)先級(jí)(本發(fā)明方法);對(duì)類型3網(wǎng)絡(luò)流:3)提升1個(gè)優(yōu)先級(jí);4)提升至最高優(yōu)先級(jí)(本發(fā)明方法);
由圖15可知,對(duì)類型2和類型3網(wǎng)絡(luò)流,當(dāng)設(shè)置了網(wǎng)絡(luò)流時(shí)效時(shí),大的網(wǎng)絡(luò)流的FCT比沒有設(shè)置網(wǎng)絡(luò)流時(shí)效時(shí)有明顯降低。由圖15還可知,策略2比策略1效果好;策略4比策略3效果好。這是因?yàn)?,在多?yōu)先級(jí)隊(duì)列系統(tǒng)中僅提升一個(gè)優(yōu)先級(jí)并不總是能夠解決饑餓。當(dāng)饑餓發(fā)生時(shí),饑餓的網(wǎng)絡(luò)流可能是被高其好幾個(gè)優(yōu)先級(jí)的網(wǎng)絡(luò)流阻擋,因此只提升一個(gè)優(yōu)先級(jí)的話所述饑餓的網(wǎng)絡(luò)流將仍然處于饑餓狀態(tài)??傊?,網(wǎng)絡(luò)流時(shí)效可以有效地處理饑餓問題,從而改善長的網(wǎng)絡(luò)流的FCT。
為了評(píng)估本發(fā)明對(duì)閾值的敏感度,實(shí)驗(yàn)對(duì)四組[{α},{β}]閾值進(jìn)行測試。其中第一組和第二組閾值是分別是通過對(duì)60%和80%網(wǎng)絡(luò)搜索工作負(fù)載計(jì)算得出的。第三組和第四組閾值分別是通過對(duì)60%和80%數(shù)據(jù)挖掘工作負(fù)載計(jì)算得出的。實(shí)驗(yàn)將這四組閾值用于不同類型的工作負(fù)載(都工作在80%負(fù)載的情況下)生成如圖16所示的12個(gè)場景。除了第2個(gè)和第8個(gè),其他的場景都出現(xiàn)了閾值-流量不匹配的情況。每種類型構(gòu)成總流量的1/3。
首先,對(duì)類型1網(wǎng)絡(luò)流來說,在圖16所示的所有場景中,本發(fā)明的截止時(shí)間錯(cuò)過率都接近于0。這是因?yàn)轭愋?網(wǎng)絡(luò)流具有最高的優(yōu)先級(jí),不受流量變化的影響。
其次,對(duì)于類型2和類型3網(wǎng)絡(luò)流來說,圖17顯示了類型2網(wǎng)絡(luò)流的FCT。在網(wǎng)絡(luò)搜索中,只有第2個(gè)場景的閾值和流量是匹配的。這個(gè)場景的FCT也是最低的。第1個(gè)場景和第2個(gè)場景的FCT差不多,第3個(gè)和第4個(gè)場景的FCT差一點(diǎn),但也不明顯。在數(shù)據(jù)挖掘中,只有第8個(gè)場景的閾值和流量是匹配的。這個(gè)場景的FCT也是最低的。在Long Flow中,所有場景的閾值和流量都是不匹配的,F(xiàn)CT也比前面兩組的長。但是在每個(gè)場景中,本發(fā)明都能獲得比DCTCP更好的FCT。對(duì)于類型3網(wǎng)絡(luò)流,這個(gè)結(jié)論也是相似的。
總之,對(duì)于類型2和類型3網(wǎng)絡(luò)流,本發(fā)明在閾值和流量匹配時(shí)表現(xiàn)最佳。當(dāng)閾值和流量不匹配時(shí),F(xiàn)CT略有變差(但仍比DCTCP好很多)。這說明本發(fā)明對(duì)流量變化具有彈性。其中一個(gè)原因是本發(fā)明使用了基于ECN的速率控制來緩和所述不匹配。
以上所有仿真都是假定完全對(duì)分帶寬網(wǎng)絡(luò)的基礎(chǔ)上進(jìn)行的,這個(gè)能夠滿足公式(11)中估計(jì)網(wǎng)絡(luò)項(xiàng)在一個(gè)交換機(jī)的假定。為了計(jì)算網(wǎng)絡(luò)項(xiàng),我們有意通過使1(目的地架頂式交換機(jī)),2(源/目的地架頂式交換機(jī)),3(源/目的地架頂式交換機(jī)和核)過載的方式創(chuàng)造交叉架有截止時(shí)間網(wǎng)絡(luò)流的瓶頸情景。在模擬器中我們獲得真實(shí)隊(duì)列長度和估計(jì)隊(duì)列長度。
在圖18中,各瓶頸鏈路具有不同的負(fù)載。定義平均隊(duì)列估計(jì)誤差為圖18顯示了上述平均隊(duì)列估計(jì)誤差和平均錯(cuò)過截止時(shí)間率??梢杂^察到,當(dāng)設(shè)定偏離我們的假設(shè)時(shí)(包括瓶頸的負(fù)載和數(shù)量都對(duì)估計(jì)的準(zhǔn)確度產(chǎn)生負(fù)影響),隊(duì)列估計(jì)誤差增大。然而,即便如此,本發(fā)明仍然能夠保證在100%負(fù)載2條瓶頸線路時(shí)<10%的錯(cuò)過率。這是因?yàn)?,剩余速率累積,源項(xiàng)會(huì)提升發(fā)送率,即使在網(wǎng)絡(luò)項(xiàng)不準(zhǔn)確時(shí)。
綜上所述,本發(fā)明實(shí)施例提供了一種網(wǎng)絡(luò)流調(diào)度方法和一種交換機(jī)。實(shí)施本發(fā)明實(shí)施例可以在使大部分有截止時(shí)間的網(wǎng)絡(luò)流在其截止時(shí)間之前完成的同時(shí)提升無截止時(shí)間的網(wǎng)絡(luò)流的FCT。
以上所述是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也視為本發(fā)明的保護(hù)范圍。