一種擁塞控制方法及系統與流程
2023-10-19 16:07:17 1

本發明涉及通信領域,尤其涉及一種擁塞控制方法及系統。
背景技術:
tcp(transmissioncontrolprotocol,傳輸控制協議)現在被廣泛使用。tcp的擁塞控制機制是一種被動擁塞控制方法,該方法進行擁塞控制的手段是基於「探測」的想法,根據當前網絡的丟包情況,動態地調整擁塞窗口來實現擁塞控制,例如cubic算法。
現有的擁塞控制方法的缺陷在於:不能快速適應網絡質量變化;當網絡質量變差時,擁塞窗口並不會實時進行調整,發送方仍然按照原先的速率進行發包,這樣將導致丟包;另一方面,tcp在丟包時採用將擁塞窗口大小減半的方式進行擁塞避免,而發送方的發送速率取決於擁塞窗口的大小,因此會造成帶寬利用率低。
在行動網路中,終端設備的網絡質量更容易發生變化,如果採用上述被動擁塞控制方法,則丟包和帶寬利用率低的問題將會更加突出。
技術實現要素:
本申請提出一種擁塞控制方法及系統,能夠提高擁塞控制的實時性和帶寬利用率,減少丟包。
本申請採用如下技術方案。
一種擁塞控制方法,包括:
計算第一終端和服務端的吞吐率;
周期性根據所述吞吐率,確定所述第一終端對應的擁塞窗口的大小。
可選地,所述周期性根據所述吞吐率,確定所述第一終端對應的擁塞窗口的大小包括:
周期性計算當前時刻之前第一預定時間長度內的所述吞吐率的算術平均數b,確定擁塞窗口的大小w為α×rttmin×b;其中α為預定常數,rttmin為當前時刻之前第一預定時間長度內最小的往返時間。
可選地,所述第一預定時間長度小於或等於500毫秒,大於或等於計算所述吞吐率的時間間隔;
1≤α≤100。
可選地,所述第一預定時間長度為100毫秒,α為2。
可選地,所述的方法還包括:
當已發送給所述第一終端但未收到所述第一終端確認的數據量未達到w時,以b作為發送速率將數據發送給所述第一終端;當已發送給所述第一終端但未收到所述第一終端確認的數據量超過w時,暫停發送數據給所述第一終端。
一種擁塞控制系統,包括:
計算模塊,用於計算第一終端和基站之間的吞吐率;
網絡預測模塊,用於周期性根據所述吞吐率,確定所述第一終端對應的擁塞窗口的大小。
可選地,所述網絡預測模塊周期性根據所述吞吐率,確定所述第一終端對應的擁塞窗口的大小包括:
所述網絡預測模塊周期性計算當前時刻之前第一預定時間長度內的所述吞吐率的算術平均數b,確定擁塞窗口的大小w為α×rttmin×b;其中α為預定常數,rttmin為當前時刻之前第一預定時間長度內最小的往返時間。
可選地,所述第一預定時間長度小於或等於500毫秒,大於或等於計算所述吞吐率的時間間隔;
1≤α≤100。
可選地,所述第一預定時間長度為100毫秒,α為2。
可選地,所述的系統還包括:
擁塞處理模塊,用於當已發送給所述第一終端但未收到所述第一終端確認的數據量未達到w時,以b作為發送速率將數據發送給所述第一終端;當已發送給所述第一終端但未收到所述第一終端確認的數據量超過w時,暫停發送數據給所述第一終端。
本申請包括以下優點:
本申請至少一個備選方案通過吞吐率確定擁塞窗口的大小,因此可以及時得知網絡質量的變化並隨之調整擁塞窗口的大小,相較於現有技術中發生丟包就直接將擁塞窗口的大小減半的做法,可以提高帶寬利用率;當網絡質量變差時,吞吐率將下降,由於擁塞窗口的大小是依據吞吐率確定的,因此發送速率也會隨之下降,減少丟包;另外,由於吞吐率可以基於且不限於物理層參數得到,因此該方案能夠很好地適用於可以採集物理層參數的通信系統。
本申請又一個備選方案限定了利用吞吐率確定擁塞窗口的計算細節。本備選方案的一種實施方式裡限定了計算時所採用的參數值,能夠更加合理的確定擁塞窗口。本備選方案的又一實施方式中限定了當未確認的數據量沒達到擁塞窗口的大小時,以預測帶寬作為發送速率,相當於根據實時的吞吐率來動態調整發送數據的快慢;而當未確認的數據量超過擁塞窗口的大小時則暫停發送,等待確認;擁塞窗口的大小並不直接根據數據的確認情況進行調整,而是與實時的吞吐率相關。
本申請又一個備選方案限定了如何進行主、被動混合式擁塞控制,從而能夠更好地適應通信過程中的不同階段。
當然,實施本申請的任一產品必不一定需要同時達到以上所述的所有優點。
附圖說明
圖1是實施例一的擁塞控制方法的流程示意圖;
圖2是實施例二的擁塞控制系統的示意圖;
圖3是實施例二的示例的應用場景的示意圖。
具體實施方式
下面將結合附圖及實施例對本申請的技術方案進行更詳細的說明。
需要說明的是,如果不衝突,本申請實施例以及實施例中的各個特徵可以相互結合,均在本申請的保護範圍之內。另外,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同於此處的順序執行所示出或描述的步驟。
在一個典型的配置中,客戶端或認證系統的計算設備可包括一個或多個處理器(cpu)、輸入/輸出接口、網絡接口和內存(memory)。
內存可能包括計算機可讀介質中的非永久性存儲器,隨機存取存儲器(ram)和/或非易失性內存等形式,如只讀存儲器(rom)或快閃記憶體(flashram)。內存是計算機可讀介質的示例。內存可能包括模塊1,模塊2,……,模塊n(n為大於2的整數)。
計算機可讀介質包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術來實現信息存儲。信息可以是計算機可讀指令、數據結構、程序的模塊或其他數據。計算機的存儲介質的例子包括,但不限於相變內存(pram)、靜態隨機存取存儲器(sram)、動態隨機存取存儲器(dram)、其他類型的隨機存取存儲器(ram)、只讀存儲器(rom)、電可擦除可編程只讀存儲器(eeprom),快閃記憶體或其他內存技術、只讀光碟只讀存儲器(cd-rom)、數字多功能光碟(dvd)或其他光學存儲、磁盒式磁帶,磁帶磁磁碟存儲或其他磁性存儲設備或任何其他非傳輸介質,可用於存儲可以被計算設備訪問的信息。按照本文中的界定,計算機可讀介質不包括非暫存電腦可讀媒體(transitorymedia),如調製的數據信號和載波。
實施例一、一種擁塞控制方法,如圖1所示,包括步驟s110~s120:
s110、計算第一終端和基站之間的吞吐率;
s120、周期性根據所述吞吐率,確定所述第一終端對應的擁塞窗口的大小。
本實施例中,所述步驟s110中,可以但不限於通過實時採集的第一終端和基站之間進行通信時的物理層參數,計算出所述吞吐率,可以稱為物理層吞吐率;所述物理層參數可以但不限於通過物理層控制幀獲取。所述步驟s120中,所述擁塞窗口的單位可以但不限於是以下任一個:數據包個數、報文段個數、字節數、時間長度等。
現有技術中是根據丟包和收到的ack(確認)消息調整擁塞窗口的大小,相當於根據發送結果進行調整,因此當網絡狀況發生變化時,擁塞窗口的調整存在一定延遲;而本實施例中所述擁塞窗口的大小根據物理層參數確定,能更好地匹配網絡當前的實際情況,而且可以適用於能夠計算出吞吐率的通信系統,比如lte(longtermevolution,長期演進)系統,也可以是cdma(codedivisionmultipleaccess,碼分多址)、wcdma(widebandcodedivisionmultipleaccess,寬帶碼分多址)等系統;相對於現有技術中的被動擁塞控制方案,本實施例能實現主動式的擁塞控制。
一種可供選擇的計算吞吐率的做法是:所述物理層參數包括mcs(modulationandcodingscheme,調製與編碼策略)、rb(resourceblock,資源塊)和tbs(transportblocksize,傳輸塊大小)。計算吞吐率時,根據mcs和rb數查表得到tbs;確定每個子幀的tbs後,根據幀配比和特殊子幀配比累加各個子幀的tbs+crc(如果是雙碼字還要乘以2),從而計算出吞吐率。其它的吞吐率計算方法也可以適用。
本實施例中,所述步驟s110中的「計算」操作可以在收到物理層控制幀時觸發,比如每次收到物理層控制幀後就採集其中攜帶的物理層參數並根據所採集的物理層參數計算一次吞吐率。所述步驟s120中的周期長短可自行設置,比如可以設置為每採集一次物理層參數就確定一次擁塞窗口的大小。
本實施例的一種備選方案中,所述步驟s120可以包括:
周期性計算當前時刻之前第一預定時間長度內的所述吞吐率的算術平均數b,確定擁塞窗口的大小w為α×rttmin×b,其中α為預定常數,rttmin 為當前時刻之前第一預定時間長度內最小的rtt(round-triptime,往返時間)。
本備選方案中,所述算數平均數b可以看成是當前時刻的預測帶寬,單位可以為字節/秒,也可以為比特/秒等;w的單位相應地可以為字節,也可以為比特等。其中,計算b和確定w的周期長度可以為所述第一預定時間長度,也可以大於或小於所述第一預定時間長度。
其它備選方案中,也可以預定吞吐率和擁塞窗口的大小之間的對應關係,根據吞吐率及該對應關係確定擁塞窗口的大小。其它備選方案中,還可以採用最近一次或多次計算出的吞吐率確定擁塞窗口的大小。其它備選方案中,當採用最近多次計算出的吞吐率、或當前時刻之前第一預定時間長度內的多個吞吐率確定擁塞窗口的大小時,除了可以採用這些吞吐率的算數平均值進行計算,還可以採用這些吞吐率中的最小值或其它計算方式得到的數值確定擁塞窗口的大小。
本備選方案的一種實施方式中,所述第一預定時間長度t小於或等於500ms,大於或等於計算所述吞吐率的時間間隔;優選地,t可以但不限於為100ms(毫秒),t越小則採集頻率越高,測量結果更精準,但會較為耗電。1≤α≤100,優選地,α可以但不限於為2,當傳輸延遲較低時還可以加大α。
本實施方式中,t的最小值相當於取決於第一終端底層上報物理層參數的頻率,當第一終端的底層協議棧實體收到物理層控制幀後,會解析出其中的物理層參數並上報;在實時計算中,如果每上報一次物理層參數就進行一次吞吐率的計算,則t的最小值至少為相鄰兩次計算吞吐率的時間點所間隔的時間長度。
本備選方案的一種實施方式中,所述方法還可以包括:
s130、當已發送給所述第一終端但未收到所述第一終端確認的數據量未達到w時,以b作為發送速率將數據發送給所述第一終端;當已發送給所述第一終端但未收到所述第一終端確認的數據量超過w時,暫停發送數據給所述第一終端。
本實施方式中,步驟s130和步驟s110、s120是可以並行的;當第一終端啟動後第一次確定擁塞窗口的大小後即可開始步驟s130。在啟動後第一次確定擁塞窗口的大小之前,也可以採用預定的或第一終端上次啟動時最後一次計算出的吞吐率確定擁塞窗口的大小,以進行步驟s130;還可以使用預定的或第一終端上次啟動時最後採用的擁塞窗口的大小進行步驟s130。
本實施方式中,未收到確認可以但不限於是指未收到ack消息。
可以設置為只有當發生丟包的情況下,才採用本實施方式的方案進行擁塞控制;也可以設置為預定情況採用或任何情況下都採用本實施方式的方案。
本實施方式中,已發送但未收到確認的數據量正好等於w的情況如何處理可以自行設置,比如可以設置為和未達到w時進行同樣的處理,即以b作為發送速率進行數據發送,也可以設置為和超過w時進行同樣的處理,即暫停發送數據;還可以設置為「保持現狀」,比如當已發送但未收到確認的數據量正好等於w時,如果正在以b作為發送速率進行數據發送,則可以繼續發送,如果正在暫停發送,則繼續暫停。
本實施方式中,暫停發送數據後,將會繼續收到對於之前發送的數據的確認,因此已發送但未收到確認的數據量將會減少,當減少到小於w後,將繼續以b作為發送速率進行數據發送。在此期間,w只隨著計算出的吞吐率改變而發生改變,不會在丟包時就立即減半。
其它實施方式中,也可以採用其它方式來利用擁塞窗口進行擁塞控制;比如當已發送但未收到確認的數據量未達到w時,以設定速率或者根據擁塞窗口的大小確定的速率進行數據發送;再比如當已發送但未收到確認的數據量超過w時,按照設定步長減小w。
本實施例的一種備選方案中,所述步驟s110前還可以包括:
所述第一終端啟動未達到第二預定時間長度時,採用tcp慢啟動方式進行擁塞控制。
本備選方案中,採用tcp慢啟動方式進行擁塞控制的情況可以包括所述第一終端向基站發送上行數據時,對所述第一終端進行擁塞控制,也可以 包括基站向所述第一終端發送下行數據時,對所述基站進行擁塞控制。
本備選方案中,由於剛啟動時,網絡上沒有通信流量,b和rttmin無法測量計算,因此採用tcp慢啟動的算法。
本備選方案中,所述第二預定時間長度可以大於或等於所述第一預定時間長度。
其它備選方案中,可以在第一終端啟動未達到第二預定時間長度時採用其它算法進行擁塞控制,也可以利用第一終端上一次啟動時最後確定的擁塞窗口進行擁塞控制,還可以先利用預設的擁塞窗口進行擁塞控制。
本備選方案的一種實施方式中,還可以設置為當不發生丟包時,採用tcpcubic算法進行擁塞控制;發生丟包時才採用上述步驟s110~s130進行擁塞控制;這樣可以結合主、被動擁塞控制的優勢。在其它實施方式中,可以除了啟動未達到第二預定時間長度時以外,都採用上述步驟s110~s130進行擁塞控制。
實施例二、一種擁塞控制系統,如圖2所示,包括:
計算模塊21,用於計算第一終端和基站之間的吞吐率;
網絡預測模塊22,用於周期性根據所述吞吐率,確定所述第一終端對應的擁塞窗口的大小。
本實施例中,所述計算模塊21是所述系統中負責計算吞吐率的部分,可以是軟體、硬體或兩者的結合。
本實施例中,所述網絡預測模塊22是所述系統中負責確定擁塞窗口的大小的部分,可以是軟體、硬體或兩者的結合。
所述計算模塊21可以但不限於設置於所述第一終端。所述網絡預測模塊22可以但不限於設置於所述第一終端。
本實施例的一種備選方案中,所述網絡預測模塊周期性根據所述吞吐率,確定所述第一終端對應的擁塞窗口的大小可以包括:
所述網絡預測模塊周期性計算當前時刻之前第一預定時間長度內的所 述吞吐率的算術平均數b,確定擁塞窗口的大小w為α×rttmin×b;其中α為預定常數,rttmin為當前時刻之前第一預定時間長度內最小的往返時間。
本備選方案的一種實施方式中,所述第一預定時間長度小於或等於500毫秒,大於或等於計算所述吞吐率的時間間隔;1≤α≤100。
優選地,所述第一預定時間長度可以為100毫秒,α可以為2。
本備選方案的一種實施方式中,所述系統還可以包括:
擁塞處理模塊,用於當已發送給所述第一終端但未收到所述第一終端確認的數據量未達到w時,以b作為發送速率將數據發送給所述第一終端;當已發送給所述第一終端但未收到所述第一終端確認的數據量超過w時,暫停發送數據給所述第一終端。
本實施方式中,所述擁塞處理模塊是所述系統中負責進行擁塞控制的部分,可以是軟體、硬體或兩者的結合。
本實施方式中,所述擁塞處理模塊可以但不限於設置於和第一終端交互的應用伺服器上。當擁塞處理模塊設置於應用伺服器,而計算模塊21和網絡預測模塊22設置於所述第一終端時,擁塞處理模塊需要從所述第一終端獲取擁塞窗口的大小等信息。
本實施例的一種備選方案中,所述的系統還可以包括:
被動控制模塊,用於在所述第一終端啟動未達到第二預定時間長度時,採用傳輸控制協議慢啟動方式進行擁塞控制。
其它實現細節可參見實施例一。
下面用一個實施示例說明本實施例,本實施示例的應用場景如圖3所示,其中,所述第一終端和基站之間交互物理層控制幀,通過基站及中間網關和應用伺服器交互上、下行數據。
所述計算模塊和所述網絡預測模塊設置於所述第一終端。所述擁塞處理模塊設置於所述應用伺服器。所述第一終端將預測帶寬b和擁塞窗口的大小w發送到所述應用伺服器。
所述計算模塊用於實時採集終端與基站通信的物理層參數mcs、rb、tbs,計算吞吐率。
所述網絡預測模塊根據實時計算出的吞吐率,計算當前的預測帶寬b和擁塞窗口的大小w:
計算前t時間內的平均吞吐率(算術平均數)作為預測帶寬b,計算前t時間內最小往返時間rttmin,則擁塞窗口的大小w=α×rttmin×b,t取100ms,α取2。
所述擁塞處理模塊根據預測帶寬b和擁塞窗口的大小w進行發送控制。當發生丟包時,若已發送給第一終端但未收到確認的數據量的大小不超過w(單位:字節),則以b(單位:字節/秒)為發送速率向第一終端發送數據;若已發送給第一終端但未收到確認的數據量的大小超過w,則暫停發送數據給第一終端,等待確認。當沒發生丟包時,可以但不限於採用tcpcubic算法控制發送。由於啟動時,網絡上沒有流量,b和rttmin無法測量計算,因此可以採用tcp慢啟動的算法。
本領域普通技術人員可以理解上述方法中的全部或部分步驟可通過程序來指令相關硬體完成,所述程序可以存儲於計算機可讀存儲介質中,如只讀存儲器、磁碟或光碟等。可選地,上述實施例的全部或部分步驟也可以使用一個或多個集成電路來實現。相應地,上述實施例中的各模塊/單元可以採用硬體的形式實現,也可以採用軟體功能模塊的形式實現。本申請不限制於任何特定形式的硬體和軟體的結合。
當然,本申請還可有其他多種實施例,在不背離本申請精神及其實質的情況下,熟悉本領域的技術人員當可根據本申請作出各種相應的改變和變形,但這些相應的改變和變形都應屬於本申請的權利要求的保護範圍。