CN101951339B - 报文限速方法、装置及网络设备 - Google Patents
报文限速方法、装置及网络设备 Download PDFInfo
- Publication number
- CN101951339B CN101951339B CN2010102622237A CN201010262223A CN101951339B CN 101951339 B CN101951339 B CN 101951339B CN 2010102622237 A CN2010102622237 A CN 2010102622237A CN 201010262223 A CN201010262223 A CN 201010262223A CN 101951339 B CN101951339 B CN 101951339B
- Authority
- CN
- China
- Prior art keywords
- message
- currency
- variable
- release
- invalid
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种报文限速方法、装置及网络设备,其中限速方法包括:当对从缓存空间获取的报文处理结束后,获取释放变量的当前值,释放变量的当前值用于标识本次单位时间内还允许释放的缓存空间的数量;判断释放变量的当前值是否大于预设阈值;若释放变量的当前值等于预设阈值,则存储报文对应的缓存空间的标识,以待本次单位时间结束时,根据标识对标识对应的缓存空间进行处理。本发明技术方案通过限制缓存空间的释放数量实现对报文的限速,具有适应性强,且可以提高CPU利用率的优点。
Description
技术领域
本发明涉及网络通信技术,尤其涉及一种报文限速方法、装置及网络设备。
背景技术
为了对交换机等嵌入式通讯设备进行管理以及支持通信协议,通讯设备的专用集成电路需要将具有管理作用的管理报文和用于协议处理的协议报文发送到通讯设备的中央处理单元(Center Processing Unit;简称为:CPU),以便CPU对管理报文和协议报文进行软件处理;同样,CPU也会通过专用集成电路进行管理报文和协议报文的发送。
其中,通讯设备的CPU接收报文通常被称为收包(包即指报文)。基于图1所示的通讯设备收包时的部分电路结构,该收包过程具体为:专用集成电路11将需要送CPU13的报文存放在内存12中;当专用集成电路11将报文完整的放入内存12后,向CPU13发出收包中断;CPU13接收到专用集成电路11的收包中断后,从内存12中读取报文,并对报文进行处理。当CPU13处理完报文后,会将报文占用的内存12中的缓存空间释放。在内存12中,报文是以缓存队列的形式进行存储的,即内存12中的存放报文的缓存空间首尾相接构成一收包环。且在内存12中存在多个优先级不同的收包环,以用于划分报文优先级,并通过优先级队列对报文进行限速,该限速方式通常被称为优先级限速。该方式对CPU13有一定的保护作用。
目前,网络中会存在大量的攻击行为,此时攻击者会制造大量需要送CPU的报文,然后发送给通讯设备。如果将所有攻击报文都送往CPU,这些攻击报文会大量占用CPU资源,甚至超过CPU的处理能力,从而使CPU无暇处 理正常的管理报文和协议报文,最终导致通讯设备不能正常工作。现有技术通常采用对报文进行限速的方式保护CPU,包括硬件限速和软件限速。其中,硬件限速是指由专用集成电路控制送入内存中的报文数量,当达到预设速率时,将后续报文丢弃,以保证进入内存中的报文的速率。软件限速是指CPU在每次获取报文之后,统计当前获取的报文数量并与预设速率进行比较;若大于预设速率,则尽早丢弃超限报文,以达到保护CPU本身的目的。
但是,现有技术中的上述限速方法均存在缺陷。例如:如果采用硬件限速,则要求通讯设备的专用集成电路必须具有硬件限速功能,若没有硬件限速功能,则该方案将无法实施,即该方式实用性较差。另外,硬件限速方式存在粒度(粒度是指设定的两个相邻限速值间的间隔)和误差的问题。例如:当设置粒度为64包/秒时,则硬件限速只能对支持以64、128、192包/秒的速率向内存提供报文,而无法以100包/秒的速率向内存提供报文;并且即使设置为64包/秒,而实际上每秒钟送往内存的报文也不一定是64包。而软件限速是在CPU获取报文之后才进行是否超速判断,虽然CPU可以及早丢弃超限报文,但是,这些超限报文仍会占用CPU资源,导致CPU资源的额外浪费。
发明内容
本发明提供一种报文限速方法、装置及网络设备,用以解决现有硬件限速方式实用性差,而现有软件限速方式仍会导致CPU资源的额外浪费等问题。
本发明提供了一种报文限速方法,包括:
当对从缓存空间获取的报文处理结束后,获取释放变量的当前值,所述释放变量的当前值用于标识本次单位时间内还允许释放的缓存空间的数量;
判断所述释放变量的当前值是否大于预设阈值;
若所述释放变量的当前值等于所述预设阈值,则存储所述报文对应的缓存空间的标识,以待本次单位时间结束时,根据所述标识对所述标识对应的缓存空间进行处理;
若所述释放变量的当前值大于所述预设阈值,则将所述释放变量的当前值减1,并将所述报文对应的缓存空间的有效性置为无效,以释放所述报文对应的缓存空间。
本发明提供一种报文限速装置,包括:
当前值获取模块,用于当对从缓存空间获取的报文处理结束后,获取释放变量的当前值,所述释放变量的当前值用于标识本次单位时间内还允许释放的缓存空间的数量;
判断模块,用于判断所述释放变量的当前值是否大于预设阈值;
存储模块,用于在所述释放变量的当前值等于所述预设阈值时,存储所述报文对应的缓存空间的标识,以待本次单位时间结束时,根据所述标识对所述标识对应的缓存空间进行处理;
释放模块,用于在所述释放变量的当前值大于所述预设阈值时,将所述释放变量的当前值减1,并将所述报文对应的缓存空间的有效性置为无效,以释放所述报文对应的缓存空间。
本发明还提供一种网络设备,包括本发明提供的报文限速装置。
本发明提供的报文限速方法、装置及网络设备,在对报文处理结束后,通过获取当前表示单位时间内还可以释放的缓存空间数量,并将当前允许释放的缓存空间的数量值与预设阈值进行比较,根据比较结果确定是否释放该缓存空间;若比较结果为当前可释放的数量值等于预设阈值,则不释放缓存空间,进而使得内存中没有多余的缓存空间存储新的报文,以达到对报文进行限速的目的。本发明技术方案通过预设阈值和释放变量来控制单位时间内缓存空间的释放量,进而控制送往内存中的报文数量来实现对报文的限速。与现有技术相比,本发明技术方案并不依赖于专用集成电路必须具有限速功能,并且该技术方案通过限制送往内存中的报文数量而不是基于CPU获取的报文数量对报文进行限速,因此,不会造成CPU资源的额外浪费,提高了CPU资源的利用率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有通讯设备的部分结构示意图;
图2为本发明实施例基于的收包环的结构示意图;
图3为本发明实施例一提供的报文限速方法的流程图;
图4为本发明实施例二提供的报文限速方法的流程图;
图5a为本发明实施例三提供的释放变量的初始值的一种获取方法的流程图;
图5b为本发明实施例三提供的释放变量的初始值的另一种获取方法的流程图;
图6为本发明实施例四提供的对已存储的缓存空间的处理操作的流程图;
图7为本发明实施例五提供的报文限速装置的一种结构示意图;
图8为本发明实施例五提供的报文限速装置的又一种结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面首先介绍一下本发明技术方案中的收包环。本发明各实施例所述的收包环结构如图2所示,n个缓存空间首尾相接构成了一个收包环,其中第n个缓存空间与第1个缓存空间连接。每个缓存空间由三个部分组成:报文缓存区域,用于存储报文内容;有效性区域,用于标识该缓存空间是 否有效;其中,在初始状态时,所有缓存空间都是无效的,只有当专用集成电路将报文放入缓存空间的报文缓存区域时,该缓存空间才变为有效;以及下一指针区域,用于存储指向下一个缓存空间的指针,其中,第n个缓存空间的下一指针指向第1个缓存空间。
收包环在使用过程中,通常会对应三个位置:存放位置、获取位置和释放位置。其中,存放位置是针对专用集成电路来说的,专用集成电路每次存放报文时,会根据有效性区域内的有效性标识判断该存放位置的缓存空间是否有效;若有效,则表明CPU正在处理该缓存空间,将报文丢掉;若无效,则将报文放入存放位置所指的缓存空间,并将该缓存空间的有效性区域内的有效性标识置为有效,同时将存放位置指向下一个缓存空间。获取位置是针对CPU而言的,CPU每次获取报文时,会根据获取位置的有效性区域内的有效性标识判断该缓存空间是否有效;若无效,则停止获取;若有效,则从获取位置获取报文,并送往专门的软件模块进行处理,同时将获取位置指向下一个缓存空间。其中,CPU的获取操作并不是获取一个报文就停止,而是一直获取到无效的缓存空间为止。释放位置也是针对CPU而言,CPU每次释放缓存空间时,要根据释放位置的有效性区域内的有效性标识判断该缓存空间是否有效;若有效,则释放,亦即将有效性置为无效,同时将释放位置指向下一个待释放的缓存空间;若无效,则不需释放。
通常,CPU采用两种方式来释放缓存空间。一种是当CPU取出报文之后,通过在内存中申请一个临时缓存存储报文,立马释放缓存空间;这种方式获取位置和释放位置是一致的,称之为即时释放。另一种方式是当软件模块处理完报文之后,再将该报文对应的缓存空间释放,称之为延迟释放。其中,在即时释放方式下,CPU会不断的获取报文,而当软件模块来不及处理报文时,就会导致系统中存在大量等待处理的报文,而这些报文将需要大量的临时缓存空间,这有可能将内存空间耗尽。本发明技术方 案基于延迟释放方案进行。
基于上面论述,下面将通过具体实施例详细介绍本发明技术方案的原理。
实施例一
图3为本发明实施例一提供的报文限速方法的流程图。本实施例的执行主体为通讯设备,结合图1所示的结构,图3所示本实施例的报文限速方法包括:
步骤301,当对从缓存空间获取的报文处理结束后,获取释放变量的当前值,所述释放变量的当前值用于标识本次单位时间内还允许释放的缓存空间的数量;
其中,释放变量表示单位时间内允许释放的缓存空间的数量,该释放变量的值是随着时间的变化(实际上是指随着缓存空间的释放)而变化的。具体的,当通讯设备中的CPU根据获取位置的有效性区域内的有效性标识判断当前获取位置为有效时,从该获取位置对应的缓存空间内获取报文,并将报文送往软件模块,以使软件模块对报文进行处理。当软件模块对该报文的处理结束后,CPU获取释放变量的当前值。其中,释放变量的当前值是指本次单位时间内当前还允许释放的缓存空间的数量。
步骤302,判断释放变量的当前值是否大于预设阈值;
其中,预设阈值是指释放变量的下限值。当释放变量的当前值等于预设阈值时,则执行步骤303。通常,该预设阈值被设置为0。通过释放变量的初始值和预设阈值以决定单位时间内允许释放的缓存空间的总数量。
步骤303,当释放变量的当前值等于预设阈值时,存储所述报文对应的缓存空间的标识,以待本次单位时间结束时,根据所述标识对所述标识对应的缓存空间进行处理。
通过该步骤303实现CPU暂不释放缓存空间。由于缓存空间的释放数量影响专用集成电路送入收环包的报文数量,因此,当单位时间内允许 释放的缓存空间的数量达到一定值时,不是将可以释放的缓存空间的有效性置为无效进行释放,而是通过存储该可释放缓存空间的标识,以待本次单位时间结后再行处理。这样可以限制单位时间内提供给专用集成电路的可用的缓存空间的数量,这样当专用集成电路往收包环存放报文而找不到无效的缓存空间时,不得不将报文丢弃。即通过限制专用集成电路送往收包环的报文的数量,实现对报文的限速。
本实施例的报文限速方法,CPU在释放缓存空间之前先判断本次单位时间内已经释放缓存空间的数量是否达到规定的释放数量;如果是,则暂不释放缓存空间,以限制专用集成电路送往收包环的报文数量,进而实现对报文的限速。本发明技术方案并不要求专用集成电路具有限速功能,在配置任何专用集成电路的设备中均可使用。且本发明技术方案通过设置单位时间内允许释放的缓存空间的数量,其可支持以任何速率向CPU提供报文,即其粒度可达1包/秒,且无误差。进一步,本实施例是在CPU获取报文之前实现对报文限速,与在CPU获取报文之后对报文限速的现有技术相比,其无需占用CPU的额外资源,有利于提高CPU资源的利用率。
实施例二
图4为本发明实施例二提供的报文限速方法的流程图。本实施例可基于实施例一实现,其相同之处不再赘述。如图4所示,本实施例的报文限速方法包括:
步骤401,CPU从缓存空间中获取报文,并将报文送往软件处理模块进行处理,并将获取位置移动到下一个缓存空间。
步骤402,CPU的软件模块对报文进行处理,并待报文处理完毕后进行缓存空间的释放操作。
步骤403,报文处理结束,CPU获取释放变量的当前值,并判断释放变量的当前值是否为0;其中,在本实施例中,预设阈值取为0。当判断结果为释放变量的当前值为0,则执行步骤404;反之,执行步骤405。
步骤404,将该软件模块刚处理的报文对应的缓存空间的标识存储到一数组中,然后执行步骤406,即结束操作。
步骤405,将软件处理模块刚处理完的报文对应的缓存空间的有效性置为无效,以释放该缓存空间;同时,将释放变量的当前值减1,且将释放位置指向下一个缓存空间,并执行步骤406。其中,由于在收包环中,各个缓存空间的下一指针构成环形结构,因此,通过“下一指针”即可获取到释放位置对应的下一个缓存空间。
步骤406,本次处理结束。
本实施例的报文限速方法,CPU在释放缓存空间之前先判断本次单位时间内已经释放的缓存空间的数量是否达到规定的释放数量;如果是,则暂不释放缓存空间,以限制专用集成电路继续往收包环中存放报文;如果没有达到,则释放缓存空间,允许专用集成电路继续往收包环内存放报文。本实施例通过控制缓存空间的释放数量来限制专用集成电路存放到收包环内的报文数量,实现对报文的限速。与现有硬件限速相比,本实施例并不要求通讯设备的专用集成电路必须支持硬件限速功能,因此,具有更强的适用性。与现有软件限速方式相比,本实施例技术方案在CPU获取报文之前就完成了对报文的限速,避免了CPU获取报文之后再将超速报文丢弃时造成的对CPU资源的额外浪费。
进一步,在本发明上述各实施例中,在CPU获取释放变量的当前值之前还包括:根据预设报文限速速率和收包环的大小,获取释放变量的初始值。
其中,根据实际应用情况,出于对CPU的保护,可以设置每单位时间送往CPU的报文的数量,即本发明技术方案中的报文限速速率。且本发明技术方案中的报文限速速率可以根据实际应用情况自行设置。具体的,本发明实施例三提供一种释放变量的初始值的获取方法。
实施例三
图5a为本发明实施例三提供的释放变量的初始值的一种获取方法的流程图;图5b为本发明实施例三提供的释放变量的初始值的另一种获取方法的流程图。具体的,本实施例是根据预设报文限速速率和收包环中无效缓存空间的数量,来获取释放变量的初始值的。其中,无效缓存空间是指在即将实施本发明技术方案时,获取到的收包环中有效性标识为无效的缓存空间。其中,实施本发明技术方案的时机可以为通讯设备处于初始状态时,也可以是处于非初始状态时。其中,若通讯设备在初始状态时执行本发明技术方案,由于此时收包环中所有缓存空间的有效性标识均为无效,因此,本实施例收包环中无效缓存空间的数量即为收包环的大小;若通讯设备在非初始状态时执行本发明技术方案,则由于此时收包环中部分缓存空间已被占用,因此,此时收包环中无效缓存空间实际上等价于收包环当前的存储能力。本实施例以下描述分别针对这两种情况进行,提供了可用于作为本发明其他实施例基础的技术方案。
如图5a所示,本实施例提供的在通讯设备处于初始状态时的获取方法包括:
步骤501,配置报文限速速率,并将该报文限速速率记为m。
步骤502,判断报文限速速率m是否大于收包环的大小n。若判断结果为m小于或等于n,则执行步骤503a;反之,执行步骤504a。
其中,在本发明技术方案中的收包环的大小n是指所包含的缓存空间的个数,即本实施例的收包环为包含n个缓存空间的收环包。本实施例中的收包环的大小n即为无效缓存空间的数量,因此步骤502等价于判断报文限速速率是否大于无效缓存空间的数量。
步骤503a,将释放变量的初始值设置为0,同时,获取收包环的大小n与报文限速速率m的第一差值(n-m),并将第一差值(n-m)个缓存空间的有效性置为有效,该获取初始值的操作结束。由于收包环中缓存空间的数量大于报文限速速率,因此在本步骤中通过将(n-m)个缓存空间的 有效性置为有效,可以保证初始状态时仅有m个报文被送入收包环,且在后续过程中可通过本发明技术方案控制每单位时间送往收包环的报文数量。
步骤504a,获取收包环的大小n与报文限速速率m的第二差值(m-n),并将释放变量的初始值设置为第二差值(m-n),该获取初始值的操作结束。
通过本实施例的技术方案,可以在通讯设备处于初始状态时,获取本发明各实施例中的释放变量的初始值。但是,多数情况下通讯设备并非处于初始状态,此时,收包环中部分缓存空间可能已被占用,此时根据图5a所示方式将无法正确获取释放变量的初始值;又或者用户中途重新配置报文限速速率为不同的值,上述情况也无法通过图5a所示的方式获取正确的释放变量的初始值。基于上述,本实施例在图5a所示方式的基础上提供另一种获取方法,具体如图5b所示,其与图5a所示方法的区别在于:引入了当前收包环的存放能力。具体的,在步骤502中,若判断结果为m小于或等于n,则执行步骤503b;反之,执行步骤506b。步骤502之后具体包括:
步骤503b,判断当前收包环的存储能力q是否小于报文限速速率m;如果判断结果为q大于或等于m,则执行步骤504b;反之,则执行步骤506b。
由于收包环中可能已存储有其他报文,即部分缓存空间已被其他报文使用,因此,本实施例以存储能力表示当前收包环中可以被使用的缓存空间(即无效缓存空间)的数量,并记为q。
步骤504b,将收包环内释放位置之后的(q-m)个缓存空间的有效性置为有效,并将释放位置进行相应的移动。通过该步骤可以保证在初始执行本发明技术方案时,只有m个报文被送入收包环内。
步骤505b,将存储能力q的初始值设置为m。由于步骤504b的操作 使得当前可存放报文的缓存空间的数量减少了(q-m)个,因此,此时的存储能力q=q-(q-m)=m。
步骤506b,设置释放变量r的初始值为(m-q)。即在本实施例中要保证每秒钟释放(m-q)个缓存空间,进而保证每秒钟送往缓存空间的报文数量为m,实现对报文的限速。其中,由于一开始已经将q个报文存放到了收包环内的缓存空间中,因此,后续只需释放(m-q)个,即只需将每秒钟允许释放的缓存空间的数量的初始值设置为(m-q)。进一步通过在后续释放过程,每释放一个缓存空间就将该释放变量的值减1,并在每个单位时间内减到0为止。其中,当通过步骤502所在分支执行到步骤506b时,当前收包环的存储能力q小于报文限速速率,此时步骤506b中的释放变量r的初始值(m-q)即为报文限速速率与当时无效缓存空间的数量之差,亦即第二差值。当通过步骤505b所在分支执行到步骤506b时,由于在步骤505b中已设置当前收包环的存储能力q=m,因此,在步骤506中释放变量r的初始值实际上为0,即被设置为预设阈值。
本实施例提供的释放变量的获取方法,根据实际应用配置报文限速速率,并结合报文限速速率和收包环的大小,来获取释放变量的初始值。采用本实施的获取方法设置的释放变量的初始值,可以保证以报文限速速率向收包环内存放报文,达到对报文限速的目的。
在此需要说明,本实施例中通过设置报文限速速率,并通过设置释放变量的初始值,保证以报文限速速率向收包环存放报文,但并不限于此。其中,报文限速速率和释放变量的初始值,均可以根据实际情况或者限速需求进行适应性设置,并以最终达到限速目的为准。
采用本发明上述技术方案,可以通过限制送往CPU的报文数量来保护CPU。但在有些情况下,不是每时每刻都需要对报文进行限速,而只需要在CPU使用率较高时需要保护CPU,此时在启动报文限速功能实现CPU的保护。
基于上述,本发明技术方案还包括:根据CPU的使用情况,设置释放变量的当前值。例如,当CPU使用过于频繁时,可以通过设置释放变量的当前值为预设阈值,实现立刻限制对缓存空间的释放,达到对报文的限速;也可以设置释放变量的当前值为接近预设阈值的值,以尽快对报文进行限速;另外,当CPU较为空闲时,还可以设置释放变量的当前值大于预设阈值,通过增加送往CPU的报文数量,提高CPU的利用率。
在本发明上述技术方案中,是以本次单位时间为例进行说明。而当本次单位时间结束时,还包括:根据存储的标识对标识对应的缓存空间进行处理的步骤。其中,单位时间可以通过定时器定时来实现,具体的,定时器每单位时间触发一次。且在本发明技术方案中,单位时间可以为每秒、每分或每小时等,并不做具体限制。
在下面实施例中将以单位时间为每秒为例,对本发明技术方案中在单位时间结束时对存储的缓存空间的处理操作的流程进行详细说明。
实施例四
图6为本发明实施例四提供的对已存储的缓存空间的处理操作的流程图。本实施例的处理操作包括:
步骤601,当定时器计时到1秒钟(即定时器触发)时,CPU判断报文限速速率m是否大于收包环的大小n;若判断结果为报文限速速率m小于或等于收包环的大小n,则执行步骤602;反之,执行步骤604。
步骤602,CPU获取数组中存储的缓存空间的标识,并根据标识判断已存储的缓存空间的数量是否不小于释放变量r的初始值;若判断结果为已存储的缓存空间的数量大于释放变量r的初始值,则执行步骤603;反之,执行步骤604。其中,CPU可以通过统计标识的个数获取已存储的缓存空间的数量,或者通过统计存储标识的数组的大小获取缓已存储的缓存空间的数量。其中,已存储的缓存空间是指在单位时间结束之前,因释放变量的当前值等于预设阈值而被延缓释放的缓存空间,即缓存空间的标识 被存储起来的缓存空间,亦即待释放缓存空间。
步骤603,根据标识从已存储的缓存空间中,随机选择释放变量r的初始值个缓存空间,并将选择的待释放缓存空间的有效性置为无效,以释放所选择的待释放缓存空间,并转去执行步骤605。
步骤604,根据数组中存储的标识,将所有已存储的缓存空间的有效性置为无效,以释放所有已存储的缓存空间,并转去执行步骤605。
步骤605,更新当前收包环的存储能力q,使存储能力q增加所释放的缓存空间的数量;同时将释放变量r的初始值设置为(m-q),以等待下一次报文限速处理过程。其中,由于存储能力q也是随着缓存空间的使用和释放进行实时更新,因此,当释放缓存空间之后,存储能力q将变强,故需要更新存储能力q的值。
当下1秒钟到来时,即定时器再次触发时,将会重新执行步骤601-步骤605的操作。
在此说明,本实施例步骤601-步骤604已经完成对存储的缓存空间的处理操作,而设置步骤605是为了与本发明其他实施例相衔接,以便于从整体上将本发明技术方案进行贯通。例如:本实施例中所用变量的符号与实施例三中的表示和意义均相同,即本实施例基于实施例三的初始化操作,且本实施例步骤605对存储能力q的更新和对释放变量r的初始值的重新设置,均为依据本发明实施例一或实施例二执行下一次操作打下了基础。
本实施例具体通过判断报文限速速率和已存储的缓存空间的数量,并根据判断结果决定所需释放的已存储的缓存空间的数量,与本发明前述实施例提供的释放变量的初始值的获取方法相适应。通过本实施例可保证下一个单位时间内释放的缓存空间的数量为(m-q)个,保证单位时间内由专用集成电路提供给收包环的报文数量为m个,进而达到将送往CPU的报文限速为报文限速速率m的目的。
实施例五
图7为本发明实施例五提供的报文限速装置的结构示意图。本实施例的报文限速装置可以为通讯设备,或者作为通讯设备的一部分设置于通讯设备内。如图7所示,本实施例的报文限速装置包括:当前值获取模块71、判断模块72和存储模块73。
其中,当前值获取模块71用于当对从缓存空间获取的报文处理结束后,获取释放变量的当前值;其中,释放变量的当前值用于标识本次单位时间内还允许释放的缓存空间的数量。判断模块72,与当前值获取模块71连接,判断当前值获取模块71获取的释放变量的当前值是否大于预设阈值;存储模块73,与判断模块72连接,用于在判断模块72判断出的释放变量的当前值等于预设阈值时,存储报文对应的缓存空间的标识,以待本次单位时间结束时,根据所述标识对所述标识对应的缓存空间进行处理;其中在本实施例中,缓存空间的标识被存储在一数组中,但并不限于此存储方式。其中,当前值获取模块71可以从通讯设备的其他处理模块,例如软件处理模块中获取报文处理结束的操作指令,并根据该指令从释放变量存储空间78中获取释放变量当前值的操作。其中对变量进行存储是本领域技术人员的公知常识,因此,本实施例中直接给出该释放变量存储空间78。
本实施例的报文限速装置,可以用于执行本发明实施例提供的报文限速方法的流程。本实施例通过设置单位时间允许释放的缓存空间的数量,并通过比较释放变量的当前值是否达到预设阈值判断是否允许释放缓存空间,当达到预设阈值时则不允许释放缓存空间。通过本实施例技术方案可以限制单位时间内允许使用的缓存空间的数量,进而限制送往CPU的报文的数量,实现对报文的限速,进而实现对CPU的保护。
进一步,如图8所示,本实施例的报文限速装置还包括:释放模块74、初始值获取模块75、当前值设置模块76和处理模块77。
其中,释放模块74,分别与判断模块72和释放变量存储空间78连接,用于在判断模块72判断出释放变量的当前值大于预设阈值时,将释放变量存储空间78中存储的释放变量的当前值减1,并将报文对应的缓存空间的有效性置为无效,以释放该报文对应的缓存空间。
其中,初始值获取模块75,与释放变量存储空间78连接,用于在当前值获取模块71获取释放变量的当前值之前,根据预设报文限速速率和收包环中无效缓存空间的数量,获取释放变量的初始值,并将释放变量的初始值存储到释放变量存储空间78中。具体的,该初始值获取模块75包括:第一判断单元751、第一获取单元752和第二获取单元753。其中,第一判断单元751,用于判断报文限速速率是否小于无效缓存空间的数量;第一获取单元752,分别与第一判断单元751和释放变量存储空间78连接,用于在第一判断单元751判断出报文限速速率小于或等于无效缓存空间的数量时,设置释放变量存储空间78中的释放变量的初始值为预设阈值,并获取无效缓存空间的数量与报文限速速率的第一差值,将第一差值个缓存空间的有效性置为有效;第二获取单元753,分别与第一判断单元751和释放变量存储空间78连接,用于在第一判断单元751判断出报文限速速率大于无效缓存空间的数量时,获取无效缓存空间的数量与报文限速速率的第二差值,并设置释放变量存储空间78中的释放变量的初始值为第二差值。其中,收包环中无效缓存空间的数量与通讯设备的状态有关,具体可参见获取初始变量的方法实施例中的描述。
其中,当前值设置模块76,与释放变量存储空间78连接,用于在当前值获取模块71获取释放变量的当前值之前,根据CPU的使用情况,设置释放变量存储空间78中的释放变量的当前值。该模块主要用于实施根据CPU的使用情况决定是否通过报文限速来保护CPU的技术方案。
处理模块77,与存储模块73连接,用于在本次单位时间结束时,根据存储模块73存储的缓存空间的标识对所述标识对应的缓存空间进行处 理。其中,处理模块77包括:第二判断单元771、第一释放单元772和第二释放单元773。具体的,第二判断单元771,与存储模块73连接,用于根据标识判断待释放缓存空间的数量是否大于释放变量的初始值;第一释放单元772,用于在第二判断单元771的判断结果为待释放缓存空间的数量大于释放变量的初始值时,根据所述标识随机选择初始值个待释放缓存空间,并将选择的待释放缓存空间的有效性置为无效,以释放所选择的待释放缓存空间;第二释放单元773,用于在第二判断单元771的判断结果为待释放缓存空间的数量小于或等于释放变量的初始值时,将所有待释放缓存空间的有效性置为无效,以释放所有待释放缓存空间。其中,待释放缓存空间是指已存储的缓存空间,即本次单位时间内已存储的标识对应的缓存空间。
其中,本实施例上述各功能模块同样可用于执行本发明方法实施例的流程,在此本实施例不再详细论述,可根据各功能模块的功能详见方法实施例部分中的相应描述。
至此,本实施例的报文限速装置,提供了完整的对报文进行限速的技术方案。通过本实施例的报文限速装置,不仅可以根据预设释放变量的初始值对报文进行适应性限速,还可以根据CPU的使用情况,对报文进行限速,最终通过对报文限速来保护CPU。且本实施例提供的报文限速装置,是通过限制单位时间缓存空间的释放数量实现对报文限速的,其并不要求专用集成电路必须具有硬件限速的功能,因此,可以不受现有通讯设备中专用集成电路的是否具有硬件限速功能的限制;另外,本实施例的报文限速装置可在报文进入CPU之前实现对报文的限速,因此,可以减轻CPU获取报文后再行丢弃造成的对CPU资源的浪费,提高了CPU的利用率。
实施例六
本发明实施例六提供一种网络设备,其包括报文限速装置。其中,本发明的网络设备可以为各种嵌入式通讯设备,例如交换机、路由器等。其 中报文限速装置可以为本发明上述实施例提供的报文限速装置,其具体结构和功能,请详见上述各实施例的描述,在此不再赘述。
基于上述,可知本发明的网络设备,同样可以通过对报文限速来保护网络设备的CPU;而且不要求其内部的专用集成电路必须支持硬件限速,可以通过降低对其内部专用集成电路的功能的要求,达到简化其结构的效果;进一步基于在CPU获取报文之前对报文进行的限速,本实施例的网络设备的CPU还具有较高利用率的优点。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (11)
1.一种报文限速方法,其特征在于,包括:
当对从缓存空间获取的报文处理结束后,获取释放变量的当前值,所述释放变量的当前值用于标识本次单位时间内还允许释放的缓存空间的数量;
判断所述释放变量的当前值是否大于预设阈值;
若所述释放变量的当前值等于所述预设阈值,则存储所述报文对应的缓存空间的标识,以待本次单位时间结束时,根据所述标识对所述标识对应的缓存空间进行处理;
若所述释放变量的当前值大于所述预设阈值,则将所述释放变量的当前值减1,并将所述报文对应的缓存空间的有效性置为无效,以释放所述报文对应的缓存空间。
2.根据权利要求1所述的报文限速方法,其特征在于,获取释放变量的当前值之前还包括:
根据预设报文限速速率和收包环中无效缓存空间的数量,获取所述释放变量的初始值。
3.根据权利要求2所述的报文限速方法,其特征在于,根据预设报文限速速率和收包环中无效缓存空间的数量,获取所述释放变量的初始值包括:
判断报文限速速率是否大于所述无效缓存空间的数量;
若所述报文限速速率小于或等于所述无效缓存空间的数量时,设置所述释放变量的初始值为所述预设阈值,并获取所述无效缓存空间的数量与所述报文限速速率的第一差值,将所述第一差值个无效缓存空间的有效性置为有效;
若所述报文限速速率大于所述无效缓存空间的数量时,获取所述报文限速速率与所述无效缓存空间的数量的第二差值,并设置所述释放变量的初始值为所述第二差值。
4.根据权利要求1所述的报文限速方法,其特征在于,获取释放变量的当前值之前还包括:
根据CPU的使用情况,设置所述释放变量的当前值。
5.根据权利要求2-4任一项所述的报文限速方法,其特征在于,在本次单位时间结束时,根据所述标识对所述标识对应的缓存空间进行处理包括:
根据所述标识判断待释放缓存空间的数量是否大于所述释放变量的初始值;
若判断结果为大于,则根据所述标识随机选择所述初始值个待释放缓存空间,并将选择的待释放缓存空间的有效性置为无效,以释放所选择的待释放缓存空间;
若判断结果为小于或等于,则将所有待释放缓存空间的有效性置为无效,以释放所有待释放缓存空间。
6.一种报文限速装置,其特征在于,包括:
当前值获取模块,用于当对从缓存空间获取的报文处理结束后,获取释放变量的当前值,所述释放变量的当前值用于标识本次单位时间内还允许释放的缓存空间的数量;
判断模块,用于判断所述释放变量的当前值是否大于预设阈值;
存储模块,用于在所述释放变量的当前值等于所述预设阈值时,存储所述报文对应的缓存空间的标识,以待本次单位时间结束时,根据所述标识对所述标识对应的缓存空间进行处理;
释放模块,用于在所述释放变量的当前值大于所述预设阈值时,将所述释放变量的当前值减1,并将所述报文对应的缓存空间的有效性置为无效,以释放所述报文对应的缓存空间。
7.根据权利要求6所述的报文限速装置,其特征在于,还包括:
初始值获取模块,用于在所述当前值获取模块获取所述释放变量的当前值之前,根据预设报文限速速率和收包环中无效缓存空间的数量,获取所述释放变量的初始值。
8.根据权利要求7所述的报文限速装置,其特征在于,所述初始值获取模块包括:
第一判断单元,用于判断所述报文限速速率是否大于所述无效缓存空间的数量;
第一获取单元,用于在所述第一判断单元判断出所述报文限速速率小于或等于所述无效缓存空间的数量时,设置所述释放变量的初始值为所述预设阈值,并获取所述无效缓存空间的数量与所述报文限速速率的第一差值,将所述第一差值个缓存空间的有效性置为有效;
第二获取单元,用于在所述第一判断单元判断出所述报文限速速率大于所述无效缓存空间的数量时,获取所述报文限速速率与所述无效缓存空间的数量的第二差值,并设置所述释放变量的初始值为所述第二差值。
9.根据权利要求6所述的报文限速装置,其特征在于,还包括:
当前值设置模块,用于在所述当前值获取模块获取所述释放变量的当前值之前,根据CPU的使用情况,设置所述释放变量的当前值。
10.根据权利要求7-9任一项所述的报文限速装置,其特征在于,还包括:
处理模块,用于在本次单位时间结束时,根据所述存储模块存储的缓存空间的标识对所述标识对应的缓存空间进行处理;
所述处理模块包括:
第二判断单元,用于根据所述标识判断待释放缓存空间的数量是否大于所述释放变量的初始值;
第一释放单元,用于在所述第二判断单元的判断结果为大于时,根据所述标识随机选择所述初始值个待释放缓存空间,并将选择的待释放缓存空间的有效性置为无效,以释放所选择的待释放缓存空间;
第二释放单元,用于在所述第二判断单元的判断结果为小于或等于时,将所有已存储的缓存空间的有效性置为无效,以释放所有已存储的缓存空间。
11.一种包括权利要求6-10中任一项所述的报文限速装置的网络设备。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010102622237A CN101951339B (zh) | 2010-08-24 | 2010-08-24 | 报文限速方法、装置及网络设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010102622237A CN101951339B (zh) | 2010-08-24 | 2010-08-24 | 报文限速方法、装置及网络设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101951339A CN101951339A (zh) | 2011-01-19 |
CN101951339B true CN101951339B (zh) | 2012-08-15 |
Family
ID=43454702
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010102622237A Expired - Fee Related CN101951339B (zh) | 2010-08-24 | 2010-08-24 | 报文限速方法、装置及网络设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101951339B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102158416B (zh) * | 2011-05-04 | 2013-12-11 | 杭州华三通信技术有限公司 | 一种基于内存分配的报文处理方法和设备 |
CN103905300B (zh) * | 2012-12-25 | 2017-12-15 | 华为技术有限公司 | 一种数据报文发送方法、设备及系统 |
CN104917690A (zh) * | 2015-04-15 | 2015-09-16 | 联动优势科技有限公司 | 一种控制报文发送的方法及装置 |
CN107529695A (zh) * | 2016-06-20 | 2018-01-02 | 迈普通信技术股份有限公司 | 一种缓冲区缓慢泄漏的定位方法及装置 |
CN110768976B (zh) * | 2019-10-21 | 2022-05-24 | 新华三信息安全技术有限公司 | 一种报文处理方法、装置及网络设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1725732A (zh) * | 2005-06-08 | 2006-01-25 | 杭州华为三康技术有限公司 | 一种报文限速方法 |
CN1925455A (zh) * | 2005-08-29 | 2007-03-07 | 中兴通讯股份有限公司 | 一种基于令牌桶的报文限速方法 |
EP1814265A1 (en) * | 2005-10-31 | 2007-08-01 | Huawei Technologies Co., Ltd. | A method for guaranteeing classificaiton of service of the packet traffic and the method of rate restriction |
CN101056273A (zh) * | 2007-06-13 | 2007-10-17 | 中兴通讯股份有限公司 | 基于会话的网络限速方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1215681C (zh) * | 2003-07-31 | 2005-08-17 | 港湾网络有限公司 | 在分布式交换路由器系统中cpu报文流量控制的方法 |
-
2010
- 2010-08-24 CN CN2010102622237A patent/CN101951339B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1725732A (zh) * | 2005-06-08 | 2006-01-25 | 杭州华为三康技术有限公司 | 一种报文限速方法 |
CN1925455A (zh) * | 2005-08-29 | 2007-03-07 | 中兴通讯股份有限公司 | 一种基于令牌桶的报文限速方法 |
EP1814265A1 (en) * | 2005-10-31 | 2007-08-01 | Huawei Technologies Co., Ltd. | A method for guaranteeing classificaiton of service of the packet traffic and the method of rate restriction |
CN101056273A (zh) * | 2007-06-13 | 2007-10-17 | 中兴通讯股份有限公司 | 基于会话的网络限速方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101951339A (zh) | 2011-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101951339B (zh) | 报文限速方法、装置及网络设备 | |
CN107404443B (zh) | 队列缓存资源控制方法及装置、服务器及存储介质 | |
US5796944A (en) | Apparatus and method for processing data frames in an internetworking device | |
US6922408B2 (en) | Packet communication buffering with dynamic flow control | |
US6754795B2 (en) | Methods and apparatus for forming linked list queue using chunk-based structure | |
US20120099431A1 (en) | Method and device for controlling information channel flow | |
US6721335B1 (en) | Segment-controlled process in a link switch connected between nodes in a multiple node network for maintaining burst characteristics of segments of messages | |
CN102025644B (zh) | 一种负载分担方法及设备 | |
US6570885B1 (en) | Segment-controlled process for controlling castouts from a communication cache in a port in any of multiple nodes in a communications network | |
CN106330760A (zh) | 一种缓存管理的方法和装置 | |
CN102047619A (zh) | 用于对异常分组的慢路径处理进行动态速率限制的方法、系统和计算机可读介质 | |
SE515265C2 (sv) | System och förfarande för behandling av signaldata samt kommunikationssystem omfattande ett signaldatabehandlingssystem | |
US7191258B2 (en) | Packet forwarding system having a control packet processor which allocates the bandwidth for a control packet adaptively and processing method thereof | |
CN105681193A (zh) | 一个软件定义网络控制器系统 | |
CN114936171A (zh) | 存储访问控制器架构 | |
CN102223311A (zh) | 一种队列调度方法及装置 | |
CN102413034B (zh) | 一种控制标签通告消息及维护lsp的方法和lsr | |
CN101989249A (zh) | 一种单片机串口数据接收方法 | |
EP0789876B1 (en) | Load sharing system and a method for processing of data and a communication system with load sharing | |
CN103377033B (zh) | 运算核心及其指令管理方法 | |
JP2012205048A (ja) | パケット伝送装置、パケット伝送方法、及びコンピュータプログラム | |
JP3698987B2 (ja) | バッファ制御装置、汎用ポート制御装置、入出力システム、情報処理装置 | |
GB2349296A (en) | Reduction of imbalance in transmsit queues in a network switch | |
CN100487684C (zh) | 用于主/从直接存储器访问硬件和软件控制的方法和设备 | |
CN101515833A (zh) | 保护倒换的实现方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120815 Termination date: 20150824 |
|
EXPY | Termination of patent right or utility model |