数据转发系统及其控制方法与流程

文档序号:37940996发布日期:2024-05-11 00:19阅读:38来源:国知局
数据转发系统及其控制方法与流程

本发明涉及数据处理,尤其涉及一种数据转发系统及其控制方法。


背景技术:

1、网络地址转换(network address translation,nat)技术使用流量表将数据从一个外部主机地址路由到内部ip地址,借助于nat,私有地址通过路由器发送数据时,私有地址被转换成合法的ip地址,一个局域网只需要使用少量ip地址即可实现私有地址网络内所有计算机与互联网的通信,以达到节省ip地址空间的作用。

2、相关技术中,传统的nat转发技术通常从网卡套接字获得数据包,数据包需要拷贝至操作系统内核的网络协议栈,再由网络协议栈发往用户空间,数据会经过多次拷贝,降低了传输效率;同时,传统的收包方式在网卡收到数据包时,会通过产生中断的方式通知内核有数据包到达,linux系统内核会对中断进行响应,将接收到的数据帧交给内核中的网络协议栈进行处理,通过中断的方式在低带宽低吞吐率等环境下可以满足需求,但在面对海量数据处理需求时,中断方式会引发中断风暴,内核需要不间断的处理中断请求,不利于内核对数据包的处理。


技术实现思路

1、本发明提供一种数据转发系统及其控制方法,用以解决现有技术中转发数据包时需要进行多次拷贝,降低了传输效率;而在面对海量数据处理需求时,系统内核频繁地中断响应会引发中断风暴,导致系统在数据转发过程的性能损耗严重的缺陷,提高了对海量数据的查找、关联和转发效率。

2、本发明提供一种数据转发系统,包括:

3、数据采集模块,所述数据采集模块基于预设的mbuf内存池构建,所述数据采集模块用于实现数据平面开发套件dpdk初始加载和启动、核心绑定、跟踪以及调试功能;所述数据采集模块用于批量接收数据包;

4、数据预处理模块,所述数据预处理模块用于按照不同分层的协议对所述数据包进行解析,得到报文信息和解析标识,并根据所述解析标识和数据库中存储的多个nat转发规则确定所述报文信息的转发类型;其中,所述转发类型包括上行转发和下行转发中的一项;所述解析标识数据包ip版本、ip包长、ip层标识符、分片标识、分片偏移、ttl、传输层协议类型、源ip、目的ip、源端口、目的端口、校验码和序列号中的至少一项;

5、数据转发模块,所述数据转发模块用于根据所述转发类型、原始流链表、分片缓存流链表、nat流链表对所述报文信息进行查找、关联,得到目标报文信息;其中,所述原始流链表用于对ip层五元组进行关联和查找;所述分片缓存流链表用于对ip分片包进行查找和关联,并利用所述ip层标识符、所述源ip、所述目的ip和所述传输层协议类型对分片流链表节点进行新建、查找和关联;所述nat流链表用于配置内网与外网各自对应的ip地址和端口之间的映射关系;所述ip层五元组包括所述源ip、目的ip、所述源端口、所述目的端口和所述协议类型;

6、数据发送模块,所述数据发送模块用于根据不同分层封装协议对所述目标报文信息进行封装,得到封装后的数据包,将所述封装后的数据包发送至网卡发包队列中,并通过预设的mbuf内存池技术实现用户空间到pci设备地址的映射。

7、根据本发明提供的数据转发系统,所述系统还包括:

8、网络地址nat管理模块,所述nat管理模块用于配置所述多个nat转发规则,并将所述多个nat转发规则存储至所述数据库。

9、根据本发明提供的数据转发系统,所述数据转发模块包括:

10、上行数据转发模块,所述上行数据转发模块用于在所述报文信息的转发类型为下行转发的情况下,确定所述报文信息对应的分片信息;

11、所述上行数据转发模块还用于在所述报文信息包括分片或者分片片首的情况下,基于所述ip层五元组进行哈希运算,并根据哈希运算结果和所述ip层五元组判断原始流节点是否存在;

12、所述上行数据转发模块还用于在所述原始流节点存在,且所述报文信息对应的分片信息为分片片首的情况下,依次构建分片缓存流、修改数据包的nat信息和查找分片数据缓存流,得到所述目标报文信息;

13、所述上行数据转发模块还用于在所述报文信息包括后续分片,且所述分片缓存流存在的情况下,根据所述分片缓存流查找原始流,跟根据所述原始流将所述nat流将公网转私网对应的nat信息写入数据包。

14、根据本发明提供的数据转发系统,所述数据转发模块包括:

15、下行数据转发模块,所述下行数据转发模块用于在所述报文信息的转发类型为上行转发的情况下,确定所述报文信息对应的分片信息;

16、所述下行数据转发模块还用于在所述报文信息包括分片或者分片片首的情况下,基于所述ip层五元组进行哈希运算,并根据哈希运算结果和所述ip层五元组判断原始流节点是否存在;

17、所述下行数据转发模块还用于在所述原始流节点存在,且所述报文信息对应的分片信息为分片片首的情况下,依次构建分片缓存流并与nat流节点关联、基于所述nat流查找原始流和查找分片数据缓存流,得到所述目标报文信息;所述分片信息包括未分片、分片片首和后续分片中的至少一项;

18、所述下行数据转发模块还用于在所述报文信息包括后续分片,且在所述分片缓存流存在的情况下,根据所述分片缓存流确定所述nat流,并根据所述nat流查找原始流并提取公网转私网对应的nat信息,将所述nat信息写入数据包。

19、本发明还提供一种数据转发系统的控制方法,包括:

20、基于数据采集模块采集模块用于批量接收数据包,所述数据采集模块基于预设的mbuf内存池构建,所述数据采集模块用于实现数据平面开发套件dpdk初始加载和启动、核心绑定、跟踪以及调试功能;

21、基于数据预处理模块按照不同分层的协议对所述数据包进行解析,得到报文信息和解析标识,并根据所述解析标识和数据库中存储的多个nat转发规则确定所述报文信息的转发类型;其中,所述转发类型包括上行转发和下行转发中的一项;所述解析标识数据包ip版本、ip包长、ip层标识符、分片标识、分片偏移、ttl、传输层协议类型、源ip、目的ip、源端口、目的端口、校验码和序列号中的至少一项;

22、基于数据转发模块根据所述转发类型、原始流链表、分片缓存流链表、nat流链表对所述报文信息进行查找和关联,得到目标报文信息;其中,所述原始流链表用于对ip层五元组进行关联和查找;所述分片缓存流链表用于对ip分片包进行查找和关联,并利用所述ip层标识符、所述源ip、所述目的ip和所述传输层协议类型对分片流链表节点进行新建、查找和关联;所述nat流链表用于配置内网与外网各自对应的ip地址和端口之间的映射关系;所述ip层五元组包括所述源ip、目的ip、所述源端口、所述目的端口和所述协议类型;

23、基于数据发送模块根据不同分层封装协议对所述目标报文信息进行封装,得到封装后的数据包,将所述封装后的数据包发送至网卡发包队列中,并通过预设的mbuf内存池技术实现用户空间到pci设备地址的映射。

24、根据本发明提供的数据转发系统的控制方法,所述转发类型为上行转发,所述数据转发模块包括上行数据转发模块;

25、所述基于数据转发模块根据所述转发类型、原始流链表、分片缓存流链表、nat流链表对所述报文信息进行查找和关联,得到目标报文信息包括:

26、基于所述上行数据转发模块在所述报文信息的转发类型为上行转发的情况下,确定所述报文信息对应的分片信息;

27、在所述报文信息包括分片或者分片片首的情况下,基于所述ip层五元组进行哈希运算,并根据哈希运算结果和所述ip层五元组判断原始流节点是否存在;

28、在所述原始流节点存在,且所述报文信息对应的分片信息为分片片首的情况下,依次构建分片缓存流、修改数据包的nat信息和查找分片数据缓存流,得到所述目标报文信息;

29、在所述报文信息包括后续分片,且所述分片缓存流存在的情况下,根据所述分片缓存流查找原始流,跟根据所述原始流将所述nat流将公网转私网对应的nat信息写入数据包。

30、根据本发明提供的数据转发系统的控制方法,所述转发类型为下行转发,所述数据转发模块包括下行数据转发模块;

31、所述基于数据转发模块根据所述转发类型、原始流链表、分片缓存流链表、nat流链表对所述报文信息进行查找和关联,得到目标报文信息还包括:

32、基于所述下行数据转发模块在所述报文信息的转发类型为上行转发的情况下,确定所述报文信息对应的分片信息;

33、在所述报文信息包括分片或者分片片首的情况下,基于所述ip层五元组进行哈希运算,并根据哈希运算结果和所述ip层五元组判断原始流节点是否存在;

34、在所述原始流节点存在,且所述报文信息对应的分片信息为分片片首的情况下,依次构建分片缓存流并与nat流节点关联、基于所述nat流查找原始流和查找分片数据缓存流,得到所述目标报文信息;所述分片信息包括未分片、分片片首和后续分片中的至少一项;

35、在所述报文信息包括后续分片,且在所述分片缓存流存在的情况下,根据所述分片缓存流确定所述nat流,并根据所述nat流查找原始流并提取公网转私网对应的nat信息,将所述nat信息写入数据包。

36、根据本发明提供的数据转发系统的控制方法,所述数据库中的多个nat转发规则通过如下步骤得到:

37、基于网络地址nat管理模块配置所述多个nat转发规则,并将所述多个nat转发规则存储至所述数据库。

38、本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述数据转发系统的控制方法。

39、本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述数据转发系统的控制方法。

40、本发明提供的数据转发系统及其控制方法,通过数据采集模块绑定cpu核心在不同的业务线程上,能够减少对业务线程的中断来提升处理性能;通过数据预处理模块按照不同分层的协议对数据包进行解析,得到报文信息和解析标识,并根据解析标识和数据库中存储的多个nat转发规则确定报文信息的转发类型;通过数据转发模块降低统一流表结构的臃肿度,提高数据查找的精确度和效率,实现数据的快速查找和关联;通过数据发送模块根据不同分层封装协议对目标报文信息进行封装,得到封装后的数据包,将封装后的数据包发送至网卡发包队列中,并通过预设的mbuf内存池技术实现用户空间到pci设备地址的映射,避免网络协议栈和内核切换造成的处理时延,减少数据帧的重复拷贝来提升数据包传输效率。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1