CN117997833A - 数据转发系统及其控制方法 - Google Patents

数据转发系统及其控制方法 Download PDF

Info

Publication number
CN117997833A
CN117997833A CN202410050500.XA CN202410050500A CN117997833A CN 117997833 A CN117997833 A CN 117997833A CN 202410050500 A CN202410050500 A CN 202410050500A CN 117997833 A CN117997833 A CN 117997833A
Authority
CN
China
Prior art keywords
data
forwarding
nat
fragment
message information
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
Application number
CN202410050500.XA
Other languages
English (en)
Inventor
舒文兵
贾菁珅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
WUHAN HONGXU INFORMATION TECHNOLOGY CO LTD
Original Assignee
WUHAN HONGXU INFORMATION TECHNOLOGY CO LTD
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by WUHAN HONGXU INFORMATION TECHNOLOGY CO LTD filed Critical WUHAN HONGXU INFORMATION TECHNOLOGY CO LTD
Priority to CN202410050500.XA priority Critical patent/CN117997833A/zh
Publication of CN117997833A publication Critical patent/CN117997833A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明提供一种数据转发系统及其控制方法,该系统包括:数据采集模块,用于批量接收数据包;数据预处理模块,用于对数据包进行解析得到报文信息和解析标识,并根据解析标识和多个NAT转发规则确定报文信息的转发类型;数据转发模块,用于根据转发类型、原始流链表、分片缓存流链表和NAT流链表对报文信息进行查找、关联,得到目标报文信息;数据发送模块,用于对目标报文信息进行封装得到封装后的数据包,将封装后的数据包发送至网卡发包队列,通过预设的Mbuf内存池技术实现用户空间到PCI设备地址的映射。本发明系统通过提高用户上下行数据查找与匹配算法的效率,提高单机NAT转发性能,达到降低数据转发系统建设成本的目的。

Description

数据转发系统及其控制方法
技术领域
本发明涉及数据处理技术领域,尤其涉及一种数据转发系统及其控制方法。
背景技术
网络地址转换(Network Address Translation,NAT)技术使用流量表将数据从一个外部主机地址路由到内部IP地址,借助于NAT,私有地址通过路由器发送数据时,私有地址被转换成合法的IP地址,一个局域网只需要使用少量IP地址即可实现私有地址网络内所有计算机与互联网的通信,以达到节省IP地址空间的作用。
相关技术中,传统的NAT转发技术通常从网卡套接字获得数据包,数据包需要拷贝至操作系统内核的网络协议栈,再由网络协议栈发往用户空间,数据会经过多次拷贝,降低了传输效率;同时,传统的收包方式在网卡收到数据包时,会通过产生中断的方式通知内核有数据包到达,Linux系统内核会对中断进行响应,将接收到的数据帧交给内核中的网络协议栈进行处理,通过中断的方式在低带宽低吞吐率等环境下可以满足需求,但在面对海量数据处理需求时,中断方式会引发中断风暴,内核需要不间断的处理中断请求,不利于内核对数据包的处理。
发明内容
本发明提供一种数据转发系统及其控制方法,用以解决现有技术中转发数据包时需要进行多次拷贝,降低了传输效率;而在面对海量数据处理需求时,系统内核频繁地中断响应会引发中断风暴,导致系统在数据转发过程的性能损耗严重的缺陷,提高了对海量数据的查找、关联和转发效率。
本发明提供一种数据转发系统,包括:
数据采集模块,所述数据采集模块基于预设的Mbuf内存池构建,所述数据采集模块用于实现数据平面开发套件DPDK初始加载和启动、核心绑定、跟踪以及调试功能;所述数据采集模块用于批量接收数据包;
数据预处理模块,所述数据预处理模块用于按照不同分层的协议对所述数据包进行解析,得到报文信息和解析标识,并根据所述解析标识和数据库中存储的多个NAT转发规则确定所述报文信息的转发类型;其中,所述转发类型包括上行转发和下行转发中的一项;所述解析标识数据包IP版本、IP包长、IP层标识符、分片标识、分片偏移、TTL、传输层协议类型、源IP、目的IP、源端口、目的端口、校验码和序列号中的至少一项;
数据转发模块,所述数据转发模块用于根据所述转发类型、原始流链表、分片缓存流链表、NAT流链表对所述报文信息进行查找、关联,得到目标报文信息;其中,所述原始流链表用于对IP层五元组进行关联和查找;所述分片缓存流链表用于对IP分片包进行查找和关联,并利用所述IP层标识符、所述源IP、所述目的IP和所述传输层协议类型对分片流链表节点进行新建、查找和关联;所述NAT流链表用于配置内网与外网各自对应的IP地址和端口之间的映射关系;所述IP层五元组包括所述源IP、目的IP、所述源端口、所述目的端口和所述协议类型;
数据发送模块,所述数据发送模块用于根据不同分层封装协议对所述目标报文信息进行封装,得到封装后的数据包,将所述封装后的数据包发送至网卡发包队列中,并通过预设的Mbuf内存池技术实现用户空间到PCI设备地址的映射。
根据本发明提供的数据转发系统,所述系统还包括:
网络地址NAT管理模块,所述NAT管理模块用于配置所述多个NAT转发规则,并将所述多个NAT转发规则存储至所述数据库。
根据本发明提供的数据转发系统,所述数据转发模块包括:
上行数据转发模块,所述上行数据转发模块用于在所述报文信息的转发类型为下行转发的情况下,确定所述报文信息对应的分片信息;
所述上行数据转发模块还用于在所述报文信息包括分片或者分片片首的情况下,基于所述IP层五元组进行哈希运算,并根据哈希运算结果和所述IP层五元组判断原始流节点是否存在;
所述上行数据转发模块还用于在所述原始流节点存在,且所述报文信息对应的分片信息为分片片首的情况下,依次构建分片缓存流、修改数据包的NAT信息和查找分片数据缓存流,得到所述目标报文信息;
所述上行数据转发模块还用于在所述报文信息包括后续分片,且所述分片缓存流存在的情况下,根据所述分片缓存流查找原始流,跟根据所述原始流将所述NAT流将公网转私网对应的NAT信息写入数据包。
根据本发明提供的数据转发系统,所述数据转发模块包括:
下行数据转发模块,所述下行数据转发模块用于在所述报文信息的转发类型为上行转发的情况下,确定所述报文信息对应的分片信息;
所述下行数据转发模块还用于在所述报文信息包括分片或者分片片首的情况下,基于所述IP层五元组进行哈希运算,并根据哈希运算结果和所述IP层五元组判断原始流节点是否存在;
所述下行数据转发模块还用于在所述原始流节点存在,且所述报文信息对应的分片信息为分片片首的情况下,依次构建分片缓存流并与NAT流节点关联、基于所述NAT流查找原始流和查找分片数据缓存流,得到所述目标报文信息;所述分片信息包括未分片、分片片首和后续分片中的至少一项;
所述下行数据转发模块还用于在所述报文信息包括后续分片,且在所述分片缓存流存在的情况下,根据所述分片缓存流确定所述NAT流,并根据所述NAT流查找原始流并提取公网转私网对应的NAT信息,将所述NAT信息写入数据包。
本发明还提供一种数据转发系统的控制方法,包括:
基于数据采集模块采集模块用于批量接收数据包,所述数据采集模块基于预设的Mbuf内存池构建,所述数据采集模块用于实现数据平面开发套件DPDK初始加载和启动、核心绑定、跟踪以及调试功能;
基于数据预处理模块按照不同分层的协议对所述数据包进行解析,得到报文信息和解析标识,并根据所述解析标识和数据库中存储的多个NAT转发规则确定所述报文信息的转发类型;其中,所述转发类型包括上行转发和下行转发中的一项;所述解析标识数据包IP版本、IP包长、IP层标识符、分片标识、分片偏移、TTL、传输层协议类型、源IP、目的IP、源端口、目的端口、校验码和序列号中的至少一项;
基于数据转发模块根据所述转发类型、原始流链表、分片缓存流链表、NAT流链表对所述报文信息进行查找和关联,得到目标报文信息;其中,所述原始流链表用于对IP层五元组进行关联和查找;所述分片缓存流链表用于对IP分片包进行查找和关联,并利用所述IP层标识符、所述源IP、所述目的IP和所述传输层协议类型对分片流链表节点进行新建、查找和关联;所述NAT流链表用于配置内网与外网各自对应的IP地址和端口之间的映射关系;所述IP层五元组包括所述源IP、目的IP、所述源端口、所述目的端口和所述协议类型;
基于数据发送模块根据不同分层封装协议对所述目标报文信息进行封装,得到封装后的数据包,将所述封装后的数据包发送至网卡发包队列中,并通过预设的Mbuf内存池技术实现用户空间到PCI设备地址的映射。
根据本发明提供的数据转发系统的控制方法,所述转发类型为上行转发,所述数据转发模块包括上行数据转发模块;
所述基于数据转发模块根据所述转发类型、原始流链表、分片缓存流链表、NAT流链表对所述报文信息进行查找和关联,得到目标报文信息包括:
基于所述上行数据转发模块在所述报文信息的转发类型为上行转发的情况下,确定所述报文信息对应的分片信息;
在所述报文信息包括分片或者分片片首的情况下,基于所述IP层五元组进行哈希运算,并根据哈希运算结果和所述IP层五元组判断原始流节点是否存在;
在所述原始流节点存在,且所述报文信息对应的分片信息为分片片首的情况下,依次构建分片缓存流、修改数据包的NAT信息和查找分片数据缓存流,得到所述目标报文信息;
在所述报文信息包括后续分片,且所述分片缓存流存在的情况下,根据所述分片缓存流查找原始流,跟根据所述原始流将所述NAT流将公网转私网对应的NAT信息写入数据包。
根据本发明提供的数据转发系统的控制方法,所述转发类型为下行转发,所述数据转发模块包括下行数据转发模块;
所述基于数据转发模块根据所述转发类型、原始流链表、分片缓存流链表、NAT流链表对所述报文信息进行查找和关联,得到目标报文信息还包括:
基于所述下行数据转发模块在所述报文信息的转发类型为上行转发的情况下,确定所述报文信息对应的分片信息;
在所述报文信息包括分片或者分片片首的情况下,基于所述IP层五元组进行哈希运算,并根据哈希运算结果和所述IP层五元组判断原始流节点是否存在;
在所述原始流节点存在,且所述报文信息对应的分片信息为分片片首的情况下,依次构建分片缓存流并与NAT流节点关联、基于所述NAT流查找原始流和查找分片数据缓存流,得到所述目标报文信息;所述分片信息包括未分片、分片片首和后续分片中的至少一项;
在所述报文信息包括后续分片,且在所述分片缓存流存在的情况下,根据所述分片缓存流确定所述NAT流,并根据所述NAT流查找原始流并提取公网转私网对应的NAT信息,将所述NAT信息写入数据包。
根据本发明提供的数据转发系统的控制方法,所述数据库中的多个NAT转发规则通过如下步骤得到:
基于网络地址NAT管理模块配置所述多个NAT转发规则,并将所述多个NAT转发规则存储至所述数据库。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述数据转发系统的控制方法。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述数据转发系统的控制方法。
本发明提供的数据转发系统及其控制方法,通过数据采集模块绑定CPU核心在不同的业务线程上,能够减少对业务线程的中断来提升处理性能;通过数据预处理模块按照不同分层的协议对数据包进行解析,得到报文信息和解析标识,并根据解析标识和数据库中存储的多个NAT转发规则确定报文信息的转发类型;通过数据转发模块降低统一流表结构的臃肿度,提高数据查找的精确度和效率,实现数据的快速查找和关联;通过数据发送模块根据不同分层封装协议对目标报文信息进行封装,得到封装后的数据包,将封装后的数据包发送至网卡发包队列中,并通过预设的Mbuf内存池技术实现用户空间到PCI设备地址的映射,避免网络协议栈和内核切换造成的处理时延,减少数据帧的重复拷贝来提升数据包传输效率。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的数据转发系统的结构示意图;
图2是本发明提供的数据采集模块工作流程示意图;
图3是本发明提供的数据预处理模块工作流程示意图;
图4是本发明提供的上行数据转发模块的工作流程示意图;
图5是本发明提供的下行数据转发模块的工作流程示意图;
图6是本发明提供的数据发送模块的工作流程示意图;
图7是本发明提供的网络地址NAT管理模块的工作流程示意图;
图8是本发明提供数据转发系统的控制方法的流程示意图;
图9是本发明提供的电子设备的结构示意图。
附图标记:
100:网络地址NAT管理模块;200:数据采集模块;
300:数据预处理模块;400:数据转发模块;
410:上行数据转发模块;420:下行数据转发模块;
500:数据发送模块。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合图1-图8描述本发明的数据转发系统及其控制方法。
图1是本发明提供的数据转发系统的结构示意图之一,如图1所示,该数据转发系统,包括:数据采集模块110、数据预处理模块120、数据转发模块130和数据发送模块140。
数据采集模块基于预设的Mbuf内存池构建,数据采集模块用于实现数据平面开发套件DPDK初始加载和启动、核心绑定、跟踪以及调试功能;数据采集模块用于批量接收数据包。
图2是本发明提供的数据采集模块工作流程示意图,在图2所示的实施例中,数据采集模块的工作机制包括如下步骤:
步骤201、初始化EAL(Environment Abstraction Layer,环境抽象层)。
具体的,创建DPDK运行环境,初始化环境抽象层;其中,环境抽象层提供一种通用接口,该接口为应用和库访问底层资源提供便利,利用该接口实现DPDK初始加载和启动、核心绑定、跟踪以及调试功能。
在该实施例中,数据采集模块通过调用rte_eal_init函数,能够获取(CentralProcessing Unit,中央处理器)CPU的数量、建立日志文件、查询可用网卡设备、挂载巨页内存、绑定CPU等。
步骤202、创建内存池(MEMPOOL)。
具体的,通过配置内存池参数,包括内存池大小,缓冲区大小等数据来创建内存池,用于存储和管理数据包,例如,创建用于接收网络数据包的RX内存环和用于发送网络数据包的TX内存环。
在该实施例中,通过预设的Mbuf内存池创建,实现PCI设备地址映射到用户空间,避免Linux协议栈数据包的拷贝,达到数据传输零拷贝目的,提升处理性能。
步骤203、网卡与端口初始化。
具体的,网卡与端口初始化包括初始化网卡,配置网卡参数,包括名称,队列数量,队列大小等;还包括初始化当前数据采集模块实例的所有输入端口,即绑定所有与当前实例关联的网卡接收队列;还包括初始化当前数据采集模块实例的所有输出端口,即绑定所有与当前实例关联的网卡发送队列。
步骤204、网卡批量收包。
具体的,依次循环的从各个输入端口中批量接收数据包,并将数据包转发至数据预处理模块处理,然后进入下一次循环收包。
数据预处理模块用于按照不同分层的协议对数据包进行解析,得到报文信息和解析标识,并根据解析标识和数据库中存储的多个NAT转发规则确定报文信息的转发类型;其中,转发类型包括上行转发和下行转发中的一项;解析标识数据包IP版本、IP包长、IP层标识符、分片标识、分片偏移、TTL、传输层协议类型、源IP、目的IP、源端口、目的端口、校验码和序列号中的至少一项。
在该实施例中,数据预处理模块能够对数据包进行二层、三层和四层头部数据解析,得到数据包IP版本、IP包长分片标志、分片偏移、标识符(identification)、TTL、传输层协议类型、源IP、目的IP、源端口、目的端口、校验和序列号等信息。
在该实施例中,将解析后的数据包信息存入当前包节点缓存字段中,并根据WEB后台配置的NAT转发规则,判断数据包上下行方向,依据上下行方向,将经过预处理后的数据转发至上行数据转发模块或下行数据转发模块。
比如,数据预处理模块获取的解析标识为源IP、目的IP,根据源IP和目的IP从数据库中存储的多个NAT转发规则查找对应的数据传输方向,即可确定数据转发的上下行信息。
在该实施例中,用于确定报文数据上下行信息的解析标识包括但不限于源IP、目的IP、源MAC、目的MAC和其他地址信息。
图3是本发明提供的数据预处理模块工作流程示意图,在图3所示的实施例中,数据预处理模块的工作机制包括如下步骤:
步骤301、二层协议解析。
具体的,从网卡获取数据包后,先解析数据包类型,判断是否是IP数据包。
步骤302、IP层协议解析。
具体的,判断IP头部是否合法、解析IP版本、IP包长、标识符(identification)、分片标志、分片偏移、TTL、传输层协议类型、源IP、目的IP等信息,并将解析后的数据包信息存入当前包节点缓存中。
步骤303、是否是IP分片包。
具体的,解析IP层标志位(Flags),判断是否是IP分片包;若是IP分片包,进入步骤判断上下行(步骤305)处理,否则进入步骤传输层协议解析(步骤304)处理;
步骤304、四层协议解析。
具体的,解析源端口、目的端口、校验和、序列号(Sequence Number)、确认号(Acknowledgment Number)、编码位(Flags)、校验和等。
步骤305、判断上下行。
具体的,数据预处理模块从数据库中调用根据WEB后台配置的NAT转发规则,并根据源IP或目的IP、源MAC或者目的MAC地址判断数据包上下行信息。
数据转发模块用于根据转发类型、原始流链表、分片缓存流链表、NAT流链表对报文信息进行查找、关联,得到目标报文信息;其中,原始流链表用于对IP层五元组进行关联和查找;分片缓存流链表用于对IP分片包进行查找和关联,并利用IP层标识符、源IP、目的IP和传输层协议类型对分片流链表节点进行新建、查找和关联;NAT流链表用于配置内网与外网各自对应的IP地址和端口之间的映射关系;IP层五元组包括源IP、目的IP、源端口、目的端口和协议类型。
在该实施例中,数据转发模块包括上行数据转发模块和下行数据转发模块;其中,上行数据转发模块用于转发上行方向的报文数据,下行数据转发模块用于转发下行方向的报文数据。
在该实施例中,数据转发模块与数据采集模块采用异步方式通信,模块之间的耦合度低,保证了各模块运行稳定性。
下面,分别对上行数据转发模块和下行数据转发模块的运行机制进行说明:
在该实施例中,上行数据转发模块用于在报文信息的转发类型为上行转发的情况下,确定报文信息对应的分片信息;上行数据转发模块还用于在报文信息包括分片或者分片片首的情况下,基于IP层五元组进行哈希运算,并根据哈希运算结果和IP层五元组判断原始流节点是否存在;上行数据转发模块还用于在原始流节点存在,且报文信息对应的分片信息为分片片首的情况下,依次构建分片缓存流、修改数据包的NAT信息和查找分片数据缓存流,得到目标报文信息;上行数据转发模块还用于在报文信息包括后续分片,且分片缓存流存在的情况下,根据分片缓存流查找原始流,跟根据原始流将NAT流将公网转私网对应的NAT信息写入数据包。
图4是本发明提供的上行数据转发模块的工作流程示意图,在图4所示的实施例中,上行数据转发模块的运行机制包括如下步骤:
在上行数据转发处理中,利原始流链表、分片缓存流链表、NAT流链表实现数据的快速查找、关联和转发。
步骤401、确定上行数据。
具体的,数据预处理模块判断数据包方向为上行数据后,进入本利原始流链表、分片缓存流链表、NAT流链表实现数据的快速查找、关联和转发;其中,原始流链表负责IP层五元组(源IP、目的IP、源端口、目的端口、协议类型)数据的关联和查找;分片缓存流链表负责IP分片数据包的查找和关联,利用IP层标识符、源IP、目的IP、协议类型来实现分片流链表节点的新建、查找和关联;NAT流链表负责内网与外网不同IP地址和端口对应关系的管理。利用NAT流链表快速实现内网IP和端口与外网IP和端口的映射。
步骤402、确定未分片或分片首片。
具体的,数据预处理模块解析的IP层标志位(Flags)判断为非分片包或者分片首包后,进入五元组查找原始流(步骤402)节点处理,即根据IP层五元组(源IP、目的IP、源端口、目的端口、协议类型)信息先进行HASH运算,根据HASH值和五元组查找原始数据流链表,判断是否存在该链表节点;若原始流节点存在,跳转至判断分片首片(步骤405)节点处理;原始流节点不存在,跳转至新建原始流(步骤410)节点处理;
步骤405、检测分片首片。
具体的,根据IP层解析的标志位(Flags)判断是否为分片首片报文;若是分片首片报文,执行建立分片缓存流(步骤410)节点逻辑。利用IP层标识符、源IP、目的IP、协议类型新建分片流节点,并从原始流节点中获取NAT转换信息保存至该分片流节点中,并执行数据包NAT信息(步骤410)节点逻辑,从查找到的原始流节点中提取NAT转换信息保存至数据包NAT信息字段中;
步骤408、检测分片首片
具体的,根据IP层解析的标志位(Flags)判断是否为分片首片报文;若是分片首片报文,执行查找分片缓存流(步骤409)节点逻辑。
在该实施例中,根据IP层标识符、源IP、目的IP、协议类型查找分片缓存流,查找该IP包是否存在分片首片包处理之前缓存的分片非首片报文;因分片非首片数据包中缺乏源端口、目的端口等传输层信息,无法找到原始数据流节点,则无法找到NAT转发关系;通过分片首片报文找到原始流节点后,将查找是否存在本IP分片包之前的分片非首片报文;若存在分片非首片报文,从原始流中提取NAT信息,转发该分片首片和分片非首片报文。
步骤410、新建原始流。
具体的,未分片或分片首片报文根据IP层五元组(源IP、目的IP、源端口、目的端口、协议类型)未能查找到原始流节点,则依据IP层五元组新建原始流节点,并将该原始流节点挂载到原始流链表中。
在该实施例中,新建原始流节点并挂载至原始流链表成功,跳转至判断是否是分片首片(步骤411)节点处理;若新建原始流节点或者挂载原始流链表失败,丢弃该数据包,报文处理结束;
在步骤411中,根据IP层解析的标志位(Flags)判断是否为分片首片报文;若是分片首片,跳转至构建分片流(步骤412)节点逻辑处理;若不是分片首片报文,直接跳转至构建NAT流(步骤413)节点处理。
步骤412、建分片流
具体的,根据IP层标识符、源IP、目的IP、协议类型进行HASH运算,新建分片流节点,并将此分片流节点挂载至分片流链表,并从原始流节点中获取NAT转换信息保存至该分片流节点中。
在该实施例中,若新建分片流节点并挂载至分片流链表成功,跳转至新建NAT流(步骤413)节点处理;若新建分片流节点或挂在分片流链表失败,释放内存资源,丢弃该数据报文并结束处理。
步骤413、建NAT流
具体的,为提升NAT转发时数据查找效率,新建NAT流链表,依据NAT后的外网地址、端口、用户上网的目的地址、目的端口、协议类型五元组新建NAT流节点。
在该实施例中,从数据包中解析IP层数据后,若是上行数据包,提取源IP地址、源端口,查找WEB后台下发的NAT转发规则表;若无法找到,丢弃该数据报文;若找到,提取该规则表中的外网地址、外网端口号,与数据包中的目的地址、目的端口与协议类型五元信息新建NAT流节点,并将该NAT节点挂载至NAT流链表。
在该实施例中,若新建NAT流节点成功,保持原始流节点信息至该NAT流节点中,挂载该NAT流节点至NAT流链表;若新建该NAT流节点失败或挂载该NAT节点至NAT流链表失败,释放NAT节点资源,丢弃该数据报文并结束处理。
步骤403、后续分片包。
具体的,数据预处理模块解析的IP层标志位(Flags)判断为后续分片报文后,根据IP层标识符、源IP、目的IP、协议类型查找分片缓存流,查找该IP包是否已经新建了分片流节点;若不存在,证明该IP报文的分片后续报文先到达本设备网关,跳转至建分片缓存流(步骤415)进行处理;若存在,跳转至根据分片流节点查找原始流(步骤416)进行处理。
步骤416、根据分片流节点查找原始流。
具体的,查找到该分片流节点后,从该分片流节点中获取原始流中保存的NAT转发信息,执行原始流写NAT信息到数据包(步骤417),将该NAT转发信息保存至该数据包NAT信息字段中,为后续数据发送模块逻辑执行做数据准备。
在该实施例中,下行数据转发模块用于在报文信息的转发类型为上行转发的情况下,确定报文信息对应的分片信息;下行数据转发模块还用于在报文信息包括分片或者分片片首的情况下,基于IP层五元组进行哈希运算,并根据哈希运算结果和IP层五元组判断原始流节点是否存在;下行数据转发模块还用于在原始流节点存在,且报文信息对应的分片信息为分片片首的情况下,依次构建分片缓存流并与NAT流节点关联、基于NAT流查找原始流和查找分片数据缓存流,得到目标报文信息;分片信息包括未分片、分片片首和后续分片中的至少一项;下行数据转发模块还用于在报文信息包括后续分片,且在分片缓存流存在的情况下,根据分片缓存流确定NAT流,并根据NAT流查找原始流并提取公网转私网对应的NAT信息,将NAT信息写入数据包。
图5是本发明提供的下行数据转发模块的工作流程示意图,在图5所示的实施例中,下行数据转发模块的运行机制包括如下步骤:
步骤501、确定下行数据。
具体的,数据预处理模块,判断数据包方向为下行数据后,进入本模块进行转发处理。在下行数据转发处理中,利原始流链表、分片缓存流链表、NAT流链表实现数据的快速查找、关联和转发。
步骤502、未分片或分片首片。
具体的,数据预处理模块解析的IP层标志位(Flags)判断为非分片包或者分片首包后,进入五元组查找NAT流(步骤503)节点处理,即根据IP层五元组(源IP、目的IP、源端口、目的端口、协议类型)信息先进行HASH运算,根据HASH值和五元组查找NAT数据流链表,判断是否存在该链表节点;若NAT流节点存在,跳转至判断分片首片(步骤504)节点处理;若NAT流节点不存在,数据包丢弃,结束处理。
步骤504、检测是否为分片首片。
具体的,根据IP层解析的标志位(Flags)判断是否为分片首片报文;
若是分片首片报文,执行建立分片流并与NAT流关联(步骤505);利用IP层标识符、源IP、目的IP、协议类型新建分片流节点,并从NAT流节点中获取NAT转换信息保存至该分片流节点中。
在该实施例中,NAT流中保存外网IP地址、外网端口、目的IP地址、目的端口信息;原始流中保存内网IP地址、内网端口、目的IP地址与目的端口信息,并跳转至根据NAT流查找原始流(步骤506)。
步骤506、根据NAT流查找原始流。
具体的,根据NAT流节点中保存的原始流节点信息,将原始流节点中保存的外网转内网NAT转换信息保存至数据包NAT信息字段中,并执行是否分片首片包(步骤507)节点逻辑;若是,执行查找分片缓存(步骤508)节点逻辑;若不是,将携带有NAT转发信息的数据包转至数据发送模块处理。
步骤508、查找分片缓存。
具体的,查找分片流中是否有本IP数据包的分片非首片数据。若有,将根据NAT流查找原始流(步骤506)节点中找到的原始流中的NAT信息赋值给本IP报文分片非首片数据包,并将赋值后的所有数据包转至数据发送模块处理;若无,结束查找,直接将本IP报文赋值NAT信息后转至数据发送模块处理;
步骤509、后续分片包。
具体的,数据预处理模块解析的IP层标志位(Flags)判断为后续分片包后,根据IP层标识符、源IP、目的IP、协议类型查找分片流(步骤510),查找是否存在该IP数据包分片流节点;若不存在,执行建分片缓存流节点并缓存包(步骤511);若存在,执行根据分片流节点查找NAT流(步骤512)。
步骤511、建分片缓存流节点并缓存包。
具体的,根据IP层标识符、源IP、目的IP、协议类型查找分片流节点,无法找到,说明此数据包先于本IP分片包首包到达,通过建立分片流节点,缓存该分片后续包,防止IP分片包数据丢失。
步骤512、根据分片流节点查找NAT流。
具体的,先确定分片流节点存在,找到该分片流节点,从分片流节点中提取NAT流节点信息,执行根据NAT流节点查找原始流(步骤513),根据查找到的原始流信息,提取公网转私网等NAT信息,最后执行NAT信息写入数据包(步骤514),将数据包发送给数据发送模块进行处理。
数据发送模块用于根据不同分层封装协议对目标报文信息进行封装,得到封装后的数据包,将封装后的数据包发送至网卡发包队列中,并通过预设的Mbuf内存池技术实现用户空间到PCI设备地址的映射。
在该实施例中,数据发送模块用于将查找到NAT转发关系后对应的报文数据进行再封装并转发。
图6是本发明提供的数据发送模块的工作流程示意图,在图6所示的实施例中,数据发送模块的运行机制包括如下步骤:
步骤601、二层协议数据封装。
具体的,在接收上行数据转发模块或下行数据转发模块在获得NAT转发信息之后,将对应的报文数据转发给数据转发模块;在应用层数据基础上,重新封装二层、三层、四层协议数据报文头部,通过向对应的出口DPDK网卡写数据,并将数据进行转发。
在该实施例中,封装数据包二层协议报文头部信息;封装源MAC地址、目的MAC地址,协议类型;若封装成功,则执行三层协议数据封装(步骤603);若封装失败,丢弃该报文。
步骤603、三层协议数据封装。
具体的,封装网络层报文头部信息,针对IP数据类型,封装IP版本、IP包长、标识符(identification)、分片标志、分片偏移、TTL、传输层协议类型、源IP、目的IP等信息;针对上行数据,修改源IP地址为NAT转换后代外网IP地址;针对下行数据,修改目的IP地址为NAT转换后代内网IP地址;执行三层封装是否成功(步骤604)判断;若封装成功,执行四层协议数据封装(步骤605);若封装失败,丢弃该报文。
步骤605、四层协议数据封装。
具体的,封装传输层报文头部信息,例如:
1、针对TCP数据,封装源端口、目的端口、校验和、序列号(Sequence Number)、确认号(Acknowledgment Number)、编码位(Flags)和校验码等信息;
2、针对UDP数据,封装源端口、目的端口、长度、校验和等;
3、针对上行数据,修改源端口为NAT转换后外网端口号;
4、针对下行数据,修改目的端口为NAT转换后内网端口号;
在该实施例中,通过步骤606判断执行四层封装是否成功;若封装成功,执行网卡批量发包(步骤607);若封装失败,丢弃该报文。
步骤607、网卡批量发包。
具体的,将四层协议封装好的数据报文发往各个网卡发包队列中,通过自定义的Mbuf内存池技术,实现用户空间到PCI设备地址的映射,避免Linux协议栈数据包的拷贝,达到数据传输零拷贝目的,提升数据转发性能。
本发明实时例提供的数据转发系统,通过数据采集模块绑定CPU核心在不同的业务线程上,能够减少对业务线程的中断来提升处理性能;通过数据预处理模块按照不同分层的协议对数据包进行解析,得到报文信息和解析标识,并根据解析标识和数据库中存储的多个NAT转发规则确定报文信息的转发类型;通过数据转发模块降低统一流表结构的臃肿度,提高数据查找的精确度和效率,实现数据的快速查找和关联;通过数据发送模块根据不同分层封装协议对目标报文信息进行封装,得到封装后的数据包,将封装后的数据包发送至网卡发包队列中,并通过预设的Mbuf内存池技术实现用户空间到PCI设备地址的映射,避免网络协议栈和内核切换造成的处理时延,减少数据帧的重复拷贝来提升数据包传输效率。
在该实施例中,该系统还包括:网络地址NAT管理模块,NAT管理模块用于配置多个NAT转发规则,并将多个NAT转发规则存储至数据库。
在该实施例中,网络地址NAT管理模块,负责NAT数据转发规则的管理,通过采用动态的NAT规则管理机制,在NAT规则配置时,支持WEB后台手动配置和离线批量文件导入两种方式。
比如,WEB后台手动配置时,支持一条或多条NAT转发规则配置。规则下发时,支持设备端启动时开机一次性读取和实时下发两种模式。NAT转发规则配置成功后,将规则存入后台数据库,供设备端启动时读取;设备正常启动后,建立与后台数据库服务器的socket连接,从数据库中加载配置并在内存中建立NAT转发映射关系。
图7是本发明提供的网络地址NAT管理模块的工作流程示意图,在图7所示的实施例中,网络地址NAT管理模块的运行机制通过如下步骤实现:
步骤701、WEB后台配置数据转发规则。
具体的,WEB后台手动配置一条或批量导入多条NAT转发规则;转发规则支持手动配置、批量规则文件导入;规则下发时,支持设备端启动时开机一次性读取和实时下发两种模式。
步骤702、转发规则存入数据库。
具体的,WEB后台配置转发规则后,将转发规则存入数据库,供设备端启动时读取。设备正常运行时,配置的转发规则实时下发到设备端;
步骤703、设备启动。
具体的,NAT转换设备启动后,完成设备初始化,加载设备配置文件中数据库配置信息,建立与数据库服务器socket连接。
步骤704、读取NAT转发规则。
具体的,利用数据库连接读取本设备所属的NAT转发规则。
步骤705、建立公网私网NAT映射表。
具体的,解析从数据库中获取的NAT转发规则,支持WEB后台实时下发的NAT转换关系新建、更新、删除等操作。
步骤706、设备启动完成。
具体的,NAT转发规则管理模块负责规则的配置与管理,设备读取完NAT转发规则并建立映射关系后,设备启动完成,开始处理网络数据的转发。
在该实施例中,通过WEB后台下发NAT转发规则给前端设备,前端设备通过采用DPDK技术实现高速数据采集,通过预设的巨页内存,提升页表查询速度;且NAT转发规则管理模块支持NAT转发规则的手动配置和自动批量导入,支持规则的创建、更新与删除,灵活性高。
本发明实时例提供的数据转发系统,通过设置网络地址NAT管理模块配置多个NAT转发规则,并将多个NAT转发规则存储至数据库,为后续根据NAT转发规则确定数据上下文信息提供数据支撑。
下面对本发明提供的数据转发系统的控制方法进行描述,下文描述的数据转发系统的控制方法与上文描述的数据转发系统可相互对应参照。
图8是本发明提供的数据转发系统的控制方法的流程示意图,如图8所示,该数据转发系统的控制方法包括如下步骤:
步骤810、基于数据采集模块采集模块用于批量接收数据包,数据采集模块基于预设的Mbuf内存池构建,数据采集模块用于实现数据平面开发套件DPDK初始加载和启动、核心绑定、跟踪以及调试功能。
在该步骤中,数据采集模块基于预设的Mbuf内存池构建,数据采集模块用于实现数据平面开发套件DPDK初始加载和启动、核心绑定、跟踪以及调试功能;数据采集模块用于批量接收数据包。
在图2所示的实施例中,数据采集模块的工作机制包括如下步骤201(初始化EAL)、步骤202(创建内存池)、步骤203(网卡与端口初始化)和步骤204(网卡批量收包),各步骤的实现方式与上述实施例中步骤201-步骤204一致,本实施例不再赘述。
步骤820、基于数据预处理模块按照不同分层的协议对数据包进行解析,得到报文信息和解析标识,并根据解析标识和数据库中存储的多个NAT转发规则确定报文信息的转发类型;其中,转发类型包括上行转发和下行转发中的一项;解析标识数据包IP版本、IP包长、IP层标识符、分片标识、分片偏移、TTL、传输层协议类型、源IP、目的IP、源端口、目的端口、校验码和序列号中的至少一项。
在该步骤中,数据预处理模块能够对数据包进行二层、三层和四层头部数据解析,得到数据包IP版本、IP包长分片标志、分片偏移、标识符(identification)、TTL、传输层协议类型、源IP、目的IP、源端口、目的端口、校验和序列号等信息。
在该实施例中,将解析后的数据包信息存入当前包节点缓存字段中,并根据WEB后台配置的NAT转发规则,判断数据包上下行方向,依据上下行方向,将经过预处理后的数据转发至上行数据转发模块或下行数据转发模块。
比如,数据预处理模块获取的解析标识为源IP、目的IP,根据源IP和目的IP从数据库中存储的多个NAT转发规则查找对应的数据传输方向,即可确定数据转发的上下行信息。
在该实施例中,用于确定报文数据上下行信息的解析标识包括但不限于源IP、目的IP、源MAC、目的MAC和其他地址信息。
在图3所示的实施例中,数据预处理模块的工作机制包括如下步骤301(二层协议解析)、步骤302(IP层协议解析)、步骤303(是否是IP分片包)、步骤304(四层协议解析)和步骤305(判断上下行),各步骤的实现方式与上述实施例中步骤301-步骤305一致,本实施例不再赘述。
步骤830、基于数据转发模块根据转发类型、原始流链表、分片缓存流链表、NAT流链表对报文信息进行查找和关联,得到目标报文信息;其中,原始流链表用于对IP层五元组进行关联和查找;分片缓存流链表用于对IP分片包进行查找和关联,并利用IP层标识符、源IP、目的IP和传输层协议类型对分片流链表节点进行新建、查找和关联;NAT流链表用于配置内网与外网各自对应的IP地址和端口之间的映射关系;IP层五元组包括源IP、目的IP、源端口、目的端口和协议类型。
在该实施例中,数据转发模块包括上行数据转发模块和下行数据转发模块;其中,上行数据转发模块用于转发上行方向的报文数据,下行数据转发模块用于转发下行方向的报文数据。
在该实施例中,数据转发模块与数据采集模块采用异步方式通信,模块之间的耦合度低,保证了各模块运行稳定性。
下面,分别对上行数据转发模块和下行数据转发模块的运行机制进行说明:
在该实施例中,转发类型为上行转发,数据转发模块包括上行数据转发模块;基于数据转发模块根据转发类型、原始流链表、分片缓存流链表、NAT流链表对报文信息进行查找和关联,得到目标报文信息包括:基于上行数据转发模块在报文信息的转发类型为上行转发的情况下,确定报文信息对应的分片信息;在报文信息包括分片或者分片片首的情况下,基于IP层五元组进行哈希运算,并根据哈希运算结果和IP层五元组判断原始流节点是否存在;在原始流节点存在,且报文信息对应的分片信息为分片片首的情况下,依次构建分片缓存流、修改数据包的NAT信息和查找分片数据缓存流,得到目标报文信息;在报文信息包括后续分片,且分片缓存流存在的情况下,根据分片缓存流查找原始流,跟根据原始流将NAT流将公网转私网对应的NAT信息写入数据包。
在图4所示的实施例中,上行数据转发模块的运行机制包括步骤401-步骤417,各步骤的实现方式与上述实施例中步骤401-步骤417一致,本实施例不再赘述与上述。
在该实施例中,转发类型为下行转发,数据转发模块包括下行数据转发模块;基于数据转发模块根据转发类型、原始流链表、分片缓存流链表、NAT流链表对报文信息进行查找和关联,得到目标报文信息还包括:基于下行数据转发模块在报文信息的转发类型为上行转发的情况下,确定报文信息对应的分片信息;在报文信息包括分片或者分片片首的情况下,基于IP层五元组进行哈希运算,并根据哈希运算结果和IP层五元组判断原始流节点是否存在;在原始流节点存在,且报文信息对应的分片信息为分片片首的情况下,依次构建分片缓存流并与NAT流节点关联、基于NAT流查找原始流和查找分片数据缓存流,得到目标报文信息;分片信息包括未分片、分片片首和后续分片中的至少一项;在报文信息包括后续分片,且在分片缓存流存在的情况下,根据分片缓存流确定NAT流,并根据NAT流查找原始流并提取公网转私网对应的NAT信息,将NAT信息写入数据包。
在图5所示的实施例中,下行数据转发模块的运行机制包括步骤501-步骤514,各步骤的实现方式与上述实施例中步骤501-步骤514一致,本实施例不再赘述与上述。
步骤840、基于数据发送模块根据不同分层封装协议对目标报文信息进行封装,得到封装后的数据包,将封装后的数据包发送至网卡发包队列中,并通过预设的Mbuf内存池技术实现用户空间到PCI设备地址的映射。
在该步骤中,数据发送模块用于将查找到NAT转发关系后对应的报文数据进行再封装并转发。
在图6所示的实施例中,数据发送模块的运行机制包括步骤601(二层协议数据封装)、步骤602(判断二层封装是否成功)、步骤603(三层协议数据封)、步骤604(判断三层封装是否成功)、步骤605(四层协议数据封)、步骤606(判断四层封装是否成功)和步骤607(网卡批量发包),各步骤的实现方式与上述实施例中步骤601-步骤607一致,本实施例不再赘述与上述。
本发明实时例提供的数据转发系统的控制方法,通过数据采集模块绑定CPU核心在不同的业务线程上,能够减少对业务线程的中断来提升处理性能;通过数据预处理模块按照不同分层的协议对数据包进行解析,得到报文信息和解析标识,并根据解析标识和数据库中存储的多个NAT转发规则确定报文信息的转发类型;通过数据转发模块降低统一流表结构的臃肿度,提高数据查找的精确度和效率,实现数据的快速查找和关联;通过数据发送模块根据不同分层封装协议对目标报文信息进行封装,得到封装后的数据包,将封装后的数据包发送至网卡发包队列中,并通过预设的Mbuf内存池技术实现用户空间到PCI设备地址的映射,避免网络协议栈和内核切换造成的处理时延,减少数据帧的重复拷贝来提升数据包传输效率。
在一些实施例中,数据库中的多个NAT转发规则通过如下步骤得到:基于网络地址NAT管理模块配置多个NAT转发规则,并将多个NAT转发规则存储至数据库。
在该实施例中,网络地址NAT管理模块,负责NAT数据转发规则的管理,通过采用动态的NAT规则管理机制,在NAT规则配置时,支持WEB后台手动配置和离线批量文件导入两种方式。
比如,WEB后台手动配置时,支持一条或多条NAT转发规则配置。规则下发时,支持设备端启动时开机一次性读取和实时下发两种模式。NAT转发规则配置成功后,将规则存入后台数据库,供设备端启动时读取;设备正常启动后,建立与后台数据库服务器的socket连接,从数据库中加载配置并在内存中建立NAT转发映射关系。
在图7所示的实施例中,网络地址NAT管理模块的运行机制包括步骤701(WEB后台配置数据转发规则)、702(转发规则存入数据库)、703(设备启动)、704(读取NAT转发规则)、705(建立公网私网NAT映射表)和706(设备启动完成),各步骤的实现方式与上述实施例中步骤701-步骤706一致,本实施例不再赘述与上述。
在该实施例中,通过WEB后台下发NAT转发规则给前端设备,前端设备通过采用DPDK技术实现高速数据采集,通过预设的巨页内存,提升页表查询速度;且NAT转发规则管理模块支持NAT转发规则的手动配置和自动批量导入,支持规则的创建、更新与删除,灵活性高。
本发明实时例提供的数据转发系统,通过设置网络地址NAT管理模块配置多个NAT转发规则,并将多个NAT转发规则存储至数据库,为后续根据NAT转发规则确定数据上下文信息提供数据支撑。
图9是本发明提供的电子设备的结构示意图,如图9所示,该电子设备可以包括:处理器(processor)910、通信接口(Communications Interface)920、存储器(memory)930和通信总线940,其中,处理器910,通信接口920,存储器930通过通信总线940完成相互间的通信。处理器910可以调用存储器930中的逻辑指令,以执行数据转发系统的控制方法,该方法包括:基于数据采集模块采集模块用于批量接收数据包,数据采集模块基于预设的Mbuf内存池构建,数据采集模块用于实现数据平面开发套件DPDK初始加载和启动、核心绑定、跟踪以及调试功能;基于数据预处理模块按照不同分层的协议对数据包进行解析,得到报文信息和解析标识,并根据解析标识和数据库中存储的多个NAT转发规则确定报文信息的转发类型;其中,转发类型包括上行转发和下行转发中的一项;解析标识数据包IP版本、IP包长、IP层标识符、分片标识、分片偏移、TTL、传输层协议类型、源IP、目的IP、源端口、目的端口、校验码和序列号中的至少一项;基于数据转发模块根据转发类型、原始流链表、分片缓存流链表、NAT流链表对报文信息进行查找和关联,得到目标报文信息;其中,原始流链表用于对IP层五元组进行关联和查找;分片缓存流链表用于对IP分片包进行查找和关联,并利用IP层标识符、源IP、目的IP和传输层协议类型对分片流链表节点进行新建、查找和关联;NAT流链表用于配置内网与外网各自对应的IP地址和端口之间的映射关系;IP层五元组包括源IP、目的IP、源端口、目的端口和协议类型。
此外,上述的存储器930中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各方法所提供的数据转发系统的控制方法,该方法包括:基于数据采集模块采集模块用于批量接收数据包,数据采集模块基于预设的Mbuf内存池构建,数据采集模块用于实现数据平面开发套件DPDK初始加载和启动、核心绑定、跟踪以及调试功能;基于数据预处理模块按照不同分层的协议对数据包进行解析,得到报文信息和解析标识,并根据解析标识和数据库中存储的多个NAT转发规则确定报文信息的转发类型;其中,转发类型包括上行转发和下行转发中的一项;解析标识数据包IP版本、IP包长、IP层标识符、分片标识、分片偏移、TTL、传输层协议类型、源IP、目的IP、源端口、目的端口、校验码和序列号中的至少一项;基于数据转发模块根据转发类型、原始流链表、分片缓存流链表、NAT流链表对报文信息进行查找和关联,得到目标报文信息;其中,原始流链表用于对IP层五元组进行关联和查找;分片缓存流链表用于对IP分片包进行查找和关联,并利用IP层标识符、源IP、目的IP和传输层协议类型对分片流链表节点进行新建、查找和关联;NAT流链表用于配置内网与外网各自对应的IP地址和端口之间的映射关系;IP层五元组包括源IP、目的IP、源端口、目的端口和协议类型。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种数据转发系统,其特征在于,包括:
数据采集模块,所述数据采集模块基于预设的Mbuf内存池构建,所述数据采集模块用于实现数据平面开发套件DPDK初始加载和启动、核心绑定、跟踪以及调试功能;所述数据采集模块用于批量接收数据包;
数据预处理模块,所述数据预处理模块用于按照不同分层的协议对所述数据包进行解析,得到报文信息和解析标识,并根据所述解析标识和数据库中存储的多个NAT转发规则确定所述报文信息的转发类型;其中,所述转发类型包括上行转发和下行转发中的一项;所述解析标识数据包IP版本、IP包长、IP层标识符、分片标识、分片偏移、TTL、传输层协议类型、源IP、目的IP、源端口、目的端口、校验码和序列号中的至少一项;
数据转发模块,所述数据转发模块用于根据所述转发类型、原始流链表、分片缓存流链表、NAT流链表对所述报文信息进行查找、关联,得到目标报文信息;其中,所述原始流链表用于对IP层五元组进行关联和查找;所述分片缓存流链表用于对IP分片包进行查找和关联,并利用所述IP层标识符、所述源IP、所述目的IP和所述传输层协议类型对分片流链表节点进行新建、查找和关联;所述NAT流链表用于配置内网与外网各自对应的IP地址和端口之间的映射关系;所述IP层五元组包括所述源IP、目的IP、所述源端口、所述目的端口和所述协议类型;
数据发送模块,所述数据发送模块用于根据不同分层封装协议对所述目标报文信息进行封装,得到封装后的数据包,将所述封装后的数据包发送至网卡发包队列中,并通过预设的Mbuf内存池技术实现用户空间到PCI设备地址的映射。
2.根据权利要求1所述的数据转发系统,其特征在于,所述系统还包括:
网络地址NAT管理模块,所述NAT管理模块用于配置所述多个NAT转发规则,并将所述多个NAT转发规则存储至所述数据库。
3.根据权利要求1所述的数据转发系统,其特征在于,所述数据转发模块包括:
上行数据转发模块,所述上行数据转发模块用于在所述报文信息的转发类型为上行转发的情况下,确定所述报文信息对应的分片信息;
所述上行数据转发模块还用于在所述报文信息包括分片或者分片片首的情况下,基于所述IP层五元组进行哈希运算,并根据哈希运算结果和所述IP层五元组判断原始流节点是否存在;
所述上行数据转发模块还用于在所述原始流节点存在,且所述报文信息对应的分片信息为分片片首的情况下,依次构建分片缓存流、修改数据包的NAT信息和查找分片数据缓存流,得到所述目标报文信息;
所述上行数据转发模块还用于在所述报文信息包括后续分片,且所述分片缓存流存在的情况下,根据所述分片缓存流查找原始流,跟根据所述原始流将所述NAT流将公网转私网对应的NAT信息写入数据包。
4.根据权利要求1所述的数据转发系统,其特征在于,所述数据转发模块包括:
下行数据转发模块,所述下行数据转发模块用于在所述报文信息的转发类型为上行转发的情况下,确定所述报文信息对应的分片信息;
所述下行数据转发模块还用于在所述报文信息包括分片或者分片片首的情况下,基于所述IP层五元组进行哈希运算,并根据哈希运算结果和所述IP层五元组判断原始流节点是否存在;
所述下行数据转发模块还用于在所述原始流节点存在,且所述报文信息对应的分片信息为分片片首的情况下,依次构建分片缓存流并与NAT流节点关联、基于所述NAT流查找原始流和查找分片数据缓存流,得到所述目标报文信息;所述分片信息包括未分片、分片片首和后续分片中的至少一项;
所述下行数据转发模块还用于在所述报文信息包括后续分片,且在所述分片缓存流存在的情况下,根据所述分片缓存流确定所述NAT流,并根据所述NAT流查找原始流并提取公网转私网对应的NAT信息,将所述NAT信息写入数据包。
5.一种数据转发系统的控制方法,其特征在于,包括:
基于数据采集模块采集模块用于批量接收数据包,所述数据采集模块基于预设的Mbuf内存池构建,所述数据采集模块用于实现数据平面开发套件DPDK初始加载和启动、核心绑定、跟踪以及调试功能;
基于数据预处理模块按照不同分层的协议对所述数据包进行解析,得到报文信息和解析标识,并根据所述解析标识和数据库中存储的多个NAT转发规则确定所述报文信息的转发类型;其中,所述转发类型包括上行转发和下行转发中的一项;所述解析标识数据包IP版本、IP包长、IP层标识符、分片标识、分片偏移、TTL、传输层协议类型、源IP、目的IP、源端口、目的端口、校验码和序列号中的至少一项;
基于数据转发模块根据所述转发类型、原始流链表、分片缓存流链表、NAT流链表对所述报文信息进行查找和关联,得到目标报文信息;其中,所述原始流链表用于对IP层五元组进行关联和查找;所述分片缓存流链表用于对IP分片包进行查找和关联,并利用所述IP层标识符、所述源IP、所述目的IP和所述传输层协议类型对分片流链表节点进行新建、查找和关联;所述NAT流链表用于配置内网与外网各自对应的IP地址和端口之间的映射关系;所述IP层五元组包括所述源IP、目的IP、所述源端口、所述目的端口和所述协议类型;
基于数据发送模块根据不同分层封装协议对所述目标报文信息进行封装,得到封装后的数据包,将所述封装后的数据包发送至网卡发包队列中,并通过预设的Mbuf内存池技术实现用户空间到PCI设备地址的映射。
6.根据权利要求5所述的数据转发系统的控制方法,其特征在于,所述转发类型为上行转发,所述数据转发模块包括上行数据转发模块;
所述基于数据转发模块根据所述转发类型、原始流链表、分片缓存流链表、NAT流链表对所述报文信息进行查找和关联,得到目标报文信息包括:
基于所述上行数据转发模块在所述报文信息的转发类型为下行转发的情况下,确定所述报文信息对应的分片信息;
在所述报文信息包括分片或者分片片首的情况下,基于所述IP层五元组进行哈希运算,并根据哈希运算结果和所述IP层五元组判断原始流节点是否存在;
在所述原始流节点存在,且所述报文信息对应的分片信息为分片片首的情况下,依次构建分片缓存流、修改数据包的NAT信息和查找分片数据缓存流,得到所述目标报文信息;
在所述报文信息包括后续分片,且所述分片缓存流存在的情况下,根据所述分片缓存流查找原始流,跟根据所述原始流将所述NAT流将公网转私网对应的NAT信息写入数据包。
7.根据权利要求5所述的数据转发系统的控制方法,其特征在于,所述转发类型为下行转发,所述数据转发模块包括下行数据转发模块;
所述基于数据转发模块根据所述转发类型、原始流链表、分片缓存流链表、NAT流链表对所述报文信息进行查找和关联,得到目标报文信息还包括:
基于所述下行数据转发模块在所述报文信息的转发类型为上行转发的情况下,确定所述报文信息对应的分片信息;
在所述报文信息包括分片或者分片片首的情况下,基于所述IP层五元组进行哈希运算,并根据哈希运算结果和所述IP层五元组判断原始流节点是否存在;
在所述原始流节点存在,且所述报文信息对应的分片信息为分片片首的情况下,依次构建分片缓存流并与NAT流节点关联、基于所述NAT流查找原始流和查找分片数据缓存流,得到所述目标报文信息;所述分片信息包括未分片、分片片首和后续分片中的至少一项;
在所述报文信息包括后续分片,且在所述分片缓存流存在的情况下,根据所述分片缓存流确定所述NAT流,并根据所述NAT流查找原始流并提取公网转私网对应的NAT信息,将所述NAT信息写入数据包。
8.根据权利要求5所述的数据转发系统的控制方法,其特征在于,所述数据库中的多个NAT转发规则通过如下步骤得到:
基于网络地址NAT管理模块配置所述多个NAT转发规则,并将所述多个NAT转发规则存储至所述数据库。
9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求5至8任一项所述数据转发系统的控制方法。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求5至8任一项所述数据转发系统的控制方法。
CN202410050500.XA 2024-01-12 2024-01-12 数据转发系统及其控制方法 Pending CN117997833A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410050500.XA CN117997833A (zh) 2024-01-12 2024-01-12 数据转发系统及其控制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410050500.XA CN117997833A (zh) 2024-01-12 2024-01-12 数据转发系统及其控制方法

Publications (1)

Publication Number Publication Date
CN117997833A true CN117997833A (zh) 2024-05-07

Family

ID=90888106

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410050500.XA Pending CN117997833A (zh) 2024-01-12 2024-01-12 数据转发系统及其控制方法

Country Status (1)

Country Link
CN (1) CN117997833A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118170706A (zh) * 2024-05-10 2024-06-11 山东航天人工智能安全芯片研究院 基于DPDK的PCIe接口数据高速处理和转发方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118170706A (zh) * 2024-05-10 2024-06-11 山东航天人工智能安全芯片研究院 基于DPDK的PCIe接口数据高速处理和转发方法

Similar Documents

Publication Publication Date Title
US11677851B2 (en) Accelerated network packet processing
JP6269999B2 (ja) パケット処理方法および装置
CN111131037B (zh) 基于虚拟网关的数据传输方法、装置、介质与电子设备
US20020080789A1 (en) Switch-based network processor
US9356844B2 (en) Efficient application recognition in network traffic
WO2018032399A1 (en) Server and method having high concurrency capability
WO2017000593A1 (zh) 报文处理方法及装置
WO2019185051A1 (zh) 一种基于集成流表转发报文的方法及装置
JP2002538731A (ja) 高性能ネットワークインターフェースにおけるダイナミックな構文解析
CN117997833A (zh) 数据转发系统及其控制方法
CN110768994A (zh) 一种基于dpdk技术的提高sip网关性能的方法
CN112118167B (zh) 一种跨网隧道数据快速传输方法
CN112929281B (zh) 基于fpga的网络设备的报文处理方法、装置及设备
US20120140640A1 (en) Apparatus and method for dynamically processing packets having various characteristics
JP2002538721A (ja) 高性能ネットワークインターフェースにおけるネットワークトラフィックを分類するための方法および装置
CN115225734A (zh) 一种报文处理方法和网络设备
CN116055586B (zh) 分片报文的匹配方法、路由器及存储介质
CN115033407B (zh) 一种适用于云计算的采集识别流量的系统和方法
US8819107B2 (en) Relay apparatus, recording medium storing a relay program, and a relay method
CN114422624A (zh) 数据接收方法
Herrin Linux IP Networking
CN117714398B (zh) 一种数据传输系统、方法、电子设备及存储介质
CN114301960B (zh) 集群非对称流量的处理方法及装置、电子设备及存储介质
CN113765785B (zh) 基于dpdk的多路径传输方法
CN116016687B (zh) 一种基于dpdk的报文分流方法及系统

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