CN109361609B - 防火墙设备的报文转发方法、装置、设备及存储介质 - Google Patents
防火墙设备的报文转发方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN109361609B CN109361609B CN201811531047.5A CN201811531047A CN109361609B CN 109361609 B CN109361609 B CN 109361609B CN 201811531047 A CN201811531047 A CN 201811531047A CN 109361609 B CN109361609 B CN 109361609B
- Authority
- CN
- China
- Prior art keywords
- session
- forwarded
- simplified
- hash
- message
- 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
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/7453—Address table lookup; Address filtering using hashing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0227—Filtering policies
- H04L63/0236—Filtering by address, protocol, port number or service, e.g. IP-address or URL
Abstract
本发明实施例提供一种防火墙设备的报文转发方法、装置、设备及存储介质。本发明实施例的方法,获取待转发报文,待转发报文中包括五元组数据;计算五元组数据的哈希值;根据哈希值查询当前CPU中预先构建的简化会话数组哈希表中是否存在与待转发报文相匹配的简化会话表项;若简化会话数组哈希表中存在与待转发报文相匹配的简化会话表项,则根据相匹配的简化会话表项中的模板会话地址,获取对应的会话表项模板;根据会话表项模板对待转发报文进行转发,整个转发过程可以节省大量内存空间,可以避免因内存空间占用较大导致会话表项较多时缓存访问失效概率增加的问题,可以提高防火墙设备的整体转发性能的稳定性。
Description
技术领域
本发明实施例涉及网络安全技术领域,尤其涉及一种防火墙设备的报文转发方法、装置、设备及存储介质。
背景技术
防火墙是一种位于内部网络与外部网络之间的网络安全系统,其依照特定的规则,允许或是限制传输的数据通过。
防火墙的转发系统的健壮性和高性能成为推动防火墙发展的重要指标。尤其是随着科技的发展,网卡的性能已经提升到10G级别,而CPU的更新换代还无法适应网卡的性能提升,若想匹配如此高性能的网卡则需要购买昂贵的CPU来实现防火墙转发性能的提升。而即便是购买性能较好的CPU,由于多核并发资源竞争原因以及软件性能的限制也很难通过软件实现防火墙转发的高性能。而且对性能的影响除了CPU以外,还受内存的访问速度和带宽影响,相比CPU而言内存、缓存的价钱昂贵很多,故而随着时代的进步如何设计好防火墙,也要考虑内存与缓存的影响。
在防火墙设备进行报文转发时需要查询会话表项。现有的防火墙设备中会话数的最大容量都是几千万级别,为了提升性能现有技术中都是将会话表项事先在内存池中构建好,这就提前消耗很大的内存空间,由于内存空间占用较大会导致会话表项较多时缓存访问失效概率增加,从而使防火墙设备的整体转发性能大幅下降。
发明内容
本发明实施例提供一种防火墙设备的报文转发方法、装置、设备及存储介质,用以解决现有的防火墙设备中,将会话表项事先在内存池中构建好,提前消耗很大的内存空间,导致会话表项较多时缓存访问失效概率增加,从而使防火墙设备的整体转发性能大幅下降的问题。
本发明实施例的一个方面是提供一种防火墙设备的报文转发方法,包括:
获取待转发报文,所述待转发报文中包括五元组数据;
计算所述五元组数据的哈希值;
根据所述哈希值查询当前CPU中预先构建的简化会话数组哈希表中是否存在与所述待转发报文相匹配的简化会话表项;
若所述简化会话数组哈希表中存在与所述待转发报文相匹配的简化会话表项,则根据所述相匹配的简化会话表项中的模板会话地址,获取对应的会话表项模板;
根据所述会话表项模板对所述待转发报文进行转发;
其中,所述简化会话数组哈希表中存储有多个哈希桶,每个哈希桶中存储有多个简化会话表项。
进一步地,若所述简化会话数组哈希表中不存在与所述待转发报文相匹配的简化会话表项,则根据所述哈希值查询预先构建的通用会话哈希链表中是否存在与所述待转发报文相匹配的通用会话表项地址;若所述通用会话哈希链表中存在与所述待转发报文相匹配的通用会话表项地址,则根据所述相匹配的通用会话表项地址从通用会话表中获取相匹配的通用会话表项,并按照所述相匹配的通用会话表项对所述待转发报文进行转发;其中,所述通用会话哈希链表中存储有多个哈希桶,每个哈希桶中存储有多个通用会话表项地址,所述通用会话表中存储有每个通用会话表项。
进一步地,若所述通用会话哈希链表中不存在与所述待转发报文相匹配的通用会话表项地址,则根据所述待转发报文的转发策略对所述待转发报文建立对应的会话表项。
进一步地,若所述待转发报文的转发策略与会话表项模板的转发策略匹配,则将所述待转发报文的会话表项以所述简化会话表项的形式建立到所述简化会话数组哈希表中;若所述待转发报文的转发策略与会话表项模板的转发策略不匹配,则将所述待转发报文的会话表项建立到所述通用会话哈希链表对应的通用会话表中。
进一步地,若所述简化会话表项数组哈希表中的某哈希桶存储的简化会话表项的个数小于哈希桶容纳总数,则将所述待转发报文的会话表项以所述简化会话表项的形式添加到该哈希桶中对应的空白哈希表项中;若所述简化会话表项数组哈希表中的所有哈希桶存储的简化会话表项的个数等于哈希桶容纳总数,则获取某哈希桶中每个简化会话表项对应的当前状态,若某一简化会话表项对应的当前状态为超时状态,则以简化会话表项的形式新建所述待转发报文的会话表项,并且用该新建的会话表项替换掉超时状态的简化会话表项;若所有简化会话表项对应的当前状态均为正常状态,则将所述待转发报文的会话表项建立到所述通用会话哈希链表对应的通用会话表中。
进一步地,采用定时器维护所述通用会话表中每个会话表项的生命周期;
若所述定时器监测到某会话表项的生存时间大于或等于对应的生命周期,则删除该会话表项。
进一步地,更改网卡驱动的RSS算法中的种子信息,以使所述五元组数据一致的报文被同一CPU收到。
进一步地,所述当前CPU为多核处理器中的任意一个CPU,所述多核处理器中的每个CPU在初始化阶段均构建一个仅供自身使用的简化会话数组哈希表;所述多核处理器的不同的CPU不会竞争使用同一个简化会话数组哈希表。
本发明实施例的另一个方面是提供一种防火墙设备的报文转发装置,包括:
数据获取模块,用于获取待转发报文,所述待转发报文中包括五元组数据;
哈希模块,用于计算所述五元组数据的哈希值;
匹配处理模块,用于根据所述哈希值查询当前CPU中预先构建的简化会话数组哈希表中是否存在与所述待转发报文相匹配的简化会话表项;
转发处理模块,用于若所述简化会话数组哈希表中存在与所述待转发报文相匹配的简化会话表项,则根据所述相匹配的简化会话表项中的模板会话地址,获取对应的会话表项模板;
所述转发处理模块还用于根据所述会话表项模板对所述待转发报文进行转发;
其中,所述简化会话数组哈希表中存储有多个哈希桶,每个哈希桶中存储有多个简化会话表项。
本发明实施例的另一个方面是提供防火墙设备的报文转发设备,包括:
存储器,处理器,以及存储在所述存储器上并可在所述处理器上运行的计算机程序,
所述处理器运行所述计算机程序时实现上述所述的方法。
本发明实施例的另一个方面是提供一种计算机可读存储介质,存储有计算机程序,
所述计算机程序被处理器执行时实现上述所述的方法。
本发明实施例提供的防火墙设备的报文转发方法、装置、设备及存储介质,获取待转发报文,所述待转发报文中包括五元组数据;计算所述五元组数据的哈希值;根据所述哈希值查询当前CPU中预先构建的简化会话数组哈希表中是否存在与所述待转发报文相匹配的简化会话表项;若所述简化会话数组哈希表中存在与所述待转发报文相匹配的简化会话表项,则根据所述相匹配的简化会话表项中的模板会话地址,获取对应的会话表项模板;根据所述会话表项模板对所述待转发报文进行转发,整个转发过程中,无需事先在内存池中构建会话表项,可以节省大量内存空间,可以避免因内存空间占用较大导致会话表项较多时缓存访问失效概率增加的问题,另外,本实施例中每个CPU对应一个预先构建的简化会话数组哈希表,对于多核系统,随着CPU的个数增长,报文转发处理的性能线性增长,可以大大提高防火墙设备的整体转发性能。
附图说明
图1为本发明实施例一提供的防火墙设备的报文转发方法流程图;
图2为本发明实施例一提供的简化会话数组哈希表的结构示意图;
图3为本发明实施例二提供的防火墙设备的报文转发方法流程图;
图4为本发明实施例一提供的通用会话哈希链表的结构示意图;
图5为本发明实施例三提供的防火墙设备的报文转发装置的结构示意图;
图6为本发明实施例四提供的防火墙设备的报文转发设备的结构示意图。
通过上述附图,已示出本发明明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本发明实施例构思的范围,而是通过参考特定实施例为本领域技术人员说明本发明的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明实施例的一些方面相一致的装置和方法的例子。
首先对本发明实施例所涉及的名词进行解释:
网卡的RSS(Receive-Side Scaling):是一种网卡驱动技术,能让多核系统中跨多个处理器的网络收包处理能力高效能分配。
此外,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。在以下各实施例的描述中,“多个”的含义是两个以上,除非另有明确具体的限定。
下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本发明的实施例进行描述。
实施例一
图1为本发明实施例一提供的防火墙设备的报文转发方法流程图;图2为本发明实施例一提供的简化会话数组哈希表的结构示意图。本发明实施例针对现有的防火墙设备中,将会话表项事先在内存池中构建好,提前消耗很大的内存空间,导致会话表项较多时缓存访问失效概率增加,从而使防火墙设备的整体转发性能大幅下降的问题,提供了防火墙设备的报文转发方法。本实施例中的方法应用于防火墙设备。如图1所示,该方法具体步骤如下:
步骤S101、获取待转发报文,待转发报文中包括五元组数据。
其中,五元组数据包括源地址(sip),目的地址(dip),源端口号(sport),目的端口号(dport),协议号(protocal)。
步骤S102、计算五元组数据的哈希值。
本实施例中,在接收到待转发报文后,可以提取出待转发报文中五元组数据,并计算五元组数据的哈希值。
步骤S103、根据哈希值查询当前CPU中预先构建的简化会话数组哈希表中是否存在与待转发报文相匹配的简化会话表项。
本实施例中,每个CPU对应一个预先构建的简化会话数组哈希表,对于多核系统,随着CPU的个数增长,报文转发处理的性能线性增长。另外,简化会话数组哈希表中存储有多个哈希桶,每个哈希桶中以数组的方式存储有多个简化会话表项,提高了查询过程效率,从而可以提高报文转发的整体性能。
如图2所示,以简化会话数组哈希表中包括N个哈希桶,每个哈希桶中存储有M个简化会话表项。图2中,bucket1,bucket2,…,bucketN表示简化会话数组哈希表中N个哈希桶;sess_node1,sess_node2,…,sess_nodeM表示bucket1表示的哈希桶中的M个简化会话表项;sess_nodeM+1,sess_nodeM+2,…,sess_node2M表示bucket2表示的哈希桶中的M个简化会话表项;其他哈希桶中M个简化会话表项的表示类似,此处不再赘述。
具体的,简化会话表项采用(key,value)的方式存储,其中key值为五元组数据,value值为模板会话地址。另外,简化会话表项的value值还可以包括当前状态和统计信息。
其中,模板会话地址用于指向一个会话表项模板。简化会话表项对应的当前状态即为简化会话表项对应的会话表项模板的当前状态。当前状态用于表示对应的会话表项模板当前是否是已经超时的状态。统计信息可以是所在哈希桶中的简化会话表项的个数,或者该简化会话表项的更新时间,或者该简化会话表项对应的使用次数。其中简化会话表项对应的使用次数也就是简化会话表项对应的会话表项模板的使用次数。
该步骤中,根据步骤S102中计算得到的五元组数据的哈希值,匹配当前CPU中预先构建的简化会话数组哈希表中的哈希桶;若匹配成功,进一步根据五元组数据匹配该哈希桶中的简化会话表项,若再次匹配成功,则匹配成功的简化会话表项即为与待转发报文相匹配的简化会话表项,此时可以确定当前CPU中预先构建的简化会话数组哈希表中存在与待转发报文相匹配的简化会话表项,并可以获取到该简化会话表项。
可选的,计算得到的五元组数据的哈希值之后,可以根据预设取模算法,对五元组数据的哈希值进行取模运算,根据对五元组数据的哈希值进行取模运算的结果,与CPU中预先构建的简化会话数组哈希表中的哈希桶的标识信息进行匹配,如果取模运算的结果与某一哈希桶的标识信息一致,则确定该五元组数据与该哈希桶匹配成功。然后,将五元组数据的哈希值与匹配的哈希桶中的各简化会话表项的key值进行匹配,若该五元组数据的哈希值与某一个简化会话表项的key值对应的五元组数据的哈希值一致,则确定该五元组数据与该简化会话表项匹配成功。
若根据五元组数据的哈希值匹配该简化会话数组哈希表中的哈希桶失败,或者,根据五元组数据匹配该哈希桶中的简化会话表项失败,则确定简化会话数组哈希表中不存在与待转发报文相匹配的简化会话表项。
本实施例中,预先构建好每个CPU的简化会话数组哈希表中的简化会话表项,在需要使用时,无需生成完整的会话表项,直接向简化会话数组哈希表中添加简化会话表项即可,从而可以提高整体性能。
步骤S104、若简化会话数组哈希表中存在与待转发报文相匹配的简化会话表项,则根据相匹配的简化会话表项中的模板会话地址,获取对应的会话表项模板。
本实施例中,可以设定简化会话表项的字节数为64字节。简化会话表项对应的当前状态即为简化会话表项对应的会话表项模板的当前状态。当前状态用于表示对应的会话表项模板当前是否是已经超时的状态;模板会话地址用于指向一个会话表项模板;统计信息可以是所在哈希桶中的简化会话表项的个数,或者该简化会话表项的更新时间,或者该简化会话表项对应的使用次数。其中,简化会话表项对应的使用次数也就是简化会话表项对应的会话表项模板的使用次数。
可选的,若简化会话数组哈希表中存在与待转发报文相匹配的简化会话表项,更新匹配到的简化会话表项的当前状态,以表示该简化会话表项未超时。
该步骤中,若简化会话数组哈希表中存在与待转发报文相匹配的简化会话表项,根据匹配到的简化会话表项中的模板会话地址,获取对应的会话表项模板,也即是获取到了与待转发报文对应的会话表项模板。
其中,会话表项模板包括会话策略相关内容,是根据多个相同的会话策略构建的模板。本实施例中,会话策略与会话表项模板一一对应。
可选的,本实施例中可以预先设定会话表项模板的数量上限,将该数量上限记为X,同时构建元素个数为X的数组,这个数组用于存储转发策略的标记值,数组的元素为转发策略的标记值。转发策略的标记值用于唯一标识一个转发策略,由于会话策略与会话表项模板一一对应,因此数组中的每个元素对应唯一一个会话表项模板。本实施例中,当连续的Y个待转发报文的报文策略均一致时,构建与该报文策略对应的会话表项模板,并将该报文策略对应的标记值记录到该数组中。若会话表项模板的数量超过X时,按照每个会话表项模板的使用次数,将该数组中与使用次数最小的会话表项模板对应元素进行替换,替换为新建的会话表项模板的标记值。
可选的,可以将已处理的转发报文的报文策略进行存储,在对新的待转发报文的报文策略进行处理时,将新的待转发报文的报文策略与已处理的转发报文的报文策略进行比较,来确定是否存在连续的Y个待转发报文的报文策略均一致。
步骤S105、根据会话表项模板对待转发报文进行转发。
本实施例中,若简化会话数组哈希表中存在与待转发报文相匹配的会话表项模板,则可以获取到简化会话数组哈希表中与待转发报文相匹配的会话表项模板,并按照相匹配的会话表项模板对待转发报文进行转发。
本实施例中,会话表项模板包括会话策略相关内容,是根据多个相同的会话策略构建的模板,可以设定会话表项模板占用512字节,可以减少通用会话表项的个数,能够节省会话表项占用的存储空间。
本实施例中,整个转发过程可以节省大量内存空间,因为使用过程中如果匹配了简化会话表项的话,简化会话表项的所占的空间比通用会话表项小,从而节省巨大内存空间。实验数据表明,性能测试环境中基本上所有的报文都能匹配上简化会话表项,而真实的环境也能保证不小于85%的流量匹配简化会话表项,从而大幅节省内存空间。
本发明实施例通过获取待转发报文,待转发报文中包括五元组数据;计算五元组数据的哈希值;根据哈希值查询当前CPU中预先构建的简化会话数组哈希表中是否存在与待转发报文相匹配的简化会话表项;若简化会话数组哈希表中存在与待转发报文相匹配的简化会话表项,则根据相匹配的简化会话表项中的模板会话地址,获取对应的会话表项模板;根据会话表项模板对待转发报文进行转发,整个转发过程可以节省大量内存空间,可以避免因内存空间占用较大导致会话表项较多时缓存访问失效概率增加的问题,另外,本实施例中每个CPU对应一个预先构建的简化会话数组哈希表,对于多核系统,随着CPU的个数增长,报文转发处理的性能线性增长,可以大大提高防火墙设备的整体转发性能。
实施例二
图3为本发明实施例二提供的防火墙设备的报文转发方法流程图;图4为本发明实施例一提供的通用会话哈希链表的结构示意图。在上述实施例一的基础上,本实施例中,若简化会话数组哈希表中不存在与待转发报文相匹配的简化会话表项,则根据哈希值查询预先构建的通用会话哈希链表中是否存在与待转发报文相匹配的通用会话表项地址;若通用会话哈希链表中存在与待转发报文相匹配的通用会话表项地址,则根据相匹配的通用会话表项地址从通用会话表中获取相匹配的通用会话表项,并按照相匹配的通用会话表项对待转发报文进行转发。如图3所示,该方法具体步骤如下:
步骤S101、获取待转发报文,待转发报文中包括五元组数据。
步骤S102、计算五元组数据的哈希值。
步骤S103、根据哈希值查询当前CPU中预先构建的简化会话数组哈希表中是否存在与待转发报文相匹配的简化会话表项。
若该步骤中查询结果为简化会话数组哈希表中存在与待转发报文相匹配的简化会话表项,则执行步骤S104-S105。
若该步骤中查询结果为简化会话数组哈希表中不存在与待转发报文相匹配的简化会话表项,则执行步骤S106-S108。
本实施例中,所述当前CPU为多核处理器中的任意一个CPU。所述多核处理器中的每个CPU在初始化阶段均构建一个仅供自身使用的简化会话数组哈希表;所述多核处理器的不同的CPU不会竞争使用同一个简化会话数组哈希表。
例如,假设多核处理器有N个CPU,那么初始化阶段每个CPU均会构建一个简化会话数组哈希表,多核处理器共构建了N个简化会话数组哈希表,每个简化会话数组哈希表只供构建该简化会话数组哈希表的CPU使用。
这样,每次每个CPU需要使用简化会话数组哈希表时,不需要临时申请内存,直接使用预先构建的简化会话数组哈希表即可,减少对内存空间的占用。并且,多核处理器的多个CPU之间均用不同的简化会话数组哈希表进行查询,不存在竞争使用简化会话数组哈希表的情况,可以提高防火墙设备的整体转发性能的稳定性。
步骤S104、若简化会话数组哈希表中存在与待转发报文相匹配的简化会话表项,则根据相匹配的简化会话表项中的模板会话地址,获取对应的会话表项模板。
步骤S105、根据会话表项模板对待转发报文进行转发。
上述步骤S101-S105的具体实施方式与实施例一中对应的步骤一致,本实施例此处不再赘述。
另外,如果没有涉及到网络地址转换(Network Address Translation,NAT)相关,那么left key与right key正好是相反的,即假设left key为(sip,sport,dip,dport,protocol),那么right key即为(dip,dport,sip,sport,protocol)。实质这两个五元组数据是一致的,为了保证如上五元组数据的报文会话能被同一CPU收到,该步骤中,在步骤S103根据哈希值查询当前CPU中预先构建的简化会话数组哈希表中是否存在与待转发报文相匹配的简化会话表项之前,还可以进行以下处理:
更改网卡驱动的RSS(Receive-Side Scaling)算法中的种子信息,以使五元组数据一致的报文被同一CPU收到。
步骤S106、若简化会话数组哈希表中不存在与待转发报文相匹配的简化会话表项,则根据哈希值查询预先构建的通用会话哈希链表中是否存在与待转发报文相匹配的通用会话表项地址。
其中,通用会话哈希链表中存储有多个哈希桶,每个哈希桶中存储有多个通用会话表项地址,通用会话表中存储有每个通用会话表项。
本实施例中的通用会话表项为会话表项的完整内容,与现有技术中的会话表项一致,通常为768字节。
本实施例中,预先构建通用会话哈希链表,用于查询通用会话表项。该通用会话哈希链表为全局表,多个CPU均可以查询。
通用会话哈希链表的结构如图4所示,通用会话哈希链表中存储有多个哈希桶,每个哈希桶中存储有多个通用会话表项地址。图4中用“addr”表示通用会话表项地址,用“bucket*”表示一个哈希桶,用“·”表示链表中的指针。
若上述步骤S103中查询结果为简化会话数组哈希表中不存在与待转发报文相匹配的简化会话表项,则根据哈希值查询预先构建的通用会话哈希链表中是否存在与待转发报文相匹配的通用会话表项地址。
若该步骤中的查询结果为通用会话哈希链表中存在与待转发报文相匹配的通用会话表项地址,则执行步骤S107。
若该步骤中的查询结果为通用会话哈希链表中不存在与待转发报文相匹配的通用会话表项地址,则执行步骤S108。
步骤S107、若通用会话哈希链表中存在与待转发报文相匹配的通用会话表项地址,则根据相匹配的通用会话表项地址从通用会话表中获取相匹配的通用会话表项,并按照相匹配的通用会话表项对待转发报文进行转发。
步骤S108、若通用会话哈希链表中不存在与待转发报文相匹配的通用会话表项地址,则根据待转发报文的转发策略对待转发报文建立对应的会话表项。
本实施例中,根据待转发报文的转发策略对待转发报文建立对应的会话表项,具体可以采用如下方式实现:
若待转发报文的转发策略与会话表项模板的转发策略匹配,则将待转发报文的会话表项以简化会话表项的形式建立到简化会话数组哈希表中;若待转发报文的转发策略与会话表项模板的转发策略不匹配,则将待转发报文的会话表项建立到通用会话哈希链表对应的通用会话表中。
具体的,将待转发报文的会话表项以简化会话表项的形式建立到简化会话数组哈希表中,具体包括:
若简化会话表项数组哈希表中的某哈希桶存储的简化会话表项的个数小于哈希桶容纳总数,则将待转发报文的会话表项以简化会话表项的形式添加到该哈希桶中对应的空白哈希表项中。
若简化会话表项数组哈希表中的所有哈希桶存储的简化会话表项的个数等于哈希桶容纳总数,则获取某哈希桶中每个简化会话表项对应的当前状态;若某一简化会话表项对应的当前状态为超时状态,则以简化会话表项的形式新建待转发报文的会话表项,并且用该新建的会话表项替换掉超时状态的简化会话表项;若所有简化会话表项对应的当前状态均为正常状态,也即是所有简化会话表项对应的会话表项模板的当前状态不是超时状态,则将待转发报文的会话表项建立到通用会话哈希链表对应的通用会话表中。
可选的,若简化会话表项数组哈希表中的所有哈希桶存储的会话表项模板的个数等于哈希桶容纳总数,还可以采用以下方式进行会话表项模板的替换:
获取每个简化会话表项对应的使用次数,并确定对应的使用次数最少的简化会话表项;以简化会话表项的形式新建待转发报文的会话表项,并且用该新建的会话表项替换掉该对应的使用次数最小的简化会话表项。
可选的,简化会话表项对应的使用次数可以记录在简化会话表项中的会话表项模板的信息中的统计信息中。简化会话表项对应的使用次数也就是简化会话表项对应的会话表项模板的使用次数。
可选的,在将待转发报文的会话表项以会话表项模板的形式添加到该哈希桶中对应的空白哈希表项中之后,更新该哈希桶中各简化会话表项的当前状态。
可选的,在将待转发报文的会话表项以会话表项模板的形式添加到该哈希桶中对应的空白哈希表项中之后,还可以更新当前报文的处理时间。另外,为了避免每个报文都更新处理时间,可以设定当前的处理时间距离上一次处理时间差值超过预设阈值时,更新处理时间。其中,预设阈值可以由技术人员根据实际需要进行设定,例如预设阈值可以为1秒,本实施例此处不做具体限定。
可选的,将待转发报文的会话表项建立到通用会话哈希链表对应的通用会话表中之后,还进行以下处理:
采用定时器维护通用会话表中每个会话表项的生命周期;若定时器监测到某会话表项的生存时间大于或等于对应的生命周期,则删除该会话表项。
本实施例中,对于通用会话表,使用定时器来维护通用会话表中每个会话表项的超时,以保证会话表项可以及时的删除,从而避免内存泄漏的问题。对于简化会话表项而言,并没有单独设计定时器来维护会话表项的生存周期,而是使用替换机制来维护会话表项的超时,减少了整体性能中的定时器开销,大幅提升了整体性能。
本发明实施例通过获取待转发报文,待转发报文中包括五元组数据;计算五元组数据的哈希值;根据哈希值查询当前CPU中预先构建的简化会话数组哈希表中是否存在与待转发报文相匹配的简化会话表项;若简化会话数组哈希表中存在与待转发报文相匹配的简化会话表项,则根据相匹配的简化会话表项中的模板会话地址,获取对应的会话表项模板;根据会话表项模板对待转发报文进行转发,整个转发过程可以节省大量内存空间,可以避免因内存空间占用较大导致会话表项较多时缓存访问失效概率增加的问题,可以提高防火墙设备的整体转发性能的稳定性。
实施例三
图5为本发明实施例三提供的防火墙设备的报文转发装置的结构示意图。本发明实施例提供的防火墙设备的报文转发装置可以执行防火墙设备的报文转发方法实施例提供的处理流程。如图5所示,该防火墙设备的报文转发装置50包括:数据获取模块501,哈希模块502,匹配处理模块503和转发处理模块504。
具体地,数据获取模块501,用于获取待转发报文,待转发报文中包括五元组数据。
哈希模块502,用于计算五元组数据的哈希值。
匹配处理模块503,用于根据哈希值查询当前CPU中预先构建的简化会话数组哈希表中是否存在与待转发报文相匹配的简化会话表项。
转发处理模块504,用于若简化会话数组哈希表中存在与待转发报文相匹配的简化会话表项,则根据相匹配的简化会话表项中的模板会话地址,获取对应的会话表项模板。
转发处理模块504还用于根据会话表项模板对待转发报文进行转发。
其中,简化会话数组哈希表中存储有多个哈希桶,每个哈希桶中存储有多个简化会话表项。
可选的,转发处理模块504还用于:
若简化会话数组哈希表中不存在与待转发报文相匹配的简化会话表项,则根据哈希值查询预先构建的通用会话哈希链表中是否存在与待转发报文相匹配的通用会话表项地址;若通用会话哈希链表中存在与待转发报文相匹配的通用会话表项地址,则根据相匹配的通用会话表项地址从通用会话表中获取相匹配的通用会话表项,并按照相匹配的通用会话表项对待转发报文进行转发。
其中,通用会话哈希链表中存储有多个哈希桶,每个哈希桶中存储有多个通用会话表项地址,通用会话表中存储有每个通用会话表项。
可选的,转发处理模块504还用于:
若通用会话哈希链表中不存在与待转发报文相匹配的通用会话表项地址,则根据待转发报文的转发策略对待转发报文建立对应的会话表项。
可选的,转发处理模块504还用于:
若待转发报文的转发策略与会话表项模板的转发策略匹配,则将待转发报文的会话表项以简化会话表项的形式建立到简化会话数组哈希表中;若待转发报文的转发策略与会话表项模板的转发策略不匹配,则将待转发报文的会话表项建立到通用会话哈希链表对应的通用会话表中。
可选的,转发处理模块504还用于:
若简化会话表项数组哈希表中的某哈希桶存储的简化会话表项的个数小于哈希桶容纳总数,则将待转发报文的会话表项以简化会话表项的形式添加到该哈希桶中对应的空白哈希表项中;若简化会话表项数组哈希表中的所有哈希桶存储的简化会话表项的个数等于哈希桶容纳总数,则获取某哈希桶中每个简化会话表项对应的当前状态,若某一简化会话表项对应的当前状态为超时状态,则以简化会话表项的形式新建所述待转发报文的会话表项,并且用该新建的会话表项替换掉超时状态的简化会话表项;若所有简化会话表项对应的当前状态均为正常状态,则将待转发报文的会话表项建立到通用会话哈希链表对应的通用会话表中。
可选的,转发处理模块504还用于:
采用定时器维护通用会话表中每个会话表项的生命周期;若定时器监测到某会话表项的生存时间大于或等于对应的生命周期,则删除该会话表项。
可选的,转发处理模块504还用于:
更改网卡驱动的RSS算法中的种子信息,以使五元组数据一致的报文被同一CPU收到。
本实施例中,对于通用会话表,使用定时器来维护通用会话表中每个会话表项的超时,以保证会话表项可以及时的删除,从而避免内存泄漏的问题。对于简化会话表项而言,并没有单独设计定时器来维护会话表项的生存周期,而是使用替换机制来维护会话表项的超时,减少了整体性能中的定时器开销,大幅提升了整体性能。
本发明实施例提供的装置可以具体用于执行上述任一方法实施例所提供的方法实施例,具体功能此处不再赘述。
本发明实施例通过获取待转发报文,待转发报文中包括五元组数据;计算五元组数据的哈希值;根据哈希值查询当前CPU中预先构建的简化会话数组哈希表中是否存在与待转发报文相匹配的简化会话表项;若简化会话数组哈希表中存在与待转发报文相匹配的简化会话表项,则根据相匹配的简化会话表项中的模板会话地址,获取对应的会话表项模板;根据会话表项模板对待转发报文进行转发,整个转发过程可以节省大量内存空间,可以避免因内存空间占用较大导致会话表项较多时缓存访问失效概率增加的问题,可以提高防火墙设备的整体转发性能的稳定性。
实施例四
图6为本发明实施例四提供的防火墙设备的报文转发设备的结构示意图。如图6所示,该设备60包括:处理器601,存储器602,以及存储在存储器602上并可由处理器601执行的计算机程序。
处理器601在执行存储在存储器602上的计算机程序时实现上述任一方法实施例提供的防火墙设备的报文转发方法。
本发明实施例通过获取待转发报文,待转发报文中包括五元组数据;计算五元组数据的哈希值;根据哈希值查询当前CPU中预先构建的简化会话数组哈希表中是否存在与待转发报文相匹配的简化会话表项;若简化会话数组哈希表中存在与待转发报文相匹配的简化会话表项,则根据相匹配的简化会话表项中的模板会话地址,获取对应的会话表项模板;根据会话表项模板对待转发报文进行转发,整个转发过程可以节省大量内存空间,可以避免因内存空间占用较大导致会话表项较多时缓存访问失效概率增加的问题,可以提高防火墙设备的整体转发性能的稳定性。
另外,本发明实施例还提供一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上述任一方法实施例提供的防火墙设备的报文转发方法。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本发明旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求书指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求书来限制。
Claims (11)
1.一种防火墙设备的报文转发方法,其特征在于,包括:
获取待转发报文,所述待转发报文中包括五元组数据;
计算所述五元组数据的哈希值;
根据所述哈希值查询当前CPU中预先构建的简化会话数组哈希表中是否存在与所述待转发报文相匹配的简化会话表项;所述简化会话表项采用(key,value)的方式存储,其中key值为五元组数据,value值为模板会话地址;
若所述简化会话数组哈希表中存在与所述待转发报文相匹配的简化会话表项,则根据所述相匹配的简化会话表项中的模板会话地址,获取对应的会话表项模板;所述会话表项模板包括会话策略相关内容,是根据多个相同的会话策略构建的模板;
根据所述会话表项模板对所述待转发报文进行转发;
其中,所述简化会话数组哈希表中存储有多个哈希桶,每个哈希桶中存储有多个简化会话表项。
2.根据权利要求1所述的方法,其特征在于,还包括:
若所述简化会话数组哈希表中不存在与所述待转发报文相匹配的简化会话表项,则根据所述哈希值查询预先构建的通用会话哈希链表中是否存在与所述待转发报文相匹配的通用会话表项地址;
若所述通用会话哈希链表中存在与所述待转发报文相匹配的通用会话表项地址,则根据所述相匹配的通用会话表项地址从通用会话表中获取相匹配的通用会话表项,并按照所述相匹配的通用会话表项对所述待转发报文进行转发;
其中,所述通用会话哈希链表中存储有多个哈希桶,每个哈希桶中存储有多个通用会话表项地址,所述通用会话表中存储有每个通用会话表项。
3.根据权利要求2所述的方法,其特征在于,还包括:
若所述通用会话哈希链表中不存在与所述待转发报文相匹配的通用会话表项地址,则根据所述待转发报文的转发策略对所述待转发报文建立对应的会话表项。
4.根据权利要求3所述的方法,其特征在于,所述根据所述待转发报文的转发策略对所述待转发报文建立对应的会话表项,具体包括:
若所述待转发报文的转发策略与会话表项模板的转发策略匹配,则将所述待转发报文的会话表项以所述简化会话表项的形式建立到所述简化会话数组哈希表中;
若所述待转发报文的转发策略与会话表项模板的转发策略不匹配,则将所述待转发报文的会话表项建立到所述通用会话哈希链表对应的通用会话表中。
5.根据权利要求4所述的方法,其特征在于,所述将所述待转发报文的会话表项以所述简化会话表项的形式建立到所述简化会话数组哈希表中,具体包括:
若所述简化会话表项数组哈希表中的某哈希桶存储的简化会话表项的个数小于哈希桶容纳总数,则将所述待转发报文的会话表项以所述简化会话表项的形式添加到该哈希桶中对应的空白哈希表项中;
若所述简化会话表项数组哈希表中的所有哈希桶存储的简化会话表项的个数等于哈希桶容纳总数,则获取某哈希桶中每个简化会话表项对应的当前状态,若某一简化会话表项对应的当前状态为超时状态,则以简化会话表项的形式新建所述待转发报文的会话表项,并且用该新建的会话表项替换掉超时状态的简化会话表项;
若所有简化会话表项对应的当前状态均为正常状态,则将所述待转发报文的会话表项建立到所述通用会话哈希链表对应的通用会话表中。
6.根据权利要求5所述的方法,其特征在于,所述将所述待转发报文的会话表项建立到所述通用会话哈希链表对应的通用会话表中之后,还包括:
采用定时器维护所述通用会话表中每个会话表项的生命周期;
若所述定时器监测到某会话表项的生存时间大于或等于对应的生命周期,则删除该会话表项。
7.根据权利要求1所述的方法,其特征在于,所述根据所述哈希值查询当前CPU中预先构建的简化会话数组哈希表中是否存在与所述待转发报文相匹配的简化会话表项之前,还包括:
更改网卡驱动的RSS算法中的种子信息,以使所述五元组数据一致的报文被同一CPU收到。
8.根据权利要求1所述的方法,其特征在于,所述当前CPU为多核处理器中的任意一个CPU,
所述多核处理器中的每个CPU在初始化阶段均构建一个仅供自身使用的简化会话数组哈希表;
所述多核处理器的不同的CPU不会竞争使用同一个简化会话数组哈希表。
9.一种防火墙设备的报文转发装置,其特征在于,包括:
数据获取模块,用于获取待转发报文,所述待转发报文中包括五元组数据;
哈希模块,用于计算所述五元组数据的哈希值;
匹配处理模块,用于根据所述哈希值查询当前CPU中预先构建的简化会话数组哈希表中是否存在与所述待转发报文相匹配的简化会话表项;所述简化会话表项采用(key,value)的方式存储,其中key值为五元组数据,value值为模板会话地址;
转发处理模块,用于若所述简化会话数组哈希表中存在与所述待转发报文相匹配的简化会话表项,则根据所述相匹配的简化会话表项中的模板会话地址,获取对应的会话表项模板;所述会话表项模板包括会话策略相关内容,是根据多个相同的会话策略构建的模板;
所述转发处理模块还用于根据所述会话表项模板对所述待转发报文进行转发;
其中,所述简化会话数组哈希表中存储有多个哈希桶,每个哈希桶中存储有多个简化会话表项。
10.一种防火墙设备的报文转发设备,其特征在于,包括:
存储器,处理器,以及存储在所述存储器上并可在所述处理器上运行的计算机程序,
所述处理器运行所述计算机程序时实现如权利要求1-8中任一项所述的方法。
11.一种计算机可读存储介质,其特征在于,存储有计算机程序,
所述计算机程序被处理器执行时实现如权利要求1-8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811531047.5A CN109361609B (zh) | 2018-12-14 | 2018-12-14 | 防火墙设备的报文转发方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811531047.5A CN109361609B (zh) | 2018-12-14 | 2018-12-14 | 防火墙设备的报文转发方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109361609A CN109361609A (zh) | 2019-02-19 |
CN109361609B true CN109361609B (zh) | 2021-04-20 |
Family
ID=65328774
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811531047.5A Active CN109361609B (zh) | 2018-12-14 | 2018-12-14 | 防火墙设备的报文转发方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109361609B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110062033B (zh) * | 2019-04-01 | 2022-02-18 | 东软集团股份有限公司 | 一种报文转发方法、装置及相关产品 |
CN110191109B (zh) * | 2019-05-17 | 2021-11-02 | 杭州迪普信息技术有限公司 | 一种报文采样方法及装置 |
CN110545291B (zh) * | 2019-09-29 | 2022-02-11 | 东软集团股份有限公司 | 一种攻击报文的防御方法、多核转发系统及相关产品 |
CN110932983B (zh) * | 2019-12-04 | 2022-03-18 | 锐捷网络股份有限公司 | 一种tcp负载均衡方法、装置、设备及介质 |
CN111404770B (zh) * | 2020-02-29 | 2022-11-11 | 华为技术有限公司 | 网络设备、数据处理方法、装置、系统及可读存储介质 |
CN111614689B (zh) * | 2020-05-27 | 2021-02-19 | 北京天融信网络安全技术有限公司 | 一种用于状态防火墙的报文转发方法和装置 |
CN113965367A (zh) * | 2021-10-15 | 2022-01-21 | 杭州安恒信息技术股份有限公司 | 策略对象上限控制方法、系统、计算机及存储介质 |
CN113904950B (zh) * | 2021-12-06 | 2022-02-22 | 广东睿江云计算股份有限公司 | 基于流的网络监测方法、装置、计算机设备及存储介质 |
CN114221847B (zh) * | 2021-12-10 | 2024-01-23 | 北京天融信网络安全技术有限公司 | 网络会话管理方法、装置及设备、存储介质 |
CN114338529B (zh) * | 2021-12-29 | 2024-03-08 | 杭州迪普信息技术有限公司 | 五元组规则匹配方法及装置 |
CN114244625A (zh) * | 2021-12-30 | 2022-03-25 | 山东安控信息科技有限公司 | 一种物理隔离设备的报文快速转发方法及系统 |
CN115567446A (zh) * | 2022-07-07 | 2023-01-03 | 华为技术有限公司 | 报文转发方法、装置、计算设备及卸载卡 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101572670A (zh) * | 2009-05-07 | 2009-11-04 | 成都市华为赛门铁克科技有限公司 | 一种基于流表的数据包处理方法、装置和网络系统 |
CN101674193A (zh) * | 2009-08-21 | 2010-03-17 | 曙光信息产业(北京)有限公司 | 传输控制协议连接的管理方法和装置 |
CN102769869A (zh) * | 2012-08-09 | 2012-11-07 | 北京傲天动联技术有限公司 | 无线接入点的控制和配置报文快速转发系统 |
WO2016106591A1 (zh) * | 2014-12-30 | 2016-07-07 | 华为技术有限公司 | 一种抽取数据报文的方法及装置 |
CN107612840A (zh) * | 2017-09-26 | 2018-01-19 | 东软集团股份有限公司 | 一种四层负载均衡设备的数据处理方法及装置 |
-
2018
- 2018-12-14 CN CN201811531047.5A patent/CN109361609B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101572670A (zh) * | 2009-05-07 | 2009-11-04 | 成都市华为赛门铁克科技有限公司 | 一种基于流表的数据包处理方法、装置和网络系统 |
CN101674193A (zh) * | 2009-08-21 | 2010-03-17 | 曙光信息产业(北京)有限公司 | 传输控制协议连接的管理方法和装置 |
CN102769869A (zh) * | 2012-08-09 | 2012-11-07 | 北京傲天动联技术有限公司 | 无线接入点的控制和配置报文快速转发系统 |
WO2016106591A1 (zh) * | 2014-12-30 | 2016-07-07 | 华为技术有限公司 | 一种抽取数据报文的方法及装置 |
CN107612840A (zh) * | 2017-09-26 | 2018-01-19 | 东软集团股份有限公司 | 一种四层负载均衡设备的数据处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109361609A (zh) | 2019-02-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109361609B (zh) | 防火墙设备的报文转发方法、装置、设备及存储介质 | |
US10574574B2 (en) | System and method for BGP sFlow export | |
CN110166570B (zh) | 业务会话管理方法、装置、电子设备 | |
CN109981493B (zh) | 一种用于配置虚拟机网络的方法和装置 | |
CN105993161B (zh) | 用于解析地址的元件、方法、系统和计算机可读存储设备 | |
CN114598642A (zh) | 发送网络性能参数、计算网络性能的方法和网络节点 | |
CN106921578B (zh) | 一种转发表项的生成方法和装置 | |
CN109743414B (zh) | 利用冗余连接提高地址翻译可用性的方法及计算机可读存储介质 | |
CN109525684B (zh) | 报文转发方法和装置 | |
CN113452808B (zh) | 域名解析方法、装置、设备及存储介质 | |
CN110808857B (zh) | 实现Kubernetes集群的网络互通方法、装置、设备以及存储介质 | |
CN112804223B (zh) | 一种报文处理方法和装置 | |
CN109802951B (zh) | 一种报文转发方法、设备及存储设备 | |
CN113076303A (zh) | 分布式系统中业务标识的生成方法和装置 | |
CN110012118B (zh) | 一种提供网络地址转换nat服务的方法及控制器 | |
CN109240796A (zh) | 虚拟机信息获取方法及装置 | |
CN115426312A (zh) | 一种大规模多模态网络中标识管理及优化转发方法和装置 | |
CN113132356B (zh) | Udp报文的分发方法、设备及存储介质 | |
CN106254579B (zh) | 一种动态ip代理池及其搭建及管理方法 | |
CN109450742B (zh) | 监控网络数据的方法、实体机虚拟设备及网络系统 | |
US20230041395A1 (en) | Method and Device for Processing Routing Table Entries | |
CN111553669B (zh) | 一种交易路由方法、装置及计算机可读存储介质 | |
US8972604B1 (en) | Network address retention and assignment | |
CN109767106A (zh) | 跨组织流程处理方法及装置 | |
CN114024915B (zh) | 一种流量迁移方法、装置、系统、电子设备及存储介质 |
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 |