一种IPsec大容量规则双散列匹配装置和方法与流程
- 国知局
- 2024-08-02 14:43:59
本发明属于网络安全领域,具体涉及一种ipsec大容量规则双散列匹配装置和方法。
背景技术:
1、随着互联网的迅速发展,网络安全问题愈发突出,网络设备之间传递的明文信息可能遭受窃取和篡改。通常采用加密技术(如互联网安全协议(internetprotocolsecurity,ipsec))实现网络报文的机密性与完整性保护。在对网络报文进行加密处理前,需要依据报文的五元组信息确定安全策略(securitypolicy,sp)。安全策略决定了对网络数据包采用何种保护,并以何种方式提供保护。确定安全策略后,需要依据对应的安全联盟(security association,sa)中的密钥信息,对网络报文进行相应保护。
2、现有网络密码设备的ipsec加密流程通常是对流出设备的网络报文五元组规则进行安全策略数据库(securitypolicy database,spd)的匹配,命中安全策略后,再次利用五元组规则对安全联盟数据库(securityassociation database,sad)进行匹配。匹配到对应的sa后,采用sa中的密钥信息对网络报文进行加密封装。对于安全策略数据库及安全联盟数据库的查找,一般采用哈希表进行匹配。哈希表可能导致匹配冲突问题,即不同的匹配规则可能得到相同的哈希表项。当遇到匹配冲突时,通常采用链表的形式存储策略信息。
3、对于背景技术中所述的方案,利用散列函数计算五元组数据得到索引下标,将安全策略组织为哈希表的形式,哈希表的表项存储对应的安全策略,查询时通过对五元组数据进行相同的散列从而得到对应哈希表项存储的安全策略。当在大容量规则下,遇到哈希冲突的可能性很高,即不同五元组数据索引得到了哈希表的同一个表项,通常采用链表的数据结构进行处理,将安全策略信息以单链表的形式存储在对应的哈希表项内。这导致在依据五元组数据进行查找匹配操作时,需要遍历整个链表进行安全策略的查询。链表中节点内存分布不连续,相邻节点处于同一cache line的概率很小,因此会产生较多的cpucache miss,降低查询效率。同时,采用链表遍历方式会产生较高的复杂度,在大容量规则下,查询通常会导致较高的处理时间,影响ipsec网络报文处理性能。
技术实现思路
1、(一)要解决的技术问题
2、本发明要解决的技术问题是如何提供一种ipsec大容量规则双散列匹配装置和方法,以解决现有方案中哈希表的哈希冲突问题。
3、(二)技术方案
4、为了解决上述技术问题,本发明提出一种ipsec大容量规则双散列匹配构建方法,该方法包括如下步骤:
5、s11、五元组组合模块基于已配置的加密策略,对五元组数据进行组合;
6、s12、基于所述五元组数据的组合,采用散列函数对该组合数据进行计算,得到五元组数据的第一键值,以第一键值低位为索引,构建第一哈希表;
7、s13、所述第一哈希表表项由结构体生成,表项内容包含该表项存储的sp策略数量,sp策略索引方式的标志位,以及一个指向表项数据的索引指针;
8、s13、若所述第一键值索引得到的表项数据无冲突,则表项内容中的索引指针指向五元组数据匹配的sp信息,所述sp信息即为索引得到表项内容的表项数据;该表项内容中存储的sp策略数量为1,sp策略索引方式的标志位记为直接索引;所述sp信息中包含五元组数据组合的信息,同时还包含一个指针数据,该指针数据指向与该sp信息匹配的外出方向网络报文的安全联盟信息;
9、s14、若所述第一键值索引得到的表项数据产生冲突,即该索引下表项内容中已有表项数据,则表项内容中的索引指针指向第二哈希表;所述第二哈希表即为第一键值索引得到表项内容的表项数据;所述表项内容中存储的sp策略数量为对应第二哈希表中的包含的sp信息,sp策略索引方式的标志位记为二次索引;采用散列函数对第一键值进行计算,得到该数据的第二键值,以第二键值低位为索引,构建第二哈希表;
10、s15、若所述第二键值索引得到的表项数据无冲突,则该表项内容中的索引指针指向五元组数据匹配的sp信息,所述sp信息即为第二键值索引得到表项内容的表项数据,该表项内容中存储的sp策略数量为1,sp策略索引方式的标志位记为直接索引;
11、s16、若所述第二键值索引得到的表项数据产生冲突,则将对应五元组数据匹配的sp信息,顺序放入一个额外的地址空间内;修改第二键值索引得到的表项内容,该表项内容中存储的sp策略数量为0,sp策略索引方式的标志位记为额外地址空间索引。
12、进一步地,所述s11中,考虑到ipv6报文情况,sip、dip位数都为32位;当报文为ipv4报文时,sip和dip的高位补0。
13、进一步地,所述s11中,对五元组数据进行组合包括:按照protocol[7:0]、dport[15:0]、sport[15:0]、dip[32:127]、dip[31:0]、sip[32:127]、sip[31:0]的顺序进行组合。
14、进一步地,所述s12中,以第一键值低位8bit为索引,构建第一哈希表;所述s14中,以第二键值低8bit为索引,构建第二哈希表。
15、进一步地,所述s14中,对于不同第一键值索引的表项内容,若表项数据产生冲突,其表项内容的索引指针指向不同的哈希表。
16、进一步地,所述s16中,额外的地址空间采用的数据组织方式是基于索引的数组形式而非链表,对于不同的第二键值索引下的表项数据冲突,都将冲突的数据放入到这一个地址空间内。
17、本发明还提供一种ipsec大容量规则双散列匹配查询方法,该方法包括如下步骤:
18、s21、提取待匹配的网络报文的五元组数据,按照约定的规则对五元组数据进行组合;
19、s22、对所述五元组数据的组合,采用散列函数对该组合数据进行计算,得到五元组数据的第一键值,基于第一键值的低位索引第一哈希表;
20、s23、若索引得到的表项内容结构体中,存储的策略数量为1,sp策略索引方式为直接索引,则匹配成功,表项内容中索引指针指向的表项数据为sp信息;
21、s24、若索引得到的表项内容结构体中,存储的策略数量大于1,sp策略索引方式的标志位为二次索引,则表项内容中索引指针指向第二哈希表,需要进行二次匹配;
22、s25、采用散列函数对第一键值进行计算,得到该数据的第二键值,基于第二键值的低位索引第二哈希表;
23、s26、若索引得到的表项内容结构体中,存储的策略数量为1,sp策略索引方式为直接索引,则匹配成功,表项内容中索引指针指向的表项数据为sp信息;
24、s27、若索引得到的表项内容结构体中,存储的策略数量不为1,sp策略索引方式为额外地址空间索引,则前往地址空间的首地址处顺序查找,直到匹配到正确的sp信息;
25、s28、基于匹配得到的sp信息,得到与该sp信息匹配的外出方向网络报文的安全联盟信息,完成策略匹配过程。
26、进一步地,所述s22中,基于第一键值的低8bit索引第一哈希表。
27、进一步地,所述s25中,基于第二键值的低8bit索引第二哈希表。
28、本发明还提供一种ipsec大容量规则双散列匹配装置,该装置包括五元组组合模块、散列计算模块、表项模块和匹配模块;
29、五元组组合模块,用于获取待匹配的报文或已配置的加密策略,将五元组数据组织成为固定的数据格式;
30、散列计算模块,用于将所述五元组数据基于预设的规则计算得到第一键值,当第一键值索引得到的表项数据冲突时,散列计算模块通过第一键值计算得到第二键值;
31、表项模块,用于基于第一键值低位与目标表项构建第一哈希表,对于第一哈希表的表项冲突,在冲突的表项位置处,基于第二键值与目标表项构建第二哈希表,对于第二哈希表的表项冲突,将冲突的表项数据放入一个额外的地址空间;
32、匹配模块,用于五元组数据与目标表项数据的规则匹配。
33、(三)有益效果
34、本发明提出一种ipsec大容量规则双散列匹配装置和方法,本发明通过对双散列的方法实现对安全策略的匹配。利用散列函数对待匹配的五元组进行计算得到第一键值,进而得到第一哈希表的数组下标,利用数组下标索引的方式,实现了对于安全策略的快速查找与匹配。针对大容量规则下可能出现的哈希冲突问题,在冲突表项的表项数据地址构建第二哈希表,对第一键值利用散列函数进行计算得到第二键值,进而得到第二哈希表的数组下标。通过双散列计算的方式,大大减少了在大容量规则下的哈希冲突问题。
35、对于第二哈希表仍旧出现哈希冲突的情况,建立一个额外的地址空间,用来存储存在哈希冲突的sp信息。为确保索引效率,该地址空间为一段连续的地址空间,所存储的sp信息顺序放入该地址空间内。
36、与现有技术相比,本发明提出的技术方案采用了双散列的方式实现了对spd的构建和sp策略的匹配,极大地减少了大容量规则下的哈希冲突问题。同时,针对双散列仍旧存在哈希冲突的策略,通过建立额外的地址空间来顺序存储sp策略信息。相比于采用链表方式进行存储,这种机制下所访问的地址空间连续,内存局部性好,对cpu cache友好,可提高查询效率。
本文地址:https://www.jishuxx.com/zhuanli/20240801/243792.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表