数据接收流量控制方法及其系统的制作方法

文档序号:8415529阅读:784来源:国知局
数据接收流量控制方法及其系统的制作方法
【技术领域】
[0001]本发明涉及网络数据传输的技术领域,特别是涉及一种数据接收流量控制方法,以及一种数据接收流量控制系统。
【背景技术】
[0002]目前对于网络数据接收流量的限速,基本的策略就是主动丢包。然而,在以TCP(Transmiss1n Control Protocol,传输控制协议)流量为主的数据传输过程中,大量的主动丢包,会带来以下问题:
[0003]1.由于接收端执行大量丢包处理后,大量报文被丢弃和需要发送端重传,会引起网络传输速率的大幅抖动,增加网络的总负荷;
[0004]2.接收端的应用程序由于需要接收的数据包丢失,观察到响应的时延会发生较大的抖动。

【发明内容】

[0005]针对现有网络数据传输过程中主动丢包过多引发的问题,本发明提出一种数据接收流量控制方法,减少发送端主动丢包,提高数据传输的带宽利用率。
[0006]一种数据接收流量控制方法,包括以下步骤:
[0007]获取向对端发出的待发送报文;
[0008]确定本地发出待发送报文的受控实体,获取所述受控实体对应的接收令牌桶的令牌数;
[0009]根据所述接收令牌桶的令牌数设置所述待发送报文中的通知窗口大小字段,调整通知窗口大小;
[0010]将调整通知窗口大小之后的所述待发送报文发送给对端。
[0011]本发明还提供一种数据接收流量控制系统,同样可减少发送端主动丢包,提高数据传输的带宽利用率。
[0012]一种数据接收流量控制系统,包括:
[0013]发送报文获取模块,用于获取向对端发出的待发送报文;
[0014]令牌数获取模块,用于确定本地发出所述待发送报文的受控实体,获取所述受控实体对应的接收令牌桶的令牌数;
[0015]通知窗口调整模块,用于根据所述接收令牌桶的令牌数设置所述待发送报文中的通知窗口大小字段,调整通知窗口大小;
[0016]发送模块,用于将调整通知窗口大小之后的所述待发送报文发送给对端。
[0017]本发明的数据接收流量控制方法及其系统中,通过向对端发出的待发送报文查找到相应发送的本地受控实体,每一所述受控实体都对应设置一个接受令牌桶,所述接收令牌桶的令牌生成速率即为所述受控实体分配到的数据传输速率,通过所述接收令牌桶可控制所述受控实体接收数据流量,在所述接收令牌桶没有令牌时,可能发生丢包。本发明根据所述接收令牌桶的令牌数设置所述待发送报文中的通知窗口大小字段,调整通知窗口大小之后,发送到对端。由于TCP发送端的发送窗口,是发送端的拥塞窗口和对端通知窗口二者中的最小值,因此,发送端发送数据的速率受到所述通知窗口的限制,减少发送端发送速率超过接收令牌桶的令牌生成速率的情况。通过发送端主动减少发送速率来降低接收端的主动丢包,减少数据丢包和重传,提高数据传输的带宽利用率。
【附图说明】
[0018]图1是本发明数据接收流量控制方法的流程示意图;
[0019]图2是本发明数据接收流量控制方法一个优选实施方式中的接收数据报文的流程不意图;
[0020]图3是本发明数据接收流量控制系统的结构示意图;
[0021]图4是本发明数据接收流量控制系统一个优选实施方式的结构示意图。
【具体实施方式】
[0022]请参阅图1,图1是本发明数据接收流量控制方法的流程示意图。
[0023]所述数据接收流量控制方法,包括以下步骤:
[0024]S102,获取向对端发出的待发送报文;
[0025]S104,确定本地发出所述待发送报文的受控实体,获取所述受控实体对应的接收令牌桶的令牌数;
[0026]S106,根据所述接收令牌桶的令牌数设置所述待发送报文中的通知窗口大小字段,调整通知窗口大小;
[0027]S108,将调整通知窗口大小之后的所述待发送报文发送给对端。
[0028]本发明的数据接收流量控制方法中,通过向对端发出的待发送报文查找到相应发送的本地受控实体,每一所述受控实体都对应设置一个接受令牌桶,所述接收令牌桶的令牌生成速率即为所述受控实体分配到的数据传输速率,通过所述接收令牌桶可控制所述受控实体接收数据流量,在所述接收令牌桶没有令牌时,可能发生丢包。本发明根据所述接收令牌桶的令牌数设置所述待发送报文中的通知窗口大小字段,调整通知窗口大小之后,发送到对端。由于TCP发送端的发送窗口,是发送端的拥塞窗口和对端通知窗口二者中的最小值,因此,发送端发送数据的速率受到所述通知窗口的限制,减少发送端发送速率超过接收令牌桶的令牌生成速率的情况。通过发送端主动减少发送速率来降低接收端的主动丢包,减少数据丢包和重传,提高数据传输的带宽利用率。
[0029]其中,所述对端是数据传输双方中与本地相对的一端,对于本地接收数据的处理方法,对端即为对本地发送数据报文的发送端,例如是服务器或者其他用户端。在TCP协议中,发送端的发送窗口,是对端的拥塞窗口和对端通知窗口二者中的最小值,因此,发送端发送数据的速率受到所述通知窗口的限制。
[0030]而在数据交互的双方之间,通常双方都会有数据报文往来发送,在步骤S102中,获取本地向对端发出的待发送报文。
[0031]在步骤S104中,首先根据所述待发送报文确定本地发出所述待发送报文的受控实体。其中,受控实体(entity)表示进行发送或接收信息的硬件或软件进程,所述受控实体既可以是软件实体(如一个进程),也可以是硬件实体(如智能输入/输出芯片)。
[0032]确定本地发出所述待发送报文的受控实体时,可以根据所述待发送报文的上下文信息或者报文本身的某些字段,确定所述待发送报文是从哪个本地受控实体发出的。
[0033]在一种优选实施方式中,可获取所述待发送报文中的接收实体标记字段,根据所述接收实体标记字段确定发出所述待发送报文的受控实体;
[0034]和/或,根据所述待发送报文的上下文信息,确定发出所述待发送报文的受控实体。
[0035]例如,对于来自虚拟机的报文,可以根据其源MAC地址或者源IP地址,确定它来自哪个虚拟网卡(实体)。
[0036]当本地的受控实体向对端发送数据报文时,获取所述受控实体对应的接收令牌桶的令牌数,即所述接收令牌桶的水位。所述受控实体的接收令牌桶为预先创建的,与每个所述受控实体一一对应,且具有预设的令牌深度和令牌生成速率,所述接收令牌桶的令牌生成速率即为所述受控实体分配到的数据传输速率,当所述受控实体接收数据时,消耗所述接收令牌桶中的令牌数,在所述接收令牌桶没有令牌时,可能发生丢包。因此通过所述接收令牌桶可控制所述受控实体接收数据流量。
[0037]下面通过一个应用例说明一个令牌桶的c语言结构体定义,具体如下:
[0038]struct token_bucket {
[0039]uint32_t rate;/* 速率 Kbytes/s*/
[0040]uint64_t depth ;/* 令牌桶深度 */
[0041]uint64_t token ;/* 可用 token 数,单位字节 */
[0042]uint64_t timestamp ;/* 最近一次更新 token 的时间戳 */
[0043]};
[0044]在一个优选实施方式中,为了使通过通知窗口的调整指令能够在所述接收令牌桶溢出之前到达对端,所述接收令牌桶的深度大于令牌生成速率和RTT (Round Trip Time,往返时延)的乘积。
[0045]在步骤S104中,获取所述接收令牌桶的令牌数,即获取token值,因为所述接收令牌桶的令牌数是以预定的令牌生成速率不断增加的,因此,在获取前,可先对所述接收令牌桶的令牌数进行更新。
[0046]更新令牌数的方法为:获取当前时间以及所述接收令牌桶最近一次更新令牌数的时间,根据上述两个时间的差值与令牌生成速率的乘积,计算出新增的令牌数,将所述新增的令牌数加上最近一次更新令牌数时的原有令牌数,即可获得当前时间的令牌数。
[0047]步骤S106,在获取到所述受控实体对应的接收令牌桶的令牌数之后,根据所述接收令牌桶的令牌数设置所述待发送报文中的通知窗口大小字段。
[0048]具体的设置方式可以为:根据所述接收令牌桶的令牌数,计算所述令牌数的预设单调递增函数的取值,根据所述单调递增函数的取值计算待发送报文中的通知窗口大小字段。
[0049]即使所述通知窗口大小字段的取值大小随所述接收令牌桶的令牌数的增大而增大,随所述接收令牌桶的令牌数的减小而减小。
[0050]通过上述方式,在所述接收令牌桶的令牌数不足,即本地接收
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1