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

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

文檔序號:8415529閱讀:903來源:國知局
數(shù)據(jù)接收流量控制方法及其系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)募夹g(shù)領(lǐng)域,特別是涉及一種數(shù)據(jù)接收流量控制方法,以及一種數(shù)據(jù)接收流量控制系統(tǒng)。
【背景技術(shù)】
[0002]目前對于網(wǎng)絡(luò)數(shù)據(jù)接收流量的限速,基本的策略就是主動丟包。然而,在以TCP(Transmiss1n Control Protocol,傳輸控制協(xié)議)流量為主的數(shù)據(jù)傳輸過程中,大量的主動丟包,會帶來以下問題:
[0003]1.由于接收端執(zhí)行大量丟包處理后,大量報(bào)文被丟棄和需要發(fā)送端重傳,會引起網(wǎng)絡(luò)傳輸速率的大幅抖動,增加網(wǎng)絡(luò)的總負(fù)荷;
[0004]2.接收端的應(yīng)用程序由于需要接收的數(shù)據(jù)包丟失,觀察到響應(yīng)的時(shí)延會發(fā)生較大的抖動。

【發(fā)明內(nèi)容】

[0005]針對現(xiàn)有網(wǎng)絡(luò)數(shù)據(jù)傳輸過程中主動丟包過多引發(fā)的問題,本發(fā)明提出一種數(shù)據(jù)接收流量控制方法,減少發(fā)送端主動丟包,提高數(shù)據(jù)傳輸?shù)膸捓寐省?br>[0006]一種數(shù)據(jù)接收流量控制方法,包括以下步驟:
[0007]獲取向?qū)Χ税l(fā)出的待發(fā)送報(bào)文;
[0008]確定本地發(fā)出待發(fā)送報(bào)文的受控實(shí)體,獲取所述受控實(shí)體對應(yīng)的接收令牌桶的令牌數(shù);
[0009]根據(jù)所述接收令牌桶的令牌數(shù)設(shè)置所述待發(fā)送報(bào)文中的通知窗口大小字段,調(diào)整通知窗口大?。?br>[0010]將調(diào)整通知窗口大小之后的所述待發(fā)送報(bào)文發(fā)送給對端。
[0011]本發(fā)明還提供一種數(shù)據(jù)接收流量控制系統(tǒng),同樣可減少發(fā)送端主動丟包,提高數(shù)據(jù)傳輸?shù)膸捓寐省?br>[0012]一種數(shù)據(jù)接收流量控制系統(tǒng),包括:
[0013]發(fā)送報(bào)文獲取模塊,用于獲取向?qū)Χ税l(fā)出的待發(fā)送報(bào)文;
[0014]令牌數(shù)獲取模塊,用于確定本地發(fā)出所述待發(fā)送報(bào)文的受控實(shí)體,獲取所述受控實(shí)體對應(yīng)的接收令牌桶的令牌數(shù);
[0015]通知窗口調(diào)整模塊,用于根據(jù)所述接收令牌桶的令牌數(shù)設(shè)置所述待發(fā)送報(bào)文中的通知窗口大小字段,調(diào)整通知窗口大??;
[0016]發(fā)送模塊,用于將調(diào)整通知窗口大小之后的所述待發(fā)送報(bào)文發(fā)送給對端。
[0017]本發(fā)明的數(shù)據(jù)接收流量控制方法及其系統(tǒng)中,通過向?qū)Χ税l(fā)出的待發(fā)送報(bào)文查找到相應(yīng)發(fā)送的本地受控實(shí)體,每一所述受控實(shí)體都對應(yīng)設(shè)置一個接受令牌桶,所述接收令牌桶的令牌生成速率即為所述受控實(shí)體分配到的數(shù)據(jù)傳輸速率,通過所述接收令牌桶可控制所述受控實(shí)體接收數(shù)據(jù)流量,在所述接收令牌桶沒有令牌時(shí),可能發(fā)生丟包。本發(fā)明根據(jù)所述接收令牌桶的令牌數(shù)設(shè)置所述待發(fā)送報(bào)文中的通知窗口大小字段,調(diào)整通知窗口大小之后,發(fā)送到對端。由于TCP發(fā)送端的發(fā)送窗口,是發(fā)送端的擁塞窗口和對端通知窗口二者中的最小值,因此,發(fā)送端發(fā)送數(shù)據(jù)的速率受到所述通知窗口的限制,減少發(fā)送端發(fā)送速率超過接收令牌桶的令牌生成速率的情況。通過發(fā)送端主動減少發(fā)送速率來降低接收端的主動丟包,減少數(shù)據(jù)丟包和重傳,提高數(shù)據(jù)傳輸?shù)膸捓寐省?br>【附圖說明】
[0018]圖1是本發(fā)明數(shù)據(jù)接收流量控制方法的流程示意圖;
[0019]圖2是本發(fā)明數(shù)據(jù)接收流量控制方法一個優(yōu)選實(shí)施方式中的接收數(shù)據(jù)報(bào)文的流程不意圖;
[0020]圖3是本發(fā)明數(shù)據(jù)接收流量控制系統(tǒng)的結(jié)構(gòu)示意圖;
[0021]圖4是本發(fā)明數(shù)據(jù)接收流量控制系統(tǒng)一個優(yōu)選實(shí)施方式的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0022]請參閱圖1,圖1是本發(fā)明數(shù)據(jù)接收流量控制方法的流程示意圖。
[0023]所述數(shù)據(jù)接收流量控制方法,包括以下步驟:
[0024]S102,獲取向?qū)Χ税l(fā)出的待發(fā)送報(bào)文;
[0025]S104,確定本地發(fā)出所述待發(fā)送報(bào)文的受控實(shí)體,獲取所述受控實(shí)體對應(yīng)的接收令牌桶的令牌數(shù);
[0026]S106,根據(jù)所述接收令牌桶的令牌數(shù)設(shè)置所述待發(fā)送報(bào)文中的通知窗口大小字段,調(diào)整通知窗口大?。?br>[0027]S108,將調(diào)整通知窗口大小之后的所述待發(fā)送報(bào)文發(fā)送給對端。
[0028]本發(fā)明的數(shù)據(jù)接收流量控制方法中,通過向?qū)Χ税l(fā)出的待發(fā)送報(bào)文查找到相應(yīng)發(fā)送的本地受控實(shí)體,每一所述受控實(shí)體都對應(yīng)設(shè)置一個接受令牌桶,所述接收令牌桶的令牌生成速率即為所述受控實(shí)體分配到的數(shù)據(jù)傳輸速率,通過所述接收令牌桶可控制所述受控實(shí)體接收數(shù)據(jù)流量,在所述接收令牌桶沒有令牌時(shí),可能發(fā)生丟包。本發(fā)明根據(jù)所述接收令牌桶的令牌數(shù)設(shè)置所述待發(fā)送報(bào)文中的通知窗口大小字段,調(diào)整通知窗口大小之后,發(fā)送到對端。由于TCP發(fā)送端的發(fā)送窗口,是發(fā)送端的擁塞窗口和對端通知窗口二者中的最小值,因此,發(fā)送端發(fā)送數(shù)據(jù)的速率受到所述通知窗口的限制,減少發(fā)送端發(fā)送速率超過接收令牌桶的令牌生成速率的情況。通過發(fā)送端主動減少發(fā)送速率來降低接收端的主動丟包,減少數(shù)據(jù)丟包和重傳,提高數(shù)據(jù)傳輸?shù)膸捓寐省?br>[0029]其中,所述對端是數(shù)據(jù)傳輸雙方中與本地相對的一端,對于本地接收數(shù)據(jù)的處理方法,對端即為對本地發(fā)送數(shù)據(jù)報(bào)文的發(fā)送端,例如是服務(wù)器或者其他用戶端。在TCP協(xié)議中,發(fā)送端的發(fā)送窗口,是對端的擁塞窗口和對端通知窗口二者中的最小值,因此,發(fā)送端發(fā)送數(shù)據(jù)的速率受到所述通知窗口的限制。
[0030]而在數(shù)據(jù)交互的雙方之間,通常雙方都會有數(shù)據(jù)報(bào)文往來發(fā)送,在步驟S102中,獲取本地向?qū)Χ税l(fā)出的待發(fā)送報(bào)文。
[0031]在步驟S104中,首先根據(jù)所述待發(fā)送報(bào)文確定本地發(fā)出所述待發(fā)送報(bào)文的受控實(shí)體。其中,受控實(shí)體(entity)表示進(jìn)行發(fā)送或接收信息的硬件或軟件進(jìn)程,所述受控實(shí)體既可以是軟件實(shí)體(如一個進(jìn)程),也可以是硬件實(shí)體(如智能輸入/輸出芯片)。
[0032]確定本地發(fā)出所述待發(fā)送報(bào)文的受控實(shí)體時(shí),可以根據(jù)所述待發(fā)送報(bào)文的上下文信息或者報(bào)文本身的某些字段,確定所述待發(fā)送報(bào)文是從哪個本地受控實(shí)體發(fā)出的。
[0033]在一種優(yōu)選實(shí)施方式中,可獲取所述待發(fā)送報(bào)文中的接收實(shí)體標(biāo)記字段,根據(jù)所述接收實(shí)體標(biāo)記字段確定發(fā)出所述待發(fā)送報(bào)文的受控實(shí)體;
[0034]和/或,根據(jù)所述待發(fā)送報(bào)文的上下文信息,確定發(fā)出所述待發(fā)送報(bào)文的受控實(shí)體。
[0035]例如,對于來自虛擬機(jī)的報(bào)文,可以根據(jù)其源MAC地址或者源IP地址,確定它來自哪個虛擬網(wǎng)卡(實(shí)體)。
[0036]當(dāng)本地的受控實(shí)體向?qū)Χ税l(fā)送數(shù)據(jù)報(bào)文時(shí),獲取所述受控實(shí)體對應(yīng)的接收令牌桶的令牌數(shù),即所述接收令牌桶的水位。所述受控實(shí)體的接收令牌桶為預(yù)先創(chuàng)建的,與每個所述受控實(shí)體一一對應(yīng),且具有預(yù)設(shè)的令牌深度和令牌生成速率,所述接收令牌桶的令牌生成速率即為所述受控實(shí)體分配到的數(shù)據(jù)傳輸速率,當(dāng)所述受控實(shí)體接收數(shù)據(jù)時(shí),消耗所述接收令牌桶中的令牌數(shù),在所述接收令牌桶沒有令牌時(shí),可能發(fā)生丟包。因此通過所述接收令牌桶可控制所述受控實(shí)體接收數(shù)據(jù)流量。
[0037]下面通過一個應(yīng)用例說明一個令牌桶的c語言結(jié)構(gòu)體定義,具體如下:
[0038]struct token_bucket {
[0039]uint32_t rate;/* 速率 Kbytes/s*/
[0040]uint64_t depth ;/* 令牌桶深度 */
[0041]uint64_t token ;/* 可用 token 數(shù),單位字節(jié) */
[0042]uint64_t timestamp ;/* 最近一次更新 token 的時(shí)間戳 */
[0043]};
[0044]在一個優(yōu)選實(shí)施方式中,為了使通過通知窗口的調(diào)整指令能夠在所述接收令牌桶溢出之前到達(dá)對端,所述接收令牌桶的深度大于令牌生成速率和RTT (Round Trip Time,往返時(shí)延)的乘積。
[0045]在步驟S104中,獲取所述接收令牌桶的令牌數(shù),即獲取token值,因?yàn)樗鼋邮樟钆仆暗牧钆茢?shù)是以預(yù)定的令牌生成速率不斷增加的,因此,在獲取前,可先對所述接收令牌桶的令牌數(shù)進(jìn)行更新。
[0046]更新令牌數(shù)的方法為:獲取當(dāng)前時(shí)間以及所述接收令牌桶最近一次更新令牌數(shù)的時(shí)間,根據(jù)上述兩個時(shí)間的差值與令牌生成速率的乘積,計(jì)算出新增的令牌數(shù),將所述新增的令牌數(shù)加上最近一次更新令牌數(shù)時(shí)的原有令牌數(shù),即可獲得當(dāng)前時(shí)間的令牌數(shù)。
[0047]步驟S106,在獲取到所述受控實(shí)體對應(yīng)的接收令牌桶的令牌數(shù)之后,根據(jù)所述接收令牌桶的令牌數(shù)設(shè)置所述待發(fā)送報(bào)文中的通知窗口大小字段。
[0048]具體的設(shè)置方式可以為:根據(jù)所述接收令牌桶的令牌數(shù),計(jì)算所述令牌數(shù)的預(yù)設(shè)單調(diào)遞增函數(shù)的取值,根據(jù)所述單調(diào)遞增函數(shù)的取值計(jì)算待發(fā)送報(bào)文中的通知窗口大小字段。
[0049]即使所述通知窗口大小字段的取值大小隨所述接收令牌桶的令牌數(shù)的增大而增大,隨所述接收令牌桶的令牌數(shù)的減小而減小。
[0050]通過上述方式,在所述接收令牌桶的令牌數(shù)不足,即本地接收
當(dāng)前第1頁1 2 3 4 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1