專利名稱:基于吞吐量變化率和ecn機(jī)制的tcp擁塞控制方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機(jī)網(wǎng)絡(luò)以及通信技術(shù)領(lǐng)域,具體涉及基于吞吐量變化率和ECN機(jī)制的TCP擁塞控制方法。
背景技術(shù):
傳統(tǒng)的有線數(shù)據(jù)中心網(wǎng)絡(luò)TCP擁塞控制算法使用網(wǎng)絡(luò)中的丟包作為擁塞信號,當(dāng)丟包發(fā)生時,算法會降低連接的數(shù)據(jù)包發(fā)送速度,從而避免網(wǎng)絡(luò)發(fā)生擁塞。
隨著數(shù)據(jù)中心規(guī)模的擴(kuò)大,網(wǎng)絡(luò)負(fù)載分布不均的現(xiàn)象越發(fā)嚴(yán)重,有線數(shù)據(jù)中心的布線問題也越來越復(fù)雜。為了解決這些問題,無線技術(shù)被引入到現(xiàn)有的有線數(shù)據(jù)中心網(wǎng)絡(luò)。 然而,無線網(wǎng)絡(luò)因其介質(zhì)的不可靠性,導(dǎo)致網(wǎng)絡(luò)中存在大量的與擁塞無關(guān)的隨機(jī)丟包。這些隨機(jī)丟包也會引發(fā)算法降低傳輸速率,引起嚴(yán)重的性能問題。而現(xiàn)有方法中還沒有一種可以同時處理有線數(shù)據(jù)中心網(wǎng)絡(luò)TCP Incast現(xiàn)象和無線隨機(jī)丟包而引發(fā)的性能下降問題。
在現(xiàn)有的TCP擁塞控制方法中,與本申請最為接近的技術(shù)方案為DCTCP方案。該方案在交換機(jī)上進(jìn)行ECN控制,發(fā)送方根據(jù)收到標(biāo)記ECN的ACK占上一窗口發(fā)送數(shù)據(jù)包總數(shù)的比例來調(diào)整發(fā)送速率。DCTCP的一個重要缺陷是當(dāng)沒有ECN標(biāo)記時,如果出現(xiàn)丟包發(fā)送方就會將發(fā)送速率減半,而不去判別丟包是否真的由于擁塞導(dǎo)致的。因此,無法抵抗無線隨機(jī)丟包問題。
現(xiàn)有的無線TCP擁塞控制方法主要有TCP Veno,TCP Westwood等。這些方法都采取了一定的手段來分辨丟包發(fā)生的原因隨機(jī)丟包或是擁塞丟包。但它們都是以丟包作為基礎(chǔ)的,而如果丟包真的是由于擁塞導(dǎo)致的,則說明此時的網(wǎng)絡(luò)擁塞已經(jīng)非常嚴(yán)重。這些方法都不能提早進(jìn)行控制,防止擁塞的發(fā)生。所以并不適用于數(shù)據(jù)中心網(wǎng)絡(luò)中。
本發(fā)明與現(xiàn)有擁塞控制方法的區(qū)別是本發(fā)明可以根據(jù)交換機(jī)緩沖區(qū)隊列長度提前對發(fā)送速率進(jìn)行調(diào)整,防止網(wǎng)絡(luò)擁塞的發(fā)生。當(dāng)沒有ECN標(biāo)記時,如果出現(xiàn)丟包,發(fā)送方會根據(jù)吞吐量的變換率來判斷丟包發(fā)生的原因,進(jìn)而調(diào)整發(fā)送速率,而不是盲目減半,進(jìn)而避免由于無線隨機(jī)丟包而導(dǎo)致的嚴(yán)重的性能問題。同時,當(dāng)沒有丟包發(fā)生時,窗口的增長幅度也要根據(jù)吞吐量的變換率來調(diào)整。發(fā)明內(nèi)容
針對現(xiàn)有技術(shù)的缺點(diǎn),本申請?zhí)岚敢鉀Q的技術(shù)問題為=DCTCP當(dāng)沒有ECN標(biāo)記時,如果出現(xiàn)丟包就會將發(fā)送速率減半,因此,無法抵抗無線隨機(jī)丟包問題。而無線TCP擁塞控制方法都不能對擁塞提前進(jìn)行控制,無法應(yīng)用于數(shù)據(jù)中心網(wǎng)絡(luò)。本發(fā)明使用ECN機(jī)制防止擁塞的發(fā)生,在沒有ECN標(biāo)記時,如果出現(xiàn)丟包會根據(jù)吞吐量的變換率來判斷丟包發(fā)生的原因,進(jìn)而調(diào)整發(fā)送速率,而不是盲目減半,進(jìn)而避免由于無線隨機(jī)丟包而導(dǎo)致的嚴(yán)重的性能問題。同時,當(dāng)沒有丟包發(fā)生時,窗口的增長幅度也要根據(jù)吞吐量的變換率來調(diào)整, 進(jìn)一步防止擁塞的發(fā)生。
本發(fā)明采用的技術(shù)方案為一種基于吞吐量變化率和ECN機(jī)制的TCP擁塞控制方法,該方法包括有下列處理步驟
步驟一交換機(jī)上進(jìn)行ECN標(biāo)記
當(dāng)交換機(jī)收到數(shù)據(jù)包時,首先判斷當(dāng)前緩沖區(qū)的隊列長度,如果超過某一個門限值,則為該數(shù)據(jù)包設(shè)置ECN標(biāo)記位,否則,不設(shè)置;
步驟二 接收方設(shè)置ECN-echo
接收方查看收到的數(shù)據(jù)包是否設(shè)置了 ECN標(biāo)記,如果是,則在它所發(fā)送的ACK中設(shè)置ECN-echo位,否則,返回沒有設(shè)置ECN-echo位的ACK ;
步驟三發(fā)送方動態(tài)調(diào)整發(fā)送窗口
當(dāng)發(fā)送端收到ACK后,首先由吞吐量變化率計算模塊計算往返時延RTT、最小往返時延RTTmin、期望吞吐量expected和實際吞吐量actual,并計算吞吐量的變化率dif ;
然后ECN控制模塊查看該ACK是否設(shè)置了 ECN-echo位,如果是,則設(shè)置ecn_flag 表示需要根據(jù)ECN調(diào)整發(fā)送速率,并計算它收到的帶有ECN-echo標(biāo)記的ACK占上一發(fā)送窗口所發(fā)送數(shù)據(jù)包總數(shù)的比例α,并根據(jù)α調(diào)整發(fā)送窗口。否則,根據(jù)吞吐量的變化率動態(tài)調(diào)整發(fā)送窗口。
本發(fā)明的優(yōu)點(diǎn)在于結(jié)合采用ECN技術(shù)和基于吞吐量變換率的控制方法。ECN可以在網(wǎng)絡(luò)輕度擁塞時進(jìn)行控制,避免有線數(shù)據(jù)中心的TCP Incast現(xiàn)象?;谕掏铝孔儞Q率的控制方法根據(jù)當(dāng)前網(wǎng)絡(luò)吞吐量的變換率對發(fā)送窗口進(jìn)行調(diào)整,當(dāng)出現(xiàn)丟包時可以判斷丟包發(fā)生的原因,進(jìn)而避免由于無線隨機(jī)丟包而導(dǎo)致的發(fā)送窗口減半。而且,當(dāng)沒有丟包發(fā)生時,窗口的增長幅度也根據(jù)吞吐量的變換率調(diào)整,進(jìn)一步避免了擁塞的發(fā)生。因此,本發(fā)明可以用于有線數(shù)據(jù)中心網(wǎng)絡(luò)和無線網(wǎng)絡(luò)中。
圖1是系統(tǒng)發(fā)送端結(jié)構(gòu);
圖2是該發(fā)·明發(fā)送端控制過程流程圖。
具體實施方式
下面結(jié)合附圖以及具體實施例進(jìn)一步說明本發(fā)明。
本發(fā)明的目的是提出一種基于吞吐量變化率和ECN機(jī)制的TCP擁塞控制方法,可以同時用于有線數(shù)據(jù)中心網(wǎng)絡(luò)和無線網(wǎng)絡(luò)中。該方法在交換機(jī)上進(jìn)行ECN標(biāo)記,接收方根據(jù)收到的數(shù)據(jù)包中ECN標(biāo)記位的狀態(tài)決定它所發(fā)送的ACK是否應(yīng)該設(shè)置ECN-echo位。發(fā)送方計算吞吐量的變換率,并根據(jù)收到的ACK中ECN-echo位的狀態(tài)動態(tài)調(diào)整發(fā)送窗口。本發(fā)明綜合考慮了數(shù)據(jù)中心網(wǎng)絡(luò)和無線網(wǎng)絡(luò)的特點(diǎn),能夠緩解有線數(shù)據(jù)中心網(wǎng)絡(luò)的TCP Incast 現(xiàn)象,同時避免由于無線丟包而導(dǎo)致的網(wǎng)絡(luò)性能下降。
本發(fā)明是一種基于吞吐量變化率和ECN機(jī)制的TCP擁塞控制方法,該方法包括有下列處理步驟
步驟一交換機(jī)上進(jìn)行ECN標(biāo)記
當(dāng)交換機(jī)收到數(shù)據(jù)包時,首先判斷當(dāng)前緩沖區(qū)的隊列長度,如果超過某一個門限值,則為該數(shù)據(jù)包設(shè)置ECN標(biāo)記位。否則,不設(shè)置。
步驟二 接收方設(shè)置ECN-echo
接收方查看收到的數(shù)據(jù)包是否設(shè)置了 ECN標(biāo)記,如果是,則在它所發(fā)送的ACK中設(shè)置ECN-echo位,否則,返回沒有設(shè)置ECN-echo位的ACK。
步驟三發(fā)送方動態(tài)調(diào)整發(fā)送窗口
如圖1所示,發(fā)送端主要包括吞吐量變化率計算模塊、ECN控制模塊、丟包判定模塊和發(fā)送速率控制模塊。當(dāng)發(fā)送端收到ACK后,首先由吞吐量變化率計算模塊計算往返時延RTT、最小往返時延RTTmin、期望吞吐量expected和實際吞吐量actual,并計算吞吐量的變化率dif。具體過程如下
expected = cwnd/RTTmin
actual = cwnd/RTT
dif = expected-actual
然后ECN控制模塊查看該ACK是否設(shè)置了 ECN-echo位,如果是,則設(shè)置ecn_flag 表示需要根據(jù)ECN調(diào)整發(fā)送速率,并計算它收到的帶有ECN-echo標(biāo)記的ACK占上一發(fā)送窗口所發(fā)送數(shù)據(jù)包總數(shù)的比例α。丟包判定模塊判斷網(wǎng)絡(luò)是否出現(xiàn)丟包。發(fā)送速率控制模塊根據(jù)以上3個模塊的結(jié)果動態(tài)設(shè)置擁塞窗口。具體過程如下
如果ecn_flag=true,則根據(jù)α調(diào)整發(fā)送速率,設(shè)置擁塞窗口
權(quán)利要求
1.一種基于吞吐量變化率和ECN機(jī)制的TCP擁塞控制方法,其特征在于,該方法包括有下列處理步驟 步驟ー交換機(jī)上進(jìn)行ECN標(biāo)記 當(dāng)交換機(jī)收到數(shù)據(jù)包時,首先判斷當(dāng)前緩沖區(qū)的隊列長度,如果超過某ー個門限值,則為該數(shù)據(jù)包設(shè)置ECN標(biāo)記位,否則,不設(shè)置; 步驟ニ 接收方設(shè)置ECN-echo 接收方查看收到的數(shù)據(jù)包是否設(shè)置了 ECN標(biāo)記,如果是,則在它所發(fā)送的ACK中設(shè)置ECN-echo位,否則,返回沒有設(shè)置ECN-echo位的ACK ; 步驟三發(fā)送方動態(tài)調(diào)整發(fā)送窗ロ 當(dāng)發(fā)送端收到ACK后,首先由呑吐量變化率計算模塊計算往返時延RTT、最小往返時延RTTmin、期望吞吐量expected和實際吞吐量actual,并計算吞吐量的變化率dif ; 然后ECN控制模塊查看該ACK是否設(shè)置了 ECN-echo位,如果是,則設(shè)置eCn_flag表示需要根據(jù)ECN調(diào)整發(fā)送速率,并計算它收到的帶有ECN-echo標(biāo)記的ACK占上一發(fā)送窗ロ所發(fā)送數(shù)據(jù)包總數(shù)的比例a,并根據(jù)a調(diào)整發(fā)送窗ロ,否則,根據(jù)吞吐量的變化率動態(tài)調(diào)整發(fā)送窗ロ。
全文摘要
本發(fā)明提供一種基于吞吐量變化率和ECN機(jī)制的TCP擁塞控制方法,該方法使用ECN機(jī)制防止擁塞的發(fā)生,在沒有ECN標(biāo)記時,如果出現(xiàn)丟包會根據(jù)吞吐量的變換率來判斷丟包發(fā)生的原因,進(jìn)而調(diào)整發(fā)送速率,而不是盲目減半,進(jìn)而避免由于無線隨機(jī)丟包而導(dǎo)致的嚴(yán)重的性能問題。同時,當(dāng)沒有丟包發(fā)生時,窗口的增長幅度也要根據(jù)吞吐量的變換率來調(diào)整,進(jìn)一步防止擁塞的發(fā)生。本發(fā)明結(jié)合采用ECN技術(shù)和基于吞吐量變換率的控制方法,ECN可以在網(wǎng)絡(luò)輕度擁塞時進(jìn)行控制,避免有線數(shù)據(jù)中心的TCP Incast現(xiàn)象?;谕掏铝孔儞Q率的控制方法根據(jù)當(dāng)前網(wǎng)絡(luò)吞吐量的變換率對發(fā)送窗口進(jìn)行調(diào)整,當(dāng)出現(xiàn)丟包時可以判斷丟包發(fā)生的原因,進(jìn)而避免由于無線隨機(jī)丟包而導(dǎo)致的發(fā)送窗口減半。
文檔編號H04L12/807GK103051554SQ201310002460
公開日2013年4月17日 申請日期2013年1月5日 優(yōu)先權(quán)日2013年1月5日
發(fā)明者王靜遠(yuǎn), 蔣云晶, 李超, 熊璋 申請人:北京航空航天大學(xué)