一种适合网络处理芯片存储超大规格会话的方法与流程

文档序号:30063722发布日期:2022-05-18 00:20阅读:166来源:国知局
一种适合网络处理芯片存储超大规格会话的方法与流程

1.本发明属于网络安全领域,具体涉及一种适合网络处理芯片存储超大规格会话的方法。


背景技术:

2.网络安全领域中,无论是开发防火墙还是开发dpi、ips,这些产品的背后都有一个共同的需求就是把报文有序的组织起来,还原用户在网络上通信的过程,而目前完成该需求采用的技术是创建会话,把报文按流来分类。
3.随着网络通信量的增加,需要创建的会话数量也越来越多,从几万条增加到百万条,在大型网络中,会话数量甚至增加到几千万到上亿条。在存储这些超大规格的会话时,常采用的技术是hash,由于其技术本身的特点,hash算法存在冲突,当冲突发生时有各种处理方式,如丢弃数据报文,不创建会话。可在网络安全领域中是不允许会话创建失败的,如要达到这个要求,最简单的方式就增加hash的存储空间,但是芯片对资源又是最敏感的,不能无限制增加,并且还需要同时考虑芯片对网络报文的处理速度,方案的复杂度等。因此网络处理芯片需要灵活的冲突解决方案。目前hash冲突的解决方案主要从两方面考虑,一个是容量,一个是查找速度。hash冲突链表方案是当产生hash冲突时,通过链表的方式解决,即有相同存储地址的key组成一个链表,其组织方式如图1所示。
4.n代表桶的深度,x代表链表的长度。解决冲突的方式如下。
5.·
选定hash函数为f。
6.·
计算f(key1)/n=addr1,把key1放在slot1。
7.·
计算f(key2)/n=addr1,于key1产生冲突,把key2链接在key1后面,即slot2的位置。
8.·
计算f(keyx)/n=addrx,处理冲突。
9.该方案的优点是技术简单,便于芯片实现。
10.缺点是在超大规格会话(如千万级)中,x的增长不受控制,导致链表长度增加,降低了查找效率。为了提高查找效率,也可以把链表改成红黑树,但增加了技术复杂度,不便于芯片实现。
11.一种变化的方案是固定x的值,如为8,增加n的值。该方案的优点是查找效率固定,便于芯片实现,但是缺点是浪费存储空间,在超大规格(如千万级)的会话中,芯片的资源可能满足不了n的增长需求。
12.因此现有的方案在超大规格会话下有以下缺陷。
13.·
芯片存储资源利用率低;
14.·
查找效率低;
15.·
技术复杂度高。


技术实现要素:

16.(一)要解决的技术问题
17.本发明要解决的技术问题是如何提供一种适合网络处理芯片存储超大规格会话的方法,以解决现有的的方案在超大规格会话下存在芯片存储资源利用率低;查找效率低;技术复杂度高等方面的问题。
18.(二)技术方案
19.为了解决上述技术问题,本发明提出一种适合网络处理芯片存储超大规格会话的方法,该方法包括如下步骤:
20.步骤一:获取网络数据包;
21.步骤二:提取网络数据包中的五元组,包括源ip地址、目的ip地址、源端口、目的端口和协议号,在前面加上key_hash_count形成key;
22.步骤三:选定hash函数f,根据实际的会话规格m,槽位slot数量初始化为s,桶的深度n的值为(2*m)/s,如有余数,n向上取整,设置hash次数x=1;
23.步骤四:将key的key_hash_count赋值为x,计算得到32位的hash_value=f(key);
24.步骤五:计算该key的存储地址,addr=hash_value%n,准备插入key到位置addr;
25.步骤六:遍历addr地址上的链表,即s个slot,找到空闲的slot,如果s个slot满,需再次hash,跳到步骤八;如找到,进入第七步;
26.步骤七:把相关信息存储到slot,存储会话结束;
27.步骤八:判断hash的次数x,如果x等于p,跳到步骤九,反之x累加1,跳到步骤四,继续计算hash;
28.步骤九:表明未把该数据包存储到hash表,那把该数据包存储到芯片资源中。
29.进一步地,所述步骤一还包括:判断数据包的类型,如果是分片包,重组网络报文。
30.进一步地,所述key_hash_count为4字节。
31.进一步地,所述hash函数f为crc32。
32.进一步地,所述s为8。
33.进一步地,所述p设置为4。
34.进一步地,所述hash表存储在ddr中。
35.进一步地,所述步骤九中的芯片资源为tcam。
36.进一步地,比较源、目的ip地址的大小,大的排在前面,比较源、目的端口的大小,大的排在前面,并在前面加上4字节的key_hash_count形成key。
37.进一步地,比较源、目的ip地址的大小,小的排在前面,比较源、目的端口的大小,小的排在前面,并在前面加上4字节的key_hash_count形成key。
38.(三)有益效果
39.本发明提出一种适合网络处理芯片存储超大规格会话的方法,本发明提出的技术方案利用ddr与tcam结合,使用较少的芯片资源存储大量的会话,节省了芯片成本,通过简单的多次hash运算,降低了技术难度,加快了开发周期。并且,本发明通过比较源、目的ip地址的大小,比较源、目的端口的大小,使得会话中的两个不同方向的流使用同一个key,节省了存储空间。
附图说明
40.图1为现有的hash冲突链表组织方式示意图;
41.图2为本发明的key的格式示意图;
42.图3为本发明的处理流程图。
具体实施方式
43.为使本发明的目的、内容和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
44.本发明的目的就是创建超大规格会话时解决以下问题。
45.控制存储空间,节省芯片资源。
46.保证查找效率。
47.降低技术复杂度,便于芯片实现。
48.如图3所示,本发明的技术方案中节省存储空间,保证查找效率的方法包括下列步骤:
49.步骤一:获取网络数据包,判断数据包的类型,如果是分片包,重组网络报文。
50.步骤二:提取网络数据包中的五元组,包括源ip地址、目的ip地址、源端口、目的端口和协议号,比较源、目的ip地址的大小,大的排在前面,比较源、目的端口的大小,大的排在前面,并在前面加上4字节的key_hash_count形成key。通过大小比较,使得会话中的两个不同方向的流使用同一个key,节省了存储空间。组装的key的格式如图2所示。也可以选择:比较源、目的ip地址的大小,小的排在前面,比较源、目的端口的大小,小的排在前面,并在前面加上4字节的key_hash_count形成key。
51.步骤三:选定hash函数f(如crc32),根据实际的会话规格m(如3000万会话),槽位slot初始化为s=8,桶的深度n的值为(2*m)/s,如有余数,n向上取整,设置hash次数x=1;
52.步骤四:将key的key_hash_count赋值为x,计算得到32位的hash_value=f(key)。key_hash_count为4字节。
53.步骤五:计算该key的存储地址,addr=hash_value%n(取余),准备插入key到位置addr。
54.步骤六:遍历addr地址上的链表,即8个slot,找到空闲的slot,如果8个slot满,需再次hash,跳到步骤八;如找到,进入第七步。
55.步骤七:把相关信息存储到slot,存储会话结束。
56.步骤八:判断hash的次数x,如果x等于p,跳到步骤九,反之x累加1,跳到步骤四,继续计算hash。可选将p设置为4。
57.步骤九:表明未把该数据包存储到hash表,那把该会话信息存储到芯片资源tcam中。通过前面步骤,会话经过多次hash后存储到tcam中的条数是很少的,这也节省了宝贵的tcam资源。
58.进一步地,本发明的hash表存储在ddr中。
59.本发明提出的技术方案利用ddr与tcam结合,使用较少的芯片资源存储大量的会话,节省了芯片成本,通过简单的多次hash运算,降低了技术难度,加快了开发周期。
60.以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人
员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1