[发明专利]一种针对CPU cache优化的TCP流表查找算法在审
申请号: | 201711188752.5 | 申请日: | 2017-11-24 |
公开(公告)号: | CN108063727A | 公开(公告)日: | 2018-05-22 |
发明(设计)人: | 马勇;殷德军;陈昊 | 申请(专利权)人: | 无锡南理工新能源电动车科技发展有限公司 |
主分类号: | H04L12/743 | 分类号: | H04L12/743;H04L29/12;H04L29/06;H04L29/08 |
代理公司: | 北京卓特专利代理事务所(普通合伙) 11572 | 代理人: | 段宇 |
地址: | 214000 江苏省无锡市锡山区安*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 针对 cpu cache 优化 tcp 查找 算法 | ||
1.一种针对CPU cache优化的TCP流表查找算法,其特征在于:以一条cache line为整体来保存流表的信息,CPU以cache line为单位使用cache;压缩用来查找TCB的数据大小,在一条cache line中保存TCP流的信息;利用四元组和一个函数计算出一个特征值,这个特征值可以只有2个字节或1个字节,在一个bucket中,只保存这个特征值;所述的四元组为源IP地址,源端口号,目的IP地址和目的端口号。
2.根据权利要求1所述的针对CPU cache优化的TCP流表查找算法,其特征在于,所述的查找TCB的数据大小,首先计算出这个特征值,用来和bucket中的特征值比对,如果相同,再取出真正的TCB用四元组比对。
3.根据权利要求1所述的针对CPU cache优化的TCP流表查找算法,其特征在于,为了避免在bucket中保存每个TCP连接所对应的TCB的地址,将一个bucket所对应的所有TCB统一分配,bucket中只保存一个指向这个TCB组的指针;Bucket中的特征值的位置与TCB在TCB组中的位置一一对应。
4.根据权利要求1所述的针对CPU cache优化的TCP流表查找算法,其特征在于,所述的方法步骤如下:
A、报文处理模块接收当前处理报文后,提取出报文首部信息,即四元组。然后以此四元组通过一个hash函数计算出一个hash值;
B、报文处理模块根据hash值找到hash表相应位置,取出相应表项,即bucket,所述的bucket长度为cache line size的整数倍;
C、处理模块再根据四元组计算出该TCP连接的特征值,然后根据这个特征值和bucket中保存的特征值进行比对,如果发现和bucket中某个特征值一致,则根据bucket中保存的TCB组的指针和此特征值位置的序号去系统内存中取出对应TCB,转至步骤D;
D、取出TCB中保存的四元组,和报文首部的四元组对比,如果一致,即为找到对应TCB;如果不一致,转至步骤C,对比下一特征值;
F、如果在一个bucket中没有找到任何匹配的项,说明此TCP连接是一个新的TCP连接,生成对应TCB数据,加入对应的bucket和TCB组中。
5.根据权利要求4所述的针对CPU cache优化的TCP流表查找算法,其特征在于,当一个bucket已经存满了TCP连接的信息,又有新的TCP连接想添加到这个bucket中时,再分配一个bucket,串接到原先的bucket。
6.根据权利要求4所述的针对CPU cache优化的TCP流表查找算法,其特征在于,当一个bucket已经存满了TCP连接的信息,又有新的TCP连接想添加到这个bucket中时,把此TCP连接的信息用传统的流表形式保存。
7.根据权利要求4所述的针对CPU cache优化的TCP流表查找算法,其特征在于,为了让同一个TCP流的两个方向上的数据包都能对应唯一一个bucket中的唯一特征值,hash函数和特征值计算函数在选择上必须满足以下特性:
f(IP地址1,端口号1,IP地址2,端口号2)=f(IP地址2,端口号2,IP地址1,端口号1)。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于无锡南理工新能源电动车科技发展有限公司,未经无锡南理工新能源电动车科技发展有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711188752.5/1.html,转载请声明来源钻瓜专利网。