CN114915596B - 数据发送方法、装置、设备及存储介质 - Google Patents
数据发送方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN114915596B CN114915596B CN202210508236.0A CN202210508236A CN114915596B CN 114915596 B CN114915596 B CN 114915596B CN 202210508236 A CN202210508236 A CN 202210508236A CN 114915596 B CN114915596 B CN 114915596B
- Authority
- CN
- China
- Prior art keywords
- token
- tokens
- data
- bucket
- data packet
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 34
- 230000005540 biological transmission Effects 0.000 title claims abstract description 15
- 238000012545 processing Methods 0.000 claims abstract description 20
- 230000001502 supplementing effect Effects 0.000 claims abstract description 18
- 230000009469 supplementation Effects 0.000 claims abstract description 6
- 238000004891 communication Methods 0.000 claims description 9
- 238000004590 computer program Methods 0.000 claims description 8
- 238000012216 screening Methods 0.000 claims description 5
- 230000009471 action Effects 0.000 description 9
- 239000000047 product Substances 0.000 description 8
- 230000008569 process Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 2
- 101150053100 cls1 gene Proteins 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/215—Flow control; Congestion control using token-bucket
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Small-Scale Networks (AREA)
Abstract
本申请涉及一种数据发送方法、装置、设备及存储介质。存在待发送数据包时,基于当前令牌数量和上一次令牌填充时间,确定需要补充的令牌数量,并利用需要补充的令牌数量补充共享资源中的令牌,最终采用补充后的共享资源中的令牌发送待发送数据包。由于N个令牌桶共享同一份令牌资源,所以当发到不同处理器上的数据包不均衡时,不会出现因为每个处理器上的令牌填充速度设置为同一数值导致的很大的限流误差,同时还能实现不同处理器之间的高性能并行处理。
Description
技术领域
本申请涉及计算机领域,尤其涉及一种数据发送方法、装置、设备及存储介质。
背景技术
令牌桶算法是计算机网络里最常用的流量控制的方式之一。如图1所示,令牌生成器以恒定的速度rate向容量为bsize的令牌桶内填充令牌;如果有请求数据包要处理,则需要先从令牌桶里获取和数据包大小相匹配数量的令牌,否则数据包会被暂存在容量为qlimt的缓冲队列中。如果缓冲队列满,则会丢弃新到来的数据包。
在现代计算机系统中,随着大流量、高性能网卡的普及和应用,网络流量会被分发到多个处理器上并行处理。在这种场景下,令牌桶算法为了保证其正确性,一般通过临界区并行保护机制防止算法数据同时被多个处理器修改和访问,如果一个处理器在操作令牌桶的时候发现令牌桶在被另一个处理器操作,则它需要等待另一个处理器处理完成才能继续工作,因而导致了令牌桶算法在多处理器并行处理场景下效率低下的问题。而且更为严重的是,该问题会随着流量的增加会变得愈加严重,使得令牌桶算法称为整个系统中网络流量处理的性能瓶颈。
另一种替代方案是每个处理器独立运行一个令牌桶算法,每个处理器的令牌桶算法仅依赖自己的数据,不依赖其它处理器上的数据,如此一来就不需要临界区来保护算法数据了。但这种方案最大的问题是很难实现预定的限流速度,这是因为网卡发到每个处理器上的数据并不是均衡的,如果简单地将每个处理器上的令牌产生速度设置为rate/n(n为处理网卡流量的处理器数量),这可能会导致很大限流误差。
发明内容
本申请提供了一种数据发送方法、装置、设备及存储介质,用以解决相关技术中存在的限流误差大的问题。
第一方面,提供一种数据发送方法,包括:
当存在待发送数据包时,获取共享数据中的当前令牌数量,所述共享数据指示N个令牌桶所共享的同一地址中的令牌资源的状态,所述当前令牌数量为所述同一地址中所存储的令牌的总数量,所述N个令牌桶中不同的令牌桶匹配的处理器不同;
当所述当前令牌数量对应的令牌不足以传输所述待发送数据包时,获取所述共享数据中的上一次令牌填充时间;
基于所述上一次令牌填充时间和所述当前令牌数量,确定所述令牌资源中需要补充的令牌数量;
按照所述需要补充的令牌数量补充所述共享资源中的令牌;并利用补充所述共享资源中的令牌的时间更新所述上一次令牌填充时间、以及利用补充后的令牌资源中的令牌的数量更新所述当前令牌数量;
采用补充后的令牌资源中的令牌发送所述待发送数据包,并在发送所述待发送数据包后,再次更新所述当前令牌数量。
可选地,基于所述上一次令牌填充时间和所述当前令牌数量,确定所述令牌资源中需要补充的令牌数量,包括:
获取所述N个令牌桶中任一令牌桶的容量,其中所述N个令牌桶的容量均相同;
计算所述容量与所述当前令牌数量的第一令牌数量差;以及,基于所述上一次令牌填充时间和设定的令牌填充速度计算第二令牌数量差;
选取所述第一令牌数量差和所述第二令牌数量差中的较小值作为所述需要补充的令牌数量。
可选地,基于所述上一次令牌填充时间和设定的令牌填充速度计算第二令牌数量差,包括:
计算当前时间与所述上一次令牌填充时间的时间差;
计算所述时间差与所述令牌填充速度的乘积;
将所述乘积作为所述第二令牌数据差。
可选地,所述N个令牌桶中的任一令牌桶包括第一令牌桶和第二令牌桶,不同的所述令牌桶中的第一令牌桶共享所述令牌资源;
所述第二令牌桶容量小于所述第一令牌桶容量,所述第二令牌桶的令牌填充速度大于所述第一令牌桶的令牌填充速度;当所述第二令牌桶需要填充令牌时,所述第二令牌桶能够从所述第一令牌桶获取令牌;
采用补充后的令牌资源中的令牌发送所述待发送数据包,包括:
采用所述第二令牌桶内的令牌发送所述待发送数据包。
可选地,获取共享数据中的当前令牌数量之前,还包括:
获取所述待发送数据包中预设比特位的数据;
确定所述预设比特位的数据与预设数据相同,以从所述待发送数据包中筛选预设比特位的数据为所述预设数据的数据包。
可选地,采用补充后的令牌资源中的令牌发送所述待发送数据包,包括:
确定与所述预设比特位的数据对应的规则队列,其中所述规则队列用于隔离并缓存所述预设比特位的数据;
从所述规则队列中获取所述待发送数据包,并采用补充后的令牌资源中的令牌发送所述待发送数据包。
第二方面,提供一种数据发送装置,包括:
第一获取单元,用于当存在待发送数据包时,获取共享数据中的当前令牌数量,所述共享数据指示N个令牌桶所共享的同一地址中的令牌资源的状态,所述当前令牌数量为所述同一地址中所存储的令牌的总数量,所述N个令牌桶中不同的令牌桶匹配的处理器不同;
第二获取单元,用于当所述当前令牌数量对应的令牌不足以传输所述待发送数据包时,获取所述共享数据中的上一次令牌填充时间;
确定单元,用于基于所述上一次令牌填充时间和所述当前令牌数量,确定所述令牌资源中需要补充的令牌数量;
第一处理单元,用于按照所述需要补充的令牌数量补充所述共享资源中的令牌;并利用补充所述共享资源中的令牌的时间更新所述上一次令牌填充时间、以及利用补充后的令牌资源中的令牌的数量更新所述当前令牌数量;
第二处理单元,用于采用补充后的令牌资源中的令牌发送所述待发送数据包,并在发送所述待发送数据包后,再次更新所述当前令牌数量。
可选地,所述确定单元用于:
获取所述N个令牌桶中任一令牌桶的容量,其中所述N个令牌桶的容量均相同;
计算所述容量与所述当前令牌数量的第一令牌数量差;以及,基于所述上一次令牌填充时间和设定的令牌填充速度计算第二令牌数量差;
选取所述第一令牌数量差和所述第二令牌数量差中的较小值作为所述需要补充的令牌数量。
第三方面,提供一种电子设备,包括:处理器、存储器和通信总线,其中,处理器和存储器通过通信总线完成相互间的通信;
所述存储器,用于存储计算机程序;
所述处理器,用于执行所述存储器中所存储的程序,实现第一方面所述的数据发送方法。
第四方面,提供一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现第一方面所述的数据发送方法。
本申请实施例提供的技术方案中,当存在待发送数据包时,基于当前令牌数量和上一次令牌填充时间,确定需要补充的令牌数量,并利用需要补充的令牌数量补充共享资源中的令牌,最终采用补充后的共享资源中的令牌发送待发送数据包。由于N个令牌桶共享同一份令牌资源,所以当发到不同处理器上的数据包不均衡时,不会出现因为每个处理器上的令牌填充速度设置为同一数值导致的很大的限流误差,同时还能实现不同处理器之间的高性能并行处理。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为相关技术中令牌桶算法的原理示意图;
图2为本申请实施例中数据发送方法的流程示意图;
图3为本申请实施例中两级令牌桶的原理示意图;
图4为本申请实施例中数据发送装置的结构示意图;
图5为本申请实施例中电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了解决相关技术中存在的问题,本申请实施例提供一种数据发送方法,该方法可应用于处理器中,如图2所示,该方法可以包括以下步骤:
步骤201、当存在待发送数据包时,获取共享数据中的当前令牌数量,共享数据指示N个令牌桶所共享的同一地址中的令牌资源的状态,当前令牌数量为同一地址中所存储的令牌的总数量,N个令牌桶中不同的令牌桶匹配的处理器不同。
本实施例中,为了实现高性能多核并行处理,设置每个处理器维护一个令牌桶。为了实现预定的限流速度,本实施例还设置不同的令牌桶中的令牌资源为全局资源,即不同的令牌桶通过同一段地址维护一份令牌资源,从而实现不同的令牌桶对该全局资源的共享。因此当该段地址中的令牌资源发生变化时,相当于N个令牌桶中每个令牌桶内的令牌资源同步发生变化。应用中,这里的令牌资源包括但不限于令牌桶中的令牌。
本实施例中,为了减小并发访问数据冲突的范围,设置当前令牌数量以及上一次填充令牌的时间为针对全局资源的共享数据,每个处理器均可以访问该共享数据。其中,该当前令牌数量为令牌资源中当前所具有的令牌的总数,上一次填充令牌的时间则为令牌生成器上一次向全局资源中补充令牌的时间。
一个例子中,存在2个处理器,处理器1以及处理器2,其中处理器1维护令牌桶1,处理器2维护令牌桶2,并且令牌桶1和令牌桶2共享的同一地址中的令牌资源的当前令牌数量为100个。当处理器1需要传输20个数据包时,处理器1通过令牌桶1从令牌资源中获取20个令牌用于传输数据包,这时候,当前令牌数量由100更新为80,即令牌资源中总的令牌数量变为80个。当处理器2需要传输60个数据包时,处理器2通过令牌桶2从令牌资源中获取60个令牌用于传输数据包,这时候,当前令牌数量由80更新为20,即令牌资源中总的令牌数量变为20个。
步骤202、当当前令牌数量对应的令牌不足以传输待发送数据包时,获取共享数据中的上一次令牌填充时间。
应用中,当当前令牌数量与待发送数据包的数量不匹配时,确定当前令牌数量指示令牌桶内的令牌不足以传输待发送数据包。
一个例子中,可以设置当前令牌数量与待发送数据包的数量不同时,确定当前令牌数量指示令牌桶内的令牌不足以传输待发送数据包。
应用中,每个处理器在维护一个令牌桶的同时还可以维护一个规则队列,并当当前令牌数量指示令牌桶内的令牌不足以传输待发送数据包时,将待发送数据包暂存于规则队列中。当补充共享资源中的令牌后,从规则队列中获取待发送数据包,并采用令牌桶中的令牌发送该待发送数据包。其中,规则队列包括但不限于先进先出(FIFO)队列。
步骤203、基于上一次令牌填充时间和当前令牌数量,确定令牌资源中需要补充的令牌数量。
应用中,考虑到当上一次令牌填充时间距离当前时间较长时,基于该上一次令牌填充时间与设定的令牌填充速度所确定令牌数量可能超出令牌桶的容量,所以,本实施例从第一令牌数量差和第二令牌数量差取较小值作为令牌桶内需要补充的令牌数量。其中,第一令牌数量差为令牌桶容量与当前令牌数量之差;第二令牌数量差为基于上一次令牌填充时间和设定的令牌填充速度计算第二令牌数量差。
应理解这里的令牌桶的容量为每个令牌桶的最大容量,也就是说,在本实施例中,N个令牌桶的容量均相同。
应用中,可以计算当前时间与上一次令牌填充时间的时间差;计算时间差与令牌填充速度的乘积;将乘积作为第二令牌数据差。
应用中,确定令牌桶内需要补充的令牌数量的公式如下所示:
tokens_add=min(bsize-tokens,(t_now–t_c)×rate);
其中,tokens_add为需要补充的令牌数量,bsize是令牌桶的容量,tokens是当前令牌数量,t_now是当前时间,t_c是上一次令牌填充时间,rate是设定的令牌填充速度。显然,需要补充的令牌数量是上次填充令牌桶到现在这段时间内产生的令牌数量和当前令牌桶可用空间之中的最小值。
一个例子中,假定令牌桶的容量为100个令牌,令牌桶内当前令牌数量为30个,当前时间与上一次令牌填充时间的时间差为2秒,令牌填充速度为40个/秒,那么可以确定第二令牌数量差为40*2=80个,由于若向令牌桶内填充80个令牌会使得令牌桶容量超过上限,所以确定需要补充的令牌数量为100-30=70个,而非80个;相反,若当前时间与上一次令牌填充时间的时间差为1秒,那么由于第二令牌数量差40*1=40小于第一令牌数量差70,所以确定需要补充的令牌数量为40个,而非70个。
步骤204、按照需要补充的令牌数量补充共享资源中的令牌;并利用补充共享资源中的令牌的时间更新上一次令牌填充时间、以及利用补充后的令牌资源中的令牌的数量更新当前令牌数量。
应理解,当按照需要补充的令牌数量对共享资源补充令牌后,表示共享资源中的令牌的数量的当前令牌数量小于或等于令牌桶的容量。
继续沿用上一个举例,当按照需要补充的数量为70个补充共享资源中的令牌后,共享资源中的令牌的数量变为30+70=100个,此时将当前令牌数量由30个更新为100个,即当前令牌数量即为令牌桶的容量;当按照需要补充的数量为40个补充共享资源中的令牌后,共享资源中令牌的数量变为30+40=70个,此时将当前令牌数量由30个更新为70个,即当前令牌数量小于令牌桶的容量。
步骤205、采用补充后的令牌资源中的令牌发送待发送数据包,并在发送待发送数据包后,再次更新当前令牌数量。
应理解,当发送待发送数据包后,当前令牌数量为第一次更新后数量与发送待发送数据包所需的令牌数量之差。这里的第一次更细后数量为步骤204中补充共享资源中的令牌后,更新的当前令牌数量。
本申请实施例提供的技术方案中,当存在待发送数据包时,基于当前令牌数量和上一次令牌填充时间,确定需要补充的令牌数量,并利用需要补充的令牌数量补充共享资源中的令牌,最终采用补充后的共享资源中的令牌发送待发送数据包。由于N个令牌桶共享同一份令牌资源,所以当发到不同处理器上的数据包不均衡时,不会出现因为每个处理器上的令牌填充速度设置为同一数值导致的很大的限流误差,同时还能实现不同处理器之间的高性能并行处理。
相关技术中的令牌桶算法还存在不能有效限制峰值流量的问题。即只要令牌桶内有足够的令牌,令牌桶算法就会放行当前数据包。假如令牌桶容量bsize比较大,则令牌桶内可能堆积很多可用的令牌,这时如果有一股远大于算法所设定rate的尖峰流量到来,令牌桶算法也会直接放行该流量,导致算法输出异常的尖峰流量。
为了解决令牌桶尖峰输出流量的问题。本实施例设置二级令牌桶,即N个令牌桶中的任一令牌桶均包括第一令牌桶和第二令牌桶两个令牌桶,第一令牌桶共享令牌资源;第二令牌桶容量小于第一令牌桶容量,第二令牌桶的令牌填充速度大于第一令牌桶的令牌填充速度;当第二令牌桶需要填充令牌时,第二令牌桶能够从第一令牌桶获取令牌;且当需要发送待发送数据包时,采用第二令牌桶内的令牌发送数据包。
应用中,设定的令牌填充速度rate可以理解为限流的平均带宽,对于平均值小于rate的脉冲流量,令牌桶算法无法保证输出的瞬时流量带宽小于预设的rate限制值,这就产生了尖峰输出流量。在一些场景下,我们希望能减小尖峰输出流量的影响,把令牌桶算法的最大输出带宽限制在预设值prate之内。为了实现这一目的,如图3所示,设计了两级令牌桶的方案。令牌桶1是普通令牌桶,其容量是bsize,令牌生成器以恒定速度rate向令牌桶填充令牌。令牌桶2是削峰令牌桶,其容量是psize(一般远小于bsize),当它未满时,它能以最大速度prate从令牌桶1中获取令牌直至被填满。每个处理器处理数据包之前,需要先从令牌桶2中获取与数据包长度相匹配的令牌数量。如果令牌桶2内没有足够的令牌,则数据包会被继续暂存在缓冲队列里。所以令牌桶2的容量psize需要大于网络中可能出现的最大数据包的长度(该值小于接口的MTU),由于psize需要远小于bsize,所以通常将psize设置为接口的MTU值。下面分析下这种级联的令牌桶的流量削峰效果。
当令牌桶1和令牌桶2中的令牌数量为0时,算法输出的最大带宽为令牌桶1的令牌填充速度rate。
当令牌桶1的令牌数量非0,而令牌桶2的令牌数量为0时,令牌桶2将以prate的速度从令牌桶1获取令牌填充自己,此时算法输出的带宽为峰值限流带宽预设值prate。
当令牌桶1和令牌桶2的令牌数量都是非0时,会出现较短的尖峰流量。通常用尖峰流量的“带宽延时积(BD)”来衡量尖峰流量的大小,BD定义为尖峰流量的带宽和持续时间的乘积。显然,该算法的BD值为:
BD=psize+prate×ΔT→pszie;
其中,ΔT是尖峰流量的持续时间,当ΔT→0时,BD→psize,即算法输出的尖峰流量的强度和令牌桶容量成正比。显然,这种级联的令牌桶方案可以将算法的尖峰流量强度降低bsize/psize倍。
本申请另一实施例中,为了实现对流量的级联控制或实现一些访问控制,还可以预先对接收的待发送数据包进行筛选。具体实现时,在获取令牌桶内当前令牌数量之前,获取待发送数据包中预设比特位的数据,并当预设比特位的数据与预设数据相同时,才执行获取令牌桶当前令牌数量的步骤。
应理解,通过设置预设数据,可以从待发送数据包中筛选预设比特位的数据为预设数据的数据包。
应用中,预设比特位的数据可以指示待发送数据所属的业务类型,如待发送数据为TCP业务类型或UDP业务类型;预设比特位的数据还可以指示发送待发送数据的端口或IP地址;等等。
应用中,具体可以通过分类器实现对待发送数据的筛选,可以设置不同的分类器所能筛选的数据包中预设比特位的数据不同。
一个例子中,存在第一分类器和第二分类器,第一分类器用于筛选IPv4数据帧,第二分类器用于筛选IPv6数据帧,其中当数据包中指示数据类型的字段为0x0800时,指示数据包为IPv4数据帧,当数据包中指示数据类型的字段为0x86DD时,指示数据包为IPv6数据帧。那么第一分类器所能筛选出的数据包的指示数据类型的字段均为0x0800,而第二分类器所能筛选出的数据包的指示数据类型的字段均为0x86DD。
本实施例中,当共享资源中的令牌不足以传输待发送数据包时,为了隔离来自不同分类器的数据包,针对不同的分类器对应设置规则队列,并在能够发送待发送数据包时,从与分类器对应的规则队列中获取待发送数据包,并发送待发送数据包。
应用中,分类器由分类过滤器(filter)和动作执行器(action)两部分组成。分类过滤器包含一组分类条件,用于对数据包进行过滤,并对通过过滤条件的数据包执行动作执行器中设定的分类动作。分类器可以作用于网卡或者排队规则队列上,对网卡或规则队列的每个输出的数据包应用其设定的分类的条件,并对满足分类条件的数据包执行其设定的分类动作。分类动作分为两种,一种是将数据包发到另一个规则队列中,另一种是丢弃数据包;前者可以实现对流量的级联控制,或者能实现一些访问控制。一个网卡或规则队列可以添加多个分类器,这样就能把其上的流量分为多个子类,并分别对不同子类进行不同的后续操作。
一个例子中,可以设置把网卡接收到的流量通过分类器cls0:1丢弃了所有来源IP地址为2001::/120网段内的数据包,从而实现了一种类似用户黑名单的ACL访问控制规则。
另一个例子中,把处理器网卡的流量通过分类器cls 0:1和cls 0:2分为了TCP和UDP两种类型,然后分别把两种类型的流量发送到qsch 1:和qsch 2:两个规则队列中,其中qsch 2:使用上文的数据发送方法,限制了UDP最大平均流量为80Mbps,峰值流量为100Mbps;而qsch 1:中的TCP流量又通过分类器cls 1:1和cls 1:2按照TCP端口号进一步分为SSH业务流量和Web业务流量,最后分别将两种业务流量发送到qsch10:和qsch20:中,其中qsch20:使用上文的数据发送方法限制Web服务的流量不超过800Mbps。
基于同一构思,本申请实施例中提供了一种数据发送装置,该装置的具体实施可参见方法实施例部分的描述,重复之处不再赘述,如图4所示,该装置主要包括:
第一获取单元401,用于当存在待发送数据包时,获取共享数据中的当前令牌数量,共享数据指示N个令牌桶所共享的同一地址中的令牌资源的状态,当前令牌数量为同一地址中所存储的令牌的总数量,N个令牌桶中不同的令牌桶匹配的处理器不同;
第二获取单元402,用于当当前令牌数量对应的令牌不足以传输待发送数据包时,获取共享数据中的上一次令牌填充时间;
确定单元403,用于基于上一次令牌填充时间和当前令牌数量,确定令牌资源中需要补充的令牌数量;
第一处理单元404,用于按照需要补充的令牌数量补充共享资源中的令牌;并利用补充共享资源中的令牌的时间更新上一次令牌填充时间、以及利用补充后的令牌资源中的令牌的数量更新当前令牌数量;
第二处理单元405,用于采用补充后的令牌资源中的令牌发送待发送数据包,并在发送待发送数据包后,再次更新当前令牌数量。
确定单元403用于:
获取N个令牌桶中任一令牌桶的容量,其中N个令牌桶的容量均相同;
计算容量与当前令牌数量的第一令牌数量差;以及,基于上一次令牌填充时间和设定的令牌填充速度计算第二令牌数量差;
选取第一令牌数量差和第二令牌数量差中的较小值作为需要补充的令牌数量。
确定单元403用于:
计算当前时间与上一次令牌填充时间的时间差;
计算时间差与令牌填充速度的乘积;
将乘积作为第二令牌数据差。
N个令牌桶中的任一令牌桶包括第一令牌桶和第二令牌桶,不同的令牌桶中的第一令牌桶共享令牌资源;
第二令牌桶容量小于第一令牌桶容量,第二令牌桶的令牌填充速度大于第一令牌桶的令牌填充速度;当第二令牌桶需要填充令牌时,第二令牌桶能够从第一令牌桶获取令牌;
第二处理单元405用于:
采用第二令牌桶内的令牌发送待发送数据包。
该装置还用于:
获取共享数据中的当前令牌数量之前,获取待发送数据包中预设比特位的数据;
确定预设比特位的数据与预设数据相同,以从待发送数据包中筛选预设比特位的数据为预设数据的数据包。
第二处理单元405用于:
确定与预设比特位的数据对应的规则队列,其中规则队列用于隔离并缓存预设比特位的数据;
从规则队列中获取待发送数据包,并采用补充后的令牌资源中的令牌发送待发送数据包。
基于同一构思,本申请实施例中还提供了一种电子设备,如图5所示,该电子设备主要包括:处理器501、存储器502和通信总线503,其中,处理器501和存储器502通过通信总线503完成相互间的通信。其中,存储器502中存储有可被处理器501执行的程序,处理器501执行存储器502中存储的程序,实现如下步骤:
当存在待发送数据包时,获取共享数据中的当前令牌数量,共享数据指示N个令牌桶所共享的同一地址中的令牌资源的状态,当前令牌数量为同一地址中所存储的令牌的总数量,N个令牌桶中不同的令牌桶匹配的处理器不同;
当当前令牌数量对应的令牌不足以传输待发送数据包时,获取共享数据中的上一次令牌填充时间;
基于上一次令牌填充时间和当前令牌数量,确定令牌资源中需要补充的令牌数量;
按照需要补充的令牌数量补充共享资源中的令牌;并利用补充共享资源中的令牌的时间更新上一次令牌填充时间、以及利用补充后的令牌资源中的令牌的数量更新当前令牌数量;
采用补充后的令牌资源中的令牌发送待发送数据包,并在发送待发送数据包后,再次更新当前令牌数量。
上述电子设备中提到的通信总线503可以是外设部件互连标准(PeripheralComponent Interconnect,简称PCI)总线或扩展工业标准结构(Extended IndustryStandard Architecture,简称EISA)总线等。该通信总线503可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器502可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选地,存储器还可以是至少一个位于远离前述处理器501的存储装置。
上述的处理器501可以是通用处理器,包括中央处理器(Central ProcessingUnit,简称处理器)、网络处理器(Network Processor,简称NP)等,还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本申请的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,当该计算机程序在计算机上运行时,使得计算机执行上述实施例中所描述的数据发送方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机指令时,全部或部分地产生按照本申请实施例的流程或功能。该计算机可以时通用计算机、专用计算机、计算机网络或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、微波等)方式向另外一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质(例如软盘、硬盘、磁带等)、光介质(例如DVD)或者半导体介质(例如固态硬盘)等。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
Claims (9)
1.一种数据发送方法,其特征在于,包括:
当存在待发送数据包时,获取共享数据中的当前令牌数量,所述共享数据指示N个令牌桶所共享的同一地址中的令牌资源的状态,所述当前令牌数量为所述同一地址中所存储的令牌的总数量,所述N个令牌桶中不同的令牌桶匹配的处理器不同;
当所述当前令牌数量对应的令牌不足以传输所述待发送数据包时,获取所述共享数据中的上一次令牌填充时间;
基于所述上一次令牌填充时间和所述当前令牌数量,确定所述令牌资源中需要补充的令牌数量;
按照所述需要补充的令牌数量补充共享资源中的令牌;并利用补充所述共享资源中的令牌的时间更新所述上一次令牌填充时间、以及利用补充后的令牌资源中的令牌的数量更新所述当前令牌数量;
采用补充后的令牌资源中的令牌发送所述待发送数据包,并在发送所述待发送数据包后,再次更新所述当前令牌数量;
其中,所述N个令牌桶中的任一令牌桶包括第一令牌桶和第二令牌桶,不同的所述令牌桶中的第一令牌桶共享所述令牌资源;所述第二令牌桶容量小于所述第一令牌桶容量,所述第二令牌桶的令牌填充速度大于所述第一令牌桶的令牌填充速度;当所述第二令牌桶需要填充令牌时,所述第二令牌桶能够从所述第一令牌桶获取令牌;采用补充后的令牌资源中的令牌发送所述待发送数据包,包括:采用所述第二令牌桶内的令牌发送所述待发送数据包。
2.根据权利要求1所述的方法,其特征在于,基于所述上一次令牌填充时间和所述当前令牌数量,确定所述令牌资源中需要补充的令牌数量,包括:
获取所述N个令牌桶中任一令牌桶的容量,其中所述N个令牌桶的容量均相同;
计算所述容量与所述当前令牌数量的第一令牌数量差;以及,基于所述上一次令牌填充时间和设定的令牌填充速度计算第二令牌数量差;
选取所述第一令牌数量差和所述第二令牌数量差中的较小值作为所述需要补充的令牌数量。
3.根据权利要求2所述的方法,其特征在于,基于所述上一次令牌填充时间和设定的令牌填充速度计算第二令牌数量差,包括:
计算当前时间与所述上一次令牌填充时间的时间差;
计算所述时间差与所述令牌填充速度的乘积;
将所述乘积作为所述第二令牌数量差。
4.根据权利要求1所述的方法,其特征在于,获取共享数据中的当前令牌数量之前,还包括:
获取所述待发送数据包中预设比特位的数据;
确定所述预设比特位的数据与预设数据相同,以从所述待发送数据包中筛选预设比特位的数据为所述预设数据的数据包。
5.根据权利要求4所述的方法,其特征在于,采用补充后的令牌资源中的令牌发送所述待发送数据包,包括:
确定与所述预设比特位的数据对应的规则队列,其中所述规则队列用于隔离并缓存所述预设比特位的数据;
从所述规则队列中获取所述待发送数据包,并采用补充后的令牌资源中的令牌发送所述待发送数据包。
6.一种数据发送装置,其特征在于,包括:
第一获取单元,用于当存在待发送数据包时,获取共享数据中的当前令牌数量,所述共享数据指示N个令牌桶所共享的令牌资源的状态,所述N个令牌桶中不同的令牌桶匹配的处理器不同;
第二获取单元,用于当所述当前令牌数量对应的令牌不足以传输所述待发送数据包时,获取所述共享数据中的上一次令牌填充时间;
确定单元,用于基于所述上一次令牌填充时间和所述当前令牌数量,确定所述令牌资源中需要补充的令牌数量;
第一处理单元,用于按照所述需要补充的令牌数量补充共享资源中的令牌;并利用补充所述共享资源中的令牌的时间更新所述上一次令牌填充时间、以及利用补充后的令牌资源中的令牌的数量更新所述当前令牌数量;
第二处理单元,用于采用补充后的令牌资源中的令牌发送所述待发送数据包,并在发送所述待发送数据包后,再次更新所述当前令牌数量;
其中,所述N个令牌桶中的任一令牌桶包括第一令牌桶和第二令牌桶,不同的所述令牌桶中的第一令牌桶共享所述令牌资源;所述第二令牌桶容量小于所述第一令牌桶容量,所述第二令牌桶的令牌填充速度大于所述第一令牌桶的令牌填充速度;当所述第二令牌桶需要填充令牌时,所述第二令牌桶能够从所述第一令牌桶获取令牌;采用补充后的令牌资源中的令牌发送所述待发送数据包,包括:采用所述第二令牌桶内的令牌发送所述待发送数据包。
7.根据权利要求6所述的装置,其特征在于,所述确定单元用于:
获取所述N个令牌桶中任一令牌桶的容量,其中所述N个令牌桶的容量均相同;
计算所述容量与所述当前令牌数量的第一令牌数量差;以及,基于所述上一次令牌填充时间和设定的令牌填充速度计算第二令牌数量差;
选取所述第一令牌数量差和所述第二令牌数量差中的较小值作为所述需要补充的令牌数量。
8.一种电子设备,其特征在于,包括:处理器、存储器和通信总线,其中,处理器和存储器通过通信总线完成相互间的通信;
所述存储器,用于存储计算机程序;
所述处理器,用于执行所述存储器中所存储的程序,实现权利要求1-5任一项所述的数据发送方法。
9.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-5任一项所述的数据发送方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210508236.0A CN114915596B (zh) | 2022-05-10 | 2022-05-10 | 数据发送方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210508236.0A CN114915596B (zh) | 2022-05-10 | 2022-05-10 | 数据发送方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114915596A CN114915596A (zh) | 2022-08-16 |
CN114915596B true CN114915596B (zh) | 2024-06-14 |
Family
ID=82766051
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210508236.0A Active CN114915596B (zh) | 2022-05-10 | 2022-05-10 | 数据发送方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114915596B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101005453A (zh) * | 2006-12-26 | 2007-07-25 | 华为技术有限公司 | 流量限制技术中刷新令牌桶的方法及装置 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7843940B2 (en) * | 2005-06-01 | 2010-11-30 | Cisco Technology, Inc. | Filling token buckets of schedule entries |
CN100568849C (zh) * | 2005-08-29 | 2009-12-09 | 中兴通讯股份有限公司 | 一种基于令牌桶的报文限速方法 |
US20110199899A1 (en) * | 2010-02-16 | 2011-08-18 | Lime Brokerage Holding Llc | Rate-Adaptive Bundling of Data in a Packetized Communication System |
US8456999B2 (en) * | 2011-08-18 | 2013-06-04 | Spirent Communications, Inc. | Methods and apparatuses for enhanced transmission selection-capable simulated traffic generation |
EP2862301B1 (en) * | 2012-06-14 | 2020-12-02 | Extreme Networks, Inc. | Multicast to unicast conversion technique |
CN103326953B (zh) * | 2013-03-28 | 2016-06-29 | 华为技术有限公司 | 一种基于令牌桶的流量限制方法和装置 |
US9178827B2 (en) * | 2013-08-05 | 2015-11-03 | Globalfoundries U.S. 2 Llc | Rate control by token buckets |
CN104980367B (zh) * | 2014-04-03 | 2019-04-30 | 深圳市中兴微电子技术有限公司 | 一种令牌桶限速方法和装置 |
CN107465629A (zh) * | 2016-06-06 | 2017-12-12 | 中兴通讯股份有限公司 | 限速方法及装置 |
CN109714268B (zh) * | 2019-01-23 | 2022-06-07 | 平安科技(深圳)有限公司 | 一种虚拟私有云的流量控制方法及相关装置 |
CN110347902A (zh) * | 2019-07-17 | 2019-10-18 | 北京奇艺世纪科技有限公司 | 一种数据获取方法、装置及系统 |
CN112350953B (zh) * | 2019-08-07 | 2022-07-01 | 亿度慧达教育科技(北京)有限公司 | 流量限制方法及其装置、电子设备和计算机可读存储介质 |
CN111835655B (zh) * | 2020-07-13 | 2022-06-28 | 北京轻网科技有限公司 | 共享带宽限速方法、装置及存储介质 |
CN111884946B (zh) * | 2020-08-06 | 2024-03-22 | 深圳市物语智联科技有限公司 | 多种无线接入系统中的数据分流传输方法、装置、计算机设备及存储介质 |
CN113765820A (zh) * | 2020-10-30 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 基于令牌桶的限流方法、装置、计算设备及介质 |
-
2022
- 2022-05-10 CN CN202210508236.0A patent/CN114915596B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101005453A (zh) * | 2006-12-26 | 2007-07-25 | 华为技术有限公司 | 流量限制技术中刷新令牌桶的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN114915596A (zh) | 2022-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11316795B2 (en) | Network flow control method and network device | |
US10833995B2 (en) | Method and apparatus for datacenter congestion control based on software defined network | |
CN111131074B (zh) | 一种数据处理方法、装置、系统、服务器及可读存储介质 | |
US10419965B1 (en) | Distributed meters and statistical meters | |
CN112039796B (zh) | 数据包传输方法和装置、存储介质和电子设备 | |
US11729108B2 (en) | Queue management in a forwarder | |
JP2015057931A (ja) | ネットワーク装置、通信システム、異常トラヒックの検出方法およびプログラム | |
US8155003B2 (en) | Aggregate policing applying max-min fairness for each data source based on probabilistic filtering | |
CN105978821B (zh) | 网络拥塞避免的方法及装置 | |
US20160373346A1 (en) | Data processing system, data processing method and computer readable medium | |
CN115550212A (zh) | 网络测量不准确性的检测 | |
Gebert et al. | Performance modeling of softwarized network functions using discrete-time analysis | |
US20180159779A1 (en) | Load Balancing Eligible Packets in Response to a Policing Drop Decision | |
CN114915596B (zh) | 数据发送方法、装置、设备及存储介质 | |
CN109462586A (zh) | 流量监测方法、装置及执行服务器 | |
US8660001B2 (en) | Method and apparatus for providing per-subscriber-aware-flow QoS | |
US20170078212A1 (en) | Packet transport apparatus, packet transport system and packet transport method | |
KR101448951B1 (ko) | 패킷 처리 장치 및 방법 | |
US20190014052A1 (en) | Automatically Cycling Among Packet Traffic Flows Subjecting Them to Varying Drop Probabilities in a Packet Network | |
CN112751774B (zh) | 一种数据包处理方法、装置及设备 | |
US20240089219A1 (en) | Packet buffering technologies | |
US20230216805A1 (en) | Method of Managing Data Transmission for Ensuring Per-Flow Fair Bandwidth Sharing | |
CN109039900A (zh) | 一种发送credit包的停止信号的方法和装置 | |
KR20190048924A (ko) | 플로우 기반 데이터 병렬 처리 시스템 및 이의 동작 방법 | |
US9112766B2 (en) | Method and apparatus having improved line rate IP packet communication |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |