基于最小化完成時(shí)間的網(wǎng)絡(luò)傳輸方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種網(wǎng)絡(luò)傳輸協(xié)議,具體涉及一種基于數(shù)據(jù)中心的網(wǎng)絡(luò)傳輸方法。
【背景技術(shù)】
[0002] 近年數(shù)據(jù)中心逐漸成為許多交互式在線服務(wù)的底層基礎(chǔ)設(shè)施,例如網(wǎng)絡(luò)搜索,社 交網(wǎng)絡(luò)和廣告。這些服務(wù)常常具有嚴(yán)格的時(shí)延要求,對(duì)于用戶請(qǐng)求的響應(yīng)必須足夠快。這 些任務(wù)的相關(guān)數(shù)據(jù)需要通過網(wǎng)絡(luò)流進(jìn)行傳輸,國內(nèi)外相關(guān)學(xué)者從多方面提出了方法,例如 類似于TCP的公平共享協(xié)議、最短流優(yōu)先調(diào)度協(xié)議等,致力于加快任務(wù)的完成。然而,這些 方案或多或少地存在一些缺陷。因此如何設(shè)計(jì)高效的流調(diào)度協(xié)議,減少或避免設(shè)計(jì)缺陷,提 高傳輸效率,成為數(shù)據(jù)中心重要的研宄問題。
【發(fā)明內(nèi)容】
[0003] 發(fā)明目的:為了解決現(xiàn)有的數(shù)據(jù)中心調(diào)度策略的不足,提供一種基于最小化完成 時(shí)間的網(wǎng)絡(luò)傳輸系統(tǒng),同時(shí)提供一種基于最小化完成時(shí)間的網(wǎng)絡(luò)傳輸方法。
[0004] 技術(shù)方案:為解決上述技術(shù)問題,本發(fā)明提供的基于最小化完成時(shí)間的網(wǎng)絡(luò)傳輸 系統(tǒng),包括:
[0005] 基于明確速率控制的發(fā)送端,用于發(fā)送數(shù)據(jù)包時(shí),在包頭尾部添加至少包括發(fā)送 速率Rs、期望平均發(fā)送速率Ar和當(dāng)前流F的大小Size的流信息;以及用于在接收數(shù)據(jù)包 之后,根據(jù)收到的發(fā)送速率Rs,調(diào)整發(fā)送端的發(fā)送速率;
[0006] 具有流調(diào)度功能的交換機(jī),用于在轉(zhuǎn)發(fā)收到的數(shù)據(jù)包之前,更新交換機(jī)的流狀態(tài) 表;以及用于根據(jù)最小化完成時(shí)間擴(kuò)張系數(shù)算法來調(diào)整流狀態(tài)表中的流的優(yōu)先級(jí),并根據(jù) 優(yōu)先級(jí)更新數(shù)據(jù)包中的實(shí)際發(fā)送速率、期望截止時(shí)間和期望平均發(fā)送速率,使優(yōu)先級(jí)最高 的流獲得擁塞鏈路資源;
[0007] 返回控制信息的接收端:接收端在接收到發(fā)送包后,根據(jù)發(fā)送包的信息設(shè)置確認(rèn) 包的類型,并向發(fā)送端發(fā)送確認(rèn)包,所述確認(rèn)包中包括至少有實(shí)際發(fā)送速率、期望截止時(shí)間 和期望平均發(fā)送速率的流控制信息。
[0008] 本發(fā)明同時(shí)提供的一種基于最小化完成時(shí)間的網(wǎng)絡(luò)傳輸方法,該方法基于流優(yōu)先 級(jí)分配和分布式速率控制,包括五種類型的確認(rèn)包,分別為:SYNACK、DETACK、BOOST、ACK和 FINACK確認(rèn)包,其中SYNACK包、BOOST包和FINACK包具有高優(yōu)先級(jí),ACK包具有中優(yōu)先 級(jí),DETACK包具有低優(yōu)先級(jí);SYNACK為用于表示對(duì)建立連接的SYN包的確認(rèn)包、DETACK和 BOOST均為用于表示對(duì)鏈路狀況探測(cè)的DET包的確認(rèn)包、ACK為用于表示對(duì)數(shù)據(jù)包DATA的 確認(rèn)包、FINACK為用于表示對(duì)斷開連接的FIN包的確認(rèn)包;
[0009] 該方法包括以下步驟:
[0010] 1)發(fā)送端發(fā)送SYN數(shù)據(jù)包建立連接,報(bào)頭包含流大小、發(fā)送速率和期望平均發(fā)送 速率,進(jìn)入步驟2);
[0011] 2)交換機(jī)根據(jù)SYN包在流狀態(tài)表中添加相應(yīng)的流信息,并根據(jù)流表信息按照最小 化完成時(shí)間擴(kuò)張系數(shù)算法來更新鏈路上的流的優(yōu)先級(jí),并計(jì)算更新每個(gè)流的期望截止時(shí)間 和期望平均發(fā)送速率,同時(shí)根據(jù)優(yōu)先級(jí)分配實(shí)際發(fā)送速率,并將包括實(shí)際發(fā)送速率、期望截 止時(shí)間和期望平均發(fā)送速率的流控制信息寫入數(shù)據(jù)包;接收端把SYN數(shù)據(jù)包的流控制信息 復(fù)制到SYNACK確認(rèn)包中,回復(fù)給發(fā)送端;發(fā)送端接收SYNACK,建立連接,之后根據(jù)確認(rèn)包中 的發(fā)送速率確定發(fā)送包的包類型,如果發(fā)送速率高于預(yù)設(shè)的數(shù)據(jù)發(fā)送閾值則進(jìn)入步驟5), 否則進(jìn)入步驟3);
[0012] 3)發(fā)送端發(fā)送探測(cè)包DET定時(shí)探測(cè)鏈路資源的分配狀況,交換機(jī)根據(jù)流表信息按 照最小化完成時(shí)間擴(kuò)張系數(shù)算法來更新鏈路上的流的優(yōu)先級(jí),根據(jù)優(yōu)先級(jí)不斷更新DET包 中的實(shí)際發(fā)送速率字段;接收端根據(jù)DET包中的發(fā)送速率信息,確定回復(fù)的類型,如果高于 預(yù)設(shè)的數(shù)據(jù)發(fā)送閾值,則接收端執(zhí)行步驟6),否則接收端執(zhí)行步驟4);
[0013] 4)接收端發(fā)送低優(yōu)先級(jí)的DETACK確認(rèn)包,發(fā)送端執(zhí)行步驟5);
[0014] 5)同步驟 3);
[0015] 6)接收端發(fā)送高優(yōu)先級(jí)的BOOST確認(rèn)包,發(fā)送端執(zhí)行步驟7);
[0016] 7)發(fā)送端發(fā)送正常的數(shù)據(jù)報(bào)文,接收端接收到正常數(shù)據(jù)報(bào)文執(zhí)行步驟8);
[0017] 8)接收端復(fù)制數(shù)據(jù)包中的速率信息到中優(yōu)選級(jí)的ACK確認(rèn)包;發(fā)送端根據(jù)收到的 ACK包確定執(zhí)行步驟,如果數(shù)據(jù)全部得到確認(rèn),則執(zhí)行步驟9);否則,當(dāng)發(fā)送速率高于數(shù)據(jù) 發(fā)送閾值時(shí),執(zhí)行步驟7);當(dāng)發(fā)送速率低于數(shù)據(jù)發(fā)送閾值時(shí),執(zhí)行步驟3);
[0018] 9)發(fā)送端發(fā)送FIN數(shù)據(jù)包,以關(guān)閉與接收端方向的連接,接收端接收到FIN數(shù)據(jù) 包,執(zhí)行步驟10);
[0019] 10)接收端發(fā)送FINACK確認(rèn)包到發(fā)送端,結(jié)束通信。
[0020] 優(yōu)選的,上述步驟2)中的根據(jù)最小化完成時(shí)間擴(kuò)張系數(shù)算法來更新鏈路上的流 的優(yōu)先級(jí)并更新每個(gè)流的期望截止時(shí)間和期望平均發(fā)送速率和步驟3)中的按照最小化完 成時(shí)間擴(kuò)張系數(shù)算法來更新鏈路上的流的優(yōu)先級(jí),包括以下步驟:
[0021] 21)獲取當(dāng)前鏈路上所有優(yōu)先級(jí)待定的流的集合S,包括建立時(shí)間Start_i,流的 大小Size,剩余傳輸量大小Resp進(jìn)入步驟22);
[0022] 22)判斷優(yōu)先級(jí)待定的流集合是否為空集,如是則結(jié)束,如否則進(jìn)入步驟23);
[0023] 23)計(jì)算待定流全部完成的時(shí)間:Tfin -R^s, +T_now,其中T_now為當(dāng)前時(shí)間, C為鏈路帶寬,進(jìn)入步驟24);
[0024] 24)計(jì)算所有流在Tfin時(shí)刻的擴(kuò)張系數(shù)ratio=Size*(T_fin-Start_i)/C,其中 Start_i為第i個(gè)流的建立時(shí)間,進(jìn)入步驟25);
[0025] 25)選出擴(kuò)張系數(shù)最小的流F,從流集合S中刪除,并作為最優(yōu)先的流加入到優(yōu)先 級(jí)隊(duì)列首部,以Tfin作為流F的期望截止時(shí)間,并計(jì)算期望平均發(fā)送速率為C/ratio,跳回 步驟22)。
[0026] 優(yōu)選的,上述根據(jù)優(yōu)先級(jí)分配或更新實(shí)際發(fā)送速率的步驟包括:基于根據(jù)最 小化完成時(shí)間擴(kuò)張系數(shù)算法更新的鏈路上流的優(yōu)先級(jí),優(yōu)先級(jí)最高的流的發(fā)送速率為 min(C*a,rate),其他流的發(fā)送速率為min(C* (1-a),rate),其中C為鏈路帶寬,a為鏈路 有效數(shù)據(jù)比例,rate為發(fā)送數(shù)據(jù)包中的發(fā)送速率信息。
[0027] 有益效果:本發(fā)明提供的基于最小化完成時(shí)間的網(wǎng)絡(luò)傳輸方法及系統(tǒng),利用路由 器已知擁塞鏈路的所有流信息,通過采用基于最小化完成時(shí)間擴(kuò)張系數(shù)的方法,對(duì)于鏈路 上的所有流進(jìn)行優(yōu)先級(jí)分配,通過與發(fā)送端、接收端的協(xié)同,實(shí)現(xiàn)了在線的流調(diào)度和分布式 的速率控制。本發(fā)明提出了用完成時(shí)間擴(kuò)張系數(shù)作為網(wǎng)絡(luò)傳輸效率的度量方式,來描述某 個(gè)流動(dòng)實(shí)際獲得的擁塞資源和理想之間的差距,通過最小化完成時(shí)間擴(kuò)張系數(shù)算法,降低 所有流的最大擴(kuò)張系數(shù),使流調(diào)度達(dá)到相對(duì)公平,克服了目前數(shù)據(jù)中心傳輸協(xié)議在降低完 成時(shí)間上的不足,以此降低了數(shù)據(jù)中心中的平均任務(wù)完成時(shí)間,有效提高了數(shù)據(jù)中心網(wǎng)絡(luò) 的傳輸效率,最終提高部署在虛擬機(jī)上任務(wù)的性能以及數(shù)據(jù)中心整體的網(wǎng)絡(luò)通信效率。
【附圖說明】
[0028] 圖1是實(shí)施例的系統(tǒng)結(jié)構(gòu)圖;
[0029] 圖2是實(shí)施例中流優(yōu)先級(jí)分配流程圖;
[0030] 圖3為實(shí)施例中基于分布式速率控制的數(shù)據(jù)包交換圖。
【具體實(shí)施方式】
[0031] 下面結(jié)合實(shí)施例對(duì)本發(fā)明做進(jìn)一步的詳細(xì)說明,本實(shí)施列對(duì)本發(fā)明不構(gòu)成限定。
[0032] 1、系統(tǒng)描述
[0033] 本實(shí)施例應(yīng)用的系統(tǒng)結(jié)構(gòu)如圖1所示:本系統(tǒng)的實(shí)現(xiàn)包括三個(gè)主要部分:基于明 確速率控制的發(fā)送端,具有流調(diào)度功能的交換機(jī)以及返回控制信息的接收端。
[0034] 基于明確速率控制的發(fā)送端,用于發(fā)送數(shù)據(jù)包時(shí),在包頭尾部添加至少包括發(fā)送 速率Rs、期望平均發(fā)送速率Ar和當(dāng)前流F的大小Size的流信息;以及用于在接收數(shù)據(jù)包 之后,根據(jù)收到的發(fā)送速率Rs,調(diào)整發(fā)送端的發(fā)送速率;
[0035] 具有流調(diào)度功能的交換機(jī),用于在轉(zhuǎn)發(fā)收到的數(shù)據(jù)包之前,更新交換機(jī)的流狀態(tài) 表;以及用于根據(jù)最小化完成時(shí)間擴(kuò)張系數(shù)算法來調(diào)整流狀態(tài)表中的流的優(yōu)先級(jí),并根據(jù) 優(yōu)先級(jí)更新數(shù)據(jù)包中的實(shí)際發(fā)送速率、期望截止時(shí)間和期望平均發(fā)送速率,使優(yōu)先級(jí)最高 的流獲得擁塞鏈路資源;
[0036] 返回控制信息的接收端:接收端在接收到發(fā)送包后,根據(jù)發(fā)送包的信息設(shè)置確認(rèn) 包的類型,并向發(fā)送端發(fā)送確認(rèn)包,所述確認(rèn)包中包括至少有實(shí)際發(fā)送速率、期望截止時(shí)間 和期望平均發(fā)送速率的流控制信息。
[0037] 所述確認(rèn)包的類型包括:SYNACK、DETACK、BOOST、ACK和FINACK確認(rèn)包,其中 SYNACK包、BOOST包和FINACK包具有高優(yōu)先級(jí),ACK包具有中優(yōu)先級(jí),DETACK包具有低優(yōu) 先級(jí)。其中SYNACK為用于表示對(duì)建立連接的SYN包的確認(rèn)包、DETACK和BOOST均為用于 表示對(duì)鏈路狀況探測(cè)的DET包的確認(rèn)包、ACK為用于表示對(duì)數(shù)據(jù)包DATA的確認(rèn)包、FINACK 為用于表示對(duì)斷開連接的FIN包的確認(rèn)包。對(duì)于DET包設(shè)置了兩種類型的確認(rèn)包,是為了 實(shí)現(xiàn)流的快速調(diào)度。當(dāng)DET包中發(fā)送速率超過預(yù)設(shè)的數(shù)據(jù)發(fā)送閾值,接收端會(huì)發(fā)送高優(yōu)先 級(jí)的BOOST確認(rèn)包,以快速啟動(dòng)新流;否則,發(fā)送低優(yōu)先級(jí)的DETACK,用于發(fā)送端感知鏈路 狀況。
[0038] 2、流優(yōu)先級(jí)分配
[0039] 如圖2提供的流優(yōu)先級(jí)分配流程圖所示,本實(shí)施例采用的基于最小化完成時(shí)間擴(kuò) 張系數(shù)算法的流優(yōu)先級(jí)分配包括以下步驟:
[0040] 21)獲取當(dāng)前鏈路上所有優(yōu)先級(jí)待定的流的集合S,包括建立時(shí)間Start_i,流的 大小Size,剩余傳輸量大小Resp進(jìn)入步驟22);
[0041] 22)判斷優(yōu)先級(jí)待定的流集合是否為空集,如是則結(jié)束,如否則進(jìn)入步驟23);
[0042] 23)計(jì)算待定流全部完成的時(shí)間:7}in = +T_now;其中T_now為當(dāng)前時(shí)間, C為鏈路帶寬,進(jìn)入步驟24);
[0043] 24)計(jì)算所有流在Tfin時(shí)刻的擴(kuò)張系數(shù)ratio=Size*(T_fin-Start_i)/C,其中 Start_i為第i個(gè)流的建立時(shí)間,進(jìn)入步驟25);