流量控制方法、装置、电子设备和计算机可读存储介质与流程

文档序号:28729110发布日期:2022-01-29 16:12阅读:52来源:国知局
流量控制方法、装置、电子设备和计算机可读存储介质与流程

1.本技术涉及流量控制领域,具体而言,涉及一种流量控制方法、装置、电子设备和计算机可读存储介质。


背景技术:

2.在网络中传输数据时,为了防止网络拥塞,需限制流出网络的流量,使流量以比较均匀的速度向外发送。令牌桶算法就实现了这个功能,可控制发送到网络上的数据的数目,并允许突发数据的发送。
3.相关技术中为了在有限的带宽资源下,更好地为用户提供网络转发服务,一般会采用硬件解决方案和软件解决方案。其中,硬件解决方案利用专用fpga(field-programmable gate array,现场可编程门阵列)或集成在网络处理器内部的qos(quality of service,服务质量)处理器(例如ezchip网络处理器)进行处理,该硬件解决方案的成本太高。软件解决方案中一种可实现的方式是利用dpdk(data plane development kit,数据平面开发套件)提供的qos模块通过代码进行优化,优化之后可以达到与硬件解决方案相当的性能。虽然该实现方式中的qos模块虽然可以节约成本,但是需要有严格的部署要求(例如,必须配置一个内核给qos模块使用),不能无限制地部署于灵活且对服务质量要求不高的场景中。软件解决方案中另一种可实现的方式为利用linux内核中提供的与qos相关的算法(例如htb,hierarchical token bucket,分层令牌桶算法)提供相关服务,但是这些算法多是一些折中的产物,在功能或性能上很难满足网络设备的需求。


技术实现要素:

4.本技术实施例的目的在于提供一种流量控制方法、装置、电子设备和计算机可读存储介质,可以无需设计锁操作或者原子操作,就能够对流量进行控制,从而可以部署于多核处理器中。
5.第一方面,本技术实施例提供了一种流量控制方法,该方法应用于终端设备,所述终端设备的中央处理器至少包括两个核心,该方法包括:确定当前周期对应的初始报文总长度;确定当前时刻总共接收到的当前报文数据,并确定所述当前报文数据对应的当前报文总长度;根据所述当前报文总长度和所述初始报文总长度,确定待消耗的目标令牌数;根据所述目标令牌数以及预设令牌桶中的令牌总数,控制所述目标报文数据对应的流量;其中,向所述预设令牌桶中存放令牌的周期与确定所述初始报文总长度的周期相同。这样,可以无需设计锁操作或者原子操作,就能够对流量进行控制,从而可以部署于多核处理器中。
6.可选地,所述根据所述当前报文总长度和所述初始报文总长度,确定待消耗的目标令牌数,包括:根据所述当前报文总长度和所述初始报文总长度,得到当前时刻待发送的目标报文总长度;根据所述目标报文总长度,确定所述目标令牌数。这里,提供了一种可以根据初始报文总长度和当前报文总长度的确定出待消耗的目标令牌数的实施例,以方便计算出在当前周期内可能会消耗的令牌数量,以便于确定是否需要限流。
7.可选地,所述确定当前时刻总共接收到的当前报文数据,并确定所述当前报文数据对应的当前报文总长度,包括:在所述周期内,以所述初始报文总长度为计算起点,对当前时刻接收到的单个报文数据所对应的单个报文长度进行累加;将所述周期结束时刻得到的报文长度累加和确定为所述当前报文总长度。这样,可以直接统计出该周期内待发送的报文总长度,以便于周期性计算目标令牌数,实现周期性控制流量的目的。
8.可选地,所述流量控制方法还包括:以确定所述初始报文总长度的时刻为周期起点,在预设的固定时长到达时确定周期结束;以及将上一周期结束时刻接收到的当前报文总长度确定为本周期的初始报文总长度。这样,在对下一当前报文总长度进行统计时,可以以上一当前报文总长度作为累加基础,即便该累加基础存在误差,对性能影响也有限。
9.可选地,所述预设令牌桶具有恒定的预设容量,所述流量控制方法还包括:在所述周期内,向所述预设令牌桶中存放固定数量的令牌;若存放令牌后,所述预设令牌桶中的令牌总数大于所述预设容量,则溢出多余的令牌。这样,可以收集多余的令牌,避免令牌浪费,提高令牌的实际利用率。
10.可选地,所述预设令牌桶包括用于提供保证带宽的令牌的保证令牌桶以及用于提供限制带宽的令牌的限制令牌桶;以及所述若存放令牌后,所述预设令牌桶中的令牌总数大于所述预设容量,则溢出多余的令牌,包括:优先向所述保证令牌桶中存放令牌,若所述保证令牌桶中的令牌总数大于该保证令牌桶对应的预设容量,将多余的令牌溢出到所述限制令牌桶中。这样,一方面可以提供保证带宽所需的令牌满足需求,另一方面又可以避免浪费令牌。
11.可选地,所述预设令牌桶包括一个令牌桶父节点以及至少一个令牌桶子节点,所述至少一个令牌桶子节点所对应的保证带宽之和不大于所述令牌桶父节点所对应的保证带宽,所述至少一个令牌桶子节点各自对应的限制带宽不大于所述令牌桶父节点所对应的限制带宽;以及所述保证令牌桶以及所述限制令牌桶为所述令牌桶父节点;以及所述根据所述目标令牌数以及预设令牌桶中的令牌总数,控制所述目标报文数据对应的流量,包括:确定待消耗令牌的令牌桶子节点;指示所述令牌桶子节点在检测到接收速率未超过承诺信息速率的报文时,在所述保证令牌桶中申请令牌;以及在检测到接收速率超过承诺信息速率的报文时,在所述限制令牌桶中申请令牌。这样,将预设令牌桶进行分层处理,以实现对流量的分层控制。
12.第二方面,本技术实施例提供了一种流量控制装置,该装置应用于终端设备,所述终端设备的中央处理器至少包括两个核心,该装置包括:初始确定模块,用于确定当前周期对应的初始报文总长度;中间确定模块,用于确定当前时刻总共接收到的当前报文数据,并确定所述当前报文数据对应的当前报文总长度;令牌数确定模块,用于根据所述当前报文总长度和所述初始报文总长度,确定待消耗的目标令牌数;控制模块,用于根据所述目标令牌数以及预设令牌桶中的令牌总数,控制所述目标报文数据对应的流量;其中,向所述预设令牌桶中存放令牌的周期与确定所述初始报文总长度的周期相同。这样,可以无需设计锁操作或者原子操作,就能够对流量进行控制,从而可以部署于多核处理器中。
13.第三方面,本技术实施例提供一种电子设备,包括处理器以及存储器,所述存储器存储有计算机可读取指令,当所述计算机可读取指令由所述处理器执行时,运行如上述第一方面提供的所述方法中的步骤。
14.第四方面,本技术实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时运行如上述第一方面提供的所述方法中的步骤。
15.本技术的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本技术实施例了解。本技术的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
16.为了更清楚地说明本技术实施例的技术方案,下面将对本技术实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
17.图1为本技术实施例提供的一种流量控制方法的流程图;
18.图2为本技术实施例涉及的多层预设令牌桶的一种应用场景示意图;
19.图3为本技术实施例提供的一种流量控制装置的结构框图;
20.图4为本技术实施例提供的一种用于执行流量控制方法的电子设备的结构示意图。
具体实施方式
21.下面将结合本技术实施例中附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本技术实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本技术的实施例的详细描述并非旨在限制要求保护的本技术的范围,而是仅仅表示本技术的选定实施例。基于本技术的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。
22.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本技术的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
23.应当说明的是,在不冲突的情况下,本技术中的实施例或者实施例中的技术特征可以进行结合。
24.相关技术中,硬件解决方案存在成本高的问题,软件解决方案可以解决成本高的问题,但是不能灵活部署于多核场景。为了解决相关技术中提供的软件解决方案不能灵活部署于多核场景的问题,本技术提供一种流量控制方法、装置、电子设备和计算机可读存储介质;进一步地,可以向令牌桶中周期性发送报文,令牌桶接收到报文之后,可以根据当前时刻累加得到的当前报文总长度确定出待消耗的令牌数,从而可以根据该待消耗的令牌数以及预设令牌桶中的令牌总数确定是否可以直接将报文发送出去,以实现流量控制。这样,若cpu(central processing unit,中央处理器)中存在多个核心,可以通过当前周期对应的初始报文总长度和当前报文总长度确定出待消耗的令牌数,继而可以根据待消耗的令牌数控制流量。在此过程中,不需要设计锁操作或者原子操作,即可灵活实现流量控制,从而解决了上述问题。
25.以上相关技术中的方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本发明实施例针对上述问题所提出的解决方案,都应该是发明人在本发明过程中对本发明做出的贡献。
26.请参考图1,其示出了本技术实施例提供的一种流量控制方法的流程图。该流量控制方法可以应用于终端设备,所述终端设备的中央处理器至少包括两个核心。如图1所示,该流量控制方法包括以下步骤101至步骤103。
27.步骤101,确定当前周期对应的初始报文总长度。
28.在一些应用场景中,可以先确定出当前周期所对应的初始报文总长度。在这些应用场景中,例如可以先确定出已发送的报文数据,并可以累加已发送的每一个报文数据的报文长度,得到报文总长度,此时可以将该报文总长度确定为初始报文总长度。在这些应用场景中,初始报文总长度也可以为0。也即,此时处于第一个周期,尚未开始发送报文数据。
29.步骤102,确定当前时刻总共接收到的当前报文数据,并确定所述当前报文数据对应的当前报文总长度。
30.终端设备确定了当前周期对应的初始报文总长度之后,可以确定当前时刻总共接收到的当前报文数据。也即,在当前周期内,终端设备可以进一步确定当前时刻总共接收到的报文数据总量,并可以根据当前报文数据确定出对应的当前报文总长度。例如,当前时刻总共接收到的当前报文数据包括长度为4字节的报文数据a、长度为6字节的报文数据b,那么当前报文总长度可以为10字节。
31.步骤103,根据所述当前报文总长度和所述初始报文总长度,确定待消耗的目标令牌数。
32.确定了初始报文总长度以及当前报文总长度之后,可以确定出待消耗的目标令牌数。在一些应用场景中,为了保证当前报文总长度能够尽量有对应的目标令牌数,可以允许其存在一个或几个报文长度的误差。例如,在当前报文总长度的基础上减去4字节或者6字节等误差值的报文长度,并根据减去误差值后的当前报文总长度与初始报文总长度确定出待消耗的目标令牌数。在这些应用场景中,可以根据初始报文长度、当前报文长度以及误差值,确定出在当前周期内,当前时刻待发送的报文数据所对应的报文长度,继而可以根据该报文长度确定出目标令牌数。
33.步骤104,根据所述目标令牌数以及预设令牌桶中的令牌总数,控制所述目标报文数据对应的流量;其中,向所述预设令牌桶中存放令牌的周期与确定所述初始报文总长度的周期相同。
34.确定了目标令牌数之后,可以根据该目标令牌数与预设令牌桶中的令牌总数控制流量。在一些应用场景中,例如可以将目标令牌数与预设令牌桶中的令牌总数进行比较,若检测到目标令牌数不大于预设令牌桶中的令牌总数,则可以一直向外发送报文。若检测到目标令牌数大于预设令牌桶中的令牌总数时,可以暂停向外发送报文,以对流量进行控制。
35.在相关技术中,如果要在处理器中执行令牌桶算法,则需要将返回值加锁,以保证统计得到的流量的正确性。但是这样却只能应用于单核处理器中,不能灵活应用于多核处理器中。
36.在本实施例中,通过上述步骤101至步骤104,可以无需设计锁操作或者原子操作,就能够对流量进行控制,从而可以部署于多核处理器中。
37.在一些应用场景中,存在诸如从高速缓冲存储器中读取数据以及从内存中读取数据时存在延时的原因,导致当前报文总长度存在误差的情况。但是由于没有配置锁操作或者原子操作,所以确定的当前报文总长度至少为与标准当前报文总长度最接近的报文总长度。因此,即便确定的当前报文总长度存在误差,该误差也在允许范围内,对性能影响有限。继而,在应用于多核处理器之后,可以无需担忧性能影响问题。
38.在一些可选的实现方式中,上述步骤103可以包括以下子步骤:
39.子步骤1031,根据所述当前报文总长度和所述初始报文总长度,得到当前时刻待发送的目标报文总长度。
40.在一些应用场景中,在确定了当前周期内所对应的初始报文总长度和当前报文总长度之后,可以将两者做减法,以得到当前时刻待发送的目标报文总长度。例如,在确定了初始报文总长度为38字节,当前报文总长度为88字节之后,可以确定出当前时刻待发送的目标报文总长度为50字节。
41.子步骤1032,根据所述目标报文总长度,确定所述目标令牌数。
42.在一些应用场景中,可以在确定了目标报文总长度之后,进一步确定出目标令牌数。这里,通过待发送的报文长度确定出待消耗的令牌数的技术为现有技术,此处不赘述。
43.通过上述子步骤1031至子步骤1032,提供了一种可以根据初始报文总长度和当前报文总长度的确定出待消耗的目标令牌数的实施例,以方便计算出在当前周期内可能会消耗的令牌数量,以便于确定是否需要限流。
44.在一些可选的实现方式中,上述步骤102可以包括:在所述周期内,以所述初始报文总长度为计算起点,对当前时刻接收到的单个报文数据所对应的单个报文长度进行累加;将所述周期结束时刻得到的报文长度累加和确定为所述当前报文总长度。
45.在一些应用场景中,可以将接收到的单个报文长度进行累加,以得到当前报文总长度。具体的,在同一周期内,可以将该周期内确定的初始报文总长度作为计算起点,统计出自周期开始时刻起至当前时刻止的时间段内,终端设备所接收到的所有报文数据。进一步的,可以对每一个报文数据所对应的报文长度进行累加,以得到当前时刻所对应的当前报文长度累加和。
46.在一些应用场景中,可以将周期结束时刻得到的报文长度累加和确定为当前报文总长度。也即,在周期性测量流量的过程中,可以将每一个周期结束时刻对应的报文长度累加和确定为当前报文总长度。这样,可以直接统计出该周期内待发送的报文总长度,以便于周期性计算目标令牌数,实现周期性控制流量的目的。
47.在一些可选的实现方式中,所述流量控制方法还包括:以确定所述初始报文总长度的时刻为周期起点,在预设的固定时长到达时确定周期结束;以及将上一周期结束时刻接收到的当前报文总长度确定为本周期的初始报文总长度。
48.在一些应用场景中,可以固定时长为周期时间。例如,以1秒为一个周期。这样,可以将确定初始报文总长度的时刻确定为周期的起点时刻,当预设的固定时长到达时,确定本周期结束。
49.在这些应用场景中,可以将上一周期结束时刻已接收到的当前报文总长度确定为本周期的初始报文总长度。这样,在对下一当前报文总长度进行统计时,可以上一当前报文总长度作为累加基础,即便该累加基础存在误差,对性能影响也有限。
50.在一些可选的实现方式中,所述预设令牌桶具有恒定的预设容量,所述流量控制方法还包括:在所述周期内,向所述预设令牌桶中存放固定数量的令牌;若存放令牌后,所述预设令牌桶中的令牌总数大于所述预设容量,则溢出多余的令牌。
51.在一些应用场景中,可以为预设令牌桶配置固定容量。例如,预设令牌桶a的预设容量可以为100个令牌。在这些应用场景中,每个周期可以向预设令牌桶中存放固定数量的令牌。例如,针对上述预设令牌桶a,可以在每个周期开始时,向其内存放100个令牌。
52.在这些应用场景中,如果在预设令牌桶中存放了上述固定数量的令牌之后,预设令牌桶内的令牌总数大于该预设令牌桶的预设容量,则可以溢出多余的令牌。
53.在一些应用场景中,例如可以设置多个预设令牌桶,则可以将溢出的令牌存放在其他未存放满的预设令牌桶中,避免浪费令牌。
54.在一些可选的实现方式中,所述预设令牌桶包括用于提供保证带宽的令牌的保证令牌桶以及用于提供限制带宽的令牌的限制令牌桶;以及上述的若存放令牌后,所述预设令牌桶中的令牌总数大于所述预设容量,则溢出多余的令牌,包括:优先向所述保证令牌桶中存放令牌,若所述保证令牌桶中的令牌总数大于该保证令牌桶对应的预设容量,将多余的令牌溢出到所述限制令牌桶中。
55.在一些应用场景中,可以设置用于承载保证带宽的保证令牌桶以及用于承载限制带宽的限制令牌桶。这样,每个预设令牌桶可以各司其职,为对应的报文数据提供令牌。
56.在这些应用场景中,在向预设令牌桶中存放令牌时,可以优先向保证令牌桶中存放令牌。这样,即便网络非常繁忙,也能够提供保证带宽所需的令牌。
57.进一步的,如果向保证令牌桶中存放令牌之后,保证令牌桶中的令牌总数大于了该保证令牌桶的预设容量,则可以将多余的令牌溢出到限制令牌桶中。这样,不会浪费溢出的令牌。
58.例如,在周期t1内,优先向预设容量为100个令牌桶的保证令牌桶中存放了100个令牌。在该周期t1内,确定出的目标令牌数为70个,则在该周期t1内,该保证令牌桶中剩余30个令牌。此时,进入下一周期t2。同样的,优先向该保证令牌桶中存放了100个令牌桶,但是由于该保证令牌桶的预设容量为100个令牌,在周期t2内存放了100个令牌桶后,会多出30个令牌桶。此时,便可以将这30个令牌溢出到限制令牌桶中。这样,一方面可以提供保证带宽所需的令牌满足需求,另一方面又可以避免浪费令牌。
59.在一些可选的实现方式中,所述预设令牌桶包括一个令牌桶父节点以及至少一个令牌桶子节点,所述至少一个令牌桶子节点所对应的保证带宽之和不大于所述令牌桶父节点所对应的保证带宽,所述至少一个令牌桶子节点各自对应的限制带宽不大于所述令牌桶父节点所对应的限制带宽;以及所述保证令牌桶以及所述限制令牌桶为所述令牌桶父节点。
60.在一些应用场景中,可以仿照htb算法,将预设令牌桶配置为多层令牌桶。具体的,预设令牌桶可以包括一个令牌桶父节点以及多个令牌桶子节点。此时,可以将令牌桶父节点视为预设令牌桶的第一层,将令牌桶子节点视为预设令牌桶的第二层,形成多层结构(如图2中所示)。
61.在一些应用场景中,在设置多层的预设令牌桶时,可以使所有令牌桶子节点所对应的保证带宽之和不大于令牌桶父节点所对应的保证带宽,以使得令牌桶子节点始终可以
从令牌桶父节点中申请到所需的令牌。进一步的,可以使每个令牌桶子节点所对应的限制带宽不大于令牌桶父节点所对应的限制带宽,以限制每个令牌桶子节点对应的流量。
62.这样,上述步骤104可以包括以下子步骤:
63.子步骤1041,确定待消耗令牌的令牌桶子节点;
64.在一些应用场景中,终端设备可以先确定待消耗令牌的令牌桶子节点。例如,若有其他网络设备向令牌桶子节点a申请令牌,可以将该令牌桶子节点a确定为待消耗令牌的令牌桶子节点。
65.子步骤1042,指示所述令牌桶子节点在检测到接收速率未超过承诺信息速率的报文时,在所述保证令牌桶中申请令牌;以及在检测到接收速率超过承诺信息速率的报文时,在所述限制令牌桶中申请令牌。
66.上述承诺信息速率可以视为在网络预定的一条特定虚电路上,正常状态下的信息传送速率。在一些应用场景中,可以指示令牌桶子节点在检测到报文的接收速率小于承诺信息速率时,从保证令牌桶中申请令牌,以满足正常状态下的需求。并可以指示令牌桶子节点在检测到报文的接收速率大于承诺信息速率时,从限制令牌桶中申请令牌,以限制报文的发送速率,达到控制流量的目的。
67.请参阅图2,其示出了多层预设令牌桶的一种应用场景。其中,令牌桶父节点a为预设令牌桶的第一层,令牌桶子节点b和令牌桶子节点c为预设令牌桶的第二层。且令牌桶父节点a中包括保证令牌桶a1以及限制令牌桶a2。若保证令牌桶a1存放有用于提供10m的保证带宽的令牌;限制令牌桶a2存放有用于提供20m的限制带宽的令牌。令牌桶子节点b和令牌桶子节点c存放有用于提供(5-20)m的带宽的令牌。
68.在令牌桶子节点b和令牌桶子节点c都需要申请用于提供(5-20)m的带宽的令牌时,两个令牌桶子节点均可以向保证令牌桶a1申请用于提供5m以内的带宽的令牌,并可以向限制令牌桶a2中申请用于提供剩余带宽所需的令牌。限制带宽令牌桶a2可以根据两个令牌桶子节点申请令牌的时间顺序确定优先发放令牌的对象。
69.在其中一个令牌桶子节点(例如令牌桶子节点b)可以提供(5-20)m的带宽,另一个令牌桶子节点(例如令牌桶子节点c)无法提供带宽时,令牌桶子节点b中用于发送5m以内的报文数据的令牌可以从保证令牌桶a1中申请,并且由于保证令牌桶a1只能提供用于发送10m的保证带宽的令牌,所以令牌桶子节点b只能从限制令牌桶a2中申请15m的限制带宽所需的令牌。但是,由于保证令牌桶a1可以溢出5m带宽所需的令牌到限制令牌桶a2中,所以令牌桶子节点b可以申请到其所需的用于提供20m带宽的令牌,不会造成令牌浪费。
70.请参考图3,其示出了本技术实施例提供的一种流量控制装置的结构框图,该流量控制装置可以是电子设备上的模块、程序段或代码。进一步的,该流量控制装置可以应用于终端设备,所述终端设备的中央处理器至少包括两个核心。应理解,该装置与上述图1方法实施例对应,能够执行图1方法实施例涉及的各个步骤,该装置具体的功能可以参见上文中的描述,为避免重复,此处适当省略详细描述。
71.可选地,上述流量控制装置包括初始确定模块301、中间确定模块302、令牌数确定模块303以及控制模块304。其中,初始确定模块301,用于确定当前周期对应的初始报文总长度;中间确定模块302,用于确定当前时刻总共接收到的当前报文数据,并确定所述当前报文数据对应的当前报文总长度;令牌数确定模块303,用于根据所述当前报文总长度和所
述初始报文总长度,确定待消耗的目标令牌数;控制模块304,用于根据所述目标令牌数以及预设令牌桶中的令牌总数,控制所述目标报文数据对应的流量;其中,向所述预设令牌桶中存放令牌的周期与确定所述初始报文总长度的周期相同。
72.可选地,令牌数确定模块303进一步用于:根据所述当前报文总长度和所述初始报文总长度,得到当前时刻待发送的目标报文总长度;根据所述目标报文总长度,确定所述目标令牌数。
73.可选地,中间确定模块302进一步用于:在所述周期内,以所述初始报文总长度为计算起点,对当前时刻接收到的单个报文数据所对应的单个报文长度进行累加;将所述周期结束时刻得到的报文长度累加和确定为所述当前报文总长度。
74.可选地,所述流量控制装置还包括重置模块,上述重置模块进一步用于:以确定所述初始报文总长度的时刻为周期起点,在预设的固定时长到达时确定周期结束;以及将上一周期结束时刻接收到的当前报文总长度确定为本周期的初始报文总长度。
75.可选地,所述预设令牌桶具有恒定的预设容量,所述流量控制装置还包括溢出模块,上述溢出模块用于:在所述周期内,向所述预设令牌桶中存放固定数量的令牌;若存放令牌后,所述预设令牌桶中的令牌总数大于所述预设容量,则溢出多余的令牌。
76.可选地,所述预设令牌桶包括用于提供保证带宽的令牌的保证令牌桶以及用于提供限制带宽的令牌的限制令牌桶;以及溢出模块进一步用于:优先向所述保证令牌桶中存放令牌,若所述保证令牌桶中的令牌总数大于该保证令牌桶对应的预设容量,将多余的令牌溢出到所述限制令牌桶中。
77.可选地,所述预设令牌桶包括一个令牌桶父节点以及至少一个令牌桶子节点,所述至少一个令牌桶子节点所对应的保证带宽之和不大于所述令牌桶父节点所对应的保证带宽,所述至少一个令牌桶子节点各自对应的限制带宽不大于所述令牌桶父节点所对应的限制带宽;以及所述保证令牌桶以及所述限制令牌桶为所述令牌桶父节点;以及控制模块304进一步用于:确定待消耗令牌的令牌桶子节点;指示所述令牌桶子节点在检测到接收速率未超过承诺信息速率的报文时,在所述保证令牌桶中申请令牌;以及在检测到接收速率超过承诺信息速率的报文时,在所述限制令牌桶中申请令牌。
78.需要说明的是,本领域技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再重复描述。
79.请参照图4,图4为本技术实施例提供的一种用于执行流量控制方法的电子设备的结构示意图,所述电子设备可以包括:至少一个处理器401,例如cpu,至少一个通信接口402,至少一个存储器403和至少一个通信总线404。其中,通信总线404用于实现这些组件直接的连接通信。其中,本技术实施例中设备的通信接口402用于与其他节点设备进行信令或数据的通信。存储器403可以是高速ram存储器,也可以是非易失性的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器403可选的还可以是至少一个位于远离前述处理器的存储装置。存储器403中存储有计算机可读取指令,当所述计算机可读取指令由所述处理器401执行时,电子设备可以执行上述图1所示方法过程。
80.可以理解,图4所示的结构仅为示意,所述电子设备还可包括比图4中所示更多或者更少的组件,或者具有与图4所示不同的配置。图4中所示的各组件可以采用硬件、软件或其组合实现。
81.本技术实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,可以执行如图1所示方法实施例中电子设备所执行的方法过程。
82.本技术实施例提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如,该方法可以包括:确定当前周期对应的初始报文总长度;确定当前时刻总共接收到的当前报文数据,并确定所述当前报文数据对应的当前报文总长度;根据所述当前报文总长度和所述初始报文总长度,确定待消耗的目标令牌数;根据所述目标令牌数以及预设令牌桶中的令牌总数,控制所述目标报文数据对应的流量;其中,向所述预设令牌桶中存放令牌的周期与确定所述初始报文总长度的周期相同。
83.在本技术所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
84.另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
85.再者,在本技术各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
86.在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
87.以上所述仅为本技术的实施例而已,并不用于限制本技术的保护范围,对于本领域的技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1