一種基于時間片輪轉(zhuǎn)的數(shù)據(jù)中心網(wǎng)絡(luò)流調(diào)度方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種基于時間片輪轉(zhuǎn)的數(shù)據(jù)中心網(wǎng)絡(luò)流調(diào)度方法,屬于數(shù)據(jù)中心網(wǎng)絡(luò)領(lǐng)域。
【背景技術(shù)】
[0002]數(shù)據(jù)中心作為高收益在線服務(wù)(web搜索,社交網(wǎng)絡(luò),廣告系統(tǒng)和推薦系統(tǒng))的關(guān)鍵基礎(chǔ)設(shè)施,其網(wǎng)絡(luò)性能越來越受到人們的關(guān)注。這些應(yīng)用對數(shù)據(jù)中心網(wǎng)絡(luò)產(chǎn)生了低延遲的需求。用戶體驗受應(yīng)用響應(yīng)速度的影響很大,甚至幾百毫秒的延遲都能顯著降低用戶體驗。例如,亞馬遜發(fā)現(xiàn)延遲每增加10ms就會造成收入下降一個百分點。
[0003]web搜索應(yīng)用是數(shù)據(jù)中心中的一種典型應(yīng)用,其遵循partit1n-aggregate工作模式。在該工作模式下,不同設(shè)備具有不同的角色。它們分別為top-levelaggregators (TLAs)、mid_level aggregators (MLAs)和工作節(jié)點。TLAs 接收請求并將完成請求所需的計算分成幾部分交給各個MLA。MLA繼續(xù)將計算分成適當(dāng)?shù)囊?guī)模交給各個工作節(jié)點。各個工作節(jié)點并行地執(zhí)行具體的計算并將結(jié)果返回給MLA,每個MLA將接收到的結(jié)果合并后轉(zhuǎn)發(fā)給相應(yīng)的TLA。這種工作模式會導(dǎo)致數(shù)據(jù)中心網(wǎng)絡(luò)中同時產(chǎn)生短數(shù)據(jù)流和長數(shù)據(jù)流。這種短數(shù)據(jù)流主要由不同層(level)的aggregators,或者是MLAs與工作節(jié)點的交互而產(chǎn)生。長數(shù)據(jù)流主要由工作節(jié)點執(zhí)行大規(guī)模的后臺并行計算而造成。對于交互式應(yīng)用來說,減少短數(shù)據(jù)流的完成時間可以顯著提高這種交互式應(yīng)用的響應(yīng)時間,但是這并不意味著可以完全的忽略由后臺計算產(chǎn)生的長數(shù)據(jù)流。換句話說,這種由后臺計算而產(chǎn)生的長數(shù)據(jù)流只需要得到一定的資源將所有的數(shù)據(jù)量傳輸完就可以,是對吞吐率敏感的流,而這種短數(shù)據(jù)流是對延遲敏感的。當(dāng)延遲不敏感的長數(shù)據(jù)流和延遲敏感的短數(shù)據(jù)流共享相同的隊列時,短數(shù)據(jù)流會因隊列中長數(shù)據(jù)流的累積而經(jīng)歷較長的時延。同時,典型的流調(diào)度算法ECMP并未很好的解決網(wǎng)絡(luò)擁塞問題,一旦鏈路發(fā)生擁塞又會進一步加重網(wǎng)絡(luò)的延遲,從而造成短數(shù)據(jù)流遲遲不能完成。為了改善網(wǎng)絡(luò)性能,一種高效的調(diào)度算法需要在不顯著降低長數(shù)據(jù)流的傳輸性能的同時保證短數(shù)據(jù)流的延遲需求。
【發(fā)明內(nèi)容】
[0004]為了達到這個目的,本發(fā)明提供了一種基于SDN且同時考慮長數(shù)據(jù)流和短數(shù)據(jù)流的網(wǎng)絡(luò)流調(diào)度方法。首先,為了充分利用網(wǎng)絡(luò)中的冗余線路,通過動態(tài)選路的方法均衡分配網(wǎng)絡(luò)中的數(shù)據(jù)流,從而避免擁塞。其次,為減小短數(shù)據(jù)流的傳輸延遲,在交換設(shè)備中的出端口處配置兩個具有不同優(yōu)先級的FIFO隊列,高優(yōu)先級隊列中存放短數(shù)據(jù)流的數(shù)據(jù)包,低優(yōu)先級的隊列中存放長數(shù)據(jù)流的數(shù)據(jù)包,使得短數(shù)據(jù)流優(yōu)先長數(shù)據(jù)流發(fā)送,從而降低短數(shù)據(jù)流的延遲。
[0005]本發(fā)明采取的技術(shù)方案如下:
[0006](I)采用支持OpenFlow協(xié)議的SDN交換機來構(gòu)建互聯(lián)網(wǎng)絡(luò)。
[0007](2)利用OpenFlow協(xié)議獲取交換機間的鏈路使用情況,控制器通過向支持OpenFlow協(xié)議的SDN交換機發(fā)送ofp_port_stats_request消息來獲取交換機間的鏈路信息。具體步驟如下:
[0008]a.每隔一定的時間間隔T1,控制器向網(wǎng)絡(luò)中所有SDN交換機發(fā)送一次ofp_port_stats_request消息,并等待SDN交換機響應(yīng);
[0009]b.控制器收到ofp_port_stats的響應(yīng)消息后觸發(fā)PortStatsReceived事件,通過調(diào)用事件處理函數(shù)獲取到目前為止該端口傳輸?shù)目傋止?jié)數(shù);
[0010]C.計算當(dāng)前傳輸總字節(jié)數(shù)與上次收集的傳輸總字節(jié)數(shù)的差值并除以時間間隔T1,該值可近似看作該端口當(dāng)前所占帶寬。
[0011]d.將計算得到的帶寬值存儲在結(jié)構(gòu){dpid, port, bandwidth}中,其中bandwidth既為端口的傳輸帶寬。
[0012](3)動態(tài)選路策略
[0013]利用網(wǎng)絡(luò)中的冗余路徑來減小網(wǎng)絡(luò)擁塞的可能性,具體步驟如下:
[0014]a.當(dāng)控制收到openflow交換機發(fā)送的packet-1n消息后,觸發(fā)PACKETIN事件,通過調(diào)用事件處理函數(shù),控制器將流的標(biāo)識〈srcip, dstip, srcport, dstport, proto〉解析出,并記錄下來;
[0015]b.利用⑵中得到的不同鏈路的帶寬使用情況,選取帶寬利用率最低的那條鏈路作為數(shù)據(jù)流的轉(zhuǎn)發(fā)路徑;
[0016]c.將所選擇的路徑添加到相應(yīng)SDN交換機的流表中,并通知交換機轉(zhuǎn)發(fā)該流。
[0017](4)利用OpenFlow協(xié)議獲取各個流的已傳輸字節(jié)數(shù),控制器通過向支持OpenFlow協(xié)議的SDN交換機發(fā)送ofp_flow_stats_request消息來獲取各個流的已傳輸字節(jié)數(shù)。具體步驟如下:
[0018]a.每隔一定的時間間隔T2,控制器向網(wǎng)絡(luò)中所有SDN交換機發(fā)送一次ofp_flow_stats_request消息,并等待SDN交換機響應(yīng);
[0019]b.控制器收到ofp_flow_stats的響應(yīng)消息后觸發(fā)FlowStatsReceived事件,通過調(diào)用事件處理函數(shù)獲取流的已傳輸總字節(jié)數(shù);
[0020]c.將流的已傳輸總字節(jié)數(shù)存儲在結(jié)構(gòu)〈srcip, dstip, srcport, dstport, proto, transmitted〉中,其中transmitted為已傳輸總字節(jié)數(shù)。
[0021](5)隊列調(diào)度策略
[0022]在不顯著降低低優(yōu)先級數(shù)據(jù)流輸出性能的情況下,顯著降低高優(yōu)先級數(shù)據(jù)流的傳輸時延。具體步驟如下:
[0023]a.在交換設(shè)備的輸出端口處設(shè)置兩個具有不同優(yōu)先級的隊列,交換設(shè)備按時間片丁3調(diào)度輸出這兩個隊列內(nèi)的數(shù)據(jù);
[0024]b.交換設(shè)備優(yōu)先將高優(yōu)先級隊列中的數(shù)據(jù)出隊輸出;
[0025]c.若在一個時間片內(nèi)的某一時刻高優(yōu)先級隊列為空則轉(zhuǎn)去調(diào)度低優(yōu)先級隊列,并標(biāo)記該時間片已調(diào)度過低優(yōu)先級隊列,直到時間片用完;
[0026]d.若在一個時間片內(nèi)高優(yōu)先級隊列始終不為空,則不調(diào)度低優(yōu)先級隊列,直到時間片用完;
[0027]e.當(dāng)某一時間片用完時,檢測是否連續(xù)兩個時間片未調(diào)度低優(yōu)先級隊列,若是則下一個時間片轉(zhuǎn)去調(diào)度低優(yōu)先級隊列,并標(biāo)記已調(diào)度過低優(yōu)先級隊列,轉(zhuǎn)步驟b ;
[0028]f.若不是則轉(zhuǎn)去步驟b。
[0029](6)網(wǎng)絡(luò)數(shù)據(jù)包入隊策略,具體步驟如下:
[0030]a.初始時所有流都在高優(yōu)先級隊列中排隊等待輸出;
[0031]b.當(dāng)(4)中發(fā)現(xiàn)某一個流的已傳輸字節(jié)數(shù)達到了某一個閾值,這個流將被視為一個長數(shù)據(jù)流;
[0032]c.控制器向交換機發(fā)送ofp_flow_mod消息,在交換機的流表中增加一條流表項,match為該流的標(biāo)識,而act1n則為一 enqueue動作,通知交換機將長數(shù)據(jù)流排到低優(yōu)先級隊列中;
[0033]d.交換機在收到匹配的數(shù)據(jù)流時,將該數(shù)據(jù)流排在低優(yōu)先級隊列中;
[0034]e.交換機在輸出端口處按(5)中的方法對兩個隊列進行調(diào)度。
[0035]本發(fā)明的數(shù)據(jù)中心網(wǎng)絡(luò)流調(diào)度方法同時考慮