本发明涉及无线通信,特别涉及一种识别udp分片包建立连接跟踪的方法。
背景技术:
1、随着无线通信技术的快速发展,市场竞争也越来越激烈,为了满足用户的上网使用场景和增加产品的市场竞争力,需要使用相等的硬件资源,创造出能满足不同场景下用户能够正常使用的设备。
2、在数据包路由转发中必不可少的便是连接跟踪,linux为每一个经过网络堆栈的数据包都会生成一个连接记录项,后续属于此连接跟踪项的数据包都被唯一分配给这个连接。连接跟踪是防火墙、流量统计等功能的基础,有些厂商会自己在数据链路层建立一个连接跟踪表项,用来统计处理二层转发的数据。
3、现有的为数据包建立连接跟踪的方法是根据数据包的五元组信息(源ip、目的ip、源端口号、目的端口号、协议类型)来计算哈希key值来建立一条新的连接。但对于建立在数据链路层的连接跟踪会存在以下问题:对于一些udp分片包的使用场景,udp分片包除了第一个分片包,后续的分片包没有源端口号和目的端口号,通过指针偏移时取到了data数据部分,导致在计算哈希key值时出错,对后续的分片包都会建立新的连接跟踪记录,造成跟踪的混乱,这样对于一条流的流量统计等信息就不准确。
4、基于上述情况,本发明提出了一种识别udp分片包建立连接跟踪的方法。
技术实现思路
1、本发明为了弥补现有技术的缺陷,提供了一种简单高效的识别udp分片包建立连接跟踪的方法。
2、本发明是通过如下技术方案实现的:
3、一种识别udp分片包建立连接跟踪的方法,其特征在于:包括以下步骤:
4、步骤s1,模块初始化;
5、步骤s2,保存连接的哈希表、debug机制和高速缓冲存储器cache的初始化;
6、步骤s3,在驱动收包函数处挂载本模块的入口函数,用于截取数据包;
7、步骤s4,判断截取的数据包是否为tcp协议数据包或者udp协议数据包,如果不是则直接返回,将数据包丢回驱动;如果是,则进入下一步骤
8、步骤s5,判断数据包是否为分片数据包,如果是,则判断是否为第一片分片包;
9、如果是第一片分片包,则将数据包中的identification字段和端口号保存在高速缓冲存储器cache中;
10、若不是第一片分片包,则提取identification字段,然后读取高速缓冲存储器cache中的内容,根据identification字段来提取端口号信息;
11、步骤s6,根据数据包的五元组信息,源ip、目的ip、源端口号、目的端口号和协议类型,来计算哈希值;
12、步骤s7,根据计算得到的哈希值从哈希表中查找,判断是否存在连接跟踪记录,如果存在,则将连接跟踪的引用计数加1,如果没有查找到连接,则根据五元组信息和连接方向建立连接跟踪;
13、步骤s8,最后,将数据包丢回驱动。
14、所述步骤s5中,若数据包不是分片数据包,则直接根据数据包的五元组进行计算哈希值。
15、所述步骤s5中,如果数据包是最后一片分片包,则根据identification字段提取出端口号信息后,将高速缓冲存储器cache中保存的该条identification字段与端口号的对应关系信息进行删除。
16、所述步骤s5中,根据identification字段没有提取到端口号信息,则直接返回,将数据包丢回驱动。
17、所述步骤s5中,对截取的数据包进行分片判断时,若udp协议数据包头flags字段中,mf标志和fo标志均为0,则该udp协议数据包不是分片数据包;
18、若udp协议数据包头flags字段中,fo标志为0,mf标志为非0,则该udp协议数据包为第一片分片包;如果mf标志为0,fo标志为非0,则该udp协议数据包为最后一片分片包。
19、所述高速缓冲存储器cache只保存1024条identification字段与端口号的对应关系记录,且每一条记录均设置有定时器,以保证截取到最后一片分片包前,对应的记录一直存在。
20、所述步骤s5和步骤s8中,不对数据包进行修改,在提取数据包后,对数据包中的信息进行还原,再返回给驱动处理。
21、一种识别udp分片包建立连接跟踪的设备,其特征在于:包括存储器和处理器;所述存储器用于存储计算机程序,所述处理器用于执行所述计算机程序时实现上述的方法步骤。
22、一种可读存储介质,其特征在于:所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述的方法步骤。
23、本发明的有益效果是:该识别udp分片包建立连接跟踪的方法,能够准确识别出到达的数据包是否属于同一条流上的udp分片包,并以此来建立或者匹配正确的连接跟踪记录。
1.一种识别udp分片包建立连接跟踪的方法,其特征在于:包括以下步骤:
2.根据权利要求1所述的识别udp分片包建立连接跟踪的方法,其特征在于:所述步骤s5中,若数据包不是分片数据包,则直接根据数据包的五元组进行计算哈希值。
3.根据权利要求1所述的识别udp分片包建立连接跟踪的方法,其特征在于:所述步骤s5中,如果数据包是最后一片分片包,则根据identification字段提取出端口号信息后,将高速缓冲存储器cache中保存的该条identification字段与端口号的对应关系信息进行删除。
4.根据权利要求1所述的识别udp分片包建立连接跟踪的方法,其特征在于:所述步骤s5中,根据identification字段没有提取到端口号信息,则直接返回,将数据包丢回驱动。
5.根据权利要求1~3中任意一项所述的识别udp分片包建立连接跟踪的方法,其特征在于:所述步骤s5中,对截取的数据包进行分片判断时,若udp协议数据包头flags字段中,mf标志和fo标志均为0,则该udp协议数据包不是分片数据包;
6.根据权利要求1或3所述的识别udp分片包建立连接跟踪的方法,其特征在于:所述高速缓冲存储器cache只保存1024条identification字段与端口号的对应关系记录,且每一条记录均设置有定时器,以保证截取到最后一片分片包前,对应的记录一直存在。
7.根据权利要求1或4所述的识别udp分片包建立连接跟踪的方法,其特征在于:所述步骤s5和步骤s8中,不对数据包进行修改,在提取数据包后,对数据包中的信息进行还原,再返回给驱动处理。
8.一种识别udp分片包建立连接跟踪的设备,其特征在于:包括存储器和处理器;所述存储器用于存储计算机程序,所述处理器用于执行所述计算机程序时实现如权利要求1至7任意一项所述的方法步骤。
9.一种可读存储介质,其特征在于:所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任意一项所述的方法步骤。