一种用于网络设备会话的时间队列处理方法以及装置的制造方法

文档序号:10691003阅读:227来源:国知局
一种用于网络设备会话的时间队列处理方法以及装置的制造方法
【专利摘要】本发明公开一种用于网络设备会话的时间队列处理方法以及装置。其中,所述方法包括:若网络设备在预设时间内创建至少一个会话,将至少一个会话的会话信息分别存储至预设数组对应的一个元素中;若至少一个会话中的一个会话在预设的会话超时时间内没有接收到该会话的报文,在存储该会话的会话信息的元素链表中删除该会话;若至少一个会话中的一个会话在预设的会话超时时间内接收到该会话的报文,每接收一次该会话的报文在元素链表中更新该会话的会话开始时间为当前时间,并根据当前时间与会话开始时间的第一差值将该会话的会话信息转存到所述预设数组的另一个元素中。通过本发明,不仅可以大大节约网络设备资源,而且还不会对网络设备性能造成影响。
【专利说明】
一种用于网络设备会话的时间队列处理方法以及装置
技术领域
[0001]本发明涉及网络设备会话领域,具体地,涉及一种用于网络设备会话的时间队列处理方法以及装置。
【背景技术】
[0002]网络设备的系统中通常要创建定时器,以便在定时器达到预设时间时对某些操作做一些处理。以网络设备中的会话为例,通常在建立会话后,会话会被保留一段时间(比如40秒),如果后续没有该会话的报文,那么会话就在一段时间(比如40秒)后被删除(以免占用资源),如果后续一直还有报文,那么会话要继续被保留一段时间(比如40秒),且每收到一个报文,会话都需要重新在收到该报文的时间基础上保留一段时间(比如40秒)。现有的实现方式是,为会话创建定时器,设置会话超时时间,如果后续没有报文了,那么当定时器达到会话超时时间时,会将会话删除,如果后续还有报文,那么在定时器执行时会设置让定时器继续等待会话超时时间后再执行删除操作。
[0003]然而,通过定时器的方式,在网络设备内的会话数量比较大时(比如,普通的网络设备可能也会有几百万到上千万的会话),可能会耗尽网络设备系统内的资源,而且当定时器比较多时,网络设备系统的运行压力也比较大,整体性能可能也会下降

【发明内容】

[0004]本发明的目的是提供一种用于网络设备会话的时间队列处理方法以及装置。其中,所述方法不仅可以大大节约网络设备资源,而且还不会对网络设备性能造成影响。
[0005]为了实现上述目的,本发明提供一种用于网络设备会话的时间队列处理方法。所述方法包括:
[0006]若所述网络设备在预设时间内创建至少一个会话,将所述至少一个会话的会话信息分别存储至预设数组对应的一个元素中;
[0007]若所述至少一个会话中的一个会话在预设的会话超时时间内没有接收到该会话的报文,在存储该会话的会话信息的元素链表中删除该会话;
[0008]若所述至少一个会话中的一个会话在预设的会话超时时间内接收到该会话的报文,每接收一次该会话的报文在所述元素链表中更新该会话的会话开始时间为当前时间,并根据所述当前时间与所述会话开始时间的第一差值将该会话的会话信息转存到所述预设数组的另一个元素中。
[0009]可选地,所述将所述至少一个会话的会话信息分别存储至预设数组对应的一个元素中之前,所述方法还包括:
[0010]初始化所述网络设备的时间桶数组,得到相邻数组元素之间的时间间隔为一秒的预设数组,
[0011 ]其中,所述预设数组的每个元素包括第一指针和第二指针。
[0012]可选地,所述将所述至少一个会话的会话信息分别存储至预设数组对应的一个元素中,包括:
[0013]根据所述预设数组的当前索引指示当前处理的数组元素;
[0014]将该数组元素的下标加上预设的会话超时时间,得到第一数组元素;
[0015]将所述至少一个会话的会话信息分别存储至所述第一数组元素中。
[0016]可选地,所述在存储该会话的会话信息的元素链表中删除该会话,包括:
[0017]遍历所述元素链表,找到该会话的会话信息;
[0018]判断所述会话信息中会话开始时间与当前时间的第二差值是否大于或等于预设的会话超时时间;
[0019]在判断所述会话开始时间与当前时间的第二差值大于或等于预设的会话超时时间的情况下,在所述元素链表中删除该会话。
[0020]可选地,所述根据所述当前时间与所述会话开始时间的第一差值将该会话的会话信息转存到所述预设数组的另一个元素中,包括:
[0021]将当前存储该会话的会话信息的数组元素的下标加上所述第一差值,得到第二数组元素;
[0022]将该会话的会话信息转存到所述第二数组元素中。
[0023]可选地,所述会话信息包括会话开始时间。
[0024]相应地,本发明还提供一种用于网络设备会话的时间队列处理装置。所述装置包括:
[0025]存储单元,用于若所述网络设备在预设时间内创建至少一个会话,将所述至少一个会话的会话信息分别存储至预设数组对应的一个元素中;
[0026]删除单元,用于若所述至少一个会话中的一个会话在预设的会话超时时间内没有接收到该会话的报文,在存储该会话的会话信息的元素链表中删除该会话;
[0027]更新单元,用于若所述至少一个会话中的一个会话在预设的会话超时时间内接收到该会话的报文,每接收一次该会话的报文在所述元素链表中更新该会话的会话开始时间为当前时间,并根据所述当前时间与所述会话开始时间的第一差值将该会话的会话信息转存到所述预设数组的另一个元素中。
[0028]可选地,所述装置还包括:
[0029]初始化单元,用于初始化所述网络设备的时间桶数组,得到相邻数组元素之间的时间间隔为一秒的预设数组,
[0030]其中,所述预设数组的每个元素包括第一指针和第二指针。
[0031]可选地,所述存储单元,具体用于:
[0032]根据所述预设数组的当前索引指示当前处理的数组元素;
[0033]将该数组元素的下标加上预设的会话超时时间,得到第一数组元素;
[0034]将所述至少一个会话的会话信息分别存储至所述第一数组元素中。
[0035]可选地,所述删除单元,具体用于:
[0036]遍历所述元素链表,找到该会话的会话信息;
[0037]判断所述会话信息中会话开始时间与当前时间的第二差值是否大于或等于预设的会话超时时间;
[0038]在判断所述会话开始时间与当前时间的第二差值大于或等于预设的会话超时时间的情况下,在所述元素链表中删除该会话。
[0039]通过上述技术方案,在网络设备在预设时间内创建至少一个会话的情况下,将至少一个会话的会话信息分别存储至预设数组对应的一个元素中;若至少一个会话中的一个会话在预设的会话超时时间内没有接收到该会话的报文,在存储该会话的会话信息的元素链表中删除该会话;若至少一个会话中的一个会话在预设的会话超时时间内接收到该会话的报文,每接收一次该会话的报文在元素链表中更新该会话的会话开始时间为当前时间,并根据当前时间与会话开始时间的第一差值将该会话的会话信息转存到预设数组的另一个元素中,不仅可以大大节约网络设备资源,而且还不会对网络设备性能造成影响。
【附图说明】
[0040]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些图获得其他的附图。
[0041]图1是本发明一实施例提供的用于网络设备会话的时间队列处理方法的流程图;
[0042]图2是本发明一实施例提供的用于网络设备会话的时间队列处理装置的结构示意图。
【具体实施方式】
[0043]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0044]图1是本发明一实施例提供的用于网络设备会话的时间队列处理方法的流程图。如图1所示,本发明一实施例提供的用于网络设备会话的时间队列处理方法包括:
[0045]在步骤SlOl中,若所述网络设备在预设时间内创建至少一个会话,将所述至少一个会话的会话信息分别存储至预设数组对应的一个元素中。
[0046]具体地,所述将所述至少一个会话的会话信息分别存储至预设数组对应的一个元素中,包括:根据所述预设数组的当前索引指示当前处理的数组元素;将该数组元素的下标加上预设的会话超时时间,得到第一数组元素;将所述至少一个会话的会话信息分别存储至所述第一数组元素中。
[0047]更为具体地,所述将所述至少一个会话的会话信息分别存储至预设数组对应的一个元素中之前,所述方法还包括:初始化所述网络设备的时间桶数组,得到相邻数组元素之间的时间间隔为一秒的预设数组,其中,所述预设数组的每个元素包括第一指针和第二指针。
[0048]在具体的实施方式中,会话或者其他表项的操作通常都是秒级的,对于现有技术来说,定时器是以秒为单位的,而不是以毫秒或微秒为单位的。在单位换算中,I秒等于1000毫秒,而在计算机系统中,通常采用2的N次方来进行计算,这样会容易很多,系统的性能也比较高。考虑到这里的定时器都是秒级的,如果存在一些毫秒的误差,也是可以接受的。因此,有如下公式:1024毫秒?I秒,其中,1024 = 2的1次方。
[0049 ]初始化时设置支持的最大的时间间隔为2 ~ 20 (2的20次方)秒,这对于网络设备的系统来说已经足够了。然后,初始化时间桶数组,数组大小为2~20,S卩bUcket[2~20]。这样,相邻的数组元素之间的时间间隔为I秒,也就是1024毫秒。数组中每个元素都包括了 prev指针和next指针。
[0050 ]其中,数组中每个元素的内容是:
[0051]struct bucket
[0052]{
[0053]void*prev;
[0054]void*next;
[0055]}
[0056]以会话为例,如果I秒内有多个会话时,这些会话对应的都是某个bucket的下标,比如bucket[N],通过bucket[N]中的prev和next指针就可以找到一秒内的所有会话了。
[0057]其次,初始化当前索引currentjndex,表明当前正在处理数组中的哪个元素,即对应bucket的数组下表,bucket [N]。再创建一个线程,每隔一秒执行一次,每次从current_index中读取链表中存在的内容,并执行对应的更新或删除操作。
[0058]当网络设备创建会话后,记录会话超时时间(单位是毫秒,因为网络设备的系统可以方便的获取毫秒),将会话超时时间由毫秒换算为秒,得到时间T,也就是从当前时刻起,T秒后,需要处理会话超时。
[0059]根据上述bucket时间桶数组的设置,该数组每个元素之间的时间间隔为I秒。因此,T秒后处理,也就是说在当前处理的current_index的基础上加上T即可,也就是该会话信息放入到数组元素bucket[current_index+T]内就可以了。
[0000]如果在I秒内,还创建了其它会话,那么就都可以放入到bucket[current_index+T]中,由于数组中每个元素都包括了prev指针和next指针。因此,这些会话实际上就通过链表互相连接到一起。
[0061]接着,在步骤S102中,若所述至少一个会话中的一个会话在预设的会话超时时间内没有接收到该会话的报文,在存储该会话的会话信息的元素链表中删除该会话。
[0062]具体地,所述在存储该会话的会话信息的元素链表中删除该会话,包括:遍历所述元素链表,找到该会话的会话信息;判断所述会话信息中会话开始时间与当前时间的第二差值是否大于或等于预设的会话超时时间;在判断所述会话开始时间与当前时间的第二差值大于或等于预设的会话超时时间的情况下,在所述元素链表中删除该会话。
[0063]在具体的实施方式中,假设会话超时时间是60秒,那么如果60秒内,没有接收到该会话的报文的后,线程会最终遍历到该会话的链表,那么通过判断当前时间和会话开始时间的差值,发现差值确实大于或等于60秒,那么会话就会在元素链表中被删除。
[0064]最后,在步骤S103中,若所述至少一个会话中的一个会话在预设的会话超时时间内接收到该会话的报文,每接收一次该会话的报文在所述元素链表中更新该会话的会话开始时间为当前时间,并根据所述当前时间与所述会话开始时间的第一差值将该会话的会话信息转存到所述预设数组的另一个元素中。
[0065]具体地,所述根据所述当前时间与所述会话开始时间的第一差值将该会话的会话信息转存到所述预设数组的另一个元素中,包括:将当前存储该会话的会话信息的数组元素的下标加上所述第一差值,得到第二数组元素;将该会话的会话信息转存到所述第二数组元素中。其中,所述会话信息包括会话开始时间。
[0066]在具体的实施方式中,假设在会话超时时间60秒内,能够接收到该会话的报文,那么每来一次报文,就可以更新一下会话信息中的会话开始时间为当前时间。这样,线程计算当前时间和会话开始时间的差值,必然会得到小于60秒的结果,这样会话就不会被删除。此夕卜,将当前存储该会话信息的数组元素的下标加上该差值,便可得到用于转存该会话信息的数组元素,然后,将该会话信息转存至该数组元素中。
[0067]本实施例在网络设备在预设时间内创建至少一个会话的情况下,将至少一个会话的会话信息分别存储至预设数组对应的一个元素中;若至少一个会话中的一个会话在预设的会话超时时间内没有接收到该会话的报文,在存储该会话的会话信息的元素链表中删除该会话;若至少一个会话中的一个会话在预设的会话超时时间内接收到该会话的报文,每接收一次该会话的报文在元素链表中更新该会话的会话开始时间为当前时间,并根据当前时间与会话开始时间的第一差值将该会话的会话信息转存到预设数组的另一个元素中。对于每个会话来说,不再需要创建各自的定时器了,节约了网络设备的资源,大大提高了资源的利用率,且不会对网络设备系统的性能造成影响。
[0068]对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
[0069]图2是本发明一实施例提供的用于网络设备会话的时间队列处理装置的结构示意图。如图2所示,本发明一实施例提供的用于网络设备会话的时间队列处理装置包括:
[0070]存储单元202,用于若所述网络设备在预设时间内创建至少一个会话,将所述至少一个会话的会话信息分别存储至预设数组对应的一个元素中;
[0071]删除单元203,用于若所述至少一个会话中的一个会话在预设的会话超时时间内没有接收到该会话的报文,在存储该会话的会话信息的元素链表中删除该会话;
[0072]更新单元204,用于若所述至少一个会话中的一个会话在预设的会话超时时间内接收到该会话的报文,每接收一次该会话的报文在所述元素链表中更新该会话的会话开始时间为当前时间,并根据所述当前时间与所述会话开始时间的第一差值将该会话的会话信息转存到所述预设数组的另一个元素中。
[0073]在本发明一可选实施例中,所述装置还包括:
[0074]初始化单元201,用于初始化所述网络设备的时间桶数组,得到相邻数组元素之间的时间间隔为一秒的预设数组,
[0075]其中,所述预设数组的每个元素包括第一指针和第二指针。
[0076]在本发明一可选实施例中,所述存储单元202,具体用于:
[0077]根据所述预设数组的当前索引指示当前处理的数组元素;
[0078]将该数组元素的下标加上预设的会话超时时间,得到第一数组元素;
[0079]将所述至少一个会话的会话信息分别存储至所述第一数组元素中。
[0080]在本发明一可选实施例中,所述删除单元203,具体用于:[0081 ]遍历所述元素链表,找到该会话的会话信息;
[0082]判断所述会话信息中会话开始时间与当前时间的第二差值是否大于或等于预设的会话超时时间;
[0083]在判断所述会话开始时间与当前时间的第二差值大于或等于预设的会话超时时间的情况下,在所述元素链表中删除该会话。
[0084]对于本发明一实施例提供的用于网络设备会话的时间队列处理装置中还涉及的具体细节已在本发明一实施例提供的用于网络设备会话的时间队列处理方法中作了详细的描述,在此不再赘述。
[0085]应当注意的是,在本发明的系统的各个部件中,根据其要实现的功能而对其中的部件进行了逻辑划分,但是,本发明不受限于此,可以根据需要对各个部件进行重新划分或者组合,例如,可以将一些部件组合为单个部件,或者可以将一些部件进一步分解为更多的子部件。
[0086]本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的系统中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
[0087]应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
[0088]以上实施方式仅适于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。
【主权项】
1.一种用于网络设备会话的时间队列处理方法,其特征在于,所述方法包括: 若所述网络设备在预设时间内创建至少一个会话,将所述至少一个会话的会话信息分别存储至预设数组对应的一个元素中; 若所述至少一个会话中的一个会话在预设的会话超时时间内没有接收到该会话的报文,在存储该会话的会话信息的元素链表中删除该会话; 若所述至少一个会话中的一个会话在预设的会话超时时间内接收到该会话的报文,每接收一次该会话的报文在所述元素链表中更新该会话的会话开始时间为当前时间,并根据所述当前时间与所述会话开始时间的第一差值将该会话的会话信息转存到所述预设数组的另一个元素中。2.根据权利要求1所述的用于网络设备会话的时间队列处理方法,其特征在于,所述将所述至少一个会话的会话信息分别存储至预设数组对应的一个元素中之前,所述方法还包括: 初始化所述网络设备的时间桶数组,得到相邻数组元素之间的时间间隔为一秒的预设数组, 其中,所述预设数组的每个元素包括第一指针和第二指针。3.根据权利要求1所述的用于网络设备会话的时间队列处理方法,其特征在于,所述将所述至少一个会话的会话信息分别存储至预设数组对应的一个元素中,包括: 根据所述预设数组的当前索引指示当前处理的数组元素; 将该数组元素的下标加上预设的会话超时时间,得到第一数组元素; 将所述至少一个会话的会话信息分别存储至所述第一数组元素中。4.根据权利要求1所述的用于网络设备会话的时间队列处理方法,其特征在于,所述在存储该会话的会话信息的元素链表中删除该会话,包括: 遍历所述元素链表,找到该会话的会话信息; 判断所述会话信息中会话开始时间与当前时间的第二差值是否大于或等于预设的会话超时时间; 在判断所述会话开始时间与当前时间的第二差值大于或等于预设的会话超时时间的情况下,在所述元素链表中删除该会话。5.根据权利要求1所述的用于网络设备会话的时间队列处理方法,其特征在于,所述根据所述当前时间与所述会话开始时间的第一差值将该会话的会话信息转存到所述预设数组的另一个元素中,包括: 将当前存储该会话的会话信息的数组元素的下标加上所述第一差值,得到第二数组元素; 将该会话的会话信息转存到所述第二数组元素中。6.根据权利要求1-5中任意一项权利要求所述的用于网络设备会话的时间队列处理方法,其特征在于,所述会话信息包括会话开始时间。7.—种用于网络设备会话的时间队列处理装置,其特征在于,所述装置包括: 存储单元,用于若所述网络设备在预设时间内创建至少一个会话,将所述至少一个会话的会话信息分别存储至预设数组对应的一个元素中; 删除单元,用于若所述至少一个会话中的一个会话在预设的会话超时时间内没有接收到该会话的报文,在存储该会话的会话信息的元素链表中删除该会话; 更新单元,用于若所述至少一个会话中的一个会话在预设的会话超时时间内接收到该会话的报文,每接收一次该会话的报文在所述元素链表中更新该会话的会话开始时间为当前时间,并根据所述当前时间与所述会话开始时间的第一差值将该会话的会话信息转存到所述预设数组的另一个元素中。8.根据权利要求7所述的用于网络设备会话的时间队列处理装置,其特征在于,所述装置还包括: 初始化单元,用于初始化所述网络设备的时间桶数组,得到相邻数组元素之间的时间间隔为一秒的预设数组, 其中,所述预设数组的每个元素包括第一指针和第二指针。9.根据权利要求7所述的用于网络设备会话的时间队列处理装置,其特征在于,所述存储单元,具体用于: 根据所述预设数组的当前索引指示当前处理的数组元素; 将该数组元素的下标加上预设的会话超时时间,得到第一数组元素; 将所述至少一个会话的会话信息分别存储至所述第一数组元素中。10.根据权利要求7所述的用于网络设备会话的时间队列处理装置,其特征在于,所述删除单元,具体用于: 遍历所述元素链表,找到该会话的会话信息; 判断所述会话信息中会话开始时间与当前时间的第二差值是否大于或等于预设的会话超时时间; 在判断所述会话开始时间与当前时间的第二差值大于或等于预设的会话超时时间的情况下,在所述元素链表中删除该会话。
【文档编号】H04L29/08GK106059956SQ201610485955
【公开日】2016年10月26日
【申请日】2016年6月24日
【发明人】李鹏
【申请人】汉柏科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1