一种报文发送方法、TCP代理以及TCP客户端与流程

文档序号:12829041阅读:258来源:国知局
一种报文发送方法、TCP代理以及TCP客户端与流程

本发明涉及通信领域,尤其涉及一种报文发送方法、tcp代理以及tcp客户端。



背景技术:

网络拥塞是指到达通信网络中某一部分的报文(packet)数量过多,使得该部分网络来不及处理所述报文,以致引起这部分网络乃至整个网络性能下降的现象,严重时甚至会使网络通信业务陷入停顿,这种现象被称为拥塞。拥塞是一种持续过载的网络状态,此时用户对网络资源(包括链路带宽、存储空间和处理器处理能力等)的需求超过了固有的容量。

现有技术中,主要是由基于传输控制协议(英文全称:transmissioncontrolprotocol,英文简称:tcp)的应用通过tcp滑动窗口机制来控制进入网络中的报文的数量。当网络出现拥塞后,tcp拥塞控制按照加性增/乘性减(英文全称:additive-increasemultiplicative-decrease,英文简称:aimd)算法不断调整发送窗口来适应网络质量。

由于tcp滑动窗口机制的参与者仅仅是单个tcp连接的发送端和接收端,它只考虑了接收端的接收能力,而没有考虑到网络的传输能力,容易出现网络瞬间进入过多的报文,出现流量突发。如当网络中间设备,例如路由器等,比较繁忙或者是发生拥塞时,此时基于滑动窗口的报文发送或者接收能力超过了网络传输能力,网络来不及处理过多的报文,即没有对报文的发送速率进行控制,此时,窗口内的报文就会被网络设备丢弃,网络传输质量变差,最终造成tcp吞吐量下降。



技术实现要素:

本发明实施例提供了一种报文发送方法、tcp代理以及tcp客户端,用于有效地避免网络瞬间进入过多的报文,提高tcp吞吐量。

有鉴于此,第一方面,本发明实施例提供一种报文发送方法,包括:

tcp代理向tcp客户端发送m个报文后,接收tcp客户端反馈的m个报文的n个tcp响应报文,tcp代理在接收到n个tcp响应报文之后,可以从这些tcp响应报文中确定样本tcp响应报文,再根据每个样本tcp响应报文计算tcp代理和tcp客户端之间的tcp连接的样本传输带宽。

tcp代理根据计算得到的样本传输带宽确定估算带宽样本集,根据估算带宽样本集确定估算带宽,根据估算带宽确定目标带宽,根据目标带宽确定可用令牌token数,最后根据可用token数控制报文的发送。

本发明实施例中,报文是否会被发送出去是由tcp代理进行控制,具体表现为:报文是否被发送由token数来确定,而该token数又是由目标带宽所确定的,故可以有效地避免网络瞬间进入过多的报文,提高tcp吞吐量。

优选的,本发明实施例中,tcp代理根据目标带宽确定可用令牌token数,最后根据可用token数控制报文的发送有以下几种可能的实现方式,具体如下:

一种实现方式中,tcp代理根据目标带宽确定可用令牌token数,最后根据可用token数控制报文的发送包括:

tcp代理可以根据目标带宽设置token数目增长速率,再确定按照token数目增长速率获得的token的数目是否达到预置数值,若达到,则向tcp客户端发送所述报文。

在本实现方式中,tcp代理对报文的发送进行控制具体通过根据所述目标带宽确定token数目增长速率,确定按照所述token数目增长速率获得的token的数目是否达到预置数值,若达到,tcp代理才向所述tcp客户端发送所述报文。

即本发明实施例中,提供了一种tcp代理对报文的发送进行控制的具体实现方式,用于有效地避免网络瞬间进入过多的报文,提高tcp吞吐量。

在一种可能的设计中,上述描述的报文发送方法中,还可以包括:

tcp代理可以设置一个发送定时器,并启动该发送定时器,当该发送定时器定时达到预置时长时,则执行确定按照token数目增长速率获得的token的数目是否达到预置数值的步骤。

本发明实施例中,当tcp代理确定按照token数目增长速率获得的token 的数目未达到预置数值时,需要被发送的报文会缓存在tcp代理侧套接字socket缓冲区中等待被发送,需要等待触发发送报文的指令的到来,即,tcp代理需要等待上次报文已经发送成功时tcp客户端反馈的确认报文(英文全称:acknowledgement,英文简称:ack),此时tcp代理才会再次执行确定按照token数目增长速率增长的token的数目是否达到预置数值的步骤,但是,由于网络故障或其它原因通信,常常会导致ack往返时间(英文名称:round-triptime,英文简称:rtt)太长,在这种情况下,即使token的数目已经达到预置数值,缓冲区中的数据也会长时间无法发送出去,此时为了避免这种情况的出现,本发明实施例中,tcp代理通过设置一个发送定时器,只要该发送定时器定时达到预置时长时,就会执行确定按照token数目增长速率获得的token的数目是否达到预置数值的步骤,并当token的数目达到预置数值时,则tcp代理才向tcp客户端发送报文。即可以有效地避免了出现套接字socket缓冲区中的数据长时间无法发送出去的情况。

在一种可能的设计中,该报文发送方法还可以包括:

tcp代理可以设置token资源队列以及token资源队列的最大深度,其中,token资源队列用于存放tcp代理按照token数目增长速率获得的token,最大深度用于指示token资源队列能存放的按照token数目增长速率获得的token的最大数。

本发明实施例中,token资源队列用于存放tcp代理按照token数目增长速率获得的token,最大深度用于指示token资源队列能存放的按照token数目增长速率获得的token的最大数。在实际应用中,一方面,在一定的时间周期内,若没有报文需要被tcp代理发送,此时按照token数目增长速率会生成出较多的token,而该token资源队列的最大深度约束了token增长不可能超过一定的阈值,另一方面所带来的作用是,token资源队列的最大深度起到一个缓冲作用,即当一段时间周期内tcp代理没有报文需要发送时,token资源队列可以保存一定数量的token,此时,若突然有大量报文需要发送时,可以最大的提高允许被发送的报文数量,最终达到发送报文的相对速率比较均匀的效果。

在一种可能的设计中,tcp代理根据每个样本tcp响应报文计算tcp代 理和tcp客户端之间的tcp连接的样本传输带宽具体为:

对于每个样本tcp响应报文,tcp代理可以根据样本tcp响应报文对应的报文的发送时间、样本tcp响应报文的接收时间,以及对应的报文的长度计算出tcp连接的样本传输带宽。

在一种可能的设计中,tcp代理根据估算带宽确定目标带宽之前还可以包括:

tcp代理可以确定tcp客户端之间的tcp连接的业务类型,接着获取策略配置信息,其中,策略配置信息包括目标带宽的调整比例与业务类型的对应关系,该策略配置信息由用户通过tcp代理提供的产品配置界面进行设置,之后可以根据业务类型与策略配置信息确定目标带宽的调整比例,再根据估算带宽以及策略配置信息确定目标带宽;

此时,tcp代理根据估算带宽以及策略配置信息确定目标带宽具体为:

tcp代理按照以下公式计算得到目标带宽:

目标带宽=目标带宽的调整比例×估算带宽。

本发明实施例中,tcp代理可以接收用户通过tcp代理提供的产品配置界面输入策略配置信息,其中,策略配置信息可以包括目标带宽的调整比例与业务类型的对应关系,进一步的,该标带宽的调整比例具体可以为目标带宽的浮动上限值或目标带宽的浮动下限值或目标带宽的调整百分比等。即在本发明实施例中,目标带宽不仅仅只根据由tcp代理确定的估算带宽所确定,还综合考虑了根据tcp代理与tcp客户端之间的tcp连接业务类型的需要进行目标带宽的确定,在实际应用中,可以根据实际的业务类型需求情况,比如视频类业务或图片类业务等业务类型,通过人工方式来选择输入对应的策略配置信息。tcp代理通过用户输入的策略配置信息以及估算带宽确定的目标带宽,可以使得设置的token数目增长速率更加合理,更加准确,在实际应用中,可以更加有效地避免网络瞬间进入过多的报文,提高tcp吞吐量。

另一种实现方式中,tcp代理对报文的发送进行控制包括:

tcp代理可以将目标带宽发送至tcp客户端,以使得tcp客户端根据目标带宽设置token数目增长速率,并确定按照token数目增长速率获得的token的数目是否达到预置数值,若达到,则发送报文。

本实现方式中,tcp代理将目标带宽发送至tcp客户端,以使得tcp客户端根据目标带宽设置token数目增长速率,并确定按照token数目增长速率获得的token的数目是否达到预置数值,若达到,tcp客户端才发送报文。即提供了一种tcp代理对报文的发送进行控制另一种具体的实现方式,用于有效地避免网络瞬间进入过多的报文,提高tcp吞吐量。

第二方面,本发明实施例提供了一种报文发送方法,包括:

tcp客户端可以接收tcp代理发送的目标带宽,其中,目标带宽由tcp代理根据估算带宽确定,而估算带宽由tcp代理根据估算带宽样本集确定,估算带宽样本集由tcp代理根据样本传输带宽确定,样本传输带宽由tcp代理根据每个样本tcp响应报文计算tcp代理和tcp客户端之间的tcp连接得到,样本tcp响应报文为n个tcp响应报文中的至少一个,n个tcp响应报文为tcp客户端接收到tcp代理发送的m个报文后反馈至tcp代理的报文,接着tcp客户端根据目标带宽设置token数目增长速率,最后确定按照token数目增长速率获得的token的数目是否达到预置数值,若达到,则该tcp客户端才发送报文。

在一种可能的设计中,该报文发送方法还包括:

tcp客户端可以设置发送定时器并启动该发送定时器,当发送定时器定时达到预置时长时,则执行tcp客户端确定当前token的数目是否达到预置数值的步骤。

当tcp客户端确定按照token数目增长速率获得的token的数目未达到预置数值时,需要被发送的报文会缓存在tcp客户端侧套接字socket缓冲区中等待被发送,需要等待触发发送报文的指令的到来,即,tcp客户端需要等待上次报文已经发送成功时反馈回来的ack,此时tcp客户端才会再次执行确定按照token数目增长速率增长的token的数目是否达到预置数值的步骤,但是,由于网络故障或其它原因通信,常常会导致ack往返时间rtt太长,在这种情况下,即使token的数目已经达到预置数值,tcp客户端侧套接字socket缓冲区中的数据也会长时间无法发送出去,此时为了避免这种情况的出现,本发明实施例中,tcp客户端通过设置一个发送定时器,只要该发送定时器定时达到预置时长时,就会执行确定按照token数目增长速率获得的token 的数目是否达到预置数值的步骤,并当token的数目达到预置数值时,则tcp客户端发送报文。即可以有效地避免了出现缓冲区中的数据长时间无法发送出去的情况。

在一种可能的设计中,该报文发送方法还可以包括:

tcp客户端可以设置token资源队列以及token资源队列的最大深度,其中,token资源队列用于存放按照token数目增长速率获得的token,最大深度用于指示token资源队列能存放的按照token数目增长速率获得的token的最大数。

本发明实施例中,token资源队列用于存放按照token数目增长速率获得的token,最大深度用于指示token资源队列能存放的按照token数目增长速率获得的token的最大数。在实际应用中,一方面,在一定的时间周期内,若tcp客户端没有报文需要发送,此时按照token数目增长速率会生成出较多的令token,而该token资源队列的最大深度约束了token增长不可能超过一定的阈值,另一方面所带来的作用是,token资源队列的最大深度起到一个缓冲作用,即当一段时间周期内tcp客户端没有报文需要发送时,token资源队列可以保存一定数量的token,此时,若突然有大量报文需要发送时,可以最大的提高允许被发送的报文数量,最终达到发送报文的相对速率比较均匀的效果。

在一种可能的设计中,目标带宽由tcp代理根据估算带宽以及策略配置信息得到,其中策略配置信息具体可以包括目标带宽的调整比例与业务类型的对应关系,该策略配置信息可以通过tcp代理提供的产品配置界面进行设置。进一步的,该标带宽的调整比例具体可以为目标带宽的浮动上限值或目标带宽的浮动下限值或目标带宽的调整百分比等。

即在本发明实施例中,目标带宽不仅仅只根据由tcp代理确定的估算带宽所确定,还综合考虑了根据tcp代理与tcp客户端之间的tcp连接业务类型的需要进行目标带宽的确定,可以使得tcp客户端设置的token数目增长速率更加合理,更加准确,在实际应用中,可以更加有效地避免网络瞬间进入过多的报文,提高tcp吞吐量。

第三方面,本发明实施例提供了一种tcp代理,该tcp代理具有实现上 述方法设计中tcp代理行为的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。所述模块可以是软件和/或硬件。

在一种可能的设计中,该tcp代理包括:

发送模块,用于向tcp客户端发送m个报文;

接收模块,用于接收tcp客户端发送的m个报文的n个tcp响应报文;

处理模块,用于根据接收模块接收的每个样本tcp响应报文计算tcp代理和tcp客户端之间的tcp连接的样本传输带宽,样本tcp响应报文为n个tcp响应报文中的至少一个,根据样本传输带宽确定估算带宽样本集,估算带宽样本集包括根据每个样本tcp响应报文计算得到的样本传输带宽,根据估算带宽样本集确定估算带宽,根据估算带宽确定目标带宽,根据目标带宽确定可用token数,根据可用token数控制报文的发送。

在一种可能的设计中,tcp代理的结构中包括发送器、接收器以及处理器,所述发送器、用于向tcp客户端发送m个报文,所述接收器,用于接收tcp客户端发送的m个报文的n个tcp响应报文,所述处理器,用于根据接收器接收的每个样本tcp响应报文计算tcp代理和tcp客户端之间的tcp连接的样本传输带宽,样本tcp响应报文为n个tcp响应报文中的至少一个,根据样本传输带宽确定估算带宽样本集,估算带宽样本集包括根据每个样本tcp响应报文计算得到的样本传输带宽,根据估算带宽样本集确定估算带宽,根据估算带宽确定目标带宽,根据目标带宽确定可用令牌token数,根据可用token数控制报文的发送。

第四方面,本发明实施例提供了一种tcp客户端,该tcp客户端具有实现上述方法设计中tcp客户端行为的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。

在一种可能的设计中,该tcp客户端包括:

接收模块,用于接收tcp代理发送的目标带宽,目标带宽由tcp代理根据估算带宽确定,估算带宽由tcp代理根据估算带宽样本集确定,估算带宽样本集由tcp代理根据样本传输带宽确定,样本传输带宽由tcp代理根据每 个样本tcp响应报文计算tcp代理和tcp客户端之间的tcp连接得到,样本tcp响应报文为n个tcp响应报文中的至少一个,n个tcp响应报文为tcp客户端接收到tcp代理发送的m个报文后反馈至tcp代理的报文;

处理模块,用于根据目标带宽设置token数目增长速率,确定按照token数目增长速率获得的token的数目是否达到预置数值;

发送模块,用于若处理模块确定按照token数目增长速率获得的token的数目达到预置数值,则发送报文。

在一种可能的设计中,tcp客户端的结构中包括接收器、处理器以及发送器,所述接收器,用于接收tcp代理发送的目标带宽,目标带宽由tcp代理根据估算带宽确定,估算带宽由tcp代理根据估算带宽样本集确定,估算带宽样本集由tcp代理根据样本传输带宽确定,样本传输带宽由tcp代理根据每个样本tcp响应报文计算tcp代理和tcp客户端之间的tcp连接得到,样本tcp响应报文为n个tcp响应报文中的至少一个,n个tcp响应报文为tcp客户端接收到tcp代理发送的m个报文后反馈至tcp代理的报文,所述处理器,用于根据目标带宽设置token数目增长速率,确定按照token数目增长速率获得的token的数目是否达到预置数值,所述发送器,用于若处理器确定按照token数目增长速率获得的token的数目达到预置数值,则发送报文。

第五方面,本发明实施例提供了一种计算机存储介质,该计算机存储介质中存储有程序代码,该程序代码用于指示执行上述第一方面或第二方面的方法。

相较于现有技术,从以上技术方案可以看出,本发明实施例中,tcp代理向tcp客户端发送m个报文,接收tcp客户端发送的m个报文的n个tcp响应报文,根据每个样本tcp响应报文计算tcp代理和tcp客户端之间的tcp连接的样本传输带宽,样本tcp响应报文为n个tcp响应报文中的至少一个,根据样本传输带宽确定估算带宽样本集,估算带宽样本集包括根据每个样本tcp响应报文计算得到的样本传输带宽,根据估算带宽样本集确定估算带宽,根据估算带宽确定目标带宽,最后根据目标带宽确定可用令牌token数,根据可用token数控制报文的发送。相较于现有技术,当发送报 文时,报文的发送受限于token数,即对报文的发送速率进行了控制,有效地避免网络瞬间进入过多的报文,提高tcp吞吐量。

附图说明

图1为本发明实施例的一个系统架构示意图;

图2为本发明实施例一种报文发送方法一个实施例示意图;

图3为本发明实施例一种报文发送方法一个实施例中的系统架构示意图;

图4为本发明实施例一种报文发送方法另一实施例示意图;

图5为本发明实施例一种tcp代理一个实施例示意图;

图6为本发明实施例一种tcp代理另一实施例示意图;

图7为本发明实施例一种tcp代理另一实施例示意图;

图8为本发明实施例一种tcp客户端一个实施例示意图;

图9为本发明实施例一种tcp客户端另一实施例示意图。

具体实施方式

本发明实施例提供了一种报文发送方法、tcp代理以及客户端,用于有效地避免网络瞬间进入过多的报文,提高tcp吞吐量。

请参阅图1,本发明实施例中,tcp客户端通过scg网关与tcp服务器建立tcp连接。

该tcp客户端,可以是指向用户提供语音和/或数据连通性的设备,例如是具有无线连接功能的手持式设备、或连接到无线调制解调器的其他处理设备。

tcp代理可以部署于scg网关上实现,或者也可以为网络中独立的网元,该网元可以部署于tcp客户端与scg网关之间,也可以部署于scg网关与tcp服务器之间。

tcp服务器发送给tcp客户端的报文均会被先发送至tcp代理,再由tcp代理发送至tcp客户端。

为了避免网络瞬间进入过多的报文,tcp代理在向tcp客户端发送报文之前,需要根据网络的当前带宽情况进行发送控制,具体的可以是根据目标 带宽确定可用令牌token数,然后再根据可用token数控制报文的发送。

本发明实施例中,tcp代理进行发送控制具体有多种方式,下面分别进行描述:

一、tcp代理根据目标带宽确定token数目增长速率并确定按照token数目增长速率获得的token的数目是否达到预置数值,若达到,则向tcp客户端发送报文:

请参阅图2,本发明实施例一种报文发送方法一个实施例,包括:

201、tcp代理向tcp客户端发送m个报文;

本发明实施例中,tcp代理可以向tcp客户端发送m个报文,其中,在tcp代理向tcp客户端发送m个报文后,本发明实施例中,tcp代理还可以接收tcp客户端发送的上述m个报文的n个tcp响应报文。

需要说明的是,本实施例中,m为大于或等于1的正整数,n也为大于或等于1的正整数,且m大于或等于n,具体数值此处不做限定。

需要说明的是,tcp代理也可以是部署在tcp服务器上某个具有特定功能的处理单元,亦可以是部署在tcp服务器与tcp客户端之间进行数据交互过程中报文经过的某个网络设备,如业务控制网关(英文全称:servicecontrolgateway,英文简称:scg)网关中,也可以是网络中独立的网络设备,具体此处不做限定。

为了便于理解,本发明实施例中以tcp代理部署在scg网关为例进行说明,scg网关与tcp客户端之间的交互流程如图3所示:

具体地,以tcp客户端上网为例进行说明;tcp服务器通过tcp代理接收tcp客户端发送的get报文,tcp代理收到get报文后,对该get报文进行协议解析,识别tcp客户端所请求的业务类型,并向tcp客户端转发tcp服务器根据该业务类型而发送的报文,tcp客户端接收到报文后,可以向tcp代理发送tcp响应报文。

202、tcp代理根据每个样本tcp响应报文计算tcp代理和tcp客户端之间的tcp连接的样本传输带宽;

本发明实施例中,tcp代理可以根据每个样本tcp响应报文计算tcp代 理和tcp客户端之间的tcp连接的样本传输带宽,实际中即是scg网关和tcp客户端之间的tcp连接的样本传输带宽。

需要说明的是,上述样本tcp响应报文可以是n个响应报文中的一个或多个报文,具体此处不做限定。

具体地,当tcp代理接收到tcp客户端发送的n个响应报文时,对于每个样本tcp响应报文,tcp代理可以根据所述样本tcp响应报文对应的报文的发送时间、所述样本tcp响应报文的接收时间,以及所述样本tcp响应报文对应的报文的长度计算处所述tcp连接的样本传输带宽。

203、tcp代理根据样本传输带宽确定估算带宽样本集;

本发明实施例中,tcp代理根据每个样本tcp响应报文计算tcp代理和tcp客户端之间的tcp连接的样本传输带宽后,可以根据计算得到的样本传输带宽确定估算带宽样本集,其中,该估算带宽样本集包括tcp代理根据每个样本tcp响应报文计算得到的样本传输带宽。

需要说明的是,该估算带宽样本集也可以包括tcp代理根据至少一个样本tcp响应报文计算得到的样本传输带宽,具体此处不做限定。

204、tcp代理根据估算带宽样本集确定估算带宽;

本发明实施例中,tcp代理可以根据得到的估算带宽样本集确定估算带宽,具体地,tcp代理可以对估算带宽样本集包含的样本tcp响应报文计算得到的样本传输带宽进行简单的计算,如算出平均带宽作为估算带宽,可以理解的是,还可以通过其他的计算方法,如进行加权平均计算得到估算带宽,具体此处不做限定。

205、tcp代理根据估算带宽确定目标带宽;

本发明实施例中,在根据估算带宽样本集确定估算带宽后,tcp代理可以根据估算带宽确定目标带宽。需要说明的是,根据估算带宽确定目标带宽之前,tcp代理还可以获取策略配置信息,策略配置信息包含目标带宽的调整比例与业务类型的对应关系,该策略配置信息由用户通过tcp代理提供的产品配置界面进行设置,并根据tcp代理所识别的业务类型确定目标带宽的调整比例。

本实施例中,tcp代理根据估算带宽确定目标带宽的具体方式可以为:

tcp代理根据估算带宽以及策略配置信息确定目标带宽;

此时,tcp代理根据估算带宽以及策略配置信息确定目标带宽具体包括:

tcp代理按照以下公式计算得到目标带宽:

目标带宽=目标带宽的调整比例×估算带宽。

需要说明的是,该目标带宽的调整比例具体可以为目标带宽的浮动上限值或目标带宽的浮动下限值或目标带宽的调整百分比,其中,该策略配置信息可以通过tcp代理提供的配置界面输入。例如,根据实际的业务类型需求,可以通过tcp代理提供的产品配置界面进行设置,配置界面上有目标带宽的浮动上限选项或目标带宽的浮动下限选项或目标带宽的调整百分选项供用户输入对应的目标带宽的浮动上限值、目标带宽的浮动下限值以及目标带宽的调整百分,这里以目标带宽调整比例为目标浮动上限值为例,则tcp代理根据估算带宽以及策略配置信息确定目标带宽具体可以为:

目标带宽=目标带宽的浮动上限值×估算带宽。

需要说明的是,上述公式描述的目标带宽的计算方法只是其中一种计算方法,除此之外,根据目标带宽调整比例和估算带宽还可以有其它计算目标带宽的方法,具体此处不做限定。

206、tcp代理根据目标带宽设置token数目增长速率;

本发明实施例中,tcp代理确定目标带宽后,可以根据目标带宽设置token数目增长速率。

207、tcp代理设置token资源队列以及token资源队列的最大深度;

本发明实施例中,tcp代理可以设置token资源队列,用于存放tcp代理按照token数目增长速率获得的token,还可以设置token资源队列的最大深度,用于指示token资源队列能存放的按照token数目增长速率获得的token的最大数目。

本发明实施例中,在一定的时间周期内,若没有报文需要被tcp代理发送,此时按照token数目增长速率会生成出较多的token,而该token资源队列的最大深度约束了token的增长不可能超过一定的阈值,另一方面,当一段时间周期内tcp代理没有报文需要发送时,token资源队列可以保存一定数量的token,此时,若突然有大量报文需要发送时,可以最大的提高允许被发送 的报文数量,最终达到发送报文的相对速率比较均匀的效果。

需要说明的是,步骤207与步骤201至步骤206之间并无时序先后关系,具体此处不做限定。

208、tcp代理设置发送定时器并启动该发送定时器,当该发送定时器定时达到预置时长时,执行步骤209;

本发明实施例中,tcp代理可以设置发送定时器,并启动该定时器,当该发送定时器定时达到预置时长时,执行步骤209。

本发明实施例中,当tcp代理确定按照token数目增长速率获得的token的数目未达到预置数值时,需要被发送的报文会缓存在tcp代理侧的socket缓冲区中等待被发送,此时,需要等待触发发送报文的指令的到来,即,tcp代理需要等待上次发送的报文已经发送成功时,tcp客户端反馈的ack,此时tcp代理才会再次执行确定按照token数目增长速率获得的token的数目是否达到预置数值的步骤,但是,由于网络故障或其它通信原因,常常会导致ack的rtt太长,在这种情况下,即使token的数目已经达到预置数值,socket缓冲区中的数据也会长时间无法发送出去,此时为了避免这种情况的出现,本发明实施例中,tcp代理通过设置一个发送定时器,只要该发送定时器定时达到预置时长时,就会执行确定按照token数目增长速率获得的token的数目是否达到预置数值的步骤,即可以有效地避免了socket缓冲区中的数据长时间无法发送出去的情况。

可以理解的是,步骤208在步骤206之后即可执行,具体此处不做限定。

209、tcp代理确定当前按照token数目增长速率获得的token的数目是否达到预置数值,若达到,则执行步骤210;

本发明实施例中,tcp代理将需要转发给tcp客户端的报文存放到tcp代理socket缓冲区中等待被发送,此时,tcp代理判断token资源队列中token的数目是否达到预置数值的步骤,若确定若达到,则执行步骤210。另外可以理解的是,该预置数值的具体数值具体此处不做限定。

210、tcp代理向tcp客户端发送报文。

本发明实施例中,当tcp代理确定token资源队列中token的数目达到预置数值时,则tcp代理向tcp客户端发送报文。

为了便于理解,下面以预置数值为3个token为例进行说明:

tcp代理将需要转发给tcp客户端的8个报文存放到tcp代理socket缓冲区中等待被发送,此时,若tcp代理检测到token资源队列中的token的数目为5个,则tcp代理从socket缓冲区中取出3个报文,并将这3个报文发送至tcp客户端,需要说明的是,tcp代理也可以从缓冲区中取出4个,或其它数目的报文发送至tcp客户端,具体此处不做限定。需要说明的是,当上述被发送的报文成功发送至tcp客户端后,根据传输控制协议/因特网互联协议(英文全称:transmissioncontrolprotocol/internetprotocol,英文简称:tcp/ip)tcp/ip协议,tcp客户端会向tcp代理发送一个ack,当tcp代理收到该ack后,重新执行确定token资源队列中token的数目是否达到预置数值的步骤,若达到预置,且socket缓冲区中还有报文未被发送出去,则继续发送socket缓冲区中的报文,具体此处不再赘述。

若tcp代理检测token资源队列中的token的数目少于3个,则上述8个报文继续存放在socket缓冲区中等待被发送。

另外需要说明的是,每当tcp代理将需要转发给tcp客户端的报文存放到tcp代理侧socket缓冲区中时,即会判断token资源队列中token的数目是否达到预置数值。

本发明实施例中,tcp代理向tcp客户端发送m个报文,接收tcp客户端发送的m个报文的n个tcp响应报文,根据每个样本tcp响应报文计算tcp代理和tcp客户端之间的tcp连接的样本传输带宽,样本tcp响应报文为n个tcp响应报文中的至少一个,根据样本传输带宽确定估算带宽样本集,估算带宽样本集包括根据每个样本tcp响应报文计算得到的样本传输带宽,根据估算带宽样本集确定估算带宽,根据估算带宽确定目标带宽,根据目标带宽设置token数目增长速率,确定按照token数目增长速率获得的token的数目是否达到预置数值,若达到,则向tcp客户端发送报文。相较于现有技术,当发送报文时,报文的发送受限于token数,即对报文的发送速率进行了控制,有效地避免网络瞬间进入过多的报文,提高tcp吞吐量。

二、tcp代理将目标带宽发送至所述tcp客户端,以使得tcp客户端根据目标带宽设置token数目增长速率,并确定按照所述token数目增长速率获 得的token的数目是否达到预置数值,若达到,则发送所述报文:

请参阅图4,本发明实施例一种报文发送方法另一实施例,包括:

步骤401至步骤405分别与上述实施例中的步骤201至步骤205相同,具体此处不再赘述。

406、tcp代理将目标带宽发送至tcp客户端;

本发明实施例中,当tcp代理根据估算带宽确定目标带宽之后,可以向tcp客户端发送该目标带宽,tcp客户端可以接到收该目标带宽。

407、tcp客户端根据目标带宽设置token数目增长速率;

本发明实施例中,tcp客户端可以设置token资源队列,用于存放按照token数目增长速率获得的token,还可以设置token资源队列的最大深度,用于指示token资源队列能存放的按照token数目增长速率获得的token的最大数目。

本发明实施例中,在一定的时间周期内,若tcp客户端没有报文需要发送,此时按照token数目增长速率会生成出较多的token,而该token资源队列的最大深度约束了token增长不可能超过一定的阈值,另一方面,当一段时间周期内tcp代理没有报文需要发送时,token资源队列可以保存一定数量的token,此时,若突然有大量报文需要发送时,可以最大的提高允许被发送的报文数量,最终达到发送报文的相对速率比较均匀的效果。

需要说明的是,步骤408与步骤401至步骤407之间并无时序先后关系,具体此处不做限定。

409、tcp客户端设置发送定时器并启动发送定时器,当该发送定时器定时达到预置时长时,执行步骤410;

本发明实施例中,tcp客户端可以设置发送定时器,并启动该定时器,当该发送定时器定时达到预置时长时,执行步骤410。

本发明实施例中,当tcp客户端确定按照token数目增长速率获得的token的数目未达到预置数值时,需要被发送的报文会缓存在tcp客户端侧的socket缓冲区中等待被发送,此时,需要等待触发发送报文的指令的到来,即,tcp客户端等待上次发送的报文已经发送成功时反馈回来的ack,此时tcp客户端才会再次执行确定按照token数目增长速率获得的token的数目是否达到预 置数值的步骤,但是,由于网络故障或其它通信原因,常常会导致ack的rtt太长,在这种情况下,即使token的数目已经达到预置数值,socket缓冲区中的数据也会长时间无法发送出去,此时为了避免这种情况的出现,本发明实施例中,tcp客户端通过设置一个发送定时器,只要该发送定时器定时达到预置时长时,就会执行确定当前按照token数目增长速率增长的token的数目是否达到预置数值的步骤,即可以有效地避免了socket缓冲区中的数据长时间无法发送出去的情况。

可以理解的是,步骤409在步骤407之后即可执行,具体此处不做限定。

410、tcp客户端确定按照token数目增长速率获得的token的数目是否达到预置数值,若达到,则执行步骤411;

tcp客户端通过套接字socket将需要发送的报文存放到tcp客户端侧socket缓冲区中等待被发送,此时,执行tcp客户端确定token资源队列中token的数目是否达到预置数值的步骤,若确定若达到,则执行步骤411。可以理解的是,该预置数值的具体数值此处不做限定。

411、tcp客户端发送报文。

本发明实施例中,当tcp客户端确定当前按照token数目增长速率增长的token的数目达到预置数值时,则tcp客户端发送报文。

为了便于理解,下面以预置数值为3个token为例进行说明:

tcp客户端将需要转发给tcp客户端的8个报文存放到tcp客户端侧socket缓冲区中等待被tcp客户端发送,此时,若tcp客户端检测token资源队列中的token的数目为5个,则tcp客户端从socket缓冲区中取出3个报文,并发送所述3个报文至tcp代理,需要说明的是,tcp客户端也可以从缓冲区中取出4个报文,或其它数目的报文发送至tcp代理,具体此处不做限定。需要说明的是,当上述被发送的报文成功发送后,根据tcp/ip协议,tcp代理会向tcp客户端反馈一个ack,当tcp客户端收到该ack后,重新执行确定token资源队列中token的数目是否达到预置数值的步骤,若达到预置数值,且socket缓冲区中还有报文未被发送出去,则继续发送socket缓冲区中的报文,具体此处不再赘述。

若tcp客户端检测token资源队列中的token的数目少于3个,则上述8 个报文继续存放在socket缓冲区中等待被发送。

另外需要说明的是,每当tcp客户端通过套接字socket将需要发送给tcp代理的报文存放到tcp客户端侧socket缓冲区中时,即会执行tcp客户端确定token资源队列中token的数目是否达到预置数值的步骤。

通过tcp代理向tcp客户端发送m个报文,接收tcp客户端发送的m个报文的n个tcp响应报文,根据每个样本tcp响应报文计算tcp代理和tcp客户端之间的tcp连接的样本传输带宽,样本tcp响应报文为n个tcp响应报文中的至少一个,根据样本传输带宽确定估算带宽样本集,估算带宽样本集包括根据每个样本tcp响应报文计算得到的样本传输带宽,根据估算带宽样本集确定估算带宽,将目标带宽发送至tcp客户端,以使得tcp客户端根据目标带宽设置token数目增长速率,并确定按照token数目增长速率获得的token的数目是否达到预置数值,若达到,则发送报文。相较于现有技术,当发送报文时,报文的发送受限于token数,即对报文的发送速率进行了控制,有效地避免网络瞬间进入过多的报文,提高tcp吞吐量。

以上对本发明实施例中的一种报文发送方法进行了描述,下面对本发明实施例中tcp代理进行描述。

具体请参阅图5,本发明tcp代理的一个实施例,包括:发送模块501、接收模块502以及处理模块503。

发送模块501,用于向tcp客户端发送m个报文;

接收模块502,用于接收tcp客户端发送的m个报文的n个tcp响应报文;

处理模块503,用于根据接收模块502接收的每个样本tcp响应报文计算tcp代理和tcp客户端之间的tcp连接的样本传输带宽,样本tcp响应报文为n个tcp响应报文中的至少一个,根据样本传输带宽确定估算带宽样本集,估算带宽样本集包括根据每个样本tcp响应报文计算得到的样本传输带宽,根据估算带宽样本集确定估算带宽,根据估算带宽确定目标带宽,根据目标带宽设置token数目增长速率,确定按照token数目增长速率获得的token的数目是否达到预置数值;

发送模块501还用于若处理模块503确定按照token数目增长速率获得的 token的数目达到预置数值,则向tcp客户端发送报文;

结合上述实施例,该处理模块503还用于:

设置发送定时器并启动所述发送定时器;

当发送定时器定时达到预置时长时,则确定按照token数目增长速率获得的token的数目是否达到预置数值;

设置token资源队列以及token资源队列的最大深度,token资源队列用于存放按照token数目增长速率获得的token,最大深度用于指示token资源队列能存放的按照token数目增长速率获得的token的最大数;

对于每个样本tcp响应报文,根据样本tcp响应报文对应的报文的发送时间、样本tcp响应报文的接收时间,以及样本tcp响应报文对应的报文的长度计算tcp连接的样本传输带宽;

获取策略配置信息,策略配置信息包括目标带宽的调整比例与业务类型的对应关系;

根据估算带宽、tcp连接对应的业务类型以及策略配置信息确定目标带宽。

上面从模块化功能实体的角度对本发明实施例中的tcp代理进行描述,下面从硬件处理的角度对本发明实施例中的tcp代理进行描述,请参阅图6,本发明实施例提供的一种tcp代理结构示意图,该tcp代理600可因配置或性能不同而产生比较大的差异,如可以包括一个或多个上述实施例处理模块503对应的实体装置处理器(例如,一个或一个以上处理器),与上述实施例中发送模块501对应的实体装置发送器602,接收模块502对应的实体装置接收器603以及存储器604,一个或一个以上数据608或存储程序代码609的存储介质605(例如一个或一个以上海量存储设备)。其中,存储器604和存储介质605可以是短暂存储或持久存储。存储在存储介质605的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对tcp代理中的一系列指令操作。更进一步地,中央处理器601可以设置为与存储介质605通信,在tcp代理600上执行存储介质605中的一系列指令操作。

tcp代理600还可以包括一个或一个以上电源606,一个或一个以上操作系统607。

本实施例中由tcp代理所执行的步骤可以基于该图6所示的tcp代理结构示意图,具体可以参考前述实施例中的对应过程,在此不再赘述。

请参阅图7,本发明实施例tcp代理另一实施例,包括:发送模块701接收模块702以及处理模块703。

发送模块701,用于向tcp客户端发送m个报文;

接收模块702,用于接收所述tcp客户端发送的所述m个报文的n个tcp响应报文;

处理模块703,用于根据所述接收模块702接收的每个样本tcp响应报文计算所述tcp代理和所述tcp客户端之间的tcp连接的样本传输带宽,所述样本tcp响应报文为所述n个tcp响应报文中的至少一个,根据所述样本传输带宽确定估算带宽样本集,所述估算带宽样本集包括根据每个所述样本tcp响应报文计算得到的样本传输带宽,根据所述估算带宽样本集确定估算带宽,根据所述估算带宽确定目标带宽;

发送模块701还用于将目标带宽发送至tcp客户端,以使得tcp客户端根据目标带宽设置token数目增长速率,并确定按照token数目增长速率获得的token的数目是否达到预置数值,若达到,则发送报文。

同理,本实施例中对应的实体装置可以参阅图6所示的结构示意图,相对应执行的步骤可以参阅上述实施例,具体此处不再赘述。

上面对本发明实施例中的tcp代理进行了描述,下面对本发明实施例中的tcp客户端进行描述,请参阅图8,本发明实施例tcp客户端一个实施例,包括:接收模块801、处理模块802以及发送模块803。

接收模块801,用于接收tcp代理发送的目标带宽,目标带宽由tcp代理根据估算带宽确定,估算带宽由tcp代理根据估算带宽样本集确定,估算带宽样本集由tcp代理根据样本传输带宽确定,样本传输带宽由tcp代理根据每个样本tcp响应报文计算tcp代理和tcp客户端之间的tcp连接得到,样本tcp响应报文为n个tcp响应报文中的至少一个,n个tcp响应报文为tcp客户端接收到tcp代理发送的m个报文后反馈至tcp代理的报文;

处理模块802,用于根据目标带宽设置token数目增长速率,确定按照token数目增长速率获得的token的数目是否达到预置数值;

发送模块803,用于若处理模块802确定按照token数目增长速率获得的token的数目达到预置数值,则发送报文。

结合上述实施例,该处理模块802还用于:

设置发送定时器并启动发送定时器;

当发送定时器定时达到预置时长时,则确定按照token数目增长速率获得的token的数目是否达到预置数值;

设置token资源队列以及token资源队列的最大深度,token资源队列用于存放按照token数目增长速率获得的token,最大深度用于指示token资源队列能存放的按照token数目增长速率获得的token的最大数。

上面从模块化功能实体的角度对本发明实施例中的tcp客户端进行描述,下面从硬件处理的角度对本发明实施例中的tcp客户端进行描述,如图9所示,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例对应的方法部分,请参阅图9,本发明实施例提供的一种tcp客户端结构示意图:

该tcp客户端包括:与上述实施例接收模块801以及发送模块803对应的实体装置为接收器901以及发送器903、处理模块802对应的实体装置处理器902,该tcp客户端还包括存储器904,用于存储程序代码,当所述程序代码被所述处理器902执行时,可以实现本发明上述各实施例的方法。本领域技术人员可以理解,图9中示出的tcp客户端结构并不构成对tcp客户端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

本实施例中由tcp客户端所执行的步骤可以基于该图9所示的tcp客户端结构示意图,具体可以参考前述实施例中的对应过程,在此不再赘述。

需要说明的是,上述装置实施例所涉及到的处理器可以是中央处理器(英文全称:centralprocessingunit,英文简称:cpu),网络处理器(英文全称:networkprocessor,英文简称:np)或者cpu和np的组合。处理器还可以进一步包括硬件芯片,具体可以是专用集成电路(英文全称:application-specificintegratedcircuit,英文简称:asic),可编程逻辑器(英文全称:programmablelogicdevice,英文简称:pld)或其组合。另外pld可以是复杂可编程逻辑 器件(英文全称:complexprogrammablelogicdevice,英文简称:cpld),现场可编程逻辑门阵列(英文全称:field-programmablegatearray,英文简称:fpga),通用阵列逻辑(英文全称:genericarraylogic,英文简称:gal)或其任意组合,在本发明中不做任何限定。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,模块和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的模块果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(英文全称:read-onlymemory,英文简称:rom)、随机存取存储器(英文全称:randomaccessmemory英文简称:ram)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制; 尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1