CN108768873B - 一种流量控制方法及相关设备 - Google Patents
一种流量控制方法及相关设备 Download PDFInfo
- Publication number
- CN108768873B CN108768873B CN201810530470.7A CN201810530470A CN108768873B CN 108768873 B CN108768873 B CN 108768873B CN 201810530470 A CN201810530470 A CN 201810530470A CN 108768873 B CN108768873 B CN 108768873B
- Authority
- CN
- China
- Prior art keywords
- token bucket
- tokens
- message
- shared memory
- queues
- 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
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
-
- 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
- H04L47/22—Traffic shaping
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请实施例公开了一种流量控制方法及相关设备,包括:按照预设的速率向固定大小的令牌桶中加入令牌;接收至少一个网络设备发送的多条报文,并将所述多条报文存放到多个缓存队列中;当所述多个缓存队列中目标缓存队列中的报文的长度小于等于所述令牌桶中的所述令牌的个数时,允许发送所述目标缓存队列中的报文,并修改所述令牌桶中的所述令牌的个数。采用本申请实施例,提高了流量整形的速率。
Description
技术领域
本申请涉及网络技术领域,尤其涉及一种流量控制方法及相关设备。
背景技术
服务质量(Quality of Service,QoS)的流量整形功能,通过预先配置一个整形速率,使得不能超过该配置的整形速率。如果某个时间段的网络流量的速率超过配置的整形速率,缓存这个时间段内的网络流量,按照配置的整形速率来发送缓冲的网络流量。但是,该配置的整形速率一般只能配置到Mbps量级,对于云网络的应用场景,配置的最大整形速率无法满足要求。
发明内容
本申请实施例提供一种流量控制方法及相关设备。可以提高流量整形的速率。
一方面,本申请实施例提供了一种流量控制方法,包括:
按照预设的速率向固定大小的令牌桶中加入令牌;
接收至少一个网络设备发送的多条报文,并将所述多条报文存放到多个缓存队列中;
当所述多个缓存队列中目标缓存队列中的报文的长度小于等于所述令牌桶中的所述令牌的个数时,允许发送所述目标缓存队列中的报文,并修改所述令牌桶中的所述令牌的个数。
其中,所述将所述多条报文存放到多个缓存队列中包括:
获取所述多条报文中每条报文的接收端缩放RSS值;
根据所述RSS值,将所述多条报文存放到所述多个缓存队列中。
其中,所述修改所述令牌桶中的所述令牌的个数包括:
将所述令牌桶中的所述令牌的个数减去发送的所述目标缓存队列中的报文的长度的差值作为所述令牌桶中的所述令牌的剩余值。
其中,所述修改所述令牌桶中的所述令牌的个数包括:
通过原子操作方式修改共享内存中的所述令牌桶中的所述令牌的个数。
其中,所述通过原子操作方式修改共享内存中的所述令牌桶中的所述令牌的个数包括:
从所述共享内存中读取所述令牌桶中的所述令牌的个数;
当所述多个缓存队列中目标缓存队列中的报文的长度小于所述令牌桶中的所述令牌的个数时,消耗所述令牌桶中的所述令牌;
确定读取的所述令牌桶中的所述令牌的个数与消耗所述令牌桶中的所述令牌之后的所述共享内存中所述令牌桶中的所述令牌的个数是否相同;
若相同,则将所述令牌桶中的所述令牌的剩余值写入所述共享内存。
其中,所述当所述多个缓存队列中目标缓存队列中的报文的长度小于所述令牌桶中的所述令牌的个数时,允许发送所述目标缓存队列中的报文包括:
确定所述目标缓存队列中的至少一个报文的总长度;
当所述中目标缓存队列中的至少一个报文的总长度小于所述令牌桶中的所述令牌的个数时,允许发送所述目标缓存队列中的所述多个报文。
其中,所述方法还包括:
当所述多个缓存队列中目标缓存队列中的报文的长度大于所述令牌桶中的所述令牌的个数时,不允许发送所述目标缓存队列中的报文,继续向所述令牌桶中加入令牌。
其中,所述多个缓存队列中每个缓存队列由单独线程处理,所述单独线程占用一个中央处理器CPU逻辑核。
其中,所述令牌桶由单独线程处理,所述单独线程占用一个中央处理器CPU逻辑核。
其中,所述线程之间通过原子操作方式修改共享内存中的所述令牌桶中的所述令牌的个数。
另一方面,本申请实施例提供了一种流量控制装置,包括:
加入模块,用于按照预设的速率向固定大小的令牌桶中加入令牌;
接收模块,用于接收至少一个网络设备发送的多条报文,并将所述多条报文存放到多个缓存队列中;
处理模块,用于当所述多个缓存队列中目标缓存队列中的报文的长度小于等于所述令牌桶中的所述令牌的个数时,允许发送所述目标缓存队列中的报文,并修改所述令牌桶中的所述令牌的个数。
其中,所述接收模块,还用于获取所述多条报文中每条报文的接收端缩放RSS值;根据所述RSS值,将所述多条报文存放到所述多个缓存队列中。
其中,所述处理模块,还用于将所述令牌桶中的所述令牌的个数减去发送的所述目标缓存队列中的报文的长度的差值作为所述令牌桶中的所述令牌的剩余值。
其中,所述处理模块,还用于通过原子操作方式修改共享内存中的所述令牌桶中的所述令牌的个数。
其中,所述处理模块,还用于从所述共享内存中读取所述令牌桶中的所述令牌的个数;当所述多个缓存队列中目标缓存队列中的报文的长度小于所述令牌桶中的所述令牌的个数时,消耗所述令牌桶中的所述令牌;确定读取的所述令牌桶中的所述令牌的个数与消耗所述令牌桶中的所述令牌之后的所述共享内存中所述令牌桶中的所述令牌的个数是否相同;若相同,则将所述令牌桶中的所述令牌的剩余值写入所述共享内存。
其中,所述处理模块,还用于确定所述目标缓存队列中的至少一个报文的总长度;当所述中目标缓存队列中的至少一个报文的总长度小于所述令牌桶中的所述令牌的个数时,允许发送所述目标缓存队列中所述多个报文。
其中,所述处理模块,还用于当所述多个缓存队列中目标缓存队列中的报文的长度大于所述令牌桶中的所述令牌的个数时,不允许发送所述目标缓存队列中的报文,继续向所述令牌桶中加入令牌。
其中,所述多个缓存队列中每个缓存队列由单独线程处理,所述单独线程占用一个中央处理器CPU逻辑核。
其中,所述令牌桶由单独线程处理,所述单独线程占用一个中央处理器CPU逻辑核。
其中,所述线程之间通过原子操作方式修改共享内存中的所述令牌桶中的所述令牌的个数。
又一方面,本申请提供了一种流量控制设备,包括:处理器、存储器和通信总线,其中,通信总线用于实现处理器和存储器之间连接通信,处理器执行存储器中存储的程序用于实现上述第一方面提供的一种流量控制方法中的步骤。
在一个可能的设计中,本申请提供的流量控制设备可以包含用于执行上述方法中行为相对应的模块。模块可以是软件和/或是硬件。
本申请的又一方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有多条指令,所述指令适于由处理器加载并执行上述各方面所述的方法。
本申请的又一方面提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
实施本申请实施例,按照预设的速率向固定大小的令牌桶中加入令牌;接收至少一个网络设备发送的多条报文,并将所述多条报文存放到多个缓存队列中;当所述多个缓存队列中目标缓存队列中的报文的长度小于等于所述令牌桶中的所述令牌的个数时,允许发送所述目标缓存队列中的报文,并修改所述令牌桶中的所述令牌的个数。通过多个缓存队列处理接到的多条报文,从而提高了流量整形支持的整形速率。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是现有技术方案提出的一种流量控制的示意图;
图2是本申请实施例提供的一种流量控制系统的结构示意图;
图3是本申请实施例提供的一种流量控制方法的流程示意图;
图4是本申请实施例提供的另一种流量控制方法的流程示意图;
图5是本申请实施例提供的一种流量控制方法的示意图;
图6是本申请实施例提供的一种流量控制装置的结构示意图;
图7是本申请实施例提出的一种流量控制设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参考图1,图1是现有技术方案提供的一种流量控制方法的示意图。如图所示,存在一个固定大小的令牌桶,以预设的速率rate向令牌桶中放入令牌,如果令牌桶中的令牌已装满,则新到来的令牌会被丢弃。同时存在一个固长度的缓存队列,将新到来的报文放置在缓存队列中的队尾,如果令牌桶中令牌的个数大于等于缓存队列中的报文的长度,则允许发送该缓存队列中的报文。如果令牌桶中的令牌个数小于缓存队列中的报文的长度,则将报文缓存在缓存队列中,等待令牌桶中的令牌的个数足够再发送报文。如果缓存队列中报文已满,新到达的报文被丢弃。该令牌桶算法可以实现流量整形,但是性能较低,整形中能达到的最大带宽偏小,无法满足云网络场景的要求。另外,开源项目的数据平面开发工具包(Data Plane Development Kit,DPDK)中的分层QoS(Hierarchical Quality ofService,HQoS)模块实现的流量整形方案,为了避免多核竞争,只能采用单核执行令牌桶算法,因此扩展性差。又如,Linux平台实现的流量整形方案在该令牌桶算法基础上,在通过多核来实现整形流量时,通过自旋锁来解决多核竞争。但是,该方案采用自旋锁加锁粒度太大,同时加锁的效率低,导致整体性能低。针对上述技术问题,本申请实施例提供了如下解决方案。
请参考图2,图2是本申请实施例提供的一种流量控制系统的结构示意图。该系统包括数据中心(Internet Data Center,IDC)、网络功能虚拟化网关(Network FunctionVirtualization GateWay,NGW)和骨干网(Data Center Inter-connect,DCI)。其中,IDC包括多个虚拟私有网络(Virtual Private Cloud,VPC)。NGW可以看成一个VPC网关,用于执行流量控制,将接收IDC中不同VPC发送的报文,并在对报文协议头转换后发送给DCI。用户可以登录NGW设备的后台服务上,按照命令行的形式配置整形速率。本申请实施例可以对单个VPC的流量进行整形,也可以对多个VPC的流量进行整形来实现大带宽流量整形。例如,用户可以针对VPC 0配置10Gbit/s的整形速率,确保经过NGW处理后,从VPC 0发往DCI的流量速率不会超过10Gbit/s。
请参考图3,图3是本申请实施例提供的一种流量控制方法的流程示意图。如图3所示,本申请实施例中的方法至少包括如下步骤:
S301,按照预设的速率向固定大小的令牌桶中加入令牌。
具体实现中,在向令牌桶中加入令牌的过程中,如果令牌桶中的令牌未装满,则继续按照预设的速率向固定大小的令牌桶中加入令牌,如果令牌桶中的令牌已装满,则丢弃新到来的令牌。其中,所述令牌桶可以由单独线程处理,所述单独线程占用一个中央处理器CPU逻辑核。
S302,接收至少一个网络设备发送的多条报文,并将所述多条报文存放到多个缓存队列中。
具体实现中,可以首先接收一个或多个网络设备发送的多条报文,然后获取所述多条报文中每条报文的接收端缩放RSS值;根据所述RSS值,将所述多条报文存放到所述多个缓存队列中,从而将多条报文均匀的存放到所述缓存队列中。
需要说明的是,在本申请实施例中,支持动态配置多个缓存队列,在接收到需要进行流量整形的报文之后,可以将报文hash到不同的缓存队列中进行处理,其中,所述多个缓存队列中每个缓存队列可以由单独线程处理,所述单独线程占用一个中央处理器CPU逻辑核。
S303,当所述多个缓存队列中目标缓存队列中的报文的长度小于等于所述令牌桶中的所述令牌的个数时,允许发送所述目标缓存队列中的报文,并修改所述令牌桶中的所述令牌的个数。
具体实现中,在发送所述目标缓存队列中的报文之后,需要消耗所述令牌桶中的所述令牌,其中,消耗的所述令牌桶中的所述令牌的个数与发送的所述目标缓存队列中的报文的长度的相同。因此可以将所述令牌桶中的所述令牌的个数减去发送的所述目标缓存队列中的报文的长度的差值作为所述令牌桶中的所述令牌的剩余值,然后将共享内存中消耗前的令牌桶中的所述令牌的个数修改为消耗后的剩余值。
可选的,由于用于处理多个缓存队列的多个线程会消耗令牌桶中的令牌,用于维护令牌桶的线程也会生产令牌。在通过某个线程来处理某个缓存队列中的报文过程中,其他线程都有可能修改共享内存中令牌桶中令牌的个数,导致令牌桶中的令牌计数错误,影响流量控制的正常运行。因此可以通过原子操作方式修改共享内存中的所述令牌桶中的所述令牌的个数,从而防止其他线程修改共享内存中令牌桶中令牌的个数。具体包括如下操作:
进一步的,可以从所述共享内存中读取所述令牌桶中的所述令牌的个数;当所述多个缓存队列中目标缓存队列中的报文的长度小于所述令牌桶中的所述令牌的个数时,消耗所述令牌桶中的所述令牌;确定读取的所述令牌桶中的所述令牌的个数与消耗所述令牌桶中的所述令牌之后的所述共享内存中所述令牌桶中的所述令牌的个数是否相同;若相同,则将所述令牌桶中的所述令牌的剩余值写入所述共享内存。若不相同,则说明所述令牌桶中的所述令牌的个数已经被其他线程修改,返回失败消息。
例如,利用x86平台提供的cmpxchg指令加“lock”前缀,原子地将需要发送的报文的长度和当前令牌桶中的令牌个数进行比较,如果缓存队列中的报文的长度小于等于令牌桶中的所述令牌的个数,则消耗令牌桶中与该报文的长度相当的令牌。
需要说明的是,由于用于处理多个缓存队列的多个线程会消耗令牌桶中的令牌,用于维护令牌桶的线程也会生产令牌,于是就产生了多线程互斥修改共享内存中的同一个变量。本申请实施例中,通过x86平台cmpxchg指令加“lock”前缀的方式,采用原子操作方式来修改令牌桶令牌个数,解决了多个线程修改同一个变量的问题,进而达到Gbps级别流量整形速率的要求,极大提高了算法多核运行时的整体性能。
在本申请实施例中,首先按照预设的速率向固定大小的令牌桶中加入令牌;然后接收至少一个网络设备发送的多条报文,并将所述多条报文存放到多个缓存队列中;最后当所述多个缓存队列中目标缓存队列中的报文的长度小于等于所述令牌桶中的所述令牌的个数时,允许发送所述目标缓存队列中的报文,并修改所述令牌桶中的所述令牌的个数。通过多个缓存队列处理接到的多条报文,从而提高了流量整形支持的整形速率。
请参考图4,图4是本申请实施例提供的另一种流量控制方法的流程示意图。如图4所示,本申请实施例中的方法至少包括如下步骤:
S401,按照预设的速率向固定大小的令牌桶中加入令牌。具体实现方式与上一实施例中的S301相同,本步骤不再赘述。
S402,接收至少一个网络设备发送的多条报文,并将所述多条报文存放到多个缓存队列中。具体实现方式与上一实施例中的S302相同,本步骤不再赘述。
S403,确定所述多个缓存队列中目标缓存队列中的报文的长度是否小于等于所述令牌桶中的所述令牌的个数。
S404,当所述多个缓存队列中目标缓存队列中的报文的长度小于等于所述令牌桶中的所述令牌的个数时,允许发送所述目标缓存队列中的报文,并修改所述令牌桶中的所述令牌的个数。具体实现方式与上一实施例中的S303相同,本步骤不再赘述。
可选的,可以确定所述目标缓存队列中的至少一个报文的总长度;当所述中目标缓存队列中的至少一个报文的总长度小于所述令牌桶中的所述令牌的个数时,允许发送所述目标缓存队列中的所述多个报文。通过采取批量的形式从单个缓存队列的队尾弹出多个报文,并计算多个报文的总长度,进而一次性消耗令牌桶中的令牌,从而减少多线程间原子地修改共享内存中变量的次数,提高流量控制的性能。
S405,当所述多个缓存队列中目标缓存队列中的报文的长度大于所述令牌桶中的所述令牌的个数时,返回失败的消息,不允许发送所述目标缓存队列中的报文,指示将该报文缓存到缓存队列中,继续向所述令牌桶中加入令牌,等待令牌桶中的令牌数量足够时,再发送该报文。
例如,如图5所示,图5是本申请实施例提供的一种流量控制方法的示意图。NGW接收到多条报文之后,将多条报文分别存放到缓存队列1、缓存队列2、缓存队列3以及缓存队列4中,同时不断向令牌桶中加入令牌。当处理缓存队列2中的线程通过竞争方式得到发送报文的机会时,将需要发送的报文与令牌桶中当前的令牌的个数进行比较,如果令牌桶中的令牌足够,则将该报文发送给DCI。如果令牌桶中的令牌不够,则指示将该报文缓存在队列中,等待向令牌桶中继续加入令牌。
请参考图6,图6是本申请实施例提供的一种流量控制装置的结构示意图。如图6所示,本申请实施例中的流量控制装置包括:
加入模块601,用于按照预设的速率向固定大小的令牌桶中加入令牌。
具体实现中,在向令牌桶中加入令牌的过程中,如果令牌桶中的令牌未装满,则持续按照预设的速率向固定大小的令牌桶中加入令牌,如果令牌桶中的令牌已装满,则丢弃新到来的令牌。其中,所述令牌桶可以由单独线程处理,所述单独线程占用一个中央处理器CPU逻辑核。
接收模块602,用于接收至少一个网络设备发送的多条报文,并将所述多条报文存放到多个缓存队列中。
具体实现中,可以首先接收一个或多个网络设备发送的多条报文,然后获取所述多条报文中每条报文的接收端缩放RSS值;根据所述RSS值,将所述多条报文存放到所述多个缓存队列中,从而将多条报文均匀的存放到所述缓存队列中。
需要说明的是,在本申请实施例中,支持动态配置多个缓存队列,在接收到需要进行流量整形的报文之后,可以将报文hash到不同的缓存队列中进行处理,其中,所述多个缓存队列中每个缓存队列可以由单独线程处理,所述单独线程占用一个中央处理器CPU逻辑核。
处理模块603,用于当所述多个缓存队列中目标缓存队列中的报文的长度小于等于所述令牌桶中的所述令牌的个数时,允许发送所述目标缓存队列中的报文,并修改所述令牌桶中的所述令牌的个数。
具体实现中,在发送所述目标缓存队列中的报文之后,需要消耗所述令牌桶中的所述令牌,其中,消耗的所述令牌桶中的所述令牌的个数与发送的所述目标缓存队列中的报文的长度的相同。因此可以将所述令牌桶中的所述令牌的个数减去发送的所述目标缓存队列中的报文的长度的差值作为所述令牌桶中的所述令牌的剩余值,然后将共享内存中消耗前的令牌桶中的所述令牌的个数修改为消耗后的剩余值。
可选的,由于用于处理多个缓存队列的多个线程会消耗令牌桶中的令牌,用于维护令牌桶的线程也会生产令牌,在通过某个线程来处理某个缓存队列中的报文过程中,其他线程都有可能修改共享内存中令牌桶中令牌的个数,导致令牌桶中的令牌计数错误,影响流量控制的正常运行。因此可以通过原子操作方式修改共享内存中的所述令牌桶中的所述令牌的个数,从而防止其他线程修改共享内存中令牌桶中令牌的个数。具体包括如下操作:
进一步的,可以从所述共享内存中读取所述令牌桶中的所述令牌的个数;当所述多个缓存队列中目标缓存队列中的报文的长度小于所述令牌桶中的所述令牌的个数时,消耗所述令牌桶中的所述令牌;确定读取的所述令牌桶中的所述令牌的个数与消耗所述令牌桶中的所述令牌之后的所述共享内存中所述令牌桶中的所述令牌的个数是否相同;若相同,则将所述令牌桶中的所述令牌的剩余值写入所述共享内存。若不相同,则说明所述令牌桶中的所述令牌的个数已经被其他线程修改,返回失败消息。
例如,利用x86平台提供的cmpxchg指令加“lock”前缀,原子地将需要发送的报文的长度和当前令牌桶中的令牌个数进行比较,如果缓存队列中的报文的长度小于等于令牌桶中的所述令牌的个数,则消耗令牌桶中与该报文的长度相当的令牌。
需要说明的是,由于用于处理多个缓存队列的多个线程会消耗令牌桶中的令牌,用于维护令牌桶的线程也会生产令牌,于是就产生了多线程互斥修改共享内存中的同一个变量。本申请实施例中,通过x86平台cmpxchg指令加“lock”前缀的方式,采用原子操作方式来修改令牌桶令牌个数,解决了多个线程修改同一个变量的问题,进而达到Gbps级别流量整形速率的要求,极大提高了算法多核运行时整体性能。
可选的,可以确定所述目标缓存队列中的至少一个报文的总长度;当所述中目标缓存队列中的至少一个报文的总长度小于所述令牌桶中的所述令牌的个数时,允许发送所述目标缓存队列中的所述多个报文。通过采取批量的形式从单个缓存队列的队尾弹出多个报文,并计算多个报文的总长度,进而一次性消耗令牌桶中的令牌,从而减少多线程间原子地修改共享内存中变量的次数,提高流量控制的性能。
在本申请实施例中,首先按照预设的速率向固定大小的令牌桶中加入令牌;然后接收至少一个网络设备发送的多条报文,并将所述多条报文存放到多个缓存队列中;最后当所述多个缓存队列中目标缓存队列中的报文的长度小于等于所述令牌桶中的所述令牌的个数时,允许发送所述目标缓存队列中的报文,并修改所述令牌桶中的所述令牌的个数。通过多个缓存队列处理接到的多条报文,从而提高了流量整形支持的整形速率。
请继续参考图7,图7是本申请实施例提出的一种流量控制设备的结构示意图。如图所示,该流量控制设备可以包括:至少一个处理器701,至少一个通信接口702,至少一个存储器703和至少一个通信总线704。
其中,处理器701可以是中央处理器单元,通用处理器,数字信号处理器,专用集成电路,现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理器和微处理器的组合等等。通信总线704可以是外设部件互连标准PCI总线或扩展工业标准结构EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信总线704用于实现这些组件之间的连接通信。其中,本申请实施例中的流量控制设备的通信接口702用于与其他节点设备进行信令或数据的通信。存储器703可以包括易失性存储器,例如非挥发性动态随机存取内存(Nonvolatile Random Access Memory,NVRAM)、相变化随机存取内存(Phase Change RAM,PRAM)、磁阻式随机存取内存(Magetoresistive RAM,MRAM)等,还可以包括非易失性存储器,例如至少一个磁盘存储器件、电子可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、闪存器件,例如反或闪存(NOR flash memory)或是反及闪存(NAND flash memory)、半导体器件,例如固态硬盘(Solid State Disk,SSD)等。存储器703可选的还可以是至少一个位于远离前述处理器701的存储装置。存储器703中存储一组程序代码,且处理器701执行存储器703中的程序。
按照预设的速率向固定大小的令牌桶中加入令牌;
接收至少一个网络设备发送的多条报文,并将所述多条报文存放到多个缓存队列中;
当所述多个缓存队列中目标缓存队列中的报文的长度小于等于所述令牌桶中的所述令牌的个数时,允许发送所述目标缓存队列中的报文,并修改所述令牌桶中的所述令牌的个数。
可选的,处理器701还用于执行如下操作步骤:
获取所述多条报文中每条报文的接收端缩放RSS值;
根据所述RSS值,将所述多条报文存放到所述多个缓存队列中。
可选的,处理器701还用于执行如下操作步骤:
将所述令牌桶中的所述令牌的个数减去发送的所述目标缓存队列中的报文的长度的差值作为所述令牌桶中的所述令牌的剩余值。
可选的,处理器701还用于执行如下操作步骤:
通过原子操作方式修改共享内存中的所述令牌桶中的所述令牌的个数。
可选的,处理器701还用于执行如下操作步骤:
从所述共享内存中读取所述令牌桶中的所述令牌的个数;
当所述多个缓存队列中目标缓存队列中的报文的长度小于所述令牌桶中的所述令牌的个数时,消耗所述令牌桶中的所述令牌;
确定读取的所述令牌桶中的所述令牌的个数与消耗所述令牌桶中的所述令牌之后的所述共享内存中所述令牌桶中的所述令牌的个数是否相同;
若相同,则将所述令牌桶中的所述令牌的剩余值写入所述共享内存。
可选的,处理器701还用于执行如下操作步骤:
确定所述目标缓存队列中的至少一个报文的总长度;
当所述中目标缓存队列中的所述至少一个报文的总长度小于所述令牌桶中的所述令牌的个数时,允许发送所述目标缓存队列中的所述多个报文。
可选的,处理器701还用于执行如下操作步骤:
当所述多个缓存队列中目标缓存队列中的报文的长度大于所述令牌桶中的所述令牌的个数时,不允许发送所述目标缓存队列中的报文,继续向所述令牌桶中加入令牌。
其中,所述多个缓存队列中每个缓存队列由单独线程处理,所述单独线程占用一个中央处理器CPU逻辑核。
其中,所述令牌桶由单独线程处理,所述单独线程占用一个中央处理器CPU逻辑核。
进一步的,处理器还可以与存储器和通信接口相配合,执行上述申请实施例中NGW的操作。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk (SSD))等。
以上所述的具体实施方式,对本申请的目的、技术方案和有益效果进行了进一步详细说明。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (9)
1.一种流量控制方法,其特征在于,所述方法包括:
按照预设的速率向固定大小的令牌桶中加入令牌;
接收至少一个网络设备发送的多条报文,并将所述多条报文存放到多个缓存队列中;
当所述多个缓存队列中目标缓存队列中的报文的长度小于等于所述令牌桶中的所述令牌的个数时,允许发送所述目标缓存队列中的报文,并通过原子操作方式修改共享内存中的所述令牌桶中的所述令牌的个数,包括:
从所述共享内存中读取所述令牌桶中的所述令牌的个数;
当所述多个缓存队列中目标缓存队列中的报文的长度小于所述令牌桶中的所述令牌的个数时,消耗所述令牌桶中的所述令牌;
确定读取的所述令牌桶中的所述令牌的个数与消耗所述令牌桶中的所述令牌之后的所述共享内存中所述令牌桶中的所述令牌的个数是否相同;
若相同,则将所述令牌桶中的所述令牌的剩余值写入所述共享内存。
2.如权利要求1所述的方法,其特征在于,所述将所述多条报文存放到多个缓存队列中包括:
获取所述多条报文中每条报文的接收端缩放RSS值;
根据所述RSS值,将所述多条报文存放到所述多个缓存队列中。
3.如权利要求1所述的方法,其特征在于,所述修改所述令牌桶中的所述令牌的个数包括:
将所述令牌桶中的所述令牌的个数减去发送的所述目标缓存队列中的报文的长度的差值作为所述令牌桶中的所述令牌的剩余值。
4.如权利要求1所述的方法,其特征在于,所述当所述多个缓存队列中目标缓存队列中的报文的长度小于所述令牌桶中的所述令牌的个数时,允许发送所述目标缓存队列中的报文包括:
确定所述目标缓存队列中的至少一个报文的总长度;
当所述目标缓存队列中的所述至少一个报文的总长度小于所述令牌桶中的所述令牌的个数时,允许发送所述目标缓存队列中的所述至少一个报文。
5.如权利要求1所述的方法,其特征在于,所述方法还包括:
当所述多个缓存队列中目标缓存队列中的报文的长度大于所述令牌桶中的所述令牌的个数时,不允许发送所述目标缓存队列中的报文,继续向所述令牌桶中加入令牌。
6.如权利要求1-5任一项所述的方法,其特征在于,所述多个缓存队列中每个缓存队列由单独线程处理,所述令牌桶由单独线程处理,所述单独线程占用一个中央处理器CPU逻辑核。
7.如权利要求6所述的方法,其特征在于,所述线程之间通过原子操作方式修改共享内存中的所述令牌桶中的所述令牌的个数。
8.一种流量控制装置,其特征在于,所述装置包括:
加入模块,用于按照预设的速率向固定大小的令牌桶中加入令牌;
接收模块,用于接收至少一个网络设备发送的多条报文,并将所述多条报文存放到多个缓存队列中;
处理模块,用于当所述多个缓存队列中目标缓存队列中的报文的长度小于等于所述令牌桶中的所述令牌的个数时,允许发送所述目标缓存队列中的报文,并通过原子操作方式修改共享内存中的所述令牌桶中的所述令牌的个数;
所述处理模块,在所述通过原子操作方式修改共享内存中的所述令牌桶中的所述令牌的个数方面,具体用于从所述共享内存中读取所述令牌桶中的所述令牌的个数;当所述多个缓存队列中目标缓存队列中的报文的长度小于所述令牌桶中的所述令牌的个数时,消耗所述令牌桶中的所述令牌;确定读取的所述令牌桶中的所述令牌的个数与消耗所述令牌桶中的所述令牌之后的所述共享内存中所述令牌桶中的所述令牌的个数是否相同;若相同,则将所述令牌桶中的所述令牌的剩余值写入所述共享内存。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有多条指令,所述指令适于由处理器加载并执行所述权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810530470.7A CN108768873B (zh) | 2018-05-29 | 2018-05-29 | 一种流量控制方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810530470.7A CN108768873B (zh) | 2018-05-29 | 2018-05-29 | 一种流量控制方法及相关设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108768873A CN108768873A (zh) | 2018-11-06 |
CN108768873B true CN108768873B (zh) | 2021-09-28 |
Family
ID=64003355
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810530470.7A Active CN108768873B (zh) | 2018-05-29 | 2018-05-29 | 一种流量控制方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108768873B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109495299B (zh) * | 2018-11-07 | 2021-12-28 | 同盾控股有限公司 | 一种数据流量的控制方法、装置 |
CN109995672B (zh) * | 2019-03-22 | 2022-03-25 | 烽火通信科技股份有限公司 | 基于dpdk的虚拟家庭网关带宽调度控制方法及系统 |
CN110275780B (zh) * | 2019-06-26 | 2022-08-02 | 北京百度网讯科技有限公司 | 用于限制流量的方法和装置 |
CN110572329B (zh) * | 2019-07-08 | 2022-07-01 | 紫光云技术有限公司 | 一种网络自适应流量整形方法及系统 |
CN111193668B (zh) * | 2019-12-10 | 2022-05-10 | 中移(杭州)信息技术有限公司 | 流量分配方法、装置、计算机设备及存储介质 |
CN112003795B (zh) * | 2020-07-17 | 2022-12-20 | 苏州浪潮智能科技有限公司 | 一种动态预防流量攻击的方法、系统、设备及存储介质 |
CN112367270B (zh) * | 2020-10-30 | 2023-01-10 | 锐捷网络股份有限公司 | 一种报文发送的方法和设备 |
CN112799861B (zh) * | 2021-01-29 | 2024-01-09 | 上海弘积信息科技有限公司 | 一种多核架构下流量限速无锁并发实现的方法 |
CN113691461B (zh) * | 2021-08-23 | 2023-03-24 | 新华三信息安全技术有限公司 | 一种多核设备的令牌桶管理方法及装置 |
CN115987901A (zh) * | 2021-10-14 | 2023-04-18 | 中国移动通信集团西藏有限公司 | 报文发送方法、装置、设备及存储介质 |
CN114598658A (zh) * | 2022-03-07 | 2022-06-07 | 浪潮云信息技术股份公司 | 一种流量限制方法及装置 |
CN115150198B (zh) * | 2022-09-01 | 2022-11-08 | 国汽智控(北京)科技有限公司 | 车载入侵检测系统、方法、电子设备及存储介质 |
CN115622945A (zh) * | 2022-09-15 | 2023-01-17 | 新华三信息安全技术有限公司 | 一种报文处理方法及装置 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7225271B1 (en) * | 2001-06-29 | 2007-05-29 | Cisco Technology, Inc. | System and method for recognizing application-specific flows and assigning them to queues |
CN101834790B (zh) * | 2010-04-22 | 2012-12-19 | 上海华为技术有限公司 | 一种基于多核处理器的流量控制方法和多核处理器 |
CN102035732B (zh) * | 2010-11-25 | 2013-12-04 | 华为技术有限公司 | 业务调度方法及装置 |
CN102118314A (zh) * | 2011-02-28 | 2011-07-06 | 华为技术有限公司 | 流量管理的方法和管理装置 |
CN103441954B (zh) * | 2013-08-27 | 2016-09-28 | 福建星网锐捷网络有限公司 | 一种报文发送方法、装置及网络设备 |
CN103645942B (zh) * | 2013-12-12 | 2017-02-01 | 北京奇安信科技有限公司 | 基于消息队列的共享内存写入及读取方法和系统 |
CN105024942B (zh) * | 2015-05-29 | 2018-05-08 | 桂林电子科技大学 | 一种动态流量监控方法 |
CN106385377B (zh) * | 2015-07-29 | 2020-06-16 | 腾讯科技(深圳)有限公司 | 一种信息处理方法和系统 |
CN107528789B (zh) * | 2016-06-22 | 2020-02-11 | 新华三技术有限公司 | 报文调度方法及装置 |
-
2018
- 2018-05-29 CN CN201810530470.7A patent/CN108768873B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN108768873A (zh) | 2018-11-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108768873B (zh) | 一种流量控制方法及相关设备 | |
US11934330B2 (en) | Memory allocation for distributed processing devices | |
US20200280518A1 (en) | Congestion management techniques | |
US11381515B2 (en) | On-demand packet queuing in a network device | |
US12074794B2 (en) | Receiver-based precision congestion control | |
US8321385B2 (en) | Hash processing in a network communications processor architecture | |
US20210320866A1 (en) | Flow control technologies | |
US20220224614A1 (en) | Technologies for capturing processing resource metrics as a function of time | |
US20210359955A1 (en) | Cache allocation system | |
US20220014478A1 (en) | Resource consumption control | |
CN112953848A (zh) | 一种基于严格优先级的流量监管方法、系统及设备 | |
US20220124035A1 (en) | Switch-originated congestion messages | |
CN113992594B (zh) | 流量控制方法、装置、电子设备和计算机可读存储介质 | |
JP2022032974A (ja) | ネットワークによる攻撃からの保護 | |
US20230283578A1 (en) | Method for forwarding data packet, electronic device, and storage medium for the same | |
CN113411262A (zh) | 一种大型接收卸载功能的设置方法和装置 | |
US20230100935A1 (en) | Microservice deployments using accelerators | |
CN115118668A (zh) | 流控制技术 | |
WO2023121768A1 (en) | Switch for managing service meshes | |
WO2023121785A1 (en) | Packet format adjustment technologies | |
US20210058343A1 (en) | Maintaining bandwidth utilization in the presence of packet drops | |
US10705985B1 (en) | Integrated circuit with rate limiting | |
US11552907B2 (en) | Efficient packet queueing for computer networks | |
US20220321478A1 (en) | Management of port congestion | |
US20190044872A1 (en) | Technologies for targeted flow control recovery |
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 |