一種控制網(wǎng)絡(luò)擁塞的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于網(wǎng)絡(luò)通信技術(shù)領(lǐng)域,涉及一種網(wǎng)絡(luò)擁塞的解決方法,特別是涉及一種控制網(wǎng)絡(luò)擁塞的方法。
【背景技術(shù)】
[0002]隨著網(wǎng)絡(luò)通信技術(shù)的不斷發(fā)展,人們對(duì)互聯(lián)網(wǎng)的帶寬需求越來越高,尤其是移動(dòng)通信技術(shù)的發(fā)展,使人們隨時(shí)隨地的溝通,同時(shí)也對(duì)傳統(tǒng)的基于固定網(wǎng)絡(luò)的通信模式提出了巨大的挑戰(zhàn)。由于移動(dòng)設(shè)備具有更大的不確定性,如何解決移動(dòng)設(shè)備的互聯(lián)、互通問題,保障通信的高效性是目前面臨的重大問題。
[0003]對(duì)于網(wǎng)絡(luò)通信來說,合理的擁塞控制機(jī)制,對(duì)現(xiàn)有網(wǎng)絡(luò)的流暢動(dòng)作提供了堅(jiān)實(shí)的保障。擁塞控制的目的是有效防止和消除網(wǎng)絡(luò)出現(xiàn)的擁塞,確保網(wǎng)絡(luò)服務(wù)能力,也是其它網(wǎng)絡(luò)應(yīng)用的基礎(chǔ)。
[0004]目前網(wǎng)絡(luò)擁塞控制算法中TCP協(xié)議、路由器鏈路算法AQM (Active QueueManagement,主動(dòng)隊(duì)列管理)是應(yīng)用比較廣泛的兩種,但這兩種技術(shù)均存在流量增長不平穩(wěn),且收斂到平衡態(tài)的時(shí)間較長的問題。這兩種協(xié)議均應(yīng)用于有線網(wǎng)絡(luò),在無線網(wǎng)絡(luò)的環(huán)境下,由于存在許多網(wǎng)絡(luò)傳輸?shù)膩G包,同時(shí)受到TCP協(xié)議慢啟動(dòng)的影響,導(dǎo)致網(wǎng)絡(luò)實(shí)際可用速率很低,已經(jīng)很難適應(yīng)多媒體數(shù)據(jù)對(duì)帶寬的要求。如何解決這個(gè)問題,提高用戶的使用體驗(yàn),是必須要解決的問題。
【發(fā)明內(nèi)容】
[0005]鑒于以上所述現(xiàn)有技術(shù)的缺點(diǎn),本發(fā)明的目的在于提供一種控制網(wǎng)絡(luò)擁塞的方法,用于解決在網(wǎng)絡(luò)帶寬波動(dòng)的情況下,網(wǎng)絡(luò)的有效帶寬的利用率低,網(wǎng)絡(luò)應(yīng)用程序的網(wǎng)絡(luò)通信效率、可用性和實(shí)時(shí)性差的問題。
[0006]為實(shí)現(xiàn)上述目的及其他相關(guān)目的,本發(fā)明提供一種控制網(wǎng)絡(luò)擁塞的方法,所述控制網(wǎng)絡(luò)擁塞的方法包括:根據(jù)網(wǎng)絡(luò)數(shù)據(jù)包的丟包率判斷當(dāng)前網(wǎng)絡(luò)數(shù)據(jù)包的丟包性質(zhì)為擁塞丟包還是非擁塞丟包;所述擁塞丟包是因?yàn)榘l(fā)送數(shù)據(jù)包量超過了網(wǎng)絡(luò)鏈路能夠緩存的量導(dǎo)致的丟包;所述非擁塞丟包是由于信號(hào)波動(dòng)或者干擾引起的丟包;若為非擁塞丟包,則繼續(xù)執(zhí)行TCP慢啟動(dòng)過程;若為擁塞丟包,則退出TCP慢啟動(dòng)過程,并記錄當(dāng)前發(fā)送窗口值m_dCWndSize,然后進(jìn)入擁塞避免階段。
[0007]可選地,所述控制網(wǎng)絡(luò)擁塞的方法還包括在擁塞避免階段實(shí)行的擁塞控制策略,所述擁塞控制策略包括:將最大擁塞窗口值m_iSSthreSh設(shè)置為當(dāng)前發(fā)送窗口值m_dCffndSize 的 90% ;利用公式 m_iBestSsthresh = m_issthresh-2Xm_dCffndSize/ (10+m_dCffndSize)計(jì)算獲得最佳擁塞窗口值m_iBestSsthresh ;控制當(dāng)前發(fā)送窗口值在所述最大擁塞窗口值和所述最佳擁塞窗口值之間波動(dòng),具體包括:判斷當(dāng)前發(fā)送窗口值是否小于所述最佳擁塞窗口值減2,若是則將當(dāng)前發(fā)送窗口值設(shè)置為所述最佳擁塞窗口值減2 ;否則繼續(xù)判斷當(dāng)前發(fā)送窗口值是否大于所述最大擁塞窗口值,若是則下調(diào)當(dāng)前發(fā)送窗口值;否則繼續(xù)判斷當(dāng)前發(fā)送窗口值是否小于或等于最大擁塞窗口值且大于或等于最佳擁塞窗口值,并且當(dāng)前發(fā)送窗口值呈增加趨勢,若是則增加當(dāng)前發(fā)送窗口值;否則繼續(xù)判斷當(dāng)前發(fā)送窗口值是否小于或等于最大擁塞窗口值且大于或等于最佳擁塞窗口值,并且當(dāng)前發(fā)送窗口值呈減小趨勢,若是則減小當(dāng)前發(fā)送窗口值;否則繼續(xù)判斷當(dāng)前發(fā)送窗口值是否大于所述最大擁塞窗口值且呈增長趨勢,若是則將當(dāng)前發(fā)送窗口值的趨勢調(diào)整為減小趨勢;否則繼續(xù)判斷當(dāng)前發(fā)送窗口值是否小于所述最佳擁塞窗口值且呈減小趨勢,若是則將當(dāng)前發(fā)送窗口值的趨勢調(diào)整為增加趨勢。
[0008]可選地,所述控制網(wǎng)絡(luò)擁塞的方法還包括動(dòng)態(tài)調(diào)整最大擁塞窗口值方法,所述動(dòng)態(tài)調(diào)整最大擁塞窗口值方法包括:根據(jù)網(wǎng)絡(luò)數(shù)據(jù)包的丟包率判斷當(dāng)前網(wǎng)絡(luò)數(shù)據(jù)包的丟包性質(zhì)是輕微擁塞丟包還是非擁塞丟包;所述輕微擁塞丟包的影響程度介于所述擁塞丟包和非擁塞丟包之間;若是輕微擁塞丟包,則利用公式m_issthresh = m_issthresh-(lossNumXm_issthresh)/(100+m_issthresh)下調(diào)所述最大擁塞窗口值,其中l(wèi)ossNum為所述網(wǎng)絡(luò)數(shù)據(jù)包的丟包數(shù);若是非擁塞丟包,貝U利用公式m_issthresh = m_issthresh+10/m_issthresh上調(diào)所述最大擁塞窗口值。
[0009]可選地,所述控制網(wǎng)絡(luò)擁塞的方法還包括重傳機(jī)制改進(jìn)方法,所述重傳機(jī)制改進(jìn)方法包括發(fā)送端重傳控制方法,所述發(fā)送端重傳控制方法包括:定期檢查接收到的ACK包序號(hào);判斷是否有數(shù)據(jù)包超過第一預(yù)設(shè)時(shí)間段沒有收到對(duì)應(yīng)的ACK包,若存在則重發(fā)所述未收到的ACK包對(duì)應(yīng)的重傳數(shù)據(jù)包,否則不動(dòng)作;判斷是否接收到NAK包,若是則繼續(xù)判斷是否處于擁塞狀態(tài),若處于擁塞狀態(tài),則將丟失的數(shù)據(jù)包依次緩存入重發(fā)等待隊(duì)列;若不處于擁塞狀態(tài),則依次重發(fā)丟失的數(shù)據(jù)包;在擁塞狀態(tài)下,接收到接收端發(fā)來的ACK包后,如果重發(fā)等待隊(duì)列中有緩存的數(shù)據(jù)包,則依次重新發(fā)送這些緩存的數(shù)據(jù)包。
[0010]可選地,所述重傳機(jī)制改進(jìn)方法還包括接收端重傳控制方法,所述接收端重傳控制方法包括:檢查接收到的數(shù)據(jù)包的序列號(hào)是否連續(xù),若不連續(xù)則將丟失的數(shù)據(jù)包的序列號(hào)保存進(jìn)接收丟失隊(duì)列中,同時(shí)發(fā)送重傳請(qǐng)求給發(fā)送端;繼續(xù)判斷當(dāng)前接收到的數(shù)據(jù)包的序列號(hào)是否大于當(dāng)前已經(jīng)接收的序列號(hào),如果大于當(dāng)前已經(jīng)接收的序列號(hào),則將當(dāng)前已經(jīng)接收的序列號(hào)置為所述當(dāng)前接收到的數(shù)據(jù)包的序列號(hào);如果當(dāng)前接收到的數(shù)據(jù)包的序列號(hào)小于或等于所述當(dāng)前已經(jīng)接收的序列號(hào),則從所述接收丟失隊(duì)列中刪除所述當(dāng)前接收到的數(shù)據(jù)包的序列號(hào),并立即回復(fù)針對(duì)所述當(dāng)前接收到的數(shù)據(jù)包的ACK包。
[0011]可選地,所述擁塞丟包、輕微擁塞丟包和非擁塞丟包的一種具體界定方式為:在2倍的網(wǎng)絡(luò)往返時(shí)間內(nèi),當(dāng)每100個(gè)數(shù)據(jù)包中發(fā)生丟包的總數(shù)超過或者等于15個(gè)時(shí),認(rèn)定為網(wǎng)絡(luò)發(fā)生擁塞,處于擁塞狀態(tài)的丟包為擁塞丟包;在不滿足擁塞丟包的前提下,當(dāng)每10個(gè)數(shù)據(jù)包中有超過或者等于3個(gè)數(shù)據(jù)包丟包時(shí),認(rèn)定為網(wǎng)絡(luò)發(fā)生輕微擁塞;不滿足所述擁塞丟包和輕微擁塞丟包情況的丟包即為非擁塞丟包。
[0012]如上所述,本發(fā)明所述的控制網(wǎng)絡(luò)擁塞的方法,具有以下有益效果:本發(fā)明提高了網(wǎng)絡(luò)傳輸?shù)男屎途W(wǎng)絡(luò)應(yīng)用程序的響應(yīng)速度,提高了網(wǎng)絡(luò)帶寬的利用率,提供了更好的網(wǎng)絡(luò)性能沐發(fā)明可以將網(wǎng)絡(luò)擁塞控制在可接受的地步,并挖掘網(wǎng)絡(luò)的傳輸潛力,達(dá)到網(wǎng)絡(luò)傳輸效率的最優(yōu)化。
【附圖說明】
[0013]圖1為本發(fā)明實(shí)施例所述的控制網(wǎng)絡(luò)擁塞的方法的流程示意圖。
[0014]圖2為本發(fā)明實(shí)施例所述的擁塞控制策略的流程示意圖。
[0015]圖3為本發(fā)明實(shí)施例所述的控制當(dāng)前發(fā)送窗口值在所述最大擁塞窗口值和所述最佳擁塞窗口值之間波動(dòng)的流程示意圖。
[0016]圖4為本發(fā)明實(shí)施例所述的動(dòng)態(tài)調(diào)整最大擁塞窗口值方法的流程示意圖。
[0017]圖5為本發(fā)明實(shí)施例所述的發(fā)送端重傳控制方法的流程示意圖。
[0018]圖6為本發(fā)明實(shí)施例所述的接收端重傳控制方法的流程示意圖。
[0019]元件標(biāo)號(hào)說明
[0020]S11 ?S13,S21 ?S23 步驟
[0021]S31 ?S36,S41 ?S43 步驟
[0022]S51 ?S53,S61 ?S63 步驟
【具體實(shí)施方式】
[0023]以下通過特定的具體實(shí)例說明本發(fā)明的實(shí)施方式,本領(lǐng)域技術(shù)人員可由本說明書所揭露的內(nèi)容輕易地了解本發(fā)明的其他優(yōu)點(diǎn)與功效。本發(fā)明還可以通過另外不同的【具體實(shí)施方式】加以實(shí)施或應(yīng)用,本說明書中的各項(xiàng)細(xì)節(jié)也可以基于不同觀點(diǎn)與應(yīng)用,在沒有背離本發(fā)明的精神下進(jìn)行各種修飾或改變。
[0024]請(qǐng)參閱附圖。需要說明的是,本實(shí)施例中所提供的圖示僅以示意方式說明本發(fā)明的基本構(gòu)想,遂圖式中僅顯示與本發(fā)明中有關(guān)的組件而非按照實(shí)際實(shí)施時(shí)的組件數(shù)目、形狀及尺寸繪制,其實(shí)際實(shí)施時(shí)各組件的型態(tài)、數(shù)量及比例可為一種隨意的改變,且其組件布局型態(tài)也可能更為復(fù)雜。
[0025]下面結(jié)合實(shí)施例和附圖對(duì)本發(fā)明進(jìn)行詳細(xì)說明。
[0026]實(shí)施例
[0027]本實(shí)施例提供一種控制網(wǎng)絡(luò)擁塞的方法,如圖1所示,所述控制網(wǎng)絡(luò)擁塞的方法包括:
[0028]S11,根據(jù)網(wǎng)絡(luò)數(shù)據(jù)包的丟包率判斷當(dāng)前網(wǎng)絡(luò)數(shù)據(jù)包的丟包性質(zhì)為擁塞丟包還是非擁塞丟包。所述擁塞丟包是因?yàn)榘l(fā)送數(shù)據(jù)包量超過了網(wǎng)絡(luò)鏈路能夠緩存的量導(dǎo)致的丟包;所述非擁塞丟包是由于信號(hào)波動(dòng)或者干擾引起的丟包。所述擁塞丟包、非擁塞丟包和后續(xù)的輕微擁塞丟包的界定可以根據(jù)實(shí)際應(yīng)用情況進(jìn)行設(shè)置。本實(shí)施例所述的擁塞丟包、非擁塞丟包和輕微擁塞丟包是三種不同程度的丟包,其中擁塞丟包的影響程度最嚴(yán)重,輕微擁塞丟包次之,非擁塞丟包的影響最輕。本實(shí)施例列舉一種界定方法,如:在2RTT(RoundTrip Time,網(wǎng)絡(luò)往返時(shí)間)內(nèi),即2倍的網(wǎng)絡(luò)往返時(shí)間內(nèi)