CN113542146A - 报文的限速方法、相关设备以及存储介质 - Google Patents
报文的限速方法、相关设备以及存储介质 Download PDFInfo
- Publication number
- CN113542146A CN113542146A CN202010321606.0A CN202010321606A CN113542146A CN 113542146 A CN113542146 A CN 113542146A CN 202010321606 A CN202010321606 A CN 202010321606A CN 113542146 A CN113542146 A CN 113542146A
- Authority
- CN
- China
- Prior art keywords
- clock
- message
- clock cycle
- clock cycles
- time
- 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
Images
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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供了一种报文的限速方法,包括:将令牌桶大小转换成第一时钟周期数量;在第一时刻获取第一报文,获取第一报文所需令牌数量对应的第二时钟周期数量;在所述第二时钟周期数量不大于所述第一时钟周期数量时,发送所述第一报文。上述方案能够在不需要进行加锁的情况下进行获取第二时钟周期,从而能够有效提高处理效率。
Description
技术领域
本申请涉及IT领域,尤其涉及一种报文的限速方法、相关设备以及存储介质。
背景技术
令牌桶的一种重要作用是对服务质量(Quality of Service,QoS)进行管控。大小固定的令牌桶可自行以恒定的速率源源不断地产生令牌。如果令牌不被消耗,或者被消耗的速度小于产生的速度,令牌就会不断地增多,直到把桶填满。后面再产生的令牌就会从桶中溢出。最后桶中可以保存的最大令牌数永远不会超过桶的大小。令牌桶是基于令牌桶中是否存在令牌来指示什么时候可以发送流量。如果令牌桶中存在令牌,则允许发送流量;而如果令牌桶中不存在令牌,则不允许发送流量。因此,如果突发门限被合理地配置并且令牌桶中有足够的令牌,那么流量就可以以峰值速率发送。
但是,现有的令牌桶机制响应非常慢,资源浪费非常大,不能满足用户的使用需求。
发明内容
为了解决上述问题,本申请提供了一种报文的限速方法、相关设备以及存储介质,能够有效提高处理效率。
第一方面,提供了一种报文的限速方法,包括:
将令牌桶大小转换成第一时钟周期数量;
在第一时刻获取第一报文,获取第一报文所需令牌数量对应的第二时钟周期数量;
在所述第二时钟周期数量不大于所述第一时钟周期数量时,发送所述第一报文。
在一些可能的设计中,在第二时刻获取第二报文,获取第二报文所需令牌数量对应的第三时钟周期数量;所述第二时钟周期数量与所述第三时钟周期数量之和不大于第一时刻与第二时刻之间新增的时钟周期数量与所述第一时钟周期数量之和时,发送所述第二报文。
在一些可能的设计中,所述第二时钟周期数量与所述第三时钟周期数量之和大于第一时刻与第二时刻之间新增的时钟周期数量与所述第一时钟周期数量之和时,丢弃所述第二报文。
在一些可能的设计中,在第三时刻获取第三报文,获取第三报文所需令牌数量对应的第四时钟周期数量;所述第二时钟周期数量和所述第四时钟周期数量之和不大于第一时刻与第三时刻之间新增的时钟周期数量与所述第一时钟周期数量之和时,发送所述第三报文。
在一些可能的设计中,在第二时钟周期数量大于所述第一时钟周期数量时,丢弃所述第一报文。
在一些可能的设计中,将令牌桶大小转换成第一时钟周期数量,包括:
N=CBS*Hz/R
其中,N为第一时钟周期数量,CBS为令牌桶中最大能容纳的令牌数量,r=Hz/R,r为每令牌占用的时钟周期数量,Hz为网络处理设备的时钟源的频率,R为保障速率。
在一些可能的设计中,令记录时钟周期数量等于第二时钟周期数量,并将所述记录时钟周期数量存储在进程之间的共享内存的第一内存地址中。
在一些可能的设计中,令记录时钟周期数量等于第二时钟周期数量,包括:
将所述第一内存地址中的实际值和旧的预期值进行比较;
在所述第一内存地址中的实际值和旧的预期值相等的情况下,将所述第一内存地址的实际值更新为所述记录时钟周期数量。
在一些可能的设计中,所述方法还包括:在所述第一内存地址中的实际值和旧的预期值不相等的情况下,停止将所述第一内存地址的实际值更新为所述记录时钟周期数量。
第二方面,提供了一种网络处理设备,包括:转换模块、获取模块以及发送模块,
所述转换模块用于将令牌桶大小转换成第一时钟周期数量;
所述获取模块用于在第一时刻获取第一报文,获取第一报文所需令牌数量对应的第二时钟周期数量;
所述发送模块用于在所述第二时钟周期数量不大于所述第一时钟周期数量时,发送所述第一报文。
在一些可能的设计中,所述获取模块用于在第二时刻获取第二报文,获取第二报文所需令牌数量对应的第三时钟周期数量;
所述发送模块用于所述第二时钟周期数量与所述第三时钟周期数量之和不大于第一时刻与第二时刻之间新增的时钟周期数量与所述第一时钟周期数量之和时,发送所述第二报文。
在一些可能的设计中,所述发送模块用于第二时钟周期数量与所述第三时钟周期数量之和大于第一时刻与第二时刻之间新增的时钟周期数量与所述第一时钟周期数量之和时,丢弃所述第二报文。
在一些可能的设计中,所述发送模块用于在第二时钟周期数量大于所述第一时钟周期数量时,丢弃所述第一报文。
在一些可能的设计中,所述获取模块用于在第三时刻获取第三报文,获取第三报文所需令牌数量对应的第四时钟周期数量。
所述发送模块用于在所述第二时钟周期数量和所述第四时钟周期数量之和不大于第一时刻与第三时刻之间新增的时钟周期数量与所述第一时钟周期数量之和时,发送所述第三报文。
在一些可能的设计中,所述转换模块还用于:
N=CBS*Hz/R
其中,N为第一时钟周期数量,CBS为令牌桶中最大能容纳的令牌数量,r=Hz/R,r为每令牌占用的时钟周期数量,Hz为网络处理设备的时钟源的频率,R为保障速率。
第三方面,提供一种可读存储介质,包括指令,当所述指令在网络处理设备上运行时,使得所述网络处理设备执行如第一方面任一项所述的方法。
第四方面,提供了一种计算机程序产品,当所述计算机程序产品被网络处理设备读取并执行时,如第一方面任一项所述的方法将被执行。
上述方案中,是通过时钟周期数量来进行流量控制,只有一个变量,因此,可以通过原子操作进行冲突处理,而且,原子操作的响应时间快,耗费的资源少,远远优于加锁的操作。
附图说明
为了更清楚地说明本申请实施例或背景技术中的技术方案,下面将对本申请实施例或背景技术中所需要使用的附图进行说明。
图1是本申请涉及的通过令牌进行流量控制的示意图;
图2是本申请涉及的多个线程抢占令牌桶中的令牌的示意图;
图3是本申请涉及的一种应用场景的示意图;
图4A至图4B分别是不超过桶深时以及超过桶深时记录时钟周期数量的变化示意图;
图5A至图5B分别是T1时刻允许发送第一报文以及禁止发送第一报文时的时钟周期数量变化的示意图;
图6A至图6B分别是在图5A的基础上在T2时刻允许发送第一报文以及禁止发送第一报文时的时钟周期数量变化的示意图;
图7A至图7B分别是在图5B的基础上在T2时刻允许发送第一报文以及禁止发送第一报文时的时钟周期数量变化的示意图;
图8是本申请中线程1和线程2之间没有发生冲突时修改共享内存的示意图;
图9是本申请中线程1和线程2之间发生冲突时修改共享内存的示意图;
图10是本申请提供的一种网络处理设备的结构示意图;
图11是本申请提供的一种网络处理设备的结构示意图。
具体实施方式
为了便于理解,下面先对本申请涉及的令牌桶进行详细的说明。如图1所示,为了能够对流量进行控制,线程需要发送数据包时,首先需要从令牌桶中申请令牌(token),如果线程能够获取得到令牌,则线程可以发送数据包,相反,如果线程不能够获取得到令牌,则线程拒绝发送数据包。其中,线程需要发送的数据包的数量与需要取得的令牌的数量是成正比例的,即,线程需要发送的数据包的数量越多,则需要取得的令牌的数量越多,反之,线程需要发送的数据包的数量越少,则需要取得的令牌的数量越少。例如,线程需要发送100兆的数据包时,需要从令牌桶中获取得到1个令牌,线程需要发送200兆的数据包时,需要从令牌桶中获取2个令牌。应理解,上述例子仅仅是用于举例,在实际应用中,数据包的大小以及获取得到的令牌数量还可以是其他数值,此处不作具体限定。
在编程语言中,令牌桶中令牌的数量令牌桶中令牌的产生过程和消耗过程可以这样表示,具体地:
在编程语言中,令牌桶中令牌的产生过程可以这样表示:
(1)将增加的时间转换为增加的令牌:
ΔToken=(now-t)*R;
(2)将增加的令牌添加到令牌桶中:
如果tc+ΔToken<m,tc=tc+ΔToken;
如果tc+ΔToken≥m,tc=tc;
其中,tc为表示令牌桶中的令牌的数量,ΔToken为表示增加的令牌的变量,m为令牌桶的桶深。
在编程语言中,令牌桶中令牌的消耗过程可以这样表示:
如果tc>n,则tc=tc-n;
如果tc≤n,则tc=tc;
其中,tc为表示令牌桶中令牌的数量的变量,n为准备取出的令牌的数量的变量。
当多个线程共用同一个数据链路发送数据包时,多个线程需要从同一个令牌桶中申请令牌,并且,在同一时刻只有一个线程可以抢占到令牌桶中的令牌,获得通过该数据链路发送数据包的资格,从而对总传输速率进行控制。以图2所示为例,假设存在CPU1、CPU2、…、CPUn总共n个CPU,每个CPU启动一个如果线程1能够抢占得到令牌桶中的令牌,则线程1可以在该数据链路上发送数据包,其他线程则进入等待队列中进行等待;如果线程2能够抢占得到令牌桶中的令牌,则线程2可以在该数据链路上发送数据包,其他线程则进入等待队列中进行等待,…,如果线程n能够抢占得到令牌桶中的令牌,则线程n可以在该数据链路上发送数据包,其他线程则进入等待队列中进行等待。应理解,图2所示的例子中,是每个CPU中启动一个线程为例进行说明,在实际应用中,每个CPU可以启动两个线程、三个线程、四个线程或者更多,此处不做具体限定。
为了使得不同的进程之间可以共享变量t以及变量tc,可以将变量t以及变量tc存储在共享内存中。此时,不同的进程均具有对变量t以及变量tc进行修改的权限。但是,如果不同的线程在同一时刻对变量t以及变量tc进行操作,将会发生冲突。因此,为了避免不同的线程在同一时刻对变量t以及变量tc进行操作,需要对变量t以及变量tc进行加锁。具体地,在向令牌桶中添加令牌之前进行加锁,在向令牌桶中添加令牌之后进行解锁;在消耗令牌桶中的令牌之前进行加锁,消耗令牌桶中的令牌之后进行解锁,从而达到对变量t以及变量tc进行加锁的目标。更具体地,
在加锁的情况下,令牌桶中令牌的产生过程可以这样表示:
(1)加锁。
(2)将增加的时间转换为增加的令牌:
ΔToken=(now-t)*R;
(3)将增加的令牌添加到令牌桶中:
如果tc+ΔToken<m,tc=tc+ΔToken;
如果tc+ΔToken≥m,tc=tc;
其中,tc为表征令牌桶中的令牌的数量的变量,ΔToken为表征增加的令牌的变量,m为令牌桶的桶深。
(4)解锁。
在加锁的情况下,令牌桶中令牌的消耗过程可以这样表示:
(1)加锁。
(2)如果tc>n,则tc=tc-n;如果tc≤n,则tc=tc;其中,tc为表示令牌桶中令牌的数量的变量,n为准备取出的令牌的数量的变量。
(3)解锁。
当一个线程对变量t以及变量tc进行了加锁时,其他的线程都会被阻塞,因此,其他的线程将无法对变量t以及变量tc进行修改,从而避免了冲突的发生。但是,在一个线程进行了加锁的情况下,响应非常慢,资源浪费非常大。
参见图3,图3是本申请涉及的一种应用场景的示意图。本应用场景具体如下:网络处理设备110对其管辖下的网络节点120的总流量进行控制。其中,网络处理器110可以是边界路由器以及边界服务器等等。网络节点120可以是容器、裸金属服务器、虚拟机以及物理主机等等。
下面将结合具体的例子进行说明,来自网络地址IP1的报文1被网络处理设备110中的网卡2所接收,并上传给处理核2中的线程。处理核2中的线程根据令牌桶进行流量控制,从而确定是否需要将报文1发送给对应的网络节点2,在确定需要将报文1发送给对应的网络节点2时,处理核2中的线程将报文1下发给网卡2,并通过网卡2发送给对应的网络节点2。来自网络地址IP2的报文1被网络处理设备110中的网卡3所接收,并上传给处理核3中的线程。处理核3中的线程根据令牌桶进行流量控制,从而确定是否需要将报文2发送给对应的网络节点3,在确定需要将报文2发送给对应的网络节点3时,处理核3将报文2下发给网卡3,并通过网卡3发送给对应的网络节点3。相类似地,来自网络节点2的报文3被网络处理设备110中的网卡2所接收,并上传给处理核2中的线程。处理核2中的线程根据令牌桶进行流量控制,从而确定是否需要将报文3向对应的网络地址IP1进行发送,在确定需要将报文3向对应的网络地址IP1进行发送时,处理核2中的线程将报文3下发给网卡2,并通过网卡2向对应的网络地址IP1进行发送。来自网络节点3的报文4被网络处理设备110中的网卡3所接收,并上传给处理核3中的线程。处理核3中的线程根据令牌桶进行流量控制,从而确定是否需要将报文4向对应的网络地址IP2进行发送,在确定需要将报文4向对应的网络地址IP2进行发送时,处理核3中的线程将报文4下发给网卡3,并通过网卡3向对应的网络地址IP2进行发送。
这里,可以分别对网络地址向网络节点发送的下行流量和网络节点向网络地址发送的上行流量进行控制,也可以对网络地址向网络节点发送的下行流量和网络节点向网络地址发送的上行流量进行总控制,此处不做具体限定。
下面将结合具体的实施例说明令牌桶中的令牌是如何运行的。
令牌桶的大小(即桶深)可以采用时钟周期数量进行表示,在一具体的实施方式中,可以将令牌桶大小转换成第一时钟周期数量,包括:N=CBS*Hz/R,其中,N为第一时钟周期数量,CBS为令牌桶中最大能容纳的令牌数量,r=Hz/R,r为每令牌占用的时钟周期数量,Hz为网络处理设备的时钟源的频率,R为保障速率。
令牌桶具有当前时钟周期数量now以及记录时钟周期数量c两个变量。其中,当前时钟周期数量now随着网络处理设备中的时钟源(例如,晶振)的时钟周期数量自然增长,例如,如果当前的晶振的时钟周期数量为74,那么,令牌桶的当前时钟周期数量可以为74,在下一个时钟周期,当前的晶振的时钟周期数量为75,那么,令牌桶的当前时钟周期数量随之变化为75。上述例子中,晶振的时钟周期数量和当前时钟周期数量是1:1关系,但是,在其他的实施例中,也可以采用其他比例关系,此处不作具体限定。如图4A所示,在当前时钟周期数量now与记录时钟周期数量c的差小于第一时钟周期数量时,记录时钟周期数量c不发生变化,如图4B所示,在当前时钟周期数量now与记录时钟周期数量c的差大于第一时钟周期数量时,令记录时钟周期数量c等于当前时钟周期数量now减去第一时钟周期数量,以保持桶深不变。
在T1时刻,令牌桶的当前时钟周期数量为now1,记录时钟周期数量为c1。网络设备从接收队列中获取了第一报文,并确定第一报文所需令牌数量对应的第二时钟周期数量为n1*r,其中,n1为发送第一报文所需要的令牌数量,r为每令牌占用的时钟周期数量。如图5A所示,如果c1+n1*r<now1,则令c2=c1+n1*r,并允许发送第一报文;如图5B所示,如果c1+n1*r>now1,则令c2=c1,并禁止发送第一报文。
在T2时刻,令牌桶的当前时钟周期数量为now2,记录时钟周期数量为c2。其中,now2等于now1加上T1时刻至T2时刻之间新增的时钟周期数量。网络设备从接收队列中获取了第二报文,并确定第二报文所需令牌数量对应的第三时钟周期数量为n2*r,其中,n2为发送第二报文所需要的令牌数量,r为每令牌占用的时钟周期数量。如果c2+n2*r<now2,则令c3=c2+n2*r,并允许发送第二报文,如果c2+n2*r>now2,则令c3=c2,并禁止发送第二报文。下面将分别结合图5A以及图5B所示的实施例进行具体的说明。对应于图5A所示的实施例,如图6A所示,如果c2+n2*r=c1+n1*r+n2*r<now2,则令c3=c2+n2*r=c1+n1*r+n2*r,并允许发送第二报文;如图6B所示,如果c2+n2*r=c1+n1*r+n2*r>now2,则令c3=c2=c1+n1*r,并禁止发送第二报文。对应于图5B所示的实施例,如图7A所示,如果c2+n2*r=c1+n2*r<now2,则令c3=c2+n2*r=c1+n2*r,并允许发送第二报文;如图7B所示,如果c2+n2*r=c1+n2*r>now2,则令c3=c2=c1,并禁止发送第二报文。
可以理解,为了使得不同的进程之间可以共享记录时钟周期数量c,可以将记录时钟周期数量c存储在共享内存中。此时,不同的进程均具有对记录时钟周期数量c进行修改的权限。
假设同时存在线程1和线程2,并且,线程1和线程2均可以访问共享内存中的记录时钟周期数量c。共享内存中的记录时钟周期数量的初始值为60,每令牌占用的周期数r为2下面分别以线程1和线程2不发生冲突以及线程1和线程2发生冲突的情况进行详细的介绍。
第一种:线程1和线程2不发生冲突。
如图8中(A)所示,在线程1希望从令牌桶中取得3个令牌时,线程1需要将共享内存中的记录时钟周期数量c的值从60修改为60+3*2=66。此时,对于线程1来说,记录时钟周期数量c的共享内存地址中的实际值为60,旧的预期值为60,要修改的新值为66。线程1将记录时钟周期数量c的共享内存地址中的实际值60和旧的预期值60进行比较,记录时钟周期数量c的共享内存地址中的实际值60和旧的预期值60相等,线程1于是顺利将记录时钟周期数量c的共享内存地址中的实际值更新为66。
如图8中(B)所示,在线程1完成对记录时钟周期c的修改之后,线程2希望从令牌桶中取得4个令牌,线程2需要将共享内存中的记录时钟周期数量c的值从66修改为66+4*2=74。此时,对于线程2来说,记录时钟周期数量c的共享内存地址中的实际值为66,旧的预期值为66,要修改的新值为74。线程2将记录时钟周期数量c的共享内存地址中的实际值66和旧的预期值66进行比较,记录时钟周期数量c的共享内存地址中的实际值66和旧的预期值66相等,线程2于是顺利将记录时钟周期数量c的共享内存地址中的实际值更新为74。
第二种:线程1和线程2发生冲突。
如图9中(A)所示,线程2希望从令牌桶中取得4个令牌,线程2想将共享内存中的记录时钟周期数量c的值从60修改为60+4*2=68。此时,对于线程2来说,记录时钟周期数量c的共享内存地址中的实际值为60,旧的预期值为60,要修改的新值为68。线程2将记录时钟周期数量c的共享内存地址中的实际值60和旧的预期值60进行比较,记录时钟周期数量c的共享内存地址中的实际值60和旧的预期值60相等,线程2于是顺利将记录时钟周期数量c的共享内存地址中的实际值更新为68。
恰好同时,如图9中(B)所示,线程1希望从令牌桶中取得3个令牌,所以,线程1想将共享内存中的记录时钟周期数量c的值从60修改为60+3*2=66。此时,线程2已经将记录时钟周期数量c的共享内存地址中的实际值修改为68,因此,对于线程1来说,记录时钟周期数量c的共享内存地址中的实际值为68,旧的预期值为60,要修改的新值为66。线程1将记录时钟周期数量c的共享内存地址中的实际值68和旧的预期值60进行比较,记录时钟周期数量c的共享内存地址中的实际值和旧的预期值不相等,线程1修改记录时钟周期数量c的共享内存地址中的实际值失败。
于是,如图9中(C)所示,线程1重新进行尝试,所以,线程1想将共享内存中的记录时钟周期数量c的值从68修改为68+3*2=74。此时,对于线程1来说,记录时钟周期数量c的共享内存地址中的实际值为68,旧的预期值为68,要修改的新值为74。线程1将记录时钟周期数量c的共享内存地址中的实际值68和旧的预期值68进行比较,记录时钟周期数量c的共享内存地址中的实际值68和旧的预期值68相等,线程1于是顺利将记录时钟周期数量c的共享内存地址中的实际值更新为74。
应理解,上述例子仅仅是以线程1和线程2为例进行举例,在实际应用中,线程的数量还可以是更多,另外,上述线程中变量c的初始值以及各线程希望取得的令牌的数量,每令牌占用的周期数等等都仅仅是具体的举例,在实际应用中还可以是其他数值,此处均不作具体限定。
本申请提出了一种报文的限速方法的流程示意图。在本实施方式中的报文的限速方法,具体包括以下步骤:
S101:网络处理设备将令牌桶大小转换成第一时钟周期数量。
在本申请具体的实施例中,令牌桶的大小(即桶深)可以采用时钟周期数量进行表示,在一具体的实施方式中,可以将令牌桶大小转换成第一时钟周期数量,包括:N=CBS*Hz/R,其中,N为第一时钟周期数量,CBS为令牌桶中最大能容纳的令牌数量,r=Hz/R,r为每令牌占用的时钟周期数量,Hz为网络处理设备的时钟源的频率,R为保障速率。
在本申请具体的实施例中,令牌桶具有当前时钟周期数量now以及记录时钟周期数量c两个变量。其中,当前时钟周期数量now随着网络处理设备中的时钟源(例如,晶振)的时钟周期数量自然增长,例如,如果当前的晶振的时钟周期数量为74,那么,令牌桶的当前时钟周期数量可以为74,在下一个时钟周期,当前的晶振的时钟周期数量为75,那么,令牌桶的当前时钟周期数量随之变化为75。上述例子中,晶振的时钟周期数量和当前时钟周期数量是1:1关系,但是,在其他的实施例中,也可以采用其他比例关系,此处不作具体限定。如图4A所示,在当前时钟周期数量now与记录时钟周期数量c的差小于第一时钟周期数量时,记录时钟周期数量c不发生变化,如图4B所示,在当前时钟周期数量now与记录时钟周期数量c的差大于第一时钟周期数量时,令记录时钟周期数量c等于当前时钟周期数量now减去第一时钟周期数量,以保持桶深不变。
S102:网络处理设备在第一时刻获取第一报文,获取第一报文所需令牌数量对应的第二时钟周期数量。
在本申请具体的实施例中,网络处理设备可以从第一接收队列中获取第一报文,其中,第一报文可以是通过网络处理设备上行或者下行的报文。
在本申请具体的实施例中,第二时钟周期数量可以通过n1*r进行计算,其中,n1为发送第一报文所需要的令牌数量,r为每令牌占用的时钟周期数量。
S103:网络处理设备判断所述第二时钟周期数量是否大于所述第一时钟周期数量。
S104:网络处理设备在所述第二时钟周期数量不大于所述第一时钟周期数量时,发送所述第一报文,并进入步骤S106。
在本申请具体的实施例中,记录时钟周期数量c1为零,当前时钟周期数量now1等于第一时钟周期数量,第二时钟周期数量为n1*r。根据如果c1+n1*r<now1,则令c2=c1+n1r,并允许发送第一报文可以知道,这里,在所述第二时钟周期数量小于所述第一时钟周期数量时,允许发送所述第一报文。
S105:网络处理设备在所述第二时钟周期数量大于所述第一时钟周期数量时,丢弃所述第一报文。
在本申请具体的实施例中,记录时钟周期数量c1为零,当前时钟周期数量now1等于第一时钟周期数量,第二时钟周期数量为n1*r。根据如果c1+n1*r>now1,则令c2=c1,并不允许发送第一报文可以知道,这里,在所述第二时钟周期数量大于所述第一时钟周期数量时,不允许发送所述第一报文。
S106:在发送所述第一报文之后,网络处理设备在第二时刻获取第二报文,获取第二报文所需令牌数量对应的第三时钟周期数量。
在本申请具体的实施例中,网络处理设备可以从第二接收队列中获取第二报文,其中,第二报文可以是通过网络处理设备上行或者下行的报文。这里,第一接收队列和第二接收队列可以是同一个接收队列,也可以是不同的接收队列。
在本申请具体的实施例中,第三时钟周期数量可以通过n2*r进行计算,其中,n2为发送第二报文所需要的令牌数量,r为每令牌占用的时钟周期数量。
S107:网络处理设备判断所述第二时钟周期数量与所述第三时钟周期数量之和是否大于第一时刻与第二时刻之间新增的时钟周期数量与所述第一时钟周期数量之和。
S108:所述第二时钟周期数量与所述第三时钟周期数量之和不大于第一时刻与第二时刻之间新增的时钟周期数量与所述第一时钟周期数量之和时,发送所述第二报文。
在本申请具体的实施例中,记录时钟周期数量c2等于第二时钟周期数量为n1*r,第三时钟周期数量为n2*r。当前的时钟周期数量now2等于第一时刻与第二时刻之间新增的时钟周期数量与所述第一时钟周期数量之和。因此,根据如果c2+n2*r<now2,则令c3=c2+n2*r,并允许发送第一报文可以知道,这里,所述第二时钟周期数量与所述第三时钟周期数量之和不大于第一时刻与第二时刻之间新增的时钟周期数量与所述第一时钟周期数量之和时,发送所述第二报文。
S109:在所述第二时钟周期数量与所述第三时钟周期数量之和大于第一时刻与第二时刻之间新增的时钟周期数量与所述第一时钟周期数量之和时,丢弃所述第二报文。
在本申请具体的实施例中,记录时钟周期数量c2等于第二时钟周期数量为n1*r,第三时钟周期数量为n2*r。当前的时钟周期数量now2等于第一时刻与第二时刻之间新增的时钟周期数量与所述第一时钟周期数量之和。因此,根据如果c2+n2*r>now2,则令c3=c2,并允许发送第二报文可以知道,这里,所述第二时钟周期数量与所述第三时钟周期数量之和大于第一时刻与第二时刻之间新增的时钟周期数量与所述第一时钟周期数量之和时,不允许发送所述第二报文。
S110:在丢弃所述第二报文之后,网络处理设备在第三时刻获取第三报文,获取第三报文所需令牌数量对应的第四时钟周期数量。
在本申请具体的实施例中,第四时钟周期数量可以通过n3*r进行计算,其中,n3为发送第三报文所需要的令牌数量,r为每令牌占用的时钟周期数量。
S111:网络处理设备判断所述第二时钟周期数量和所述第四时钟周期数量之和是否不大于第一时刻与第三时刻之间新增的时钟周期数量与所述第一时钟周期数量之和。
S112:在所述第二时钟周期数量和第四时钟周期数量之和不大于第一时刻与第三时刻之间新增的时钟周期数量与所述第一时钟周期数量之和时,发送所述第三报文。
在本申请具体的实施例中,在所述第二报文被丢弃的情况下,记录时钟周期数量c3等于第二时钟周期数量为n2*r,第四时钟周期数量为n3*r。当前的时钟周期数量now3等于第一时刻与第三时刻之间新增的时钟周期数量与所述第一时钟周期数量之和。因此,根据如果c3+n3*r<now3,则令c3=c2+n2*r,并允许发送第三报文可以知道,这里,所述第二时钟周期数量和第四时钟周期数量之和不大于第一时刻与第二时刻之间新增的时钟周期数量与所述第一时钟周期数量之和时,发送所述第三报文。
S113:在所述第二时钟周期数量与所述第四时钟周期数量之和大于第一时刻与第三时刻之间新增的时钟周期数量与所述第一时钟周期数量之和时,丢弃所述第三报文。
在本申请具体的实施例中,在所述第二报文被丢弃的情况下,记录时钟周期数量c3等于第二时钟周期数量为n2*r,第四时钟周期数量为n3*r。当前的时钟周期数量now3等于第一时刻与第三时刻之间新增的时钟周期数量与所述第一时钟周期数量之和。因此,根据如果c3+n3*r>now3,则令c3=c2,并不允许发送第三报文可以知道,这里,所述第二时钟周期和第四时钟周期数量之和大于第一时刻与第三时刻之间新增的时钟周期数量与所述第一时钟周期数量之和时,丢弃所述第三报文。
参见图10,图10是本申请提供的一种网络处理设备的结构示意图。本实施方式的网络处理设备,包括:转换模块210、获取模块220以及发送模块230。
所述转换模块210用于将令牌桶大小转换成第一时钟周期数量。
在本申请具体的实施例中,令牌桶的大小(即桶深)可以采用时钟周期数量进行表示,在一具体的实施方式中,可以将令牌桶大小转换成第一时钟周期数量,包括:N=CBS*Hz/R,其中,N为第一时钟周期数量,CBS为令牌桶中最大能容纳的令牌数量,r=Hz/R,r为每令牌占用的时钟周期数量,Hz为网络处理设备的时钟源的频率,R为保障速率。
在本申请具体的实施例中,令牌桶具有当前时钟周期数量now以及记录时钟周期数量c两个变量。其中,当前时钟周期数量now随着网络处理设备中的时钟源(例如,晶振)的时钟周期数量自然增长,例如,如果当前的晶振的时钟周期数量为74,那么,令牌桶的当前时钟周期数量可以为74,在下一个时钟周期,当前的晶振的时钟周期数量为75,那么,令牌桶的当前时钟周期数量随之变化为75。上述例子中,晶振的时钟周期数量和当前时钟周期数量是1:1关系,但是,在其他的实施例中,也可以采用其他比例关系,此处不作具体限定。如图4A所示,在当前时钟周期数量now与记录时钟周期数量c的差小于第一时钟周期数量时,记录时钟周期数量c不发生变化,如图4B所示,在当前时钟周期数量now与记录时钟周期数量c的差大于第一时钟周期数量时,令记录时钟周期数量c等于当前时钟周期数量now减去第一时钟周期数量,以保持桶深不变。
所述获取模块220用于在第一时刻获取第一报文,获取第一报文所需令牌数量对应的第二时钟周期数量。
在本申请具体的实施例中,网络处理设备可以从第一接收队列中获取第一报文,其中,第一报文可以是通过网络处理设备上行或者下行的报文。
在本申请具体的实施例中,第二时钟周期数量可以通过n1*r进行计算,其中,n1为发送第一报文所需要的令牌数量,r为每令牌占用的时钟周期数量。
所述发送模块230用于在所述第二时钟周期数量不大于所述第一时钟周期数量时,发送所述第一报文。
在本申请具体的实施例中,记录时钟周期数量c1为零,当前时钟周期数量now1等于第一时钟周期数量,第二时钟周期数量为n1*r。根据如果c1+n1*r<now1,则令c2=c1+n1r,并允许发送第一报文可以知道,这里,在所述第二时钟周期数量小于所述第一时钟周期数量时,允许发送所述第一报文。
为了简便起见,上述案件并没有进行详细的介绍,具体请参见图3至图10以及相关描述,此处不再展开说明。
参见图11,图11是本申请提供的一种网络处理设备的结构示意图。本实施例的网络处理设备包括:处理器310、存储器320、收发器330以及总线340。所述总线340用于连接处理器310、存储器320以及收发器330。
处理器310可以是一个或者多个通用处理器,其中,通用处理器可以是能够处理电子指令的任何类型的设备,包括中央处理器(Central Processing Unit,CPU)、微处理器、微控制器、主处理器、控制器以及专用集成电路(Application Specific IntegratedCircuit,ASIC)等等。处理器310执行各种类型的数字存储指令,例如存储在存储器320中的软件或者固件程序。在一具体的实施例中,处理器310可以是x86处理器等等。处理器310通过物理接口将命令发送给存储器320,以完成存储相关的任务,例如,处理器310可以提供的命令包括读取命令、写入命令、复制命令以及擦除命令等等。所述命令可以指定与存储器320的特定页和块有关的操作。作为一个示例,一个命令可以请求将数据写入到特定物理页,或者,另一个命令可以请求擦除特定物理块。处理器310内可以虚拟出多个虚拟机,每个虚拟机上可以安装相应的操作系统。所述处理器具有多个处理核,可以运行多个线程,所述多个线程包括第一线程、第二线程、…、第n线程。
存储器320可以包括是随机存取存储器(Random Access Memory,RAM)、快闪存储器(FlashMemory)等,也可以是RAM,只读存储器(Read-OnlyMemory,ROM)或者硬盘(HardDisk Drive,HDD)或固态硬盘(Solid-StateDrive,SSD)。所述存储器320中设置有共享内存,所述第一线程至所述第n线程共享所述存储器320中的共享内存。
收发器330可以用于接收和发送报文,并将接收到的报文上传给处理器310进行处理。
可以理解,图11所示的网络处理设备可以执行上述报文的限速方法,具体请参见上述报文的限速方法的相关描述,此处不做具体限定。
上述方案中,是通过时钟周期数量来进行流量控制,只有一个变量,因此,可以通过原子操作进行冲突处理,而且,原子操作的响应时间快,耗费的资源少,远远优于加锁的操作。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、存储盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态存储盘Solid State Disk(SSD))等。
Claims (13)
1.一种报文的限速方法,其特征在于,包括:
将令牌桶大小转换成第一时钟周期数量;
在第一时刻获取第一报文,获取第一报文所需令牌数量对应的第二时钟周期数量;
在所述第二时钟周期数量不大于所述第一时钟周期数量时,发送所述第一报文。
2.根据权利要求1所述的方法,其特征在于,还包括:
在第二时刻获取第二报文,获取第二报文所需令牌数量对应的第三时钟周期数量;
所述第二时钟周期数量与所述第三时钟周期数量之和不大于第一时刻与第二时刻之间新增的时钟周期数量与所述第一时钟周期数量之和时,发送所述第二报文。
3.根据权利要求2所述的方法,其特征在于,还包括:
在所述第二时钟周期数量与所述第三时钟周期数量之和大于第一时刻与第二时刻之间新增的时钟周期数量与所述第一时钟周期数量之和时,丢弃所述第二报文。
4.根据权利要求3所述的方法,其特征在于,还包括:
在第三时刻获取第三报文,获取第三报文所需令牌数量对应的第四时钟周期数量;
所述第二时钟周期数量和第四时钟周期数量之和不大于第一时刻与第三时刻之间新增的时钟周期数量与所述第一时钟周期数量之和时,发送所述第三报文。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述方法还包括:
在第二时钟周期数量大于所述第一时钟周期数量时,丢弃所述第一报文。
6.根据权利要求1至5任一项所述的方法,其特征在于,将令牌桶大小转换成第一时钟周期数量,包括:
N=CBS*Hz/R
其中,N为第一时钟周期数量,CBS为令牌桶中最大能容纳的令牌数量,r=Hz/R,r为每令牌占用的时钟周期数量,Hz为网络处理设备的时钟源的频率,R为保障速率。
7.一种网络处理设备,其特征在于,包括:转换模块、获取模块以及发送模块,
所述转换模块用于将令牌桶大小转换成第一时钟周期数量;
所述获取模块用于在第一时刻获取第一报文,获取第一报文所需令牌数量对应的第二时钟周期数量;
所述发送模块用于在所述第二时钟周期数量不大于所述第一时钟周期数量时,发送所述第一报文。
8.根据权利要求7所述的设备,其特征在于,
所述获取模块用于在第二时刻获取第二报文,获取第二报文所需令牌数量对应的第三时钟周期数量;
所述发送模块用于所述第二时钟周期数量与所述第三时钟周期数量之和不大于第一时刻与第二时刻之间新增的时钟周期数量与所述第一时钟周期数量之和时,发送所述第二报文。
9.根据权利要求8所述的设备,其特征在于,
所述发送模块用于第二时钟周期数量与所述第三时钟周期数量之和大于第一时刻与第二时刻之间新增的时钟周期数量与所述第一时钟周期数量之和时,丢弃所述第二报文。
10.根据权利要求9所述的设备,其特征在于,
所述获取模块用于在第三时刻获取第三报文,获取第三报文所需令牌数量对应的第四时钟周期数量;
所述发送模块用于在所述第二时钟周期数量和第四时钟周期数量之和不大于第一时刻与第三时刻之间新增的时钟周期数量与所述第一时钟周期数量之和时,发送所述第三报文。
11.根据权利要求7至10任一项所述的设备,其特征在于,
所述发送模块用于在第二时钟周期数量大于所述第一时钟周期数量时,丢弃所述第一报文。
12.根据权利要求7至11任一项所述的设备,其特征在于,所述转换模块还用于:
N=CBS*Hz/R
其中,N为第一时钟周期数量,CBS为令牌桶中最大能容纳的令牌数量,r=Hz/R,r为每令牌占用的时钟周期数量,Hz为网络处理设备的时钟源的频率,R为保障速率。
13.一种可读存储介质,其特征在于,包括指令,当所述指令在网络处理设备上运行时,使得所述网络处理设备执行如权利要求1至6任一权利要求所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010321606.0A CN113542146A (zh) | 2020-04-22 | 2020-04-22 | 报文的限速方法、相关设备以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010321606.0A CN113542146A (zh) | 2020-04-22 | 2020-04-22 | 报文的限速方法、相关设备以及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113542146A true CN113542146A (zh) | 2021-10-22 |
Family
ID=78123979
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010321606.0A Pending CN113542146A (zh) | 2020-04-22 | 2020-04-22 | 报文的限速方法、相关设备以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113542146A (zh) |
-
2020
- 2020-04-22 CN CN202010321606.0A patent/CN113542146A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200241927A1 (en) | Storage transactions with predictable latency | |
CN108768873B (zh) | 一种流量控制方法及相关设备 | |
US11381515B2 (en) | On-demand packet queuing in a network device | |
US20230025159A1 (en) | Controlling just in time access to a cluster | |
US6453376B1 (en) | Method for implementing scheduling mechanisms with selectable resource modes | |
JP4857086B2 (ja) | 固定サイズのキャッシュにおける書き込み要求の数を調整するための装置、システム、及び方法 | |
US11805070B2 (en) | Technologies for flexible and automatic mapping of disaggregated network communication resources | |
CN111158878B (zh) | 资源转移请求线程控制方法、装置及存储介质 | |
US11150949B2 (en) | Resource release method, resource allocation method, devices, and computer program products | |
US20190230002A1 (en) | Technologies for accelerated orchestration and attestation with edge device trust chains | |
JP2009541848A (ja) | コンピュータマイクロジョブを中断せずに実行するようスケジュールするための方法、システムおよび装置 | |
US10735554B1 (en) | System for controlling use of a network | |
JP2018527668A (ja) | データトラフィックを制限するための方法及びシステム | |
US10560385B2 (en) | Method and system for controlling network data traffic in a hierarchical system | |
CN104518987A (zh) | 并行多线程报文处理的方法和装置 | |
WO2021103646A1 (zh) | 一种部署pod的方法及装置 | |
CN115396377B (zh) | 对象存储的服务质量优化方法、装置、设备及存储介质 | |
CN114168490A (zh) | 确定内存回收阈值的方法及相关设备 | |
JP2022121525A (ja) | 処理装置、処理方法及びプログラム | |
US20230379268A1 (en) | Resource scheduling method and system, electronic device, computer readable storage medium | |
US6973653B1 (en) | Method for utilizing resource characterizations to optimize performance in an electronic device | |
CN113542146A (zh) | 报文的限速方法、相关设备以及存储介质 | |
CN110895517B (zh) | 基于fpga的传输数据的方法、设备及系统 | |
CN116301667A (zh) | 一种数据库系统,数据访问方法、装置、设备及存储介质 | |
JP2020024636A (ja) | スケジューリング装置、スケジューリングシステム、スケジューリング方法及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20220207 Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province Applicant after: Huawei Cloud Computing Technology Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Applicant before: HUAWEI TECHNOLOGIES Co.,Ltd. |
|
TA01 | Transfer of patent application right | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |