会话表管理方法及装置的制作方法

文档序号:7647339阅读:352来源:国知局
专利名称:会话表管理方法及装置的制作方法
技术领域
本发明涉及一种会话表管理方法,尤其涉及一种对多CPU系统中的会话表进行管理的方法及装置。
背景技术
会话表是动态生成和动态变化的数据表,它记录了会话的状态和各种属性,是防火墙和入侵防护系统(Intrusion Prevention System,简称IPS)的核心部件。当一个会话的首报文进入防火墙或IPS时,首先匹配各种策略表,查询所要做的各种操作,然后创建会话表用于记录会话属性和相应操作。后续报文到达时直接匹配会话表,根据会话表中记录的操作直接进行相应处理。因此,会话表的管理效率对防火墙和IPS的性能至关重要。
在单核系统中,系统只具有单个CPU,通过内部调度机制对不同任务进行切换,因此同一时间只有一个任务在运行,因此不需要进行同步操作。相反,多CPU系统是包含有多个CPU的系统,各CPU之间并发运行多个任务。如图1所示,多CPU系统包括一个分发CPU、多个业务CPU和一个会话表。其中,分发CPU用于将接收到的会话报文分发给不同的业务CPU执行,业务CPU在执行会话报文过程中要并发访问会话表将会话报文与会话表项中的会话信息进行匹配。具体地,现有会话表中设置有全局空闲链表,其链表结点保存有会话表中所有空闲会话表项的内存地址。业务CPU访问会话表时,从全局空闲链表中获取一个链表结点链接在本业务CPU的局部链表中。接收到会话报文后根据该链表结点所指向的会话表项进行报文匹配。
现有技术的缺陷在于为了保证全局空闲链表内容的一致性,要求各个业务CPU之间进行同步操作,即在同一时刻只能有一个业务CPU访问全局空闲链表。因此,所有业务CPU的同步操作增加了系统负担,从而对系统效率带来了影响。

发明内容
本发明的目的是提供一种减少由于多CPU系统中多个CPU进行同步操作而对系统效率带来的影响。
为实现上述目的,本发明提供了一种会话表管理方法,包括从全局空闲链表中获取多个链表结点作为业务CPU局部空闲链表的链表结点,各链表结点对应于会话表中空闲的各会话表项;当该业务CPU接收到会话报文需要进行会话信息存储时,直接根据其局部空闲链表结点获取对应的会话表项进行会话信息存储。
为实现上述目的,本发明还提供了一种会话表管理装置,包括会话表项获取模块,该模块用于从全局空闲链表中获取多个链表结点作为业务CPU局部空闲链表的链表结点,该链表结点对应于会话表中空闲的各会话表项,各会话表项用于存储会话信息。
通过本发明,完成了对会话表项的获取、匹配和释放。由于每个业务CPU都具有一个相应的局部空闲链表,且该局部空闲链表中链接有多个从全局空闲链表中获取的链表结点,各个业务CPU从属于自己的局部空闲链表中获取链表结点所对应的会话表项时,不需要与其他业务CPU进行同步操作,因此降低了系统负担,提高了系统效率。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。


图1为现有多CPU系统会话表管理原理示意图;图2为本发明所述会话表管理方法的流程图;图3为本发明所述会话表管理装置的结构示意图。
具体实施例方式
实施例1本实施例提供了一种会话表管理方法,如图2所示,步骤101,从全局空闲链表中获取多个链表结点作为业务CPU局部空闲链表的链表结点,每个局部空闲链表与每个业务CPU相对应。例如,可以获取10个链表结点。其中,链表是一种常见的数据结构,全局空闲链表以链表形式保存有会话表中未被占用的会话表项的内存地址。局部空闲链表是专门分配给每个业务CPU的链表,各链表结点对应于会话表中空闲的各会话表项。
步骤102,当业务CPU接收到会话报文需要进行会话信息存储时,直接根据该业务CPU的局部空闲链表的链表结点获取相应的会话表项,其他未被获取的会话表项仍然保存在该局部空闲链表中。如果该业务CPU的局部空闲链表中没有对应于相应会话表项的链表结点存在时,则获取会话表项失败,则再次执行步骤101,否执行步骤103。多CPU系统工作时,分发CPU将属于同一会话的会话报文分发给同一个业务CPU,该业务CPU首次收到该会话的会话报文时,需要生成会话信息存储于会话表项中。
步骤103,将生成的会话信息存储到获取的会话表项中。当该业务CPU接收到属于该会话的会话报文时,与该会话表项中存储的会话信息进行匹配。具体匹配过程,可以维护一个局部哈希(Hash)表,该业务CPU根据该局部哈希(Hash)表对会话表项的索引,实现对会话报文的匹配。由于该局部哈希(Hash)表是基于该业务CPU的局部空闲链表生成的,因此有利于减小哈希表的大小,节省系统资源。
步骤104,当需要释放会话表项时,该业务CPU将将释放的会话表项所对应的链表结点作为该业务CPU所属的局部空闲链表的链表结点,以完成会话表项的缓释放。
步骤105,当该业务CPU所对应的局部空闲链表中的链表结点数目超过预定的数目时,将该局部空闲链表中超过部分的链表结点返回给全局空闲链表。例如,可以预先指定当局部空闲链表中的链表结点个数多于15个时,将其中的10个返回给全局空闲链表。
另外需要说明的是,本实施例上述步骤之间并没有必然的顺序要求。例如,步骤105中,向全局空闲链表返回会话表项的步骤,不一定要等到步骤104之后才执行,只要局部空闲链表中的链表结点数目超过预定的数目就可以执行返回过程。
通过本实施例所述方法,完成了对会话表项的获取、匹配和释放。由于每个业务CPU都具有一个相应的局部空闲链表,且该局部空闲链表中链接有多个从全局空闲链表中获取的链表结点,各个业务CPU从属于自己的局部空闲链表中获取链表结点所对应的会话表项时,不需要与其他业务CPU进行同步操作,因此降低了系统负担,提高了系统效率。
实施例2本实施例提供了一种会话表管理装置,用于多CPU系统中,如图3所示。该会话表管理装置20包括会话表项获取模块21,会话表项缓释放模块22和会话表项返回模块23。
会话表项获取模块21从多CPU系统的全局空闲链表中获取多个链表结点链接作为各个业务CPU的局部空闲链表的链表结点,该链表结点对于会话表中空闲的各会话表项。例如,可以获取10个链表结点链接于各个业务CPU的局部空闲链表中。当业务CPU接收到会话报文需要进行会话信息存储时,直接根据该业务CPU的局部空闲链表的链表结点获取相应的会话表项,将生成的会话信息存储到获取的会话表项中,其他未被获取的会话表项仍然保存在该局部空闲链表中。
当该业务CPU接收到属于该会话的会话报文时,与该会话表项中存储的会话信息进行匹配。具体匹配过程,可以维护一个局部哈希(Hash)表,该业务CPU根据该局部哈希(Hash)表对会话表项的索引,实现对会话报文的匹配。由于该局部哈希(Hash)表是基于该业务CPU的局部空闲链表生成的,因此有利于减小哈希表的大小,节省系统资源。
当需要释放会话表项时,会话表项缓释放模块22将释放的会话表项所对应的链表结点作为该业务CPU所属的局部空闲链表的链表结点,以完成会话表项的缓释放。
当该业务CPU所对应的局部空闲链表中的链表结点数目超过预定的数目时,会话表项返回模块23将该局部空闲链表中超过部分的链表结点返回给全局空闲链表。例如,可以预先指定当局部空闲链表中的链表结点个数多于15个时,将其中的10个返回给全局空闲链表。
通过本实施例所述装置,能够完成对会话表项的获取、匹配和释放。由于每个业务CPU都具有一个相应的局部空闲链表,且该局部空闲链表中链接有多个从全局空闲链表中获取的链表结点,各个业务CPU从属于自己的局部空闲链表中获取链表结点所对应的会话表项时,不需要与其他业务CPU进行同步操作,因此降低了系统负担,提高了系统效率。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围。
权利要求
1.一种会话表管理方法,其特征在于包括从全局空闲链表中获取多个链表结点作为业务CPU局部空闲链表的链表结点,各链表结点对应于会话表中空闲的各会话表项;当该业务CPU接收到会话报文需要进行会话信息存储时,直接根据其局部空闲链表结点获取对应的会话表项进行会话信息存储。
2.根据权利要求1所述的会话表管理方法,其特征在于所述进行从全局空闲链表中获取多个链表结点作为业务CPU局部空闲链表的链表结点操作的条件是该业务CPU的局部空闲链表中没有对应相应会话表项的链表结点存在。
3.根据权利要求1所述的会话表管理方法,其特征在于释放会话表项,将释放的会话表项所对应的链表结点作为该业务CPU所属的局部空闲链表的链表结点。
4.根据权利要求3所述的会话表管理方法,其特征在于当所述业务CPU所属的局部空闲链表的结点数目超过预定数目时,将其中超过部分的链表结点返回给全局空闲链表。
5.根据权利要求1或3所述的会话表管理方法,其特征在于所述业务CPU维护一个局部Hash表,根据该局部Hash表进行会话表项的索引。
6.一种会话表管理装置,其特征在于该装置包括会话表项获取模块,该模块用于从全局空闲链表中获取多个链表结点作为业务CPU局部空闲链表的链表结点,该链表结点对应于会话表中空闲的各会话表项,各会话表项用于存储会话信息。
7.根据权利要求6所述的会话表管理装置,其特征在于该装置还包括会话表项缓释放模块,该模块释放会话表项,将释放的会话表项所对应的链表结点作为该业务CPU所属的局部空闲链表的链表结点。
8.根据权利要求7所述的会话表管理装置,其特征在于该装置还包括会话表项返回模块,该模块判断所述业务CPU所属的局部空闲链表的结点数目超过预定数目时,将其中超过部分的链表结点返回给全局空闲链表。
全文摘要
本发明涉及一种会话表管理方法及装置,其中方法包括从全局空闲链表中获取多个链表结点作为业务CPU局部空闲链表的链表结点,各链表结点对应于会话表中空闲的各会话表项;当该业务CPU接收到会话报文需要进行会话信息存储时,直接根据其局部空闲链表结点获取对应的会话表项进行会话信息存储。装置包括会话表项获取模块。通过本发明,完成了对会话表项的获取、匹配和释放。由于每个业务CPU都具有一个相应的局部空闲链表,且该局部空闲链表中链接有多个从全局空闲链表中获取的链表结点,各个业务CPU从属于自己的局部空闲链表中获取链表结点所对应的会话表项时,不需要与其他业务CPU进行同步操作,因此降低了系统负担,提高了系统效率。
文档编号H04L12/54GK101013382SQ20071006382
公开日2007年8月8日 申请日期2007年2月12日 优先权日2007年2月12日
发明者恽新成 申请人:杭州华为三康技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1