令牌桶丢包优化方法及系统与流程
未命名
08-15
阅读:116
评论:0
1.本技术涉及通信技术,尤其涉及一种令牌桶丢包优化方法及系统。
背景技术:
2.互联网的普及,云计算的浪潮,让我们越来越离不开网络环境。随着移动互联网的快速发展,各种应用和服务层出不穷,应用开发商和服务提供商等需要快速实施他们的项目或产品,在传统的互联网数据中心(internet data center,简称idc)中一般需要布置他们自己或者租用服务器设备并且还需要自己组建复杂的网络,这其间必定需要大量的时间并且非常容易出错,也不容易扩展和实现灾备。
3.在经典网络中,用户在云上其实是非常缺乏网络管理能力的,用户有一台经典网络的虚拟服务器,用户也具有了和公网通信的能力,最多加上安全组可以做一些安全控制的能力,但如网段规划、子网划分、路由管理、使用nat管理公网出入等网络管理能力都几乎没有或很弱。
4.要为客户提供云计算服务,网络是其中的基础服务,由于使用云计算的场景一般是需要快速扩展的,网络的需求可能是随时变化的,也可能是多元化的,所以提供qos(服务质量,quality of service)带宽服务是必不可少的。
5.目前实现qos的方法一般是使用令牌桶,但是目前的令牌桶实现方法,一般都会造成tcp协议(传输控制协议,transmission control protocol)比较普遍的丢包现象,而目前也没有较好的令牌桶丢包处理办法。
技术实现要素:
6.本技术提供一种基于反向感知令牌桶的tcp流量控制方法,用以解决tcp协议丢包的问题。
7.一方面,本技术提供一种令牌桶的优化方法,包括:获取被允许通行的tcp报文的反向令牌桶的当前剩余令牌数及所述tcp报文的窗口值;若所述tcp报文的窗口值大于所述反向令牌桶的窗口最大值,和/或,所述反向令牌桶的当前剩余令牌数小于其容积的一半,将所述tcp报文的窗口值调小。
8.另一方面,本技术提供一种令牌桶丢包优化系统,包括:获取模块,用于获取被允许通行的tcp报文的反向令牌桶的当前剩余令牌数及所述tcp报文的窗口值;调整模块,用于若所述tcp报文的窗口值大于所述反向令牌桶的窗口最大值,和/或,所述反向令牌桶的当前剩余令牌数小于其容积的一半,将tcp报文的所述窗口值调小。
9.本技术提供的令牌桶丢包优化方法及系统,通过关联一个ip的双向qos令牌桶,在一侧qos通行tcp报文时,获取反向的qos令牌桶,并通过判断反向令牌桶剩余令牌数判断是否需要修改该tcp报文的窗口值,影响该报文接收端后续发送流量的大小,从而影响发送端
整体的流量发送速率,使得报文发送的速率和令牌生成的速率最大程度保持平衡,达到不会因为令牌不足够而导致丢包的效果。
附图说明
10.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。
11.图1为本发明实施例提供的令牌桶丢包优化方法的流程图;图2是本发明实施例公开的情况3的tcp报文的窗口值的调整方法的流程图;图3是本发明实施例公开的情况3的s200的流程图;图4是本发明实施例公开的情况3的s300的流程图;图5是本发明实施例提供的令牌桶丢包优化系统的结构框图;图6是本发明实施例提供的未标记调整模块的结构框图;图7是本发明实施例提供的已标记调整模块的结构框图。
12.通过上述附图,已示出本技术明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本技术构思的范围,而是通过参考特定实施例为本领域技术人员说明本技术的概念。
具体实施方式
13.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本技术相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本技术的一些方面相一致的装置和方法的例子。
14.首先对本技术所涉及的名词进行解释:窗口值是告诉发送方,从报文段首部的确认号算起,接收方目前允许对方发送的数据量。
15.令牌桶的容积,是指令牌桶能够容纳的最多令牌数。
16.在网络中传输数据时,为了防止网络拥塞,需限制流出网络的流量,使流量以比较均匀的速度向外发送。令牌桶算法就实现了这个功能,可控制发送到网络上数据的数目,并允许突发数据的发送。
17.令牌桶的工作过程包括3个阶段:产生令牌、消耗令牌和判断数据包是否通过。
18.产生令牌:周期性的以速率cir/eir向令牌桶中增加令牌,桶中的令牌不断增多。如果桶中令牌数已到达cbs/ebs,则丢弃多余令牌。
19.消耗令牌:输入数据包会消耗桶中的令牌。在网络传输中,数据包的大小通常不一致。大的数据包相较于小的数据包消耗的令牌要多。
20.判断是否通过(即判断是否允许通行):输入数据包经过令牌桶后的结果包括允许通行的数据包和丢弃的数据包。当桶中的令牌数量可以满足数据包对令牌的需求,则将数据包输出,否则将其丢弃。
21.反向令牌桶的窗口最大值:用于对正向tcp报文任何时刻的窗口值限制,即正向tcp报文的窗口值任何时刻都不能大于该窗口最大值。
22.反向令牌桶的窗口值:用于当反向令牌桶剩余令牌数量少于一半时,对正向tcp报
文的窗口值限制,即更激进的正向tcp报文窗口限制值。
23.实施例1
24.图1为本发明实施例提供的令牌桶丢包优化方法的流程图,参见图1,本发明提供了一种令牌桶丢包优化方法,包括:s110,获取被允许通行的tcp报文的反向令牌桶的当前剩余令牌数及所述tcp报文的窗口值;在客户端与服务器之间设置有正向令牌桶和反向令牌桶。假设以客户端向服务器发送数据的方向为正向,那么当客户端向服务器发送数据时,会经过正向令牌桶。反之,服务器向客户端发送数据时,会经过反向令牌桶。
25.本技术公开的实施例中,以客户端向服务器发送数据为正向示例,当客户端向服务器发送tcp报文时,由正向令牌桶判断经过的tcp报文是否允许通行,如果正向令牌桶中的当前剩余令牌数足够,则该tcp报文被允许通行,反之,则丢弃或缓存该tcp报文;若tcp报文被允许通行,则获取被允许通行的tcp报文的反向令牌桶的当前剩余令牌数以及该tcp报文的窗口值。
26.s120,若tcp报文的窗口值大于反向令牌桶的窗口最大值,和/或,若反向令牌桶的当前剩余令牌数小于其容积的一半,将所述tcp报文的窗口值调小。
27.对tcp报文的窗口值调小,要看下述2个条件之一是否满足:条件1:tcp报文的窗口值是否大于反向令牌桶的窗口最大值。若tcp报文的窗口值大于反向令牌桶的窗口最大值,表示发送方的数据发送速度过快,需要降低数据发送速度,即把tcp报文的窗口值调小,优选的,将tcp报文的窗口值调整为反向令牌桶的窗口最大值,tcp报文的窗口值调小后,数据发送速度就会降下来。若tcp报文的窗口值小于等于反向令牌桶的窗口最大值,不做调整。
28.条件2:反向令牌桶的当前剩余令牌数是否小于其容积的一半。若反向令牌桶的当前剩余令牌数小于其容积的一半,表示由于发送方的数据发送速度过快,导致反向令牌桶的令牌生产速度赶不上令牌消耗速度。若反向令牌桶的当前剩余令牌数大于等于其容积的一半,表示发送方的数据发送速度正常,反向令牌桶的令牌生产速度能够匹配令牌消耗速度。
29.若满足上述2个条件中的至少一个,即满足条件1、条件2中的至少一个,具体参见下述情况4、情况2和情况3,则需要将tcp报文的窗口值调小。如果上述2个条件均不满足(参见下述情况1),则不需要对tcp报文的窗口值做修改。
30.情况1:若上述条件1和条件2都不满足,即对于tcp报文的所述窗口值小于等于所述反向令牌桶的窗口最大值,且反向令牌桶的当前剩余令牌数大于等于其容积的一半时,表明数据发送速度及令牌消耗速度都正常,不需要做调整。
31.情况2:若只满足上述条件1,即:若只满足tcp报文的窗口值大于反向令牌桶的窗口最大值,表示数据发送速度过快,不符合反向令牌桶的令牌生产速度,需要将tcp报文的窗口值调小,即将tcp报文的窗口值改为反向令牌桶的窗口最大值,以降低数据发送速度,从而使得数据发送速度与反向令牌桶的令牌生产速度匹配。反向令牌桶的窗口最大值是一个动态变化的基准值,是满足当前令牌桶令牌生产速度的一个动态变化和不断调整的值,并不是一个固定值。
32.情况3:若只满足上述条件2,即:若只满足反向令牌桶的当前剩余令牌数小于其容积的一半,表明由于数据发送速度过快,使得令牌生产速度赶不上令牌消耗速度,此时,也需要对tcp报文的窗口值进行调整,以降低发送方的数据发送速度,使令牌生产速度满足令牌消耗速度。
33.本发明实施例公开的情况3的tcp报文的窗口值的调整方法为:若所述反向令牌桶的当前剩余令牌数小于其容积的一半,根据当前剩余令牌是否做标记,确定不同的所述tcp报文的窗口值的调整方法,将tcp报文的窗口值调小。
34.图2是本发明实施例公开的情况3的tcp报文的窗口值的调整方法的流程图;如图2所示,本发明情况3的tcp报文的窗口值的调整方法包括:s100,当所述反向令牌桶的当前剩余令牌数小于其容积的一半时,判断反向令牌桶的当前剩余令牌数是否已做标记;s200,若反向令牌桶的当前剩余令牌数未做标记,基于反向令牌桶的窗口值与其窗口最大值的关系,确定不同的调整tcp报文的窗口值的调整方法,将tcp报文的窗口值调小;s300,若反向令牌桶的当前剩余令牌数已做标记,基于上一次的令牌标记值与反向令牌桶的当前剩余令牌数的差值与预设值的关系,确定不同的tcp报文的窗口值的调整方法,将tcp报文的窗口值调小。
35.图3是本发明实施例公开的情况3的s200的流程图;如图3所示,本发明实施例公开的s200包括:本发明情况3:若反向令牌桶的当前剩余令牌数未做标记,基于反向令牌桶的窗口值与其窗口最大值的关系,确定不同的tcp报文的窗口值的调整方法包括:s210,若未对反向令牌桶的当前剩余令牌数做标记,则将反向令牌标记值调整为反向令牌桶的当前剩余令牌数,并将反向令牌桶的窗口最大值调整为其与tcp报文的窗口值之和的一半;s220,判断反向令牌桶的窗口值是否大于反向令牌桶的窗口最大值;其中,当反向令牌桶的窗口值为0时,反向令牌桶的窗口值等于tcp报文的窗口值;s230,若反向令牌桶的窗口值大于反向令牌桶的窗口最大值,则将反向令牌桶的窗口值修改为反向令牌桶的窗口最大值;若反向令牌桶的窗口值不大于反向令牌桶的窗口最大值,转到步骤s240;s240,判断tcp报文的窗口值是否大于反向令牌桶的窗口值;s250,若tcp报文的窗口值大于反向令牌桶的窗口值,将所述tcp报文的窗口值调整为反向令牌桶的窗口值。
36.s260,若tcp报文的窗口值不大于反向令牌桶的窗口值,不做调整。
37.在本发明公开的实施例中,当反向令牌桶的当前剩余令牌数没做标记时,即标记值为0时,将当前剩余令牌数记为反向令牌标记值;判断反向令牌桶的窗口值是否为0,在第一次进入时,需要给反向令牌桶的窗口值设置一个初始值。
38.若反向令牌桶的窗口值为0,将反向令牌桶的窗口值修改为tcp报文的窗口值,并将反向令牌桶的窗口最大值调整为其与tcp报文的窗口值之和的一半;若反向令牌桶的窗口值不为0,则直接将反向令牌桶的窗口最大值调整为其与tcp报文的窗口值之和的一半;
继续判断反向令牌桶的窗口值是否大于反向令牌桶的窗口最大值;若反向令牌桶的窗口值大于反向令牌桶的窗口最大值,则将反向令牌桶的窗口值调整为反向令牌桶的窗口最大值;继续判断tcp报文的窗口值是否大于反向令牌桶的窗口值;若tcp报文的窗口值大于反向令牌桶的窗口值,将tcp报文的窗口值调整为反向令牌桶的窗口值;若tcp报文的窗口值不大于反向令牌桶的窗口值,无需处理。
39.若反向令牌桶的窗口值不大于(小于或等于)反向令牌桶的窗口最大值;转到判断步骤s240:判断tcp报文的窗口值是否大于反向令牌桶的窗口值,后续的判断结果和处理步骤同上,不再赘述。
40.图4是本发明实施例公开的情况3的s300的流程图;如图4所示,在本发明公开的实施例中,若反向令牌桶的当前剩余令牌数已做标记,基于上一次的令牌标记值与反向令牌桶的当前剩余令牌数的差值与预设值的关系,确定不同的tcp报文的窗口值的调整方法包括:s310,若反向令牌桶的当前剩余令牌数已做标记,则判断上一次的令牌标记值与反向令牌桶的当前剩余令牌数之间的差值是否大于第一预设值或大于第二预设值;s320,若上一次的令牌标记值大于反向令牌桶的当前剩余令牌数且二者的差值大于第一预设值,或,若上一次的令牌标记值小于反向令牌桶的当前剩余令牌数且二者的差值大于第二预设值,将反向令牌桶的标记值调整为反向令牌桶的当前剩余令牌数,并按照比例或者按照倍数调整反向令牌桶的窗口值;具体地,若上一次的令牌标记值大于反向令牌桶的当前剩余令牌数且二者的差值大于第一预设值,则将反向令牌桶的标记值调整为反向令牌桶的当前剩余令牌数,并将反向令牌桶的窗口值调整为预定比例的反向令牌桶的窗口值;若上一次的令牌标记值小于反向令牌桶的当前剩余令牌数且二者的差值大于第二预设值,则将反向令牌桶的标记值修改为反向令牌桶的当前剩余令牌数,并将反向令牌桶的窗口值修改为其倍数;s330,若都不符合,即二者的差值既不大于第一预设值,也不大于第二预设值,则不做任何处理。
41.在本发明公开的实施例中,设置第一预设值、第二预设值均为1/8。将第一、第二预设值设置为1/8时,tcp报文的窗口值得到调整后的效果是最佳的。
42.实际上,第一、第二预设值不需要设置为相同数值,也可以设置为不同的数值。
43.在本发明公开的实施例中,设置预定比例为3/4。将反向令牌桶的窗口值调整为反向令牌桶的窗口值的3/4时,tcp报文的窗口值得到调整后的效果是最佳的。
44.本发明公开的实施例中,将反向令牌桶的窗口值修改为所述反向令牌桶的窗口值的倍数为1.5倍。当反向令牌桶的窗口值修改为所述反向令牌桶的窗口值的1.5倍时,tcp报文的窗口值得到调整后的效果是最佳的。
45.s340,判断tcp报文的窗口值是否大于反向令牌桶的窗口值;s350,若tcp报文的窗口值大于反向令牌桶的窗口值,将tcp报文的窗口值调整为反向令牌桶的窗口值。
46.s360,若tcp报文的窗口值不大于反向令牌桶的窗口值,则不做处理。
47.情况4:若同时满足条件1和条件2,即:若tcp报文的所述窗口值大于所述反向令牌
桶的窗口最大值(条件1),且反向令牌桶的当前剩余令牌数小于其容积的一半(条件2),表示发送方的数据发送速度过快,导致令牌桶的生产令牌速度比不上令牌消耗速度。
48.本发明实施例提供的情况4的tcp报文的窗口值调整方法包括:若tcp报文的所述窗口值大于所述反向令牌桶的窗口最大值(条件1),且,所述反向令牌桶的当前剩余令牌数小于其容积的一半(条件2),基于两个条件(条件1和条件2)分别计算得到两个tcp报文的窗口值的调整值,选择其中的较小值作为tcp报文的窗口值。
49.为了降低发送方的数据发送速度,使得令牌桶的生产令牌速度能够与令牌消耗速度匹配,此时需要对tcp报文的窗口值进行修改,将tcp报文的窗口值调整为以上两个条件中反向令牌桶窗口值中较小的值,以降低发送方的数据发送速度。条件1的反向令牌桶窗口值的调整方法具体参见情况2,条件2的反向令牌桶窗口值的调整方法具体参见情况3,最后得到两个反向令牌桶窗口值,将tcp报文的窗口值调整为反向令牌桶窗口值中任意一个值。优选地,可以将tcp报文的窗口值调整为调整为两个反向令牌桶窗口值中的较小值。
50.当以上两个条件,即条件1和条件2都满足的时候,若tcp报文的窗口值大于两个反向令牌桶窗口值中的任何一个,都将是不符合期待的,所以将tcp报文的窗口值调整为两个反向令牌桶窗口值中的较小值。在实际的系统运作中,反向令牌桶的窗口值一般都会比反向令牌桶的窗口最大值要小的,所以当两个条件(条件1和条件2)都满足的时候,会把tcp报文的窗口值调整为反向令牌桶的窗口值。只是在表达逻辑的时候,要选择两个反向令牌桶窗口值之中的较小值。
51.本发明实施例公开的令牌桶丢包优化方法,通过关联一个ip的双向qos令牌桶,在一侧qos通行tcp报文时,获取反向的qos令牌桶,并通过判断反向令牌桶剩余令牌数判断是否需要修改该tcp报文的窗口值,影响该报文接收端后续发送流量的大小,从而影响发送端整体的流量发送速率,使得报文发送的速率和令牌生成的速率最大程度保持平衡,达到不会因为令牌不足够而导致丢包的效果。
52.实施例2
53.图5是本发明实施例提供的令牌桶丢包优化系统的结构框图,如图5所示,本发明实施例提供的令牌桶丢包优化系统包括:获取模块,用于获取被允许通行的tcp报文的反向令牌桶的当前剩余令牌数及所述tcp报文的窗口值;调整模块,与所述获取模块连接,用于若所述tcp报文的窗口值大于所述反向令牌桶的窗口最大值,和/或,还用于若所述反向令牌桶的当前剩余令牌数小于其容积的一半,将所述tcp报文的窗口值调小。
54.本发明公开的实施例中,所述调整模块包括:第一调整模块,用于若tcp报文的所述窗口值大于反向令牌桶的窗口最大值,则将所述pct报文的窗口值改为反向令牌桶的窗口最大值;第二调整模块,用于若所述反向令牌桶的当前剩余令牌数小于其容积的一半,根据当前剩余令牌是否做标记,确定不同的反向令牌桶窗口值的调整方法,将tcp报文的窗口值调小。
55.在本发明公开的实施例中,所述第二调整模块包括:未标记调整模块,用于当所述反向令牌桶的当前剩余令牌数小于其容积的一半
时,若反向令牌桶的当前剩余令牌数未做标记,基于反向令牌桶的窗口值与其窗口最大值的关系,确定不同的tcp报文的窗口值的调整方法,将所述tcp报文的窗口值调小;已标记调整模块,用于若反向令牌桶的当前剩余令牌数已做标记,基于上一次的令牌标记值与反向令牌桶的当前剩余令牌数的差值与预设值的关系,确定不同的tcp报文的窗口值的调整方法,将所述tcp报文的窗口值调小。
56.图6是本发明实施例提供的未标记调整模块的结构框图,如图6所示,本发明实施例提供的未标记调整模块包括:未标记第一调整模块,用于若未对反向令牌桶的当前剩余令牌数做标记,则将反向令牌标记值调整为反向令牌桶的当前剩余令牌数,并将反向令牌桶的窗口最大值调整为反向令牌桶的窗口最大值与tcp报文的窗口值之和的一半;未标记第一判断模块,与未标记第一调整模块连接,用于判断反向令牌桶的窗口值是否大于反向令牌桶的窗口最大值;其中,反向令牌桶的窗口值等于tcp报文的窗口值;未标记第二判断模块,与未标记第一判断模连接,用于若反向令牌桶的窗口值大于反向令牌桶的窗口最大值,则将反向令牌桶的窗口值修改为反向令牌桶的窗口最大值后,判断tcp报文的窗口值是否大于反向令牌桶的窗口值;未标记第二调整模块,与未标记第二判断模块连接,用于若tcp报文的窗口值大于反向令牌桶的窗口值,将所述tcp报文的窗口值调整为反向令牌桶的窗口值。
57.图7是本发明实施例提供的已标记调整模块的结构框图,如图7所示,本发明实施例提供的已标记调整模块包括:已标记第一判断模块,用于若反向令牌桶的当前剩余令牌数已做标记,则判断上一次令牌标记值与反向令牌桶的当前剩余令牌数的差值是否大于第一预设值或大于第二预设值;已标记第一调整模块,与已标记第一判断模块连接,用于若上一次的令牌标记值大于反向令牌桶的当前剩余令牌数且二者的差值大于第一预设值,或,若上一次的令牌标记值小于反向令牌桶的当前剩余令牌数且二者的差值大于第二预设值,则将反向令牌桶的标记值调整为反向令牌桶的当前剩余令牌数,反向令牌桶的窗口值调整为反向令牌桶的窗口值的预定比例,并按比例调整或按倍数调整反向令牌桶的窗口值;已标记第二判断模块,与已标记第一调整模块连接,用于判断tcp报文的窗口值是否大于反向令牌桶的窗口值;已标记第二调整模块,与已标记第二判断模块连接,用于若tcp报文的窗口值大于反向令牌桶的窗口值,将tcp报文的窗口值调整为反向令牌桶的窗口值。
58.如图5所示,本发明公开的实施例中,所述调整模块,还包括:小值选择模块,与第一调整模块、第二调整模块连接,用于若所述tcp报文的窗口值大于所述反向令牌桶的窗口最大值,且,所述反向令牌桶的当前剩余令牌数小于其容积的一半,基于两个条件分别计算得到两个tcp报文的窗口值的调整值,选择其中的较小值作为tcp报文的窗口值。
59.本发明实施例公开的令牌桶丢包优化系统,通过关联一个ip的双向qos令牌桶,在一侧qos通行tcp报文时,获取反向的qos令牌桶,并通过判断反向令牌桶剩余令牌数判断是否需要修改该tcp报文的窗口值,影响该报文接收端后续发送流量的大小,从而影响发送端整体的流量发送速率,使得报文发送的速率和令牌生成的速率最大程度保持平衡,达到不
会因为令牌不足够而导致丢包的效果。
60.应当理解的是,本技术并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本技术的范围仅由所附的权利要求书来限制。
技术特征:
1.一种令牌桶丢包优化方法,其特征在于,包括:获取被允许通行的tcp报文的反向令牌桶的当前剩余令牌数及所述tcp报文的窗口值;若所述tcp报文的窗口值大于所述反向令牌桶的窗口最大值,和/或,若所述反向令牌桶的当前剩余令牌数小于其容积的一半,将所述tcp报文的窗口值调小。2.根据权利要求1所述的方法,其特征在于,若所述tcp报文的窗口值大于反向令牌桶的窗口最大值,则将所述tcp报文的窗口值改为所述反向令牌桶的窗口最大值;和/或,若所述反向令牌桶的当前剩余令牌数小于其容积的一半,根据当前剩余令牌是否做标记,确定不同的所述tcp报文的窗口值的调整方法,将所述tcp报文的窗口值调小。3.根据权利要求2所述的方法,其特征在于,若所述反向令牌桶的当前剩余令牌数小于其容积的一半,根据当前剩余令牌是否做标记,确定不同的所述tcp报文的窗口值的调整方法包括:当所述反向令牌桶的当前剩余令牌数小于其容积的一半时,若反向令牌桶的当前剩余令牌数未做标记,基于反向令牌桶的窗口值与其窗口最大值的关系,确定不同的tcp报文的窗口值的调整方法,将所述tcp报文的窗口值调小;若反向令牌桶的当前剩余令牌数已做标记,基于上一次的令牌标记值与反向令牌桶的当前剩余令牌数的差值与预设值的关系,确定不同的tcp报文的窗口值的调整方法,将所述tcp报文的窗口值调小。4.根据权利要求3所述的方法,其特征在于,若反向令牌桶的当前剩余令牌数未做标记,基于反向令牌桶的窗口值与其窗口最大值的关系,确定不同的tcp报文的窗口值的调整方法包括:若未对反向令牌桶的当前剩余令牌数做标记,则将反向令牌标记值调整为反向令牌桶的当前剩余令牌数,并将反向令牌桶的窗口最大值调整为其与tcp报文的窗口值之和的一半;判断反向令牌桶的窗口值是否大于反向令牌桶的窗口最大值;其中,当反向令牌桶的窗口值为0时,反向令牌桶的窗口值等于tcp报文的窗口值;若大于窗口最大值,则将反向令牌桶的窗口值修改为反向令牌桶的窗口最大值;判断tcp报文的窗口值是否大于反向令牌桶的窗口值;若tcp报文的窗口值大于反向令牌桶的窗口值,将所述tcp报文的窗口值调整为反向令牌桶的窗口值。5.根据权利要求3所述的方法,其特征在于,若反向令牌桶的当前剩余令牌数已做标记,基于上一次的令牌标记值与反向令牌桶的当前剩余令牌数的差值与预设值的关系,确定不同的反向令牌桶窗口值的调整方法包括:若反向令牌桶的当前剩余令牌数已做标记,则判断上一次令牌标记值与反向令牌桶的当前剩余令牌数的差值是否大于第一预设值或大于第二预设值;若上一次的令牌标记值大于反向令牌桶的当前剩余令牌数且二者的差值大于第一预设值,或,若上一次的令牌标记值小于反向令牌桶的当前剩余令牌数且二者的差值大于第二预设值,则将反向令牌桶的标记值调整为反向令牌桶的当前剩余令牌数,反向令牌桶的窗口值调整为反向令牌桶的窗口值的预定比例,并按比例调整或按倍数调整反向令牌桶的窗口值;
判断tcp报文的窗口值是否大于反向令牌桶的窗口值;若tcp报文的窗口值大于反向令牌桶的窗口值,将tcp报文的窗口值调整为反向令牌桶的窗口值。6.根据权利要求2所述的方法,其特征在于,若所述tcp报文的窗口值大于所述反向令牌桶的窗口最大值,且,所述反向令牌桶的当前剩余令牌数小于其容积的一半,基于两个条件分别计算得到两个tcp报文的窗口值的调整值,选择其中的较小值作为tcp报文的窗口值。7.一种令牌桶丢包优化系统,其特征在于,包括:获取模块,用于获取被允许通行的tcp报文的反向令牌桶的当前剩余令牌数及所述tcp报文的窗口值;调整模块,用于若所述tcp报文的窗口值大于所述反向令牌桶的窗口最大值,和/或,若所述反向令牌桶的当前剩余令牌数小于其容积的一半,将所述tcp报文的窗口值调小。8.根据权利要求7所述的系统,其特征在于,所述调整模块包括:第一调整模块,用于若所述tcp报文的窗口值大于反向令牌桶的窗口最大值,则将所述tcp报文的窗口值改为所述反向令牌桶的窗口最大值;第二调整模块,用于若所述反向令牌桶的当前剩余令牌数小于其容积的一半,根据当前剩余令牌是否做标记,确定不同的所述tcp报文的窗口值的调整方法,将所述tcp报文的窗口值调小。9.根据权利要求8所述的系统,其特征在于,所述第二调整模块包括:未标记调整模块,用于当所述反向令牌桶的当前剩余令牌数小于其容积的一半时,若反向令牌桶的当前剩余令牌数未做标记,基于反向令牌桶的窗口值与其窗口最大值的关系,确定不同的tcp报文的窗口值的调整方法,将所述tcp报文的窗口值调小;已标记调整模块,用于若反向令牌桶的当前剩余令牌数已做标记,基于上一次的令牌标记值与反向令牌桶的当前剩余令牌数的差值与预设值的关系,确定不同的tcp报文的窗口值的调整方法,将所述tcp报文的窗口值调小。10.根据权利要求9所述的系统,其特征在于,所述未标记调整模块包括:未标记第一调整模块,用于若未对反向令牌桶的当前剩余令牌数做标记,则将反向令牌标记值调整为反向令牌桶的当前剩余令牌数,并将反向令牌桶的窗口最大值调整为反向令牌桶的窗口最大值与tcp报文的窗口值之和的一半;未标记第一判断模块,用于判断反向令牌桶的窗口值是否大于反向令牌桶的窗口最大值;其中,当反向令牌桶的窗口值为0时,反向令牌桶的窗口值等于tcp报文的窗口值;未标记第二判断模块,用于若大于窗口最大值,则将反向令牌桶的窗口值修改为反向令牌桶的窗口最大值后,判断tcp报文的窗口值是否大于反向令牌桶的窗口值;未标记第二调整模块,用于若tcp报文的窗口值大于反向令牌桶的窗口值,将所述tcp报文的窗口值调整为反向令牌桶的窗口值。11.根据权利要求9所述的系统,其特征在于,所述已标记调整模块包括:已标记第一判断模块,用于若反向令牌桶的当前剩余令牌数已做标记,则判断上一次令牌标记值与反向令牌桶的当前剩余令牌数的差值是否大于第一预设值或大于第二预设值;
已标记第一调整模块,用于若上一次的令牌标记值大于反向令牌桶的当前剩余令牌数且二者的差值大于第一预设值,或,若上一次的令牌标记值小于反向令牌桶的当前剩余令牌数且二者的差值大于第二预设值,则将反向令牌桶的标记值调整为反向令牌桶的当前剩余令牌数,反向令牌桶的窗口值调整为反向令牌桶的窗口值的预定比例,并按比例调整或按倍数调整反向令牌桶的窗口值;已标记第二判断模块,用于判断tcp报文的窗口值是否大于反向令牌桶的窗口值;已标记第二调整模块,用于若tcp报文的窗口值大于反向令牌桶的窗口值,将tcp报文的窗口值调整为反向令牌桶的窗口值。12.根据权利要求8所述的系统,其特征在于,所述调整模块,还包括:小值选择模块,用于若所述tcp报文的窗口值大于所述反向令牌桶的窗口最大值,且,所述反向令牌桶的当前剩余令牌数小于其容积的一半,基于两个条件分别计算得到两个tcp报文的窗口值的调整值,选择其中的较小值作为tcp报文的窗口值。
技术总结
本申请提供一种令牌桶丢包优化方法及系统,涉及通信技术。该方法包括:获取被允许通行的TCP报文的反向令牌桶的当前剩余令牌数及TCP报文的窗口值;若TCP报文的窗口值大于反向令牌桶的窗口最大值,和/或,反向令牌桶的当前剩余令牌数小于其容积的一半,将TCP报文的窗口值调小。本申请的令牌桶丢包优化方法,通过关联一个IP的双向QoS令牌桶,在一侧QoS通行TCP报文时,获取反向的QoS令牌桶,并通过判断反向令牌桶剩余令牌数判断是否需要修改该TCP报文的窗口值,影响该报文接收端后续发送流量的大小,从而影响发送端整体的流量发送速率,使得报文发送的速率和令牌生成的速率最大程度保持平衡。度保持平衡。度保持平衡。
技术研发人员:梁润强 霍键聪 史伟
受保护的技术使用者:广东睿江云计算股份有限公司
技术研发日:2023.07.13
技术公布日:2023/8/14
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
