CN115549976B - 一种控制转发分离的网络连接跟踪实现方法 - Google Patents
一种控制转发分离的网络连接跟踪实现方法 Download PDFInfo
- Publication number
- CN115549976B CN115549976B CN202211061698.9A CN202211061698A CN115549976B CN 115549976 B CN115549976 B CN 115549976B CN 202211061698 A CN202211061698 A CN 202211061698A CN 115549976 B CN115549976 B CN 115549976B
- Authority
- CN
- China
- Prior art keywords
- conntrack
- data packet
- conntrock
- message information
- namely
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 40
- 238000000926 separation method Methods 0.000 title claims abstract description 19
- 238000012545 processing Methods 0.000 claims abstract description 63
- 230000004044 response Effects 0.000 claims abstract description 34
- 230000008569 process Effects 0.000 claims description 15
- 230000001360 synchronised effect Effects 0.000 claims description 9
- 238000012217 deletion Methods 0.000 claims description 5
- 230000037430 deletion Effects 0.000 claims description 5
- 238000012986 modification Methods 0.000 claims description 4
- 230000004048 modification Effects 0.000 claims description 4
- 238000007792 addition Methods 0.000 claims description 3
- 230000002159 abnormal effect Effects 0.000 abstract description 3
- 238000012423 maintenance Methods 0.000 abstract description 3
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 82
- 239000000706 filtrate Substances 0.000 description 15
- 230000007246 mechanism Effects 0.000 description 13
- 239000000428 dust Substances 0.000 description 11
- 239000000243 solution Substances 0.000 description 5
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 4
- 229910052802 copper Inorganic materials 0.000 description 4
- 239000010949 copper Substances 0.000 description 4
- 230000008439 repair process Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 239000012535 impurity Substances 0.000 description 2
- 238000002347 injection Methods 0.000 description 2
- 239000007924 injection Substances 0.000 description 2
- 101000652292 Homo sapiens Serotonin N-acetyltransferase Proteins 0.000 description 1
- 102100030547 Serotonin N-acetyltransferase Human genes 0.000 description 1
- 238000010521 absorption reaction Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000007791 dehumidification Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 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
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1441—Countermeasures against malicious traffic
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/16—Constructional details or arrangements
- G06F1/18—Packaging or power distribution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/16—Constructional details or arrangements
- G06F1/20—Cooling means
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02A—TECHNOLOGIES FOR ADAPTATION TO CLIMATE CHANGE
- Y02A10/00—TECHNOLOGIES FOR ADAPTATION TO CLIMATE CHANGE at coastal zones; at river basins
- Y02A10/40—Controlling or monitoring, e.g. of flood or hurricane; Forecasting, e.g. risk assessment or mapping
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Power Engineering (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Hardware Design (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及数据处理领域,且公开了一种控制转发分离的网络连接跟踪实现方法,所述的网络连接跟踪实现方法包括:S1:启用Conntrack快速转发处理模块和Conntrack慢速跟踪模块,Conntrack快速转发处理模块通过多线程的方式轮询获取数据包,提取数据包的源IP地址、目标IP地址、协议号、源端口号、目标端口号的五元组报文信息,并将五元组报文信息运算成一个HASH值;S2:通过HASH值查询共享内存中的HashMap索引,获取第一个Conntrack Element,即记录初始和回应的连接跟踪记录信息,解决了传统Linux内核的Conntrack模块在多核并行处理模块上,由于锁的方式导致Contrack性能不佳的问题,有效防止由于Linux内核Conntrack table的内存溢出导致“已建立连接”的数据报文转发异常,减低维护成本,缓解网络数据包处理失效问题。
Description
技术领域
本发明涉及数据处理技术领域,具体为一种控制转发分离的网络连接跟踪实现方法及装置。
背景技术
连接跟踪(Conntrack)是用于跟踪并且记录网络的连接状态的,Linux为每一个经过网络堆栈的数据包,生成一个新的连接记录项,此后,所有属于此连接的数据包都被唯一的分配给这个连接,并标识连接的状态。连接跟踪是防火墙模块的状态检测的基础,同时也是地址转换中实现SNAT和DNAT的前提,DPDK全称Intel Data Plane Development Kit,是Intel开源的数据平面开发工具集,提供在用户空间高效的数据包处理提供库函数和驱动的支持,DPDK应用程序是运行在用户空间上利用自身提供的数据平面库来收发数据包,绕过了Linux内核协议栈对数据包处理过程,Kni(Kernel NIC Interface)内核网卡接口,是DPDK允许用户态和内核态交换报文的功能组件,Kni模拟了一个虚拟的网口,提供dpdk的应用程序和Linux内核之间通讯,用于DPDK和内核的交互,Kni接口允许报文从用户态接收后转发到内核协议栈去;传统Linux内核的连接跟踪方法,是通过Linux下的一个内核模块逐一连接跟踪Conntrack,这个模块用于网络连接跟踪,这里的连接是指通信的两个端点之间用于传输数据的连接,因此它不止可以用来跟踪TCP的连接,还可以跟踪UDP、ICMP协议保报文这样“连接”,Conntrack维护两张记录表,用于跟踪网络连接的初始与回应的两个过程。通过Netfilter的Hook机制,Conntrack模块可以检查系统中进出的每个网络数据包,在Contrack table维护,比如接收到客户端发起的一个TCP SYNC数据包,Conntrack会将数据包的源IP地址、目标IP地址、网络协议号、源端口号、目标端口号封装套一个Tuple结构体,并Tuple的HASH值,记录到初始的Contrack table中,将数据包源IP地址和目标IP地址反转、源端口号和目标端口号反转加上网络协议号记录到回应的Contrack table中,当服务端接收的客户端的TCP SYNC数据包后,作为TCP ACK回应时,Conntrack通过封装Tuple结构,并运算HASH,在回应的Contrack table中查询到相匹配的记录,标记数据包的连接状态为“等待确认”,待客户端和服务端三次握手完成握手后,标记数据包的连接状态为“已建立连接”。
然而现有技术中传统Linux内核的连接跟踪方法,存在诸多问题:
1、在多核的处理器上,Linux内核为了保障Conntrack table的在并发读写过程中的一致性,会采用锁的方式保护Conmtrack table读写操作,随着服务器的多核心数量的提升,Conntrack的处理性能不足;
2、传统Linux内核的Conntrack容易被造成新建连接泛洪攻击,大量的新建连接会导致内存溢出,并影响已有连接的查询的性能,最终网络数据包处理失效问题。
因此需要一种控制转发分离的网络连接跟踪实现方法及装置解决上述问题。
发明内容
(一)解决的技术问题
针对现有技术所存在的上述缺点,本发明提供了一种控制转发分离的网络连接跟踪实现方法及装置,能够有效地解决现有技术随着服务器的多核心数量的提升,Conntrack的处理性能不足,传统Linux内核的Conntrack容易被造成新建连接泛洪攻击,大量的新建连接会导致内存溢出,并影响已有连接的查询的性能,最终网络数据包处理失效问题,用以承载数据处理的装置,在长时间的使用过程中,容易被外部灰尘所侵入,干扰元件正常运转,无法对灰尘进行有效捕捉与隔绝的问题。
(二)技术方案
为实现以上目的,本发明通过以下技术方案予以实现,
本发明公开了一种控制转发分离的网络连接跟踪实现方法,包括:
S1:启用Conntrack快速转发处理模块和Conntrack慢速跟踪模块,Conntrack快速转发处理模块通过多线程的方式轮询获取数据包,提取数据包的源IP地址、目标IP地址、协议号、源端口号、目标端口号的五元组报文信息,并将五元组报文信息运算成一个HASH值;
S2:通过HASH值查询共享内存中的HashMap索引,获取第一个Conntrack Element,即记录初始和回应的连接跟踪记录信息,依次获取List_head,即回应连接跟踪的表头,通过List_head的下一跳数组下标,获取并遍历HASH链表,提取Conntrack pool中对应的Conntrack Element与数据包的回应方向的五元组报文信息进行匹配;
S3:如果遍历HASH链表后五元组报文信息没有匹配命中,则数据包会进入限制计时器,记录每个源IP地址进入限制计时器的次数,如果次数超过一定的阀值,就会丢弃数据包,防止网络泛洪攻击影响Linux内核的正常运行,如果次数没有超过阀值,则通过Kni接口发送至Linux内核的Conntrack慢速跟踪模块;
S4:如果遍历HASH链表后五元组报文信息匹配命中,则获取并遍历HASH链表,提取Conntrack pool中对应的Conntrack Element与数据包的初始方向的五元组报文信息进行匹配;
S5:如果匹配命中,这表示数据报文为已建立连接状态,进入转发处理;
S6:Conntrack慢速跟踪模块通过Kni网卡接收到来自Conntrack快速处理模块的未建立连接的数据包,进入Linux内核的传统Contrack模块处理,在处理过程中,会对Linux内核的Conntrack table进行更新操作;
S7:启用同步模块,同步模块通过Netlink的方式监听Linux内核的Conntracktable更新信息,并将更新信息获取更新到共享内存中;
S8:如果更新操作不是删除,则提取Conntrack table的更新信息的回应方向的五元组报文信息,计算五元组报文信息的HASH值,通过HASH值查询共享内存中的HashMap索引,获取第一个Conntrack Element,依次获取List_head,通过List_head的下一跳数组下标,提取Conntrackpool中对应的Conntrack Element与数据包的回应方向的五元组报文信息进行匹配;
S9:如果是删除操作,则提取Conntrack table的更新信息的回应方向的五元组报文信息,计算五元组报文信息的HASH值,通过HASH值查询共享内存中的HashMap索引,获取第一个Conntrack Element,依次获取List_head,通过List_head的下一跳数组下标,提取Conntrackpool中对应的Conntrack Element与数据包的回应方向的五元组报文信息进行匹配;
S10:启用Conntrack table共享内存,Conntrack table共享内存包括:Conntrackpool和HashMap索引,Conntrack pool采用数组形式,在初始化的过程中,会创建一个大容量连续的内存空间,用于存放Conntrack Element连接跟踪记录信息。
更进一步地,所述S2中的回应方向的匹配规则,包括以下步骤:
S201:将数据包的目标IP地址与Conntrack Element中的Reply_src_ip,即回应的源IP地址,进行对比;
S202:将数据包的源IP地址与Conntrack Element中的Reply_dst_ip,即回应的目标IP,进行对比;
S203:将数据包的目标端口与Conntrack Element中的Reply_src_port,即回应的源端口,进行对比;
S204:将数据包的源端口与Conntrack Element中的Reply_dst_port,即回应的目标端口,进行对比;
S205:将数据包的协议号与Conntrack Element中的Proto,即协议号,进行对比;
S206:判断Flag标记位标记为已占用,并且状态为已建立连接。
更进一步地,所述S4中初始方向的匹配规则,包括以下步骤:
S401:将数据包的源IP地址与Conntrack Element中的Reply_src_ip,即回应的源IP地址,进行对比;
S402:将数据包的目标IP地址与Conntrack Element中的Reply_dst_ip,即回应的目标IP,进行对比;
S403:将数据包的源端口与Conntrack Element中的Reply_src_port,即回应的源端口,进行对比;
S404:将数据包的目标端口与Conntrack Element中的Reply_dst_port,即回应的目标端口,进行对比;
S405:将数据包的协议号与Conntrack Element中的Proto,即协议号,进行对比;
S406:判断Flag标记位标记为已占用。
更进一步地,所述S6中的更新操作过程,包括:新增、修改或删除。
更进一步地,所述S8中的Conntrack Element与数据包的回应方向的五元组报文信息进行匹配的结果,包括:S801:如果匹配不命中,表示新增操作,在共享内存的Conntrack pool获取一个标记位为未占用的Conntrack Element,将标记位记录为已占用,将Conntrack table的更新信息写入到Conntrack Element,并将计算Conntrack Element的回应方向的五元组报文信息的HASH值以及数据下标,加入到共享内存的HashMap索引中;S802:如果匹配命中,表示修改操作,根据Conntrack table的更新信息修改ConntrackElement。
更进一步地,所述S9中Conntrack Element与数据包的回应方向的五元组报文信息进行匹配的结果,包括:S901:如果匹配命中,修改Conntrack Element的Flag标记位为未占用;S902:如果匹配未命中,不进行处理。
(三)有益效果
采用本发明提供的技术方案,与已知的公有技术相比,具有如下有益效果,
1、本发明通过利用DPDK多线程高效的报文处理能力,提升传统Linux Conntrack连接跟踪状态的数据包处理性能,通过多并发无锁的共享内存设计,有效提升DPDK多线程的并发处理性能,设计只有同步模块可对Conntrack table共享内存进行写操作,并且删除Conntrack table共享内存的记录操作只是通过标记位记录为可写,不会真正删除数据,解决了传统Linux内核的Conntrack模块在多核并行处理模块上,由于锁的方式导致contrack性能不佳的问题。
2、本发明通过增加在Conntrack快速转发通道与Conntrack慢速处理通道之间加入限速计数器的措施,有效地缓解网络泛洪攻击对Linux内核的影响,利用DPDK高效处理大大提升拦截网络泛洪攻击报文的效率,由于共享内存设计在用户态,可摆脱Linux内核Conntrack table的内存限制,有效防止由于Linux内核Conntrack table的内存溢出导致“已建立连接”的数据报文转发异常,减低维护成本。
3、本发明通过Conntrack pool的方式可有效利用大页内存和CPU高效缓存机制,提升Conntrack pool的读取效率,本发明将初始和回应的Conntrack记录合并成一个Conntrack Element连接跟踪记录信息,这样做可以减少Conntrack快速转发处理模块查询次数,提升性能,缓解传统Linux内核的Conntrack模块在高并发新建连接、新建连接泛洪攻击场景下,导致内存溢出引起的网络数据包处理失效问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为一种控制转发分离的网络连接跟踪实现方法的架构示意图;
图2为一种控制转发分离的网络连接跟踪实现方法的共享内存的结构演示图;
图3为一种控制转发分离的网络连接跟踪装置的正视立体结构图;
图4为一种控制转发分离的网络连接跟踪装置的侧视立体结构图;
图5为一种控制转发分离的网络连接跟踪装置中除湿机构的爆炸立体结构图;
图6为一种控制转发分离的网络连接跟踪装置中滤除机构的爆炸立体结构图。
图中的标号分别代表,1、处理器主体;2、处理显卡;3、盖板;4、水幕形成箱;5、微型水泵;6、出水管;7、入水管;8、集水箱;9、水幕板;10、分流管;11、矩形铜管;12、注水口;13、安装壳;14、风机;15、中轴杆;16、第一套杆;17、第二套杆;18、第三套杆;19、拉杆;20、吸潮板;21、固定插块;22、扭力弹簧;23、转轴杆;24、固定架;25、出水口;26、滤液筒;27、滤板;28、螺筒。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合实施例对本发明作进一步的描述。
实施例1:本实施例的一种控制转发分离的网络连接跟踪实现方法,如图1和图2所示,包括
S1:启用Conntrack快速转发处理模块和Conntrack慢速跟踪模块,Conntrack快速转发处理模块通过多线程的方式轮询获取数据包,提取数据包的源IP地址、目标IP地址、协议号、源端口号、目标端口号的五元组报文信息,并将五元组报文信息运算成一个HASH值;
S2:通过HASH值查询共享内存中的HashMap索引,获取第一个Conntrack Element,即记录初始和回应的连接跟踪记录信息,依次获取List_head,即回应连接跟踪的表头,通过List_head的下一跳数组下标,获取并遍历HASH链表,提取Conntrack pool中对应的Conntrack Element与数据包的回应方向的五元组报文信息进行匹配;
S3:如果遍历HASH链表后五元组报文信息没有匹配命中,则数据包会进入限制计时器,记录每个源IP地址进入限制计时器的次数,如果次数超过一定的阀值,就会丢弃数据包,防止网络泛洪攻击影响Linux内核的正常运行,如果次数没有超过阀值,则通过Kni接口发送至Linux内核的Conntrack慢速跟踪模块;
S4:如果遍历HASH链表后五元组报文信息匹配命中,则获取并遍历HASH链表,提取Conntrack pool中对应的Conntrack Element与数据包的初始方向的五元组报文信息进行匹配;
S5:如果匹配命中,这表示数据报文为已建立连接状态,进入转发处理;
S6:Conntrack慢速跟踪模块通过Kni网卡接收到来自Conntrack快速处理模块的未建立连接的数据包,进入Linux内核的传统Contrack模块处理,在处理过程中,会对Linux内核的Conntrack table进行更新操作;
S7:启用同步模块,同步模块通过Netlink的方式监听Linux内核的Conntracktable更新信息,并将更新信息获取更新到共享内存中;
S8:如果更新操作不是删除,则提取Conntrack table的更新信息的回应方向的五元组报文信息,计算五元组报文信息的HASH值,通过HASH值查询共享内存中的HashMap索引,获取第一个Conntrack Element,依次获取List_head,通过List_head的下一跳数组下标,提取Conntrackpool中对应的Conntrack Element与数据包的回应方向的五元组报文信息进行匹配;
S9:如果是删除操作,则提取Conntrack table的更新信息的回应方向的五元组报文信息,计算五元组报文信息的HASH值,通过HASH值查询共享内存中的HashMap索引,获取第一个Conntrack Element,依次获取List_head,通过List_head的下一跳数组下标,提取Conntrackpool中对应的Conntrack Element与数据包的回应方向的五元组报文信息进行匹配;
S10:启用Conntrack table共享内存,Conntrack table共享内存包括:Conntrackpool和HashMap索引,Conntrack pool采用数组形式,在初始化的过程中,会创建一个大容量连续的内存空间,用于存放Conntrack Element连接跟踪记录信息。
本实施例中,步骤S6中的更新操作过程,包括:新增、修改或删除。
本实施例中,步骤S8中的Conntrack Element与数据包的回应方向的五元组报文信息进行匹配的结果,包括:
S801:如果匹配不命中,表示新增操作,在共享内存的Conntrack pool获取一个标记位为未占用的Conntrack Element,将标记位记录为已占用,将Conntrack table的更新信息写入到Conntrack Element,并将计算Conntrack Element的回应方向的五元组报文信息的HASH值以及数据下标,加入到共享内存的HashMap索引中;
S802:如果匹配命中,表示修改操作,根据Conntrack table的更新信息修改Conntrack Element。
步骤S9中Conntrack Element与数据包的回应方向的五元组报文信息进行匹配的结果,包括:
S901:如果匹配命中,修改Conntrack Element的Flag标记位为未占用;
S902:如果匹配未命中,不进行处理。
本实施例在具体实施时,利用DPDK多线程高效的报文处理能力,提升传统LinuxConntrack连接跟踪状态的数据包处理性能,通过多并发无锁的共享内存设计,有效提升DPDK多线程的并发处理性能,设计只有同步模块可对Conntrack table共享内存进行写操作,并且删除Conntrack table共享内存的记录操作只是通过标记位记录为可写,不会真正删除数据;
在Conntrack快速转发通道与Conntrack慢速处理通道之间加入限速计数器的措施,有效地缓解网络泛洪攻击对Linux内核的影响,利用DPDK高效处理大大提升拦截网络泛洪攻击报文的效率,由于共享内存设计在用户态,可摆脱Linux内核Conntrack table的内存限制;
通过Conntrack pool的方式可有效利用大页内存和CPU高效缓存机制,提升Conntrack pool的读取效率,将初始和回应的Conntrack记录合并成一个ConntrackElement连接跟踪记录信息,减少Conntrack快速转发处理模块查询次数,提升性能,缓解传统Linux内核的Conntrack模块在高并发新建连接、新建连接泛洪攻击场景下,导致内存溢出引起的网络数据包处理失效问题。
实施例2:在其他层面,本实施例还提供一种回应方向的匹配规则,步骤S2中的回应方向的匹配规则,包括以下步骤:
S201:将数据包的目标IP地址与Conntrack Element中的Reply_src_ip,即回应的源IP地址,进行对比;
S202:将数据包的源IP地址与Conntrack Element中的Reply_dst_ip,即回应的目标IP,进行对比;
S203:将数据包的目标端口与Conntrack Element中的Reply_src_port,即回应的源端口,进行对比;
S204:将数据包的源端口与Conntrack Element中的Reply_dst_port,即回应的目标端口,进行对比;
S205:将数据包的协议号与Conntrack Element中的Proto,即协议号,进行对比;
S206:判断Flag标记位标记为已占用,并且状态为已建立连接。
本实施例在具体实施时,有效防止由于Linux内核Conntrack table的内存溢出导致“已建立连接”的数据报文转发异常,减低维护成本。
实施例3:本实施例中,提供一种初始方向的匹配规则,包括以下步骤:S401:将数据包的源IP地址与Conntrack Element中的Reply_src_ip,即回应的源IP地址,进行对比;
S402:将数据包的目标IP地址与Conntrack Element中的Reply_dst_ip,即回应的目标IP,进行对比;
S403:将数据包的源端口与Conntrack Element中的Reply_src_port,即回应的源端口,进行对比;
S404:将数据包的目标端口与Conntrack Element中的Reply_dst_port,即回应的目标端口,进行对比;
S405:将数据包的协议号与Conntrack Element中的Proto,即协议号,进行对比;
S406:判断Flag标记位标记为已占用。
本实施例在具体实施时,在索引HASH链表内部所有数据后五元组报文信息匹配命中的情况下,则提供一种用以对比Conntrack Element进行初始方向的匹配方式。
实施例4:本实施例中,提供一种控制转发分离的网络连接跟踪装置,如图3和图4所示,包括处理器主体1,处理器主体1的内部安装有处理显卡2,处理显卡2作为上述网络连接跟踪方法的实施载体,处理器主体1的正面铰接有盖板3,处理器主体1的右端连通有水幕形成箱4,处理器主体1的表面设置有水幕机构,水幕机构包括微型水泵5,且微型水泵5安装在处理器主体1的顶端,微型水泵5的出水端安装有出水管6,出水管6的底端均匀连通有分流管10,水幕形成箱4的内部设置有水幕板9,水幕板9的边缘处与水幕形成箱4的内壁固定连接,微型水泵5的入水端安装有入水管7,处理器主体1的底端套设有集水箱8,入水管7与集水箱8相连通,集水箱8的表面开设有注水口12,集水箱8的左右两侧均匀插接有矩形铜管11,矩形铜管11延伸至集水箱8的内部。
本实施例在具体实施时,启动后通过处理显卡2对缓存数据的接收与传递进行处理,当处理显卡2以及处理器主体1内部的相关部件在保持运转时,提前通过注水口12为集水箱8中注入清水,然后用户可启动微型水泵5与风机14,此过程中,微型水泵5将集水箱8中的水通过入水管7输送至出水管6,并通过诸多分流管10分流洒至水幕板9表面,并通过水幕板9的斜面处缓速流下,并在水幕形成箱4内形成水幕,当风机14启动时,将处理器主体1内部相关元件的热风及灰尘吹出,使其与水幕接触,水幕流下的水进入集水箱8中,通过矩形铜管11进行散热,该装置在加速空气流通的同时,通过水幕对热量吸收,并对来自内部与外部的灰尘进行吸附与阻隔,防止其进入处理器主体1内部,腐蚀处理显卡2以及相关元件,并且防止灰尘再度进入处理器主体1外部,防止其再度在外部循环。
实施例5:本实施例中,提供一种除湿机构,如图4和图5所示,处理器主体1的内部设置有除湿机构,除湿机构包括安装壳13,安装壳13与处理器主体1的左右相连通,安装壳13的内部安装有风机14,水幕形成箱4的内部固定连接有固定架24,固定架24的内部转动连接有转轴杆23,转轴杆23的表面固定连接有吸潮板20,风机14中心轴的右端固定连接有中轴杆15,中轴杆15的表面铰接有第一套杆16,第一套杆16的内部滑动连接有第二套杆17,第二套杆17的内部滑动连接有第三套杆18,第三套杆18的右端固定连接有固定插块21,固定插块21插设在转轴杆23的内部,转轴杆23的顶端插设有拉杆19,拉杆19的底端延伸至固定插块21的内部,拉杆19的表面套设有扭力弹簧22,扭力弹簧22的一端与拉杆19的表面固定连接,拉杆19的另一端与转轴杆23的表面固定连接。
本实施例在具体实施时,当风机14处于运转状态时,通过中轴杆15及其相关部件的传动下,使得转轴杆23带动吸潮板20进行旋转,使得吸潮板20在转动过程中,将水幕所散发的水汽进行捕捉,防止其侵入处理器主体1内部,当用户需要维修或者更换处理器主体1内部相关配件时,用户可开启盖板3,再拉动拉杆19,使得拉杆19带动扭力弹簧22进行拉伸,并移出固定插块21中,然后用户可将固定插块21拉出转轴杆23,将第三套杆18收入第二套杆17,将第二套杆17收入第一套杆16,将第一套杆16转动使其在中轴杆15上垂下,然后用户可对处理器主体1内部部件的使用状态进行查看与分辨,并进行相应的维修与更换。
实施例6:本实施例中,提供一种滤渣机构,如图4和图6所示,水幕形成箱4与集水箱8通过滤渣机构相连接,滤渣机构包括出水口25,出水口25与水幕形成箱4的底端相连通,出水口25底端设置有滤液筒26,滤液筒26的内部设置有滤板27,滤板27的边缘处与滤液筒26的内壁固定连接,滤液筒26的底端通过螺纹转动连接有螺筒28,螺筒28的底端与集水箱8的顶端相连通。
本实施例在具体实施时,来自分流管10中喷下的水幕,在水幕形成箱4中通过出水口25流入滤液筒26中,由滤板27对水流中的灰尘等杂质进行过滤,最终通过螺筒28回流至集水箱8内部,当用户需要清洁滤板27与滤液筒26时,用户可转动滤液筒26,使其在螺筒28上转动,当滤液筒26转离螺筒28后,用户可将滤液筒26取下,对其内部及滤板27进行清洁。
综上,本发明利用DPDK多线程高效的报文处理能力,提升传统Linux Conntrack连接跟踪状态的数据包处理性能,通过多并发无锁的共享内存设计,有效提升DPDK多线程的并发处理性能,设计只有同步模块可对Conntrack table共享内存进行写操作,并且删除Conntrack table共享内存的记录操作只是通过标记位记录为可写,不会真正删除数据,解决了传统Linux内核的Conntrack模块在多核并行处理模块上,由于锁的方式导致contrack性能不佳的问题;通过在Conntrack快速转发通道与Conntrack慢速处理通道之间加入限速计数器的,有效地缓解网络泛洪攻击对Linux内核的影响,利用DPDK高效处理大大提升拦截网络泛洪攻击报文的效率,由于共享内存设计在用户态,可摆脱Linux内核Conntracktable的内存限制;通过Conntrack pool的方式可有效利用大页内存和CPU高效缓存机制,提升Conntrack pool的读取效率,将初始和回应的Conntrack记录合并成一个Conntrackelement连接跟踪记录信息,这样做可以减少Conntrack快速转发处理模块查询次数,提升性能,缓解传统Linux内核的Conntrack模块在高并发新建连接、新建连接泛洪攻击场景下,导致内存溢出引起的网络数据包处理失效问题;在启动后通过处理显卡2对缓存数据的接收与传递进行处理,当处理显卡2以及处理器主体1内部的相关部件在保持运转时,提前通过注水口12为集水箱8中注入清水,然后用户可启动微型水泵5与风机14,此过程中,微型水泵5将集水箱8中的水通过入水管7输送至出水管6,并通过诸多分流管10分流洒至水幕板9表面,并通过水幕板9的斜面处缓速流下,并在水幕形成箱4内形成水幕,当风机14启动时,将处理器主体1内部相关元件的热风及灰尘吹出,使其与水幕接触,水幕流下的水进入集水箱8中,通过矩形铜管11进行散热,该装置在加速空气流通的同时,通过水幕对热量吸收,并对来自内部与外部的灰尘进行吸附与阻隔,防止其进入处理器主体1内部,腐蚀处理显卡2以及相关元件,并且防止灰尘再度进入处理器主体1外部,防止其再度在外部循环;当风机14处于运转状态时,通过中轴杆15及其相关部件的传动下,使得转轴杆23带动吸潮板20进行旋转,使得吸潮板20在转动过程中,将水幕所散发的水汽进行捕捉,防止其侵入处理器主体1内部,当用户需要维修或者更换处理器主体1内部相关配件时,用户可开启盖板3,再拉动拉杆19,使得拉杆19带动扭力弹簧22进行拉伸,并移出固定插块21中,然后用户可将固定插块21拉出转轴杆23,将第三套杆18收入第二套杆17,将第二套杆17收入第一套杆16,将第一套杆16转动使其在中轴杆15上垂下,然后用户可对处理器主体1内部部件的使用状态进行查看与分辨,并进行相应的维修与更换;来自分流管10中喷下的水幕,在水幕形成箱4中通过出水口25流入滤液筒26中,由滤板27对水流中的灰尘等杂质进行过滤,最终通过螺筒28回流至集水箱8内部,当用户需要清洁滤板27与滤液筒26时,用户可转动滤液筒26,使其在螺筒28上转动,当滤液筒26转离螺筒28后,用户可将滤液筒26取下,对其内部及滤板27进行清洁。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不会使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (4)
1.一种控制转发分离的网络连接跟踪实现方法,其特征在于,包括:
S1:启用Conntrack快速转发处理模块和Conntrack慢速跟踪模块,Conntrack快速转发处理模块通过多线程的方式轮询获取数据包,提取数据包的源IP地址、目标IP地址、协议号、源端口号、目标端口号的五元组报文信息,并将五元组报文信息运算成一个HASH值;
S2:通过HASH值查询共享内存中的HashMap索引,获取第一个Conntrack Element,即记录初始和回应的连接跟踪记录信息,依次获取List_head,即回应连接跟踪的表头,通过List_head的下一跳数组下标,获取并遍历HASH链表,提取Conntrack pool中对应的Conntrack Element与数据包的回应方向的五元组报文信息进行匹配;
S3:如果遍历HASH链表后五元组报文信息没有匹配命中,则数据包会进入限制计时器,记录每个源IP地址进入限制计时器的次数,如果次数超过一定的阀值,就会丢弃数据包,防止网络泛洪攻击影响Linux内核的正常运行,如果次数没有超过阀值,则通过KNI接口将数据包发送至Linux内核的Conntrack慢速跟踪模块;
S4:如果遍历HASH链表后五元组报文信息匹配命中,则获取并遍历HASH链表,提取Conntrack pool中对应的Conntrack Element与数据包的初始方向的五元组报文信息进行匹配;
S5:如果匹配命中,这表示数据报文为已建立连接状态,进入转发处理;
S6:Conntrack慢速跟踪模块通过KNI网卡接收到来自Conntrack快速处理模块的未建立连接的数据包,进入Linux内核的传统Contrack模块处理,在处理过程中,会对Linux内核的Conntrack table进行更新操作;
S7:启用同步模块,同步模块通过Netlink的方式监听Linux内核的Conntrack table更新信息,并将更新信息获取更新到共享内存中;
S8:如果更新操作不是删除,则提取Conntrack table的更新信息的回应方向的五元组报文信息,计算五元组报文信息的HASH值,通过HASH值查询共享内存中的HashMap索引,获取第一个Conntrack Element,依次获取List_head,通过List_head的下一跳数组下标,获取并遍历HASH链表,提取Conntrack pool中对应的Conntrack Element与数据包的回应方向的五元组报文信息进行匹配;
S9:如果更新操作是删除操作,则提取Conntrack table的更新信息的回应方向的五元组报文信息,计算五元组报文信息的HASH值,通过HASH值查询共享内存中的HashMap索引,获取第一个Conntrack Element,依次获取List_head,通过List_head的下一跳数组下标,获取并遍历HASH链表,提取Conntrack pool中对应的Conntrack Element与数据包的回应方向的五元组报文信息进行匹配;
所述S8中的Conntrack Element与数据包的回应方向的五元组报文信息进行匹配的结果,包括:S801:如果匹配不命中,表示新增操作,在共享内存的Conntrack pool获取一个标记位为未占用的Conntrack Element,将标记位记录为已占用,将Conntrack table的更新信息写入到Conntrack Element,并将计算Conntrack Element的回应方向的五元组报文信息的HASH值以及数据下标,加入到共享内存的HashMap索引中;S802:如果匹配命中,表示修改操作,根据Conntrack table的更新信息修改Conntrack Element;
所述S9中Conntrack Element与数据包的回应方向的五元组报文信息进行匹配的结果,包括:S901:如果匹配命中,修改Conntrack Element的Flag标记位为未占用;S902:如果匹配未命中,不进行处理。
2.根据权利要求1所述的一种控制转发分离的网络连接跟踪实现方法,其特征在于,所述S2中的回应方向的匹配规则,包括以下步骤:
S201:将数据包的目标IP地址与Conntrack Element中的Reply_src_ip,即回应的源IP地址,进行对比;
S202:将数据包的源IP地址与Conntrack Element中的Reply_dst_ip,即回应的目标IP,进行对比;
S203:将数据包的目标端口与Conntrack Element中的Reply_src_port,即回应的源端口,进行对比;
S204:将数据包的源端口与Conntrack Element中的Reply_dst_port,即回应的目标端口,进行对比;
S205:将数据包的协议号与Conntrack Element中的Proto,即协议号,进行对比;
S206:判断Flag标记位标记为已占用,并且状态为已建立连接。
3.根据权利要求1所述的一种控制转发分离的网络连接跟踪实现方法,其特征在于,所述S4中初始方向的匹配规则,包括以下步骤:
S401:将数据包的源IP地址与Conntrack Element中的Reply_src_ip,即回应的源IP地址,进行对比;
S402:将数据包的目标IP地址与Conntrack Element中的Reply_dst_ip,即回应的目标IP,进行对比;
S403:将数据包的源端口与Conntrack Element中的Reply_src_port,即回应的源端口,进行对比;
S404:将数据包的目标端口与Conntrack Element中的Reply_dst_port,即回应的目标端口,进行对比;
S405:将数据包的协议号与Conntrack Element中的Proto,即协议号,进行对比;
S406:判断Flag标记位标记为已占用。
4.根据权利要求1所述的一种控制转发分离的网络连接跟踪实现方法,其特征在于,所述S6中的更新操作过程,包括:新增、修改或删除。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211061698.9A CN115549976B (zh) | 2022-10-25 | 2022-10-25 | 一种控制转发分离的网络连接跟踪实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211061698.9A CN115549976B (zh) | 2022-10-25 | 2022-10-25 | 一种控制转发分离的网络连接跟踪实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115549976A CN115549976A (zh) | 2022-12-30 |
CN115549976B true CN115549976B (zh) | 2023-10-27 |
Family
ID=84725047
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211061698.9A Active CN115549976B (zh) | 2022-10-25 | 2022-10-25 | 一种控制转发分离的网络连接跟踪实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115549976B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012151904A1 (zh) * | 2011-08-19 | 2012-11-15 | 中兴通讯股份有限公司 | 一种数据报文转发方法及装置 |
WO2012167559A1 (zh) * | 2011-06-10 | 2012-12-13 | 中兴通讯股份有限公司 | 一种快速转发数据包的方法及三层设备 |
CN108848202A (zh) * | 2018-06-21 | 2018-11-20 | Oppo(重庆)智能科技有限公司 | 电子装置、数据传输方法及相关产品 |
CN111614631A (zh) * | 2020-04-29 | 2020-09-01 | 江苏深网科技有限公司 | 一种用户态流水线架构防火墙系统 |
CN113596019A (zh) * | 2021-07-27 | 2021-11-02 | 中国南方电网有限责任公司 | 高性能网络流量数据表示和提取方法和系统 |
-
2022
- 2022-10-25 CN CN202211061698.9A patent/CN115549976B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012167559A1 (zh) * | 2011-06-10 | 2012-12-13 | 中兴通讯股份有限公司 | 一种快速转发数据包的方法及三层设备 |
WO2012151904A1 (zh) * | 2011-08-19 | 2012-11-15 | 中兴通讯股份有限公司 | 一种数据报文转发方法及装置 |
CN108848202A (zh) * | 2018-06-21 | 2018-11-20 | Oppo(重庆)智能科技有限公司 | 电子装置、数据传输方法及相关产品 |
CN111614631A (zh) * | 2020-04-29 | 2020-09-01 | 江苏深网科技有限公司 | 一种用户态流水线架构防火墙系统 |
CN113596019A (zh) * | 2021-07-27 | 2021-11-02 | 中国南方电网有限责任公司 | 高性能网络流量数据表示和提取方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN115549976A (zh) | 2022-12-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11258703B1 (en) | Data plane for learning flows, collecting metadata regarding learned flows and exporting metadata regarding learned flows | |
US7440457B2 (en) | Network-processor accelerator | |
US11831663B2 (en) | Secure networking protocol optimization via NIC hardware offloading | |
US10719463B1 (en) | Hardware handling memory write request during memory data migration | |
JP7100586B2 (ja) | ネットワークデバイスにおいて分類リソースのパーティションを提供するためのシステムおよび方法 | |
US7519707B2 (en) | Facilitating monitoring and simultaneously analyzing of network events of multiple hosts via a single network interface | |
US9684597B1 (en) | Distributed cache coherent shared memory controller integrated with a protocol offload network interface card | |
WO2016206511A1 (zh) | 一种实现nat的方法和装置 | |
KR20120078535A (ko) | Sas 확장기 접속 라우팅 기술들 | |
US9985977B2 (en) | Direct cache access for network input/output devices | |
CN112558948A (zh) | 一种海量流量下报文识别的方法和装置 | |
US20200186447A1 (en) | Packet monitoring | |
US20180089094A1 (en) | Precise invalidation of virtually tagged caches | |
CN115549976B (zh) | 一种控制转发分离的网络连接跟踪实现方法 | |
CN113067810A (zh) | 网络抓包方法、装置、设备和介质 | |
US10015100B1 (en) | Network device architecture using cache for multicast packets | |
CN112333099A (zh) | 一种本地多路径报文的选路方法、装置和存储介质 | |
US8886878B1 (en) | Counter management algorithm systems and methods for high bandwidth systems | |
US7155576B1 (en) | Pre-fetching and invalidating packet information in a cache memory | |
CN104283742A (zh) | 基于fpga的网络数据包过滤方法 | |
US10255213B1 (en) | Adapter device for large address spaces | |
US6947971B1 (en) | Ethernet packet header cache | |
US20190260676A1 (en) | Detecting stale memory addresses for a network device flow cache | |
US6058437A (en) | D.M.A. device that handles cache misses by managing an address of an area allotted via a daemon processor | |
US20190260678A1 (en) | Forwarding table entry access |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |