CN104734985A - 数据接收流量控制方法及其系统 - Google Patents
数据接收流量控制方法及其系统 Download PDFInfo
- Publication number
- CN104734985A CN104734985A CN201310717514.4A CN201310717514A CN104734985A CN 104734985 A CN104734985 A CN 104734985A CN 201310717514 A CN201310717514 A CN 201310717514A CN 104734985 A CN104734985 A CN 104734985A
- Authority
- CN
- China
- Prior art keywords
- token
- message
- sent
- notification window
- reception
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/64—Hybrid switching systems
- H04L12/6418—Hybrid transport
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
Abstract
本发明提供一种数据接收流量控制方法及其系统,包括获取向对端发出的待发送报文;确定本地发出所述待发送报文的受控实体,获取所述受控实体对应的接收令牌桶的令牌数;根据所述接收令牌桶的令牌数设置所述待发送报文中的通知窗口大小字段,调整通知窗口大小;将调整通知窗口大小之后的所述待发送报文发送给对端。通过根据所述接收令牌桶的令牌数设置发送到对端的报文中的通知窗口大小,因此,发送端发送数据的速率受到所述通知窗口的限制,减少发送端发送速率超过接收令牌桶的令牌生成速率的情况。通过发送端主动减少发送速率来降低接收端的主动丢包,减少数据丢包和重传,提高数据传输的带宽利用率。
Description
技术领域
本发明涉及网络数据传输的技术领域,特别是涉及一种数据接收流量控制方法,以及一种数据接收流量控制系统。
背景技术
目前对于网络数据接收流量的限速,基本的策略就是主动丢包。然而,在以TCP(Transmission Control Protocol,传输控制协议)流量为主的数据传输过程中,大量的主动丢包,会带来以下问题:
1.由于接收端执行大量丢包处理后,大量报文被丢弃和需要发送端重传,会引起网络传输速率的大幅抖动,增加网络的总负荷;
2.接收端的应用程序由于需要接收的数据包丢失,观察到响应的时延会发生较大的抖动。
发明内容
针对现有网络数据传输过程中主动丢包过多引发的问题,本发明提出一种数据接收流量控制方法,减少发送端主动丢包,提高数据传输的带宽利用率。
一种数据接收流量控制方法,包括以下步骤:
获取向对端发出的待发送报文;
确定本地发出待发送报文的受控实体,获取所述受控实体对应的接收令牌桶的令牌数;
根据所述接收令牌桶的令牌数设置所述待发送报文中的通知窗口大小字段,调整通知窗口大小;
将调整通知窗口大小之后的所述待发送报文发送给对端。
本发明还提供一种数据接收流量控制系统,同样可减少发送端主动丢包,提高数据传输的带宽利用率。
一种数据接收流量控制系统,包括:
发送报文获取模块,用于获取向对端发出的待发送报文;
令牌数获取模块,用于确定本地发出所述待发送报文的受控实体,获取所述受控实体对应的接收令牌桶的令牌数;
通知窗口调整模块,用于根据所述接收令牌桶的令牌数设置所述待发送报文中的通知窗口大小字段,调整通知窗口大小;
发送模块,用于将调整通知窗口大小之后的所述待发送报文发送给对端。
本发明的数据接收流量控制方法及其系统中,通过向对端发出的待发送报文查找到相应发送的本地受控实体,每一所述受控实体都对应设置一个接受令牌桶,所述接收令牌桶的令牌生成速率即为所述受控实体分配到的数据传输速率,通过所述接收令牌桶可控制所述受控实体接收数据流量,在所述接收令牌桶没有令牌时,可能发生丢包。本发明根据所述接收令牌桶的令牌数设置所述待发送报文中的通知窗口大小字段,调整通知窗口大小之后,发送到对端。由于TCP发送端的发送窗口,是发送端的拥塞窗口和对端通知窗口二者中的最小值,因此,发送端发送数据的速率受到所述通知窗口的限制,减少发送端发送速率超过接收令牌桶的令牌生成速率的情况。通过发送端主动减少发送速率来降低接收端的主动丢包,减少数据丢包和重传,提高数据传输的带宽利用率。
附图说明
图1是本发明数据接收流量控制方法的流程示意图;
图2是本发明数据接收流量控制方法一个优选实施方式中的接收数据报文的流程示意图;
图3是本发明数据接收流量控制系统的结构示意图;
图4是本发明数据接收流量控制系统一个优选实施方式的结构示意图。
具体实施方式
请参阅图1,图1是本发明数据接收流量控制方法的流程示意图。
所述数据接收流量控制方法,包括以下步骤:
S102,获取向对端发出的待发送报文;
S104,确定本地发出所述待发送报文的受控实体,获取所述受控实体对应的接收令牌桶的令牌数;
S106,根据所述接收令牌桶的令牌数设置所述待发送报文中的通知窗口大小字段,调整通知窗口大小;
S108,将调整通知窗口大小之后的所述待发送报文发送给对端。
本发明的数据接收流量控制方法中,通过向对端发出的待发送报文查找到相应发送的本地受控实体,每一所述受控实体都对应设置一个接受令牌桶,所述接收令牌桶的令牌生成速率即为所述受控实体分配到的数据传输速率,通过所述接收令牌桶可控制所述受控实体接收数据流量,在所述接收令牌桶没有令牌时,可能发生丢包。本发明根据所述接收令牌桶的令牌数设置所述待发送报文中的通知窗口大小字段,调整通知窗口大小之后,发送到对端。由于TCP发送端的发送窗口,是发送端的拥塞窗口和对端通知窗口二者中的最小值,因此,发送端发送数据的速率受到所述通知窗口的限制,减少发送端发送速率超过接收令牌桶的令牌生成速率的情况。通过发送端主动减少发送速率来降低接收端的主动丢包,减少数据丢包和重传,提高数据传输的带宽利用率。
其中,所述对端是数据传输双方中与本地相对的一端,对于本地接收数据的处理方法,对端即为对本地发送数据报文的发送端,例如是服务器或者其他用户端。在TCP协议中,发送端的发送窗口,是对端的拥塞窗口和对端通知窗口二者中的最小值,因此,发送端发送数据的速率受到所述通知窗口的限制。
而在数据交互的双方之间,通常双方都会有数据报文往来发送,在步骤S102中,获取本地向对端发出的待发送报文。
在步骤S104中,首先根据所述待发送报文确定本地发出所述待发送报文的受控实体。其中,受控实体(entity)表示进行发送或接收信息的硬件或软件进程,所述受控实体既可以是软件实体(如一个进程),也可以是硬件实体(如智能输入/输出芯片)。
确定本地发出所述待发送报文的受控实体时,可以根据所述待发送报文的上下文信息或者报文本身的某些字段,确定所述待发送报文是从哪个本地受控实体发出的。
在一种优选实施方式中,可获取所述待发送报文中的接收实体标记字段,根据所述接收实体标记字段确定发出所述待发送报文的受控实体;
和/或,根据所述待发送报文的上下文信息,确定发出所述待发送报文的受控实体。
例如,对于来自虚拟机的报文,可以根据其源MAC地址或者源IP地址,确定它来自哪个虚拟网卡(实体)。
当本地的受控实体向对端发送数据报文时,获取所述受控实体对应的接收令牌桶的令牌数,即所述接收令牌桶的水位。所述受控实体的接收令牌桶为预先创建的,与每个所述受控实体一一对应,且具有预设的令牌深度和令牌生成速率,所述接收令牌桶的令牌生成速率即为所述受控实体分配到的数据传输速率,当所述受控实体接收数据时,消耗所述接收令牌桶中的令牌数,在所述接收令牌桶没有令牌时,可能发生丢包。因此通过所述接收令牌桶可控制所述受控实体接收数据流量。
下面通过一个应用例说明一个令牌桶的c语言结构体定义,具体如下:
struct token_bucket{
uint32_t rate;/*速率Kbytes/s*/
uint64_t depth;/*令牌桶深度*/
uint64_t token;/*可用token数,单位字节*/
uint64_t timestamp;/*最近一次更新token的时间戳*/
};
在一个优选实施方式中,为了使通过通知窗口的调整指令能够在所述接收令牌桶溢出之前到达对端,所述接收令牌桶的深度大于令牌生成速率和RTT(Round Trip Time,往返时延)的乘积。
在步骤S104中,获取所述接收令牌桶的令牌数,即获取token值,因为所述接收令牌桶的令牌数是以预定的令牌生成速率不断增加的,因此,在获取前,可先对所述接收令牌桶的令牌数进行更新。
更新令牌数的方法为:获取当前时间以及所述接收令牌桶最近一次更新令牌数的时间,根据上述两个时间的差值与令牌生成速率的乘积,计算出新增的令牌数,将所述新增的令牌数加上最近一次更新令牌数时的原有令牌数,即可获得当前时间的令牌数。
步骤S106,在获取到所述受控实体对应的接收令牌桶的令牌数之后,根据所述接收令牌桶的令牌数设置所述待发送报文中的通知窗口大小字段。
具体的设置方式可以为:根据所述接收令牌桶的令牌数,计算所述令牌数的预设单调递增函数的取值,根据所述单调递增函数的取值计算待发送报文中的通知窗口大小字段。
即使所述通知窗口大小字段的取值大小随所述接收令牌桶的令牌数的增大而增大,随所述接收令牌桶的令牌数的减小而减小。
通过上述方式,在所述接收令牌桶的令牌数不足,即本地接收数据的速率超过分配的速率时,可以减小发送给对端的报文中的通知窗口字段大小的取值,从而使对端降低发送数据的速率,通过发送端主动降低传输速率来避免本地主动丢包。
上述设置知窗口大小字段的方法中,所述令牌数的预设单调递增函数可以按照调整控制的需要设置,在此不一一举例,仅提供一种较为简单易用单调递增函数的设置方式,包括以下步骤:
根据所述接收令牌桶中的令牌数以及所述接收令牌桶的令牌深度,按照下式计算所述单调递增函数的取值:
new_wnd=window*g(token,depth)
其中,g(token,depth)=token/depth,token为所述接收令牌桶的令牌数,depth为所述接收令牌桶的令牌深度,window为所述通知窗口的最大值。
所述单调递增函数的设置过程如下:
首先读取该受控实体对应的接收令牌桶。根据所述接收令牌桶的水位(token值)和深度(depth),对发送给对端的TCP报头中的window值进行调整。调整函数记为:
new_wnd=window*g(token,depth);
其中,g函数的值为0到1之间的小数。为了避免进行浮点数运算,引入常数divisor,将上述计算公式调整为:
new_wnd=window*f(token,depth)/divisor;
其中divisor为一个常数,例如1024。f的值小于等于divisor。
为了达到发送端发送数据的速率和本地接收令牌桶中的令牌数的动态平衡,对于f函数的选取,要求是token的单调递增函数,token越接近depth,f应该越接近divisor;token越小,f越接近0。最简单的f函数是:
f(token,depth)=token*1024/depth;
因此,g(token,depth)=token/depth。
在一个优选实施方式中,在计算出所述通知窗口大小字段的取值之后,进一步包括以下步骤:将所述通知窗口大小字段的取值对齐到TCP的最大分段长度的整数倍。
把new_wnd重新对齐到MSS(Max Segment Size,TCP的最大分段长度)的整数倍,可有效避免愚笨窗口综合症。
在另一个优选实施方式中,计算出所述通知窗口大小字段的取值之后,如果计算得到的通知窗口大小字段的取值为0,则将所述通知窗口大小字段的取值设置为等于TCP的最大分段长度。
上述方式中,如果原来的window取值不为0,而新计算出的new_wnd取值变成了0,则将其调整为MSS,避免关闭窗口(通知窗口为0)可能带来的潜在后果。
在步骤S108中,将调整通知窗口大小之后的所述待发送报文发送给对端。
即调整后的new_wnd值,替换TCP报头中的window字段后,返回原发送流程。
本发明的数据接收流量控制方法,通过在接收端主机上对本机发送数据报文的处理,来控制对端的发送速率。对于受控实体是接收端本机进程或进程组(如LXC container)的情况,可以嵌入到本机的TCP协议发送流程中。对于受控实体是虚拟机的情况,可以在报文从虚拟机的虚拟网卡出来后,到进入物理机的网卡发送队列之前进行。
本发明在接收端主机上针对每个受控实体,设立一个独立的接收令牌桶,所述接收令牌桶产生令牌的速率就是所述受控实体的数据传输速率配额,所述接收令牌桶具有固定的深度。根据所述接收令牌桶的水位(令牌数量)动态调整所有从该受控实体发出的TCP数据分段中的通知窗口大小,从而控制对端发送数据速率。
当所述接收令牌桶的水位低,则说明目前TCP数据输入流量速率过高,消耗令牌的速率超过了生成令牌的速率,需要减小TCP通知窗口;而减小TCP通知窗口,会降低对端的数据发送速率,从而使接收端令牌桶的水位上涨。通过这种相互制约的动态平衡,来稳定控制入流量的速率。通过接收令牌桶的水位和通知窗口之间的动态平衡,可平稳而准确地控制受控实体的总TCP数据输入流量速率。
本发明的数据接收流量控制方法中根据接收令牌桶的水位调节通知窗口大小的方法可与接收端的主动丢包处理技术配合使用。
请参阅图2,图2是本发明数据接收流量控制方法一个优选实施方式中的接收数据报文的流程示意图。
在本实施方式中,所述数据接收流量控制方法还包括步骤:
S202,接收对端发送的报文;
S204,查找接收所述报文的受控实体;
S206,更新所述受控实体对应的接收令牌桶的令牌数;
S208,根据所述接收令牌桶的令牌数执行所述报文的接收处理。
其中,在步骤S204,可以根据对端发送的报文中携带的相关信息,或者按照预设的匹配规则或者对照表查找接收所述报文的受控实体。确定接收的报文属于哪个虚拟受控实体,由报文到受控实体的映射关系决定,所述映射关系由受控实体的形式和划分策略决定,本领域技术人员可以通过现有的方式实现,在此不再赘述。
在S206中,更新所述受控实体对应的接收令牌桶的令牌数的步骤可以通过上面记载的更新方法实现,即获取当前时间以及所述接收令牌桶最近一次更新令牌数的时间,根据上述两个时间的差值与令牌生成速率的乘积,计算出新增的令牌数,将所述新增的令牌数加上最近一次更新令牌数时的原有令牌数,从而获得当前时间的令牌数。
更新令牌数实现的c语言结构体定义如下:
token+=rate*(当前时间-timestamp);/*加上新产生的token*/
token=min(depth,token);/*如果token超过桶的深度则溢出*/
tamestamp=当前时间;
在步骤S208中,根据所述接收令牌桶的令牌数执行所述报文的接收处理。在一个实施例中处理的方式为:
判断更新后的所述接收令牌桶的令牌数是否大于所述报文的长度,如果大于,则将所述接收令牌桶的令牌数减去所述报文的长度,然后将所述报文交给对应的受控实体;否则,对所述报文进行丢包处理。
即,判断token数量是否大于等于报文长度。如果token数量不足,则将该报文标记为红色,进行相应的处理,一般为丢包。报文处理结束。
如果token数量大于等于报文长度,则从token里面扣掉报文长度,把报文交还给原有处理流程。
本发明的数据接收流量控制方法与接收端的主动丢包处理技术配合使用,将主动丢包的数量从15%降到了不到1%,从而大大减少了主动丢包带来的负面效果,并且使速率控制更准确,更平滑。
请参阅图3,图3是本发明数据接收流量控制系统的结构示意图。
所述数据接收流量控制系统,包括:
发送报文获取模块10,用于获取向对端发出的待发送报文;
令牌数获取模块20,用于确定本地发出所述待发送报文的受控实体,获取所述受控实体对应的接收令牌桶的令牌数;
通知窗口调整模块30,用于根据所述接收令牌桶的令牌数设置所述待发送报文中的通知窗口大小字段,调整通知窗口大小;
发送模块40,用于将调整通知窗口大小之后的所述待发送报文发送给对端。
本发明的数据接收流量控制系统中,通过向对端发出的待发送报文查找到相应发送的本地受控实体,每一所述受控实体都对应设置一个接受令牌桶,所述接收令牌桶的令牌生成速率即为所述受控实体分配到的数据传输速率,通过所述接收令牌桶可控制所述受控实体接收数据流量,在所述接收令牌桶没有令牌时,可能发生丢包。本发明根据所述接收令牌桶的令牌数设置所述待发送报文中的通知窗口大小字段,调整通知窗口大小之后,发送到对端。由于TCP发送端的发送窗口,是发送端的拥塞窗口和对端通知窗口二者中的最小值,因此,发送端发送数据的速率受到所述通知窗口的限制,减少发送端发送速率超过接收令牌桶的令牌生成速率的情况。通过发送端主动减少发送速率来降低接收端的主动丢包,减少数据丢包和重传,提高数据传输的带宽利用率。
其中,所述对端是数据传输双方中与本地相对的一端,对于本地接收数据的处理方法,对端即为对本地发送数据报文的发送端,例如是服务器或者其他用户端。在TCP协议中,发送端的发送窗口,是对端的拥塞窗口和对端通知窗口二者中的最小值,因此,发送端发送数据的速率受到所述通知窗口的限制。
而在数据交互的双方之间,通常双方都会有数据报文往来发送,所述发送报文获取模块10获取本地向对端发出的待发送报文。
所述令牌数获取模块20首先根据所述待发送报文确定本地发出所述待发送报文的受控实体。其中,受控实体(entity)表示进行发送或接收信息的硬件或软件进程,所述受控实体既可以是软件实体(如一个进程),也可以是硬件实体(如智能输入/输出芯片)。
所述令牌数获取模块20确定本地发出所述待发送报文的受控实体时,可以根据所述待发送报文的上下文信息或者报文本身的某些字段,确定所述待发送报文是从哪个本地受控实体发出的。
在一种优选实施方式中,所述令牌数获取模块20可获取所述待发送报文中的接收实体标记字段,根据所述接收实体标记字段确定发出所述待发送报文的受控实体;
和/或,所述令牌数获取模块20根据所述待发送报文的上下文信息,确定发出所述待发送报文的受控实体。
例如,对于来自虚拟机的报文,可以根据其源MAC地址或者源IP地址,确定它来自哪个虚拟网卡(实体)。
当本地的受控实体向对端发送数据报文时,所述令牌数获取模块20获取所述受控实体对应的接收令牌桶的令牌数,即所述接收令牌桶的水位。所述受控实体的接收令牌桶为预先创建的,与每个所述受控实体一一对应,且具有预设的令牌深度和令牌生成速率,所述接收令牌桶的令牌生成速率即为所述受控实体分配到的数据传输速率,当所述受控实体接收数据时,消耗所述接收令牌桶中的令牌数,在所述接收令牌桶没有令牌时,可能发生丢包。因此通过所述接收令牌桶可控制所述受控实体接收数据流量。
在一个优选实施方式中,为了使通过通知窗口的调整指令能够在所述接收令牌桶溢出之前到达对端,所述接收令牌桶的深度大于令牌生成速率和RTT(Round Trip Time,往返时延)的乘积。
所述令牌数获取模块20获取所述接收令牌桶的令牌数,即获取token值,因为所述接收令牌桶的令牌数是以预定的令牌生成速率不断增加的,因此,在获取前,可先对所述接收令牌桶的令牌数进行更新。
更新令牌数的方法为:获取当前时间以及所述接收令牌桶最近一次更新令牌数的时间,根据上述两个时间的差值与令牌生成速率的乘积,计算出新增的令牌数,将所述新增的令牌数加上最近一次更新令牌数时的原有令牌数,即可获得当前时间的令牌数。
所述通知窗口调整模块30在所述令牌数获取模块20获取到所述受控实体对应的接收令牌桶的令牌数之后,根据所述接收令牌桶的令牌数设置所述待发送报文中的通知窗口大小字段。
具体的设置方式可以为:根据所述接收令牌桶的令牌数,计算所述令牌数的预设单调递增函数的取值,根据所述单调递增函数的取值计算待发送报文中的通知窗口大小字段。
即使所述通知窗口大小字段的取值大小随所述接收令牌桶的令牌数的增大而增大,随所述接收令牌桶的令牌数的减小而减小。
通过上述方式,在所述接收令牌桶的令牌数不足,即本地接收数据的速率超过分配的速率时,可以减小发送给对端的报文中的通知窗口字段大小的取值,从而使对端降低发送数据的速率,通过发送端主动降低传输速率来避免本地主动丢包。
上述设置知窗口大小字段的方法中,所述令牌数的预设单调递增函数可以按照调整控制的需要设置,在此不一一举例,仅提供一种较为简单易用单调递增函数的设置方式:
所述通知窗口调整模块30根据所述接收令牌桶中的令牌数以及所述接收令牌桶的令牌深度,按照下式计算所述单调递增函数的取值:
new_wnd=window*g(token,depth)
其中,g(token,depth)=token/depth,token为所述接收令牌桶的令牌数,depth为所述接收令牌桶的令牌深度,window为所述通知窗口的最大值。
所述单调递增函数的设置过程如下:
首先读取该受控实体对应的接收令牌桶。根据所述接收令牌桶的水位(token值)和深度(depth),对发送给对端的TCP报头中的window值进行调整。调整函数记为:
new_wnd=window*g(token,depth);
其中,g函数的值为0到1之间的小数。为了避免进行浮点数运算,引入常数divisor,将上述计算公式调整为:
new_wnd=window*f(token,depth)/divisor;
其中divisor为一个常数,例如1024。f的值小于等于divisor。
为了达到发送端发送数据的速率和本地接收令牌桶中的令牌数的动态平衡,对于f函数的选取,要求是token的单调递增函数,token越接近depth,f应该越接近divisor;token越小,f越接近0。最简单的f函数是:
f(token,depth)=token*1024/depth;
因此,g(token,depth)=token/depth。
在一个优选实施方式中,所述通知窗口调整模块30在计算出所述通知窗口大小字段的取值之后,进一步将所述通知窗口大小字段的取值对齐到TCP的最大分段长度的整数倍。
把new_wnd重新对齐到MSS(Max Segment Size,TCP的最大分段长度)的整数倍,可有效避免愚笨窗口综合症。
在另一个优选实施方式中,所述通知窗口调整模块30计算出所述通知窗口大小字段的取值之后,如果计算得到的通知窗口大小字段的取值为0,则将所述通知窗口大小字段的取值设置为等于TCP的最大分段长度。
上述方式中,如果原来的window取值不为0,而新计算出的new_wnd取值变成了0,则将其调整为MSS,避免关闭窗口(通知窗口为0)可能带来的潜在后果。
最后,所述发送模块40将调整通知窗口大小之后的所述待发送报文发送给对端。
即调整后的new_wnd值,替换TCP报头中的window字段后,返回原发送流程。
本发明的数据接收流量控制系统,通过在接收端主机上对本机发送数据报文的处理,来控制对端的发送速率。对于受控实体是接收端本机进程或进程组(如LXC container)的情况,可以嵌入到本机的TCP协议发送流程中。对于受控实体是虚拟机的情况,可以在报文从虚拟机的虚拟网卡出来后,到进入物理机的网卡发送队列之前进行。
本发明在接收端主机上针对每个受控实体,设立一个独立的接收令牌桶,所述接收令牌桶产生令牌的速率就是所述受控实体的数据传输速率配额,所述接收令牌桶具有固定的深度。根据所述接收令牌桶的水位(令牌数量)动态调整所有从该受控实体发出的TCP数据分段中的通知窗口大小,从而控制对端发送数据速率。
当所述接收令牌桶的水位低,则说明目前TCP数据输入流量速率过高,消耗令牌的速率超过了生成令牌的速率,需要减小TCP通知窗口;而减小TCP通知窗口,会降低对端的数据发送速率,从而使接收端令牌桶的水位上涨。通过这种相互制约的动态平衡,来稳定控制入流量的速率。通过接收令牌桶的水位和通知窗口之间的动态平衡,可平稳而准确地控制受控实体的总TCP数据输入流量速率。
本发明的数据接收流量控制系统可与接收端的主动丢包处理技术结合。
请参阅图4,图4是本发明数据接收流量控制系统一个优选实施方式中数据接收部分的结构示意图。
在本实施方式中,所述数据接收流量控制系统还包括:
接收模块50,用于接收对端发送的报文;
查找模块60,用于查找接收所述报文的受控实体;
更新模块70,用于更新所述受控实体对应的接收令牌桶的令牌数;
接收处理模块80,用于根据所述接收令牌桶的令牌数执行所述报文的接收处理。
其中,所述查找模块60可以根据对端发送的报文中携带的相关信息,或者按照预设的匹配规则或者对照表查找接收所述报文的受控实体。确定接收的报文属于哪个虚拟受控实体,由报文到受控实体的映射关系决定,所述映射关系由受控实体的形式和划分策略决定,本领域技术人员可以通过现有的方式实现,在此不再赘述。
所述更新模块70更新所述受控实体对应的接收令牌桶的令牌数的步骤可以通过上面记载的更新方法实现,即获取当前时间以及所述接收令牌桶最近一次更新令牌数的时间,根据上述两个时间的差值与令牌生成速率的乘积,计算出新增的令牌数,将所述新增的令牌数加上最近一次更新令牌数时的原有令牌数,从而获得当前时间的令牌数。
所述接收处理模块80根据所述接收令牌桶的令牌数执行所述报文的接收处理。在一个实施例中处理的方式为:
判断更新后的所述接收令牌桶的令牌数是否大于所述报文的长度,如果大于,则将所述接收令牌桶的令牌数减去所述报文的长度,然后将所述报文交给对应的受控实体;否则,对所述报文进行丢包处理。
即,判断token数量是否大于等于报文长度。如果token数量不足,则将该报文标记为红色,进行相应的处理,一般为丢包。报文处理结束。
如果token数量大于等于报文长度,则从token里面扣掉报文长度,把报文交还给原有处理流程。
本发明的数据接收流量控制系统与接收端的主动丢包处理技术结合,将主动丢包的数量从15%降到了不到1%,从而大大减少了主动丢包带来的负面效果,并且使速率控制更准确,更平滑。
本领域普通技术人员可以理解实现上述实施方式中的全部或部分流程,以及对应的系统,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各实施方式的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-OnlyMemory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (16)
1.一种数据接收流量控制方法,其特征在于,包括以下步骤:
获取向对端发出的待发送报文;
确定本地发出所述待发送报文的受控实体,获取所述受控实体对应的接收令牌桶的令牌数;
根据所述接收令牌桶的令牌数设置所述待发送报文中的通知窗口大小字段,调整通知窗口大小;
将调整通知窗口大小之后的所述待发送报文发送给对端。
2.如权利要求1所述的数据接收流量控制方法,其特征在于,确定发出所述待发送报文的受控实体的步骤包括:
获取所述待发送报文中的接收实体标记字段,根据所述接收实体标记字段确定发出所述待发送报文的受控实体;
和/或,
根据所述待发送报文的上下文信息,确定发出所述待发送报文的受控实体。
3.如权利要求1所述的数据接收流量控制方法,其特征在于,根据所述接收令牌桶的令牌数设置所述待发送报文中的通知窗口大小字段的步骤包括:
根据所述接收令牌桶的令牌数,计算所述令牌数的预设单调递增函数的取值,根据所述单调递增函数的取值设置待发送报文中的通知窗口大小字段。
4.如权利要求3所述的数据接收流量控制方法,其特征在于,根据所述接收令牌桶的令牌数,计算所述令牌数的预设单调递增函数的取值的步骤包括:
根据所述接收令牌桶中的令牌数以及所述接收令牌桶的令牌深度,按照下式计算所述单调递增函数的取值:
new_wnd=window*g(token,depth)
其中,g(token,depth)=token/depth,token为所述接收令牌桶的令牌数,depth为所述接收令牌桶的令牌深度,window为所述通知窗口的最大值。
5.如权利要求4所述的数据接收流量控制方法,其特征在于,计算出所述通知窗口大小字段的取值之后,进一步包括以下步骤:
将所述通知窗口大小字段的取值对齐到TCP的最大分段长度的整数倍。
6.如权利要求4所述的数据接收流量控制方法,其特征在于,计算出所述通知窗口大小字段的取值之后,进一步包括以下步骤:
如果计算得到的通知窗口大小字段的取值为0,则将所述通知窗口大小字段的取值设置为等于TCP的最大分段长度。
7.如权利要求1至6任意一项所述的数据接收流量控制方法,其特征在于,还包括以下步骤:
接收对端发送的报文;
查找接收所述报文的受控实体;
更新所述受控实体对应的接收令牌桶的令牌数;
根据所述接收令牌桶的令牌数执行所述报文的接收处理。
8.如权利要求7所述的数据接收流量控制方法,其特征在于,根据所述接收令牌桶的令牌数执行所述报文的接收处理的步骤包括:
判断更新后的所述接收令牌桶的令牌数是否大于所述报文的长度,如果大于,则将所述接收令牌桶的令牌数减去所述报文的长度,然后将所述报文交给对应的受控实体;否则,对所述报文进行丢包处理。
9.一种数据接收流量控制系统,其特征在于,包括:
发送报文获取模块,用于获取向对端发出的待发送报文;
令牌数获取模块,用于确定本地发出所述待发送报文的受控实体,获取所述受控实体对应的接收令牌桶的令牌数;
通知窗口调整模块,用于根据所述接收令牌桶的令牌数设置所述待发送报文中的通知窗口大小字段,调整通知窗口大小;
发送模块,用于将调整通知窗口大小之后的所述待发送报文发送给对端。
10.如权利要求9所述的数据接收流量控制系统,其特征在于:
所述令牌数获取模块获取所述待发送报文中的接收实体标记字段,根据所述接收实体标记字段确定发出所述待发送报文的受控实体;
和/或,
所述令牌数获取模块根据所述待发送报文的上下文信息,确定发出所述待发送报文的受控实体。
11.如权利要求9所述的数据接收流量控制系统,其特征在于:
所述通知窗口调整模块根据所述接收令牌桶的令牌数,计算所述令牌数的预设单调递增函数的取值,根据所述单调递增函数的取值设置待发送报文中的通知窗口大小字段。
12.如权利要求11所述的数据接收流量控制系统,其特征在于:
所述通知窗口调整模块根据所述接收令牌桶中的令牌数以及所述接收令牌桶的令牌深度,按照下式计算所述单调递增函数的取值:
new_wnd=window*g(token,depth)
其中,g(token,depth)=token/depth,token为所述接收令牌桶的令牌数,depth为所述接收令牌桶的令牌深度,window为所述通知窗口的最大值。
13.如权利要求12所述的数据接收流量控制系统,其特征在于:
所述通知窗口调整模块还用于在计算出所述通知窗口大小字段的取值之后,将所述通知窗口大小字段的取值对齐到TCP的最大分段长度的整数倍。
14.如权利要求12所述的数据接收流量控制系统,其特征在于:
所述通知窗口调整模块还用于在计算出所述通知窗口大小字段的取值之后,如果计算得到的通知窗口大小字段的取值为0,则将所述通知窗口大小字段的取值设置为等于TCP的最大分段长度。
15.如权利要求9至14任意一项所述的数据接收流量控制系统,其特征在于,所述数据接收流量控制系统还包括:
接收模块,用于接收对端发送的报文;
查找模块,用于查找接收所述报文的受控实体;
更新模块,用于更新所述受控实体对应的接收令牌桶的令牌数;
接收处理模块,用于根据所述接收令牌桶的令牌数执行所述报文的接收处理。
16.如权利要求15所述的数据接收流量控制系统,其特征在于:
所述接收处理模块判断更新后的所述接收令牌桶的令牌数是否大于所述报文的长度,如果大于,则将所述接收令牌桶的令牌数减去所述报文的长度,然后将所述报文交给对应的受控实体;否则,对所述报文进行丢包处理。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310717514.4A CN104734985A (zh) | 2013-12-23 | 2013-12-23 | 数据接收流量控制方法及其系统 |
PCT/CN2014/094623 WO2015096692A1 (zh) | 2013-12-23 | 2014-12-23 | 数据接收流量控制方法及其系统、计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310717514.4A CN104734985A (zh) | 2013-12-23 | 2013-12-23 | 数据接收流量控制方法及其系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104734985A true CN104734985A (zh) | 2015-06-24 |
Family
ID=53458432
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310717514.4A Pending CN104734985A (zh) | 2013-12-23 | 2013-12-23 | 数据接收流量控制方法及其系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN104734985A (zh) |
WO (1) | WO2015096692A1 (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105245468A (zh) * | 2015-09-08 | 2016-01-13 | 天翼爱音乐文化科技有限公司 | 流量限制方法和系统 |
CN108712348A (zh) * | 2018-05-18 | 2018-10-26 | 王逸人 | 流量控制方法、系统、设备及计算机可读存储介质 |
CN110515535A (zh) * | 2018-05-22 | 2019-11-29 | 杭州海康威视数字技术股份有限公司 | 硬盘读写控制方法、装置、电子设备及存储介质 |
CN110868359A (zh) * | 2019-11-15 | 2020-03-06 | 中国人民解放军国防科技大学 | 一种网络拥塞控制方法 |
WO2022116178A1 (zh) * | 2020-12-04 | 2022-06-09 | 华为技术有限公司 | 一种tcp mss调整方法、装置及系统 |
CN116582496A (zh) * | 2023-07-13 | 2023-08-11 | 广东睿江云计算股份有限公司 | 令牌桶丢包优化方法及系统 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109194539B (zh) * | 2018-08-13 | 2022-01-28 | 中国平安人寿保险股份有限公司 | 数据管控方法、装置、计算机设备及存储介质 |
CN109246026B (zh) * | 2018-08-13 | 2022-05-03 | 中国平安人寿保险股份有限公司 | 流量管控方法、装置、设备及存储介质 |
CN111385214B (zh) * | 2018-12-27 | 2023-11-17 | 阿里巴巴集团控股有限公司 | 一种流量控制方法、装置及设备 |
CN111726300A (zh) * | 2020-06-15 | 2020-09-29 | 哈工大机器人(合肥)国际创新研究院 | 一种数据发送方法及装置 |
TWI746060B (zh) | 2020-07-15 | 2021-11-11 | 國立陽明交通大學 | 網路交換器的流量管理方法 |
CN114710447B (zh) * | 2020-12-16 | 2024-05-03 | 百寻信息科技(上海)有限公司 | 一种均衡广告流量控制方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1512710A (zh) * | 2002-12-27 | 2004-07-14 | ��ʽ����Ntt����Ħ | 发射控制方法和系统 |
CN1638356A (zh) * | 2003-12-26 | 2005-07-13 | 株式会社Ntt都科摩 | 执行数据传输控制的发射机设备和中继设备 |
US20070076621A1 (en) * | 2005-09-30 | 2007-04-05 | Lucent Technologies Inc. | Method for policing-based adjustments to transmission window size |
WO2012126509A1 (en) * | 2011-03-21 | 2012-09-27 | Nokia Siemens Networks Oy | Method and apparatus to improve tcp performance in mobile networks |
CN103297346A (zh) * | 2013-06-12 | 2013-09-11 | 北京航空航天大学 | 一种基于ecn机制的tcp友好速率控制方法 |
-
2013
- 2013-12-23 CN CN201310717514.4A patent/CN104734985A/zh active Pending
-
2014
- 2014-12-23 WO PCT/CN2014/094623 patent/WO2015096692A1/zh active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1512710A (zh) * | 2002-12-27 | 2004-07-14 | ��ʽ����Ntt����Ħ | 发射控制方法和系统 |
CN1638356A (zh) * | 2003-12-26 | 2005-07-13 | 株式会社Ntt都科摩 | 执行数据传输控制的发射机设备和中继设备 |
US20070076621A1 (en) * | 2005-09-30 | 2007-04-05 | Lucent Technologies Inc. | Method for policing-based adjustments to transmission window size |
WO2012126509A1 (en) * | 2011-03-21 | 2012-09-27 | Nokia Siemens Networks Oy | Method and apparatus to improve tcp performance in mobile networks |
CN103548296A (zh) * | 2011-03-21 | 2014-01-29 | 诺基亚西门子通信公司 | 用于改进移动网络中的tcp性能的方法和装置 |
CN103297346A (zh) * | 2013-06-12 | 2013-09-11 | 北京航空航天大学 | 一种基于ecn机制的tcp友好速率控制方法 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105245468A (zh) * | 2015-09-08 | 2016-01-13 | 天翼爱音乐文化科技有限公司 | 流量限制方法和系统 |
CN108712348A (zh) * | 2018-05-18 | 2018-10-26 | 王逸人 | 流量控制方法、系统、设备及计算机可读存储介质 |
CN110515535A (zh) * | 2018-05-22 | 2019-11-29 | 杭州海康威视数字技术股份有限公司 | 硬盘读写控制方法、装置、电子设备及存储介质 |
CN110515535B (zh) * | 2018-05-22 | 2021-01-01 | 杭州海康威视数字技术股份有限公司 | 硬盘读写控制方法、装置、电子设备及存储介质 |
CN110868359A (zh) * | 2019-11-15 | 2020-03-06 | 中国人民解放军国防科技大学 | 一种网络拥塞控制方法 |
CN110868359B (zh) * | 2019-11-15 | 2023-03-24 | 中国人民解放军国防科技大学 | 一种网络拥塞控制方法 |
WO2022116178A1 (zh) * | 2020-12-04 | 2022-06-09 | 华为技术有限公司 | 一种tcp mss调整方法、装置及系统 |
CN116582496A (zh) * | 2023-07-13 | 2023-08-11 | 广东睿江云计算股份有限公司 | 令牌桶丢包优化方法及系统 |
CN116582496B (zh) * | 2023-07-13 | 2024-04-19 | 广东睿江云计算股份有限公司 | 令牌桶丢包优化方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
WO2015096692A1 (zh) | 2015-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104734985A (zh) | 数据接收流量控制方法及其系统 | |
US10841233B2 (en) | Data plane for processing function scalability | |
US11558302B2 (en) | Data transmission method and apparatus | |
WO2020125521A1 (zh) | 控制网络拥塞的方法、装置及系统 | |
CN109660467B (zh) | 用于控制流量的方法和装置 | |
WO2008013651A1 (en) | Glitch-free media streaming | |
CN114157603A (zh) | 拥塞控制方法、装置、设备及存储介质 | |
US8472469B2 (en) | Configurable network socket aggregation to enable segmentation offload | |
WO2020063299A1 (zh) | 统计活跃流数目的方法、网络设备和系统 | |
US7457845B2 (en) | Method and system for TCP/IP using generic buffers for non-posting TCP applications | |
WO2021103706A1 (zh) | 控制数据包发送方法、模型训练方法、装置及系统 | |
CN102055677A (zh) | 减少网络拥塞的方法及设备 | |
CN114513472A (zh) | 网络拥塞控制方法及装置 | |
CN111698275B (zh) | 数据处理方法、装置及设备 | |
CN113364701B (zh) | 基于rtt的结合比例积分微分控制的拥塞控制方法及设备 | |
CN112491736B (zh) | 一种拥塞控制方法、装置、电子设备及存储介质 | |
WO2021057068A1 (zh) | Rdma数据流控方法、系统、电子设备及可读存储介质 | |
WO2023093256A1 (zh) | 一种参数调整方法和装置 | |
US9876728B2 (en) | Packet processing apparatus, packet processing method, and packet processing system | |
Ahmad et al. | loss based congestion control module for health centers deployed by using advanced IoT based SDN communication networks | |
US9678881B2 (en) | Data distribution device and data distribution method | |
US9182941B2 (en) | Flow control with buffer reclamation | |
TW201019138A (en) | Probabilistic lossy counting | |
CN112308233A (zh) | 用于处理数据的方法、设备和计算机程序产品 | |
US11683250B2 (en) | Managing proxy throughput between paired transport layer connections |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20150624 |
|
RJ01 | Rejection of invention patent application after publication |