CN117544708A - 一种识别udp分片包建立连接跟踪的方法 - Google Patents
一种识别udp分片包建立连接跟踪的方法 Download PDFInfo
- Publication number
- CN117544708A CN117544708A CN202311590464.8A CN202311590464A CN117544708A CN 117544708 A CN117544708 A CN 117544708A CN 202311590464 A CN202311590464 A CN 202311590464A CN 117544708 A CN117544708 A CN 117544708A
- Authority
- CN
- China
- Prior art keywords
- data packet
- packet
- connection tracking
- udp
- port number
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 35
- 239000012634 fragment Substances 0.000 claims abstract description 25
- 238000004590 computer program Methods 0.000 claims description 9
- 230000006870 function Effects 0.000 claims description 8
- 238000004891 communication Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/06—Notations for structuring of protocol data, e.g. abstract syntax notation one [ASN.1]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/163—In-band adaptation of TCP data exchange; In-band control procedures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/164—Adaptation or special uses of UDP protocol
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明特别涉及一种识别UDP分片包建立连接跟踪的方法。该识别UDP分片包建立连接跟踪的方法,截取数据包,判断是否为TCP或者UDP协议数据包,若不是则直接返回;若是则判断是否为分片数据包,若是,则判断是否为第一片分片包;若为第一片分片包,则将数据包中的identification字段和端口号保存在高速缓冲存储器cache中;若不是第一片分片包,则根据identification字段来提取端口号信息;根据数据包的五元组信息计算哈希值,判断是否存在连接跟踪记录,若存在,则引用计数加1,若不存在则建立连接跟踪;最后将数据包丢回驱动。该识别UDP分片包建立连接跟踪的方法,能够准确识别出到达的数据包是否属于同一条流上的UDP分片包,并以此来建立或者匹配正确的连接跟踪记录。
Description
技术领域
本发明涉及无线通信技术领域,特别涉及一种识别UDP分片包建立连接跟踪的方法。
背景技术
随着无线通信技术的快速发展,市场竞争也越来越激烈,为了满足用户的上网使用场景和增加产品的市场竞争力,需要使用相等的硬件资源,创造出能满足不同场景下用户能够正常使用的设备。
在数据包路由转发中必不可少的便是连接跟踪,linux为每一个经过网络堆栈的数据包都会生成一个连接记录项,后续属于此连接跟踪项的数据包都被唯一分配给这个连接。连接跟踪是防火墙、流量统计等功能的基础,有些厂商会自己在数据链路层建立一个连接跟踪表项,用来统计处理二层转发的数据。
现有的为数据包建立连接跟踪的方法是根据数据包的五元组信息(源ip、目的ip、源端口号、目的端口号、协议类型)来计算哈希key值来建立一条新的连接。但对于建立在数据链路层的连接跟踪会存在以下问题:对于一些UDP分片包的使用场景,UDP分片包除了第一个分片包,后续的分片包没有源端口号和目的端口号,通过指针偏移时取到了DATA数据部分,导致在计算哈希key值时出错,对后续的分片包都会建立新的连接跟踪记录,造成跟踪的混乱,这样对于一条流的流量统计等信息就不准确。
基于上述情况,本发明提出了一种识别UDP分片包建立连接跟踪的方法。
发明内容
本发明为了弥补现有技术的缺陷,提供了一种简单高效的识别UDP分片包建立连接跟踪的方法。
本发明是通过如下技术方案实现的:
一种识别UDP分片包建立连接跟踪的方法,其特征在于:包括以下步骤:
步骤S1,模块初始化;
步骤S2,保存连接的哈希表、debug机制和高速缓冲存储器cache的初始化;
步骤S3,在驱动收包函数处挂载本模块的入口函数,用于截取数据包;
步骤S4,判断截取的数据包是否为TCP协议数据包或者UDP协议数据包,如果不是则直接返回,将数据包丢回驱动;如果是,则进入下一步骤
步骤S5,判断数据包是否为分片数据包,如果是,则判断是否为第一片分片包;
如果是第一片分片包,则将数据包中的identification字段和端口号保存在高速缓冲存储器cache中;
若不是第一片分片包,则提取identification字段,然后读取高速缓冲存储器cache中的内容,根据identification字段来提取端口号信息;
步骤S6,根据数据包的五元组信息,源Ip、目的Ip、源端口号、目的端口号和协议类型,来计算哈希值;
步骤S7,根据计算得到的哈希值从哈希表中查找,判断是否存在连接跟踪记录,如果存在,则将连接跟踪的引用计数加1,如果没有查找到连接,则根据五元组信息和连接方向建立连接跟踪;
步骤S8,最后,将数据包丢回驱动。
所述步骤S5中,若数据包不是分片数据包,则直接根据数据包的五元组进行计算哈希值。
所述步骤S5中,如果数据包是最后一片分片包,则根据identification字段提取出端口号信息后,将高速缓冲存储器cache中保存的该条identification字段与端口号的对应关系信息进行删除。
所述步骤S5中,根据identification字段没有提取到端口号信息,则直接返回,将数据包丢回驱动。
所述步骤S5中,对截取的数据包进行分片判断时,若UDP协议数据包头flags字段中,MF标志和FO标志均为0,则该UDP协议数据包不是分片数据包;
若UDP协议数据包头flags字段中,FO标志为0,MF标志为非0,则该UDP协议数据包为第一片分片包;如果MF标志为0,FO标志为非0,则该UDP协议数据包为最后一片分片包。
所述高速缓冲存储器cache只保存1024条identification字段与端口号的对应关系记录,且每一条记录均设置有定时器,以保证截取到最后一片分片包前,对应的记录一直存在。
所述步骤S5和步骤S8中,不对数据包进行修改,在提取数据包后,对数据包中的信息进行还原,再返回给驱动处理。
一种识别UDP分片包建立连接跟踪的设备,其特征在于:包括存储器和处理器;所述存储器用于存储计算机程序,所述处理器用于执行所述计算机程序时实现上述的方法步骤。
一种可读存储介质,其特征在于:所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述的方法步骤。
本发明的有益效果是:该识别UDP分片包建立连接跟踪的方法,能够准确识别出到达的数据包是否属于同一条流上的UDP分片包,并以此来建立或者匹配正确的连接跟踪记录。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
附图1为本发明识别UDP分片包建立连接跟踪的方法示意图。
具体实施方式
为了使本技术领域的人员更好的理解本发明中的技术方案,下面将结合本发明实施例,对本发明实施例中的技术方案进行清楚,完整的描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
传统建立连接跟踪的方法是根据数据包的五元组来进行建立,但此方法不适用于UDP(User Datagram Protocol,用户数据报协议)的分片包,原因是UDP协议数据包除了首片之后的其他分片都不带有端口号。
该识别UDP分片包建立连接跟踪的方法,包括以下步骤:
步骤S1,模块初始化;
步骤S2,保存连接的哈希表、debug(调试器)机制和高速缓冲存储器cache的初始化;
步骤S3,在驱动收包函数处挂载本模块的入口函数,用于截取数据包;
步骤S4,判断截取的数据包是否为TCP(Transmission Control Protocol,传输控制协议)协议数据包或者UDP协议数据包,如果不是则直接返回,将数据包丢回驱动;如果是,则进入下一步骤
步骤S5,判断数据包是否为分片数据包,如果是,则判断是否为第一片分片包;
如果是第一片分片包,则将数据包中的identification字段和端口号保存在高速缓冲存储器cache中;
若不是第一片分片包,则提取identification字段,然后读取高速缓冲存储器cache中的内容,根据identification字段来提取端口号信息;
步骤S6,根据数据包的五元组信息,源Ip、目的Ip、源端口号、目的端口号和协议类型,来计算哈希值;
步骤S7,根据计算得到的哈希值从哈希表中查找,判断是否存在连接跟踪记录,如果存在,则将连接跟踪的引用计数加1,如果没有查找到连接,则根据五元组信息和连接方向建立连接跟踪;
步骤S8,最后,将数据包丢回驱动。
所述步骤S5中,若数据包不是分片数据包,则直接根据数据包的五元组进行计算哈希值。
所述步骤S5中,如果数据包是最后一片分片包,则根据identification字段提取出端口号信息后,将高速缓冲存储器cache中保存的该条identification字段与端口号的对应关系信息进行删除。
所述步骤S5中,根据identification字段没有提取到端口号信息,则直接返回,将数据包丢回驱动。
所述步骤S5中,对截取的数据包进行分片判断时,若UDP协议数据包头flags字段中,MF标志(是否会有分片包)和FO标志(片偏移量标志)均为0,则该UDP协议数据包不是分片数据包;
若UDP协议数据包头flags字段中,FO标志为0,MF标志为非0,则该UDP协议数据包为第一片分片包;如果MF标志为0,FO标志为非0,则该UDP协议数据包为最后一片分片包。
在对identification字段和端口号的对应关系保存中,采用高速缓冲存储器cache的方式实现。最后一片分片包可能会由于网络阻塞、丢包等原因未能到达此模块。为了节省内存,同时防止最后一片分片包到达前,对应的记录已被删除,导致根据identification字段提取不到端口号信息。所述高速缓冲存储器cache只保存1024条identification字段与端口号的对应关系记录,且每一条记录均设置有定时器,以保证截取到最后一片分片包前,对应的记录一直存在。
所述步骤S5和步骤S8中,不对数据包进行修改,在提取数据包后,对数据包中的信息进行还原,再返回给驱动处理。
当建立和匹配上准确的连接跟踪记录后,可以对其加入用户自己想要的功能:如进行获取此连接跟踪的流量统计,进行二层防火墙相关操作等。
该识别UDP分片包建立连接跟踪的设备,包括存储器和处理器;所述存储器用于存储计算机程序,所述处理器用于执行所述计算机程序时实现上述的方法步骤。
该可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述的方法步骤。
以上所述的实施例,只是本发明具体实施方式的一种,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。
Claims (9)
1.一种识别UDP分片包建立连接跟踪的方法,其特征在于:包括以下步骤:
步骤S1,模块初始化;
步骤S2,保存连接的哈希表、debug机制和高速缓冲存储器cache的初始化;
步骤S3,在驱动收包函数处挂载本模块的入口函数,用于截取数据包;
步骤S4,判断截取的数据包是否为TCP协议数据包或者UDP协议数据包,如果不是则直接返回,将数据包丢回驱动;如果是,则进入下一步骤
步骤S5,判断数据包是否为分片数据包,如果是,则判断是否为第一片分片包;
如果是第一片分片包,则将数据包中的identification字段和端口号保存在高速缓冲存储器cache中;
若不是第一片分片包,则提取identification字段,然后读取高速缓冲存储器cache中的内容,根据identification字段来提取端口号信息;
步骤S6,根据数据包的五元组信息,源Ip、目的Ip、源端口号、目的端口号和协议类型,来计算哈希值;
步骤S7,根据计算得到的哈希值从哈希表中查找,判断是否存在连接跟踪记录,如果存在,则将连接跟踪的引用计数加1,如果没有查找到连接,则根据五元组信息和连接方向建立连接跟踪;
步骤S8,最后,将数据包丢回驱动。
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协议数据包不是分片数据包;
若UDP协议数据包头flags字段中,FO标志为0,MF标志为非0,则该UDP协议数据包为第一片分片包;如果MF标志为0,FO标志为非0,则该UDP协议数据包为最后一片分片包。
6.根据权利要求1或3所述的识别UDP分片包建立连接跟踪的方法,其特征在于:所述高速缓冲存储器cache只保存1024条identification字段与端口号的对应关系记录,且每一条记录均设置有定时器,以保证截取到最后一片分片包前,对应的记录一直存在。
7.根据权利要求1或4所述的识别UDP分片包建立连接跟踪的方法,其特征在于:所述步骤S5和步骤S8中,不对数据包进行修改,在提取数据包后,对数据包中的信息进行还原,再返回给驱动处理。
8.一种识别UDP分片包建立连接跟踪的设备,其特征在于:包括存储器和处理器;所述存储器用于存储计算机程序,所述处理器用于执行所述计算机程序时实现如权利要求1至7任意一项所述的方法步骤。
9.一种可读存储介质,其特征在于:所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任意一项所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311590464.8A CN117544708A (zh) | 2023-11-27 | 2023-11-27 | 一种识别udp分片包建立连接跟踪的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311590464.8A CN117544708A (zh) | 2023-11-27 | 2023-11-27 | 一种识别udp分片包建立连接跟踪的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117544708A true CN117544708A (zh) | 2024-02-09 |
Family
ID=89791542
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311590464.8A Pending CN117544708A (zh) | 2023-11-27 | 2023-11-27 | 一种识别udp分片包建立连接跟踪的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117544708A (zh) |
-
2023
- 2023-11-27 CN CN202311590464.8A patent/CN117544708A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7738465B2 (en) | Packet forwarding device equipped with statistics collection device and statistics collection method | |
US9065767B2 (en) | System and method for reducing netflow traffic in a network environment | |
US10771374B2 (en) | Delay measurement method and device | |
JP4924503B2 (ja) | 輻輳検出方法、輻輳検出装置及び輻輳検出プログラム | |
CN110932934B (zh) | 一种网络丢包的检测方法和装置 | |
CN111585834B (zh) | 一种网络信息的存储方法和装置 | |
US20040148417A1 (en) | Method and system for distinguishing higher layer protocols of the internet traffic | |
WO2021088439A1 (zh) | 一种监控对等体的运行状态的方法、装置及存储介质 | |
CN117061394A (zh) | 基于eBPF的容器网络TCP连接时延监测方法和装置 | |
WO2005036834A1 (ja) | 統計情報採取方法及び装置 | |
CN113765728A (zh) | 网络探测方法、装置、设备及存储介质 | |
US11770360B1 (en) | Correlating protocol data units transiting networks with differing addressing schemes | |
CN117544708A (zh) | 一种识别udp分片包建立连接跟踪的方法 | |
CN116319448A (zh) | 丢包诊断方法、装置、电子设备及计算机可读存储介质 | |
CN114285769B (zh) | 共享上网检测方法、装置、设备及存储介质 | |
CN111835641A (zh) | 故障检测方法、服务器以及采集设备 | |
CN114697160B (zh) | 一种隧道报文的处理方法和装置 | |
US10917502B2 (en) | Method for using metadata in internet protocol packets | |
CA3186107A1 (en) | Method, apparatus, system, device, and storage medium for implementing terminal verification | |
US6847996B2 (en) | Method for managing an open computer system | |
CN114760166B (zh) | 一种隧道报文的处理方法和装置 | |
WO2024031972A1 (zh) | 重复数据的识别方法、***、装置、存储介质及产品 | |
WO2023093227A1 (zh) | 信息的收集方法、装置、存储介质及电子装置 | |
CN114513398B (zh) | 网络设备告警处理方法、装置、设备及存储介质 | |
Partridge et al. | HEMS variable definitions |
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 |