亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

數(shù)據(jù)接收流量控制方法及其系統(tǒng)的制作方法_2

文檔序號:8415529閱讀:來源:國知局
數(shù)據(jù)的速率超過分配的速率時,可以減小發(fā)送給對端的報文中的通知窗口字段大小的取值,從而使對端降低發(fā)送數(shù)據(jù)的速率,通過發(fā)送端主動降低傳輸速率來避免本地主動丟包。
[0051]上述設(shè)置知窗口大小字段的方法中,所述令牌數(shù)的預(yù)設(shè)單調(diào)遞增函數(shù)可以按照調(diào)整控制的需要設(shè)置,在此不一一舉例,僅提供一種較為簡單易用單調(diào)遞增函數(shù)的設(shè)置方式,包括以下步驟:
[0052]根據(jù)所述接收令牌桶中的令牌數(shù)以及所述接收令牌桶的令牌深度,按照下式計算所述單調(diào)遞增函數(shù)的取值:
[0053]new_wnd=window*g (token, depth)
[0054]其中,g(token,depth) =token/depth, token 為所述接收令牌桶的令牌數(shù),depth為所述接收令牌桶的令牌深度,window為所述通知窗口的最大值。
[0055]所述單調(diào)遞增函數(shù)的設(shè)置過程如下:
[0056]首先讀取該受控實(shí)體對應(yīng)的接收令牌桶。根據(jù)所述接收令牌桶的水位(token值)和深度(cbpth),對發(fā)送給對端的TCP報頭中的window值進(jìn)行調(diào)整。調(diào)整函數(shù)記為:
[0057]new_wnd=window*g (token, depth);
[0058]其中,g函數(shù)的值為O到I之間的小數(shù)。為了避免進(jìn)行浮點(diǎn)數(shù)運(yùn)算,引入常數(shù)divisor,將上述計算公式調(diào)整為:
[0059]new_wnd=window*f (token, depth)/divisor;
[0060]其中divisor為一個常數(shù),例如1024。f的值小于等于divisor。
[0061 ] 為了達(dá)到發(fā)送端發(fā)送數(shù)據(jù)的速率和本地接收令牌桶中的令牌數(shù)的動態(tài)平衡,對于f函數(shù)的選取,要求是token的單調(diào)遞增函數(shù),token越接近depth, f應(yīng)該越接近divisor ;token越小,f越接近O。最簡單的f函數(shù)是:
[0062]f (token, depth)=token*1024/depth;
[0063]因此,g (token, depth) =token/depth。
[0064]在一個優(yōu)選實(shí)施方式中,在計算出所述通知窗口大小字段的取值之后,進(jìn)一步包括以下步驟:將所述通知窗口大小字段的取值對齊到TCP的最大分段長度的整數(shù)倍。
[0065]把new_wnd重新對齊到MSS (Max Segment Size, TCP的最大分段長度)的整數(shù)倍,可有效避免愚笨窗口綜合癥。
[0066]在另一個優(yōu)選實(shí)施方式中,計算出所述通知窗口大小字段的取值之后,如果計算得到的通知窗口大小字段的取值為0,則將所述通知窗口大小字段的取值設(shè)置為等于TCP的最大分段長度。
[0067]上述方式中,如果原來的window取值不為O,而新計算出的new_wnd取值變成了0,則將其調(diào)整為MSS,避免關(guān)閉窗口(通知窗口為0)可能帶來的潛在后果。
[0068]在步驟S108中,將調(diào)整通知窗口大小之后的所述待發(fā)送報文發(fā)送給對端。
[0069]即調(diào)整后的new_wnd值,替換TCP報頭中的window字段后,返回原發(fā)送流程。
[0070]本發(fā)明的數(shù)據(jù)接收流量控制方法,通過在接收端主機(jī)上對本機(jī)發(fā)送數(shù)據(jù)報文的處理,來控制對端的發(fā)送速率。對于受控實(shí)體是接收端本機(jī)進(jìn)程或進(jìn)程組(如LXCcontainer)的情況,可以嵌入到本機(jī)的TCP協(xié)議發(fā)送流程中。對于受控實(shí)體是虛擬機(jī)的情況,可以在報文從虛擬機(jī)的虛擬網(wǎng)卡出來后,到進(jìn)入物理機(jī)的網(wǎng)卡發(fā)送隊列之前進(jìn)行。
[0071]本發(fā)明在接收端主機(jī)上針對每個受控實(shí)體,設(shè)立一個獨(dú)立的接收令牌桶,所述接收令牌桶產(chǎn)生令牌的速率就是所述受控實(shí)體的數(shù)據(jù)傳輸速率配額,所述接收令牌桶具有固定的深度。根據(jù)所述接收令牌桶的水位(令牌數(shù)量)動態(tài)調(diào)整所有從該受控實(shí)體發(fā)出的TCP數(shù)據(jù)分段中的通知窗口大小,從而控制對端發(fā)送數(shù)據(jù)速率。
[0072]當(dāng)所述接收令牌桶的水位低,則說明目前TCP數(shù)據(jù)輸入流量速率過高,消耗令牌的速率超過了生成令牌的速率,需要減小TCP通知窗口 ;而減小TCP通知窗口,會降低對端的數(shù)據(jù)發(fā)送速率,從而使接收端令牌桶的水位上漲。通過這種相互制約的動態(tài)平衡,來穩(wěn)定控制入流量的速率。通過接收令牌桶的水位和通知窗口之間的動態(tài)平衡,可平穩(wěn)而準(zhǔn)確地控制受控實(shí)體的總TCP數(shù)據(jù)輸入流量速率。
[0073]本發(fā)明的數(shù)據(jù)接收流量控制方法中根據(jù)接收令牌桶的水位調(diào)節(jié)通知窗口大小的方法可與接收端的主動丟包處理技術(shù)配合使用。
[0074]請參閱圖2,圖2是本發(fā)明數(shù)據(jù)接收流量控制方法一個優(yōu)選實(shí)施方式中的接收數(shù)據(jù)報文的流程示意圖。
[0075]在本實(shí)施方式中,所述數(shù)據(jù)接收流量控制方法還包括步驟:
[0076]S202,接收對端發(fā)送的報文;
[0077]S204,查找接收所述報文的受控實(shí)體;
[0078]S206,更新所述受控實(shí)體對應(yīng)的接收令牌桶的令牌數(shù);
[0079]S208,根據(jù)所述接收令牌桶的令牌數(shù)執(zhí)行所述報文的接收處理。
[0080]其中,在步驟S204,可以根據(jù)對端發(fā)送的報文中攜帶的相關(guān)信息,或者按照預(yù)設(shè)的匹配規(guī)則或者對照表查找接收所述報文的受控實(shí)體。確定接收的報文屬于哪個虛擬受控實(shí)體,由報文到受控實(shí)體的映射關(guān)系決定,所述映射關(guān)系由受控實(shí)體的形式和劃分策略決定,本領(lǐng)域技術(shù)人員可以通過現(xiàn)有的方式實(shí)現(xiàn),在此不再贅述。
[0081]在S206中,更新所述受控實(shí)體對應(yīng)的接收令牌桶的令牌數(shù)的步驟可以通過上面記載的更新方法實(shí)現(xiàn),即獲取當(dāng)前時間以及所述接收令牌桶最近一次更新令牌數(shù)的時間,根據(jù)上述兩個時間的差值與令牌生成速率的乘積,計算出新增的令牌數(shù),將所述新增的令牌數(shù)加上最近一次更新令牌數(shù)時的原有令牌數(shù),從而獲得當(dāng)前時間的令牌數(shù)。
[0082]更新令牌數(shù)實(shí)現(xiàn)的c語言結(jié)構(gòu)體定義如下:
[0083]token+=rate* (當(dāng)前時間-timestamp) ;/* 加上新產(chǎn)生的 token*/
[0084]token=min (depth, token) ;/* 如果 token 超過桶的深度則溢出 */
[0085]tamestamp=當(dāng)前時間;
[0086]在步驟S208中,根據(jù)所述接收令牌桶的令牌數(shù)執(zhí)行所述報文的接收處理。在一個實(shí)施例中處理的方式為:
[0087]判斷更新后的所述接收令牌桶的令牌數(shù)是否大于所述報文的長度,如果大于,則將所述接收令牌桶的令牌數(shù)減去所述報文的長度,然后將所述報文交給對應(yīng)的受控實(shí)體;否則,對所述報文進(jìn)行丟包處理。
[0088]S卩,判斷token數(shù)量是否大于等于報文長度。如果token數(shù)量不足,則將該報文標(biāo)記為紅色,進(jìn)行相應(yīng)的處理,一般為丟包。報文處理結(jié)束。
[0089]如果token數(shù)量大于等于報文長度,則從token里面扣掉報文長度,把報文交還給原有處理流程。
[0090]本發(fā)明的數(shù)據(jù)接收流量控制方法與接收端的主動丟包處理技術(shù)配合使用,將主動丟包的數(shù)量從15%降到了不到1%,從而大大減少了主動丟包帶來的負(fù)面效果,并且使速率控制更準(zhǔn)確,更平滑。
[0091]請參閱圖3,圖3是本發(fā)明數(shù)據(jù)接收流量控制系統(tǒng)的結(jié)構(gòu)示意圖。
[0092]所述數(shù)據(jù)接收流量控制系統(tǒng),包括:
[0093]發(fā)送報文獲取模塊10,用于獲取向?qū)Χ税l(fā)出的待發(fā)送報文;
[0094]令牌數(shù)獲取模塊20,用于確定本地發(fā)出所述待發(fā)送報文的受控實(shí)體,獲取所述受控實(shí)體對應(yīng)的接收令牌桶的令牌數(shù);
[0095]通知窗口調(diào)整模塊30,用于根據(jù)所述接收令牌桶的令牌數(shù)設(shè)置所述待發(fā)送報文中的通知窗口大小字段,調(diào)整通知窗口大小;
[0096]發(fā)送模塊40,用于將調(diào)整通知窗口大小之后的所述待發(fā)送報文發(fā)送給對端。
[0097]本發(fā)明的數(shù)據(jù)接收流量控制系統(tǒng)中,通過向?qū)Χ税l(fā)出的待發(fā)送報文查找到相應(yīng)發(fā)送的本地受控實(shí)體,每一所述受控實(shí)體都對應(yīng)設(shè)置一個接受令牌桶,所述接收令牌桶的令牌生成速率即為所述受控實(shí)體分配到的數(shù)據(jù)傳輸速率,通過所述接收令牌桶可控制所述受控實(shí)體接收數(shù)據(jù)流量,在所述接收令牌桶沒有令牌時,可能發(fā)生丟包。本發(fā)明根據(jù)所述接收令牌桶的令牌數(shù)設(shè)置所述待發(fā)送報文中的通知窗口大小字段,調(diào)整通知窗口大小之后,發(fā)送到對端。由于TCP發(fā)送端的發(fā)送窗口,是發(fā)送端的擁塞窗口和對端通知窗口二者中的最小值,因此,發(fā)送端發(fā)送數(shù)據(jù)的速率受到所述通知窗口的限制,減少發(fā)送端發(fā)送速率超過接收令牌桶的令牌生成速率的情況。通過發(fā)送端主動減少發(fā)送速率來降低接收端的主動丟包,減少數(shù)據(jù)丟包和重傳,提高數(shù)據(jù)傳輸?shù)膸捓寐省?br>[0098]其中,所述對端是數(shù)據(jù)傳輸雙方中與本地相對的一端,對于本地接收數(shù)據(jù)的處理方法,對端即為對本地發(fā)送數(shù)據(jù)報文的發(fā)送端,例如是服務(wù)器或者其他用戶
當(dāng)前第2頁1 2 3 4 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1