数据包处理方法、装置及设备、存储介质

文档序号:1046415 发布日期:2020-10-09 浏览:9次 >En<

阅读说明:本技术 数据包处理方法、装置及设备、存储介质 (Data packet processing method, device and equipment and storage medium ) 是由 叶耀先 于 2019-03-29 设计创作,主要内容包括:本发明提供一种数据包处理方法、装置及设备、存储介质,该方法应用于分布式分析系统中的主控节点,所述分布式分析系统还包括分析节点,该方法包括:从目标数据包缓存队列中获取第一数据包;在所述第一数据包是通过本地LAN网卡接收时,确定与第一数据包匹配的第一目标表项,依据所述第一目标表项对第一数据包进行NAT处理并转发;在所述第一数据包是通过本地WAN网卡接收时,确定与第一数据包匹配的第二目标表项,依据所述第二目标表项对第一数据包进行NAT处理并转发。(The invention provides a data packet processing method, a device and equipment, and a storage medium, wherein the method is applied to a main control node in a distributed analysis system, the distributed analysis system also comprises an analysis node, and the method comprises the following steps: acquiring a first data packet from a target data packet buffer queue; when the first data packet is received through a local LAN (local area network) card, determining a first target table entry matched with the first data packet, and carrying out NAT (network address translation) processing and forwarding on the first data packet according to the first target table entry; and when the first data packet is received through the local WAN network card, determining a second target table entry matched with the first data packet, and performing NAT processing and forwarding on the first data packet according to the second target table entry.)

数据包处理方法、装置及设备、存储介质

技术领域

本发明涉及网络通信技术领域,尤其涉及的是一种数据包处理方法、装置及设备、存储介质。

背景技术

分布式分析系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的节点组成的系统。分析节点需要与分布式分析系统之外的外部设备进行通信,比如,当一服务器需要将数据分发给分布式分析系统中的分析节点进行分析处理时,会将数据封装成数据包发送给分析节点进行处理,分析节点处理后需要将携带处理结果的数据包发送给该服务器。

相关数据包处理方式中,通常是采用专用硬件实现转发,比如采用可工作在OSI网络标准模型的第三层——网络层的三层交换机等。上述方式中,需采用专用硬件实现转发,硬件架构实现起来复杂程度高,兼容性差。

发明内容

有鉴于此,本发明提供一种数据包处理方法、装置及设备、存储介质,兼容性更好。

本发明第一方面提供一种数据包处理方法,该方法应用于分布式分析系统中的主控节点,所述分布式分析系统还包括分析节点,该方法包括:

从目标数据包缓存队列中获取第一数据包;

在所述第一数据包是通过本地LAN网卡接收时,确定与第一数据包匹配的第一目标表项,依据所述第一目标表项对第一数据包进行NAT处理并转发;

在所述第一数据包是通过本地WAN网卡接收时,确定与第一数据包匹配的第二目标表项,依据所述第二目标表项对第一数据包进行NAT处理并转发。

根据本发明的一个实施例,所述确定与第一数据包匹配的第一目标表项包括:

以第一数据包的第一数据包参数为关键字在本地源网络地址转换SNAT表中查找与所述第一数据包参数对应的SNAT表项,若查找到,将查找到的SNAT表项确定为所述与第一数据包匹配的第一目标表项,否则,构建与所述第一数据包参数对应的SNAT表项,并将构建的SNAT表项确定为所述与第一数据包匹配的第一目标表项。

根据本发明的一个实施例,所述第一目标表项至少包括:IP地址、Port标识、MAC地址,其中,IP地址为本地WAN网卡的IP地址,Port标识为所述第一数据包来源的分析节点的标识,MAC地址为指定的网关MAC地址;

所述依据第一目标表项对第一数据包进行NAT处理并转发包括:

将所述第一数据包中的源IP地址修改为所述第一目标表项中的IP地址、源Port修改为所述第一目标表项中的Port标识、目的MAC地址修改为所述第一目标表项中的MAC地址,得到第二数据包;

通过本地WAN网卡转发所述第二数据包。

根据本发明的一个实施例,在SNAT表中未查找到与所述第一数据包参数对应的SNAT表项时,该方法进一步包括:

构建与第二数据包的第二数据包参数对应的第三目标表项,第三目标表项至少包括IP地址、Port、MAC地址,其中,IP地址为第一数据包的源IP地址,Port为第一数据包的源Port,MAC地址为第一数据包的源MAC地址;

将构建的第三目标表项记录至本地的目的网络地址转换DNAT表。

根据本发明的一个实施例,所述确定与第一数据包匹配的第二目标表项包括:

以第一数据包的第一数据包参数为关键字在本地目的网络地址转换DNAT表中查找与所述第一数据包参数对应的DNAT表项,将查找到的DNAT表项确定为所述与第一数据包匹配的第二目标表项;

所述依据所述第二目标表项对第一数据包进行NAT处理并转发包括:

将所述第一数据包中的目的IP地址修改为所述第二目标表项中的IP地址、目的Port修改为所述第二目标表项中的Port、目的MAC地址修改为第二目标表项中的MAC地址,得到第三数据包;

通过本地LAN网卡转发所述第三数据包。

根据本发明的一个实施例,该方法还进一步包括:

监测MAC地址变化事件;所述MAC地址变化事件是由主控节点连接的分析节点和/或网关的MAC地址发生变化引起;

当监测到所述MAC地址变化事件时,在本地SNAT表和DNAT表中找到所述MAC地址变化事件携带的IP地址对应的MAC地址,将找到的MAC地址修改为所述MAC地址变化事件携带的MAC地址。

根据本发明的一个实施例,所述目标数据包缓存队列用于存储协议类型为非ARP的数据包,所述第一数据包的协议类型为非ARP。

本发明第二方面提供一种数据包处理装置,该装置应用于分布式分析系统中的主控节点,所述分布式分析系统还包括分析节点,该装置包括:

数据包获取模块,用于从目标数据包缓存队列中获取第一数据包;

第一处理转发模块,用于在所述第一数据包是通过本地LAN网卡接收时,确定与第一数据包匹配的第一目标表项,依据所述第一目标表项对第一数据包进行NAT处理并转发;

第二处理转发模块,用于在所述第一数据包是通过本地WAN网卡接收时,确定与第一数据包匹配的第二目标表项,依据所述第二目标表项对第一数据包进行NAT处理并转发。

根据本发明的一个实施例,第一处理转发模块确定与第一数据包匹配的第一目标表项时具体用于:

以第一数据包的第一数据包参数为关键字在本地源网络地址转换SNAT表中查找与所述第一数据包参数对应的SNAT表项,若查找到,将查找到的SNAT表项确定为所述与第一数据包匹配的第一目标表项,否则,构建与所述第一数据包参数对应的SNAT表项,并将构建的SNAT表项确定为所述与第一数据包匹配的第一目标表项。

根据本发明的一个实施例,所述第一目标表项至少包括:IP地址、Port标识、MAC地址,其中,IP地址为本地WAN网卡的IP地址,Port标识为所述第一数据包来源的分析节点的标识,MAC地址为指定的网关MAC地址;

所述第一处理转发模块依据第一目标表项对第一数据包进行NAT处理并转发时具体用于:

将所述第一数据包中的源IP地址修改为所述第一目标表项中的IP地址、源Port修改为所述第一目标表项中的Port标识、目的MAC地址修改为所述第一目标表项中的MAC地址,得到第二数据包;

通过本地WAN网卡转发所述第二数据包。

根据本发明的一个实施例,在SNAT表中未查找到与所述第一数据包参数对应的SNAT表项时,该装置进一步包括:

表项构建模块,用于构建与第二数据包的第二数据包参数对应的第三目标表项,第三目标表项至少包括IP地址、Port、MAC地址,其中,IP地址为第一数据包的源IP地址,Port为第一数据包的源Port,MAC地址为第一数据包的源MAC地址;

表项记录模块,用于将构建的第三目标表项记录至本地的目的网络地址转换DNAT表。

根据本发明的一个实施例,所述第二处理转发模块确定与第一数据包匹配的第二目标表项时具体用于:

以第一数据包的第一数据包参数为关键字在本地目的网络地址转换DNAT表中查找与所述第一数据包参数对应的DNAT表项,将查找到的DNAT表项确定为所述与第一数据包匹配的第二目标表项;

所述第二处理转发模块依据所述第二目标表项对第一数据包进行NAT处理并转发时具体用于:

将所述第一数据包中的目的IP地址修改为所述第二目标表项中的IP地址、目的Port修改为所述第二目标表项的Port、目的MAC地址修改为第二目标表项中的MAC地址,得到第三数据包;

通过本地LAN网卡转发所述第三数据包。

根据本发明的一个实施例,该装置还进一步包括:

事件监测模块,用于监测MAC地址变化事件;所述MAC地址变化事件是由主控节点连接的分析节点和/或网关的MAC地址发生变化引起;

MAC地址修改模块,用于当监测到所述MAC地址变化事件时,在本地SNAT表和DNAT表中查找所述MAC地址变化事件携带的IP地址对应的MAC地址,将找到的MAC地址修改为所述MAC地址变化事件携带的MAC地址。

根据本发明的一个实施例,所述目标数据包缓存队列用于存储协议类型为非ARP的数据包,所述第一数据包的协议类型为非ARP。

本发明第三方面提供一种电子设备,包括处理器及存储器;所述存储器存储有可被处理器调用的程序;其中,所述处理器执行所述程序时,实现如前述实施例中所述的数据包处理方法。

本发明第四方面提供一种机器可读存储介质,其上存储有程序,该程序被处理器执行时,实现如前述实施例中所述的数据包处理方法。

本发明实施例具有以下有益效果:

本发明实施例中,主控节点通过本地WAN网卡获取的数据包、通过本地LAN网卡获取的数据包可存入到目标数据包缓存队列中,从目标数据包缓存队列获取到第一数据包后,可根据第一数据包是通过本地WAN网卡接收还是本地LAN网卡接收来确定相应的目标表项,并根据相应目标表项实现第一数据包的NAT处理并转发,换言之,本发明实施例可通过主控节点来实现分布式分析系统的公网到私网、私网到公网的数据包转发,无需专用硬件的情况下仍可实现数据包的转发,更便于实现,兼容性更好,易于移植和部署。

附图说明

图1是本发明一实施例的数据包处理方法的流程示意图;

图2是本发明一实施例的分布式分析系统的结构框图;

图3是本发明一实施例的数据包处理装置的结构框图;

图4是本发明一实施例的电子设备的结构框图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。

在本发明使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本发明可能采用术语第一、第二、第三等来描述各种器件,但这些信息不应限于这些术语。这些术语仅用来将同一类型的器件彼此区分开。例如,在不脱离本发明范围的情况下,第一器件也可以被称为第二器件,类似地,第二器件也可以被称为第一器件。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

为了使得本发明的描述更清楚简洁,下面对本发明中的一些技术术语进行解释:

DPDK:data plane development kit,是一种提供快速网络封包处理的框架。可以运行在不同的CPU架构上,为高效的数据包处理提供库函数和驱动的支持。

NAT:network address translation,网络地址转换,它是一个IETF(InternetEngineering Task Force,Internet工程任务组)标准,允许一个整体机构以一个公用IP(Internet Protocol)地址出现在Internet上,是一种把内部私网IP地址翻译成合法公网IP地址的技术,NAT在一定程度上,能够有效地解决公网地址不足的问题。

ARP:address resolution protocol,一种地址解析协议,是根据IP地址获取物理地址的一个协议。

MAC地址:media access control,可称为物理地址或者硬件地址,用来定义网络设备的位置。

下面对本发明实施例的数据包处理方法进行更具体的描述,但不应以此为限。在一个实施例中,数据包处理方法应用于分布式分析系统中的主控节点,所述分布式分析系统还包括分析节点,参看图1,该方法包括以下步骤:

S100:从目标数据包缓存队列中获取第一数据包;

S200:在所述第一数据包是通过本地LAN网卡接收时,确定与第一数据包匹配的第一目标表项,依据所述第一目标表项对第一数据包进行NAT处理并转发;

S300:在所述第一数据包是通过本地WAN网卡接收时,确定与第一数据包匹配的第二目标表项,依据所述第二目标表项对第一数据包进行NAT处理并转发。

本发明实施例的数据包处理方法的执行主体为主控节点,该主控节点可集成在电子设备,执行主体进一步可以为电子设备中主控节点的处理器,其中,所述处理器可以为一个或多个。

参看图2,示出了一种分布式分析系统20包括:共处于同一内部网络中的若干分析节点201-204、及主控节点200,图中示出了四个分析节点,当然具体不限于此。主控节点200通过本地LAN(Local Area Network,局域网)网卡与分析节点201-204连接,主控节点200通过本地WAN(Wide Area Network,广域网)网卡与外部网络环境中的网关连接,该外部网络环境为internet环境,即公网。

在一个些应用场景中,外部网络环境中的设备需与分布式分析系统中的分析节点进行通信。比如需进行图像分析的场景中,成像设备将采集的图像数据传输给服务器,但是采集的图像数据需要进行分析处理后再使用,为了提升分析处理的效率,服务器会将图像数据传输给分布式分析系统中的各分析节点进行分析处理,分析处理完再返回给服务器。

本发明实施例中,可通过主控节点来实现数据包的NAT处理与转发,以实现内部网络中分析节点与外部网络环境中的设备之间的通信。

步骤S100中,从目标数据包缓存队列中获取第一数据包。

主控节点中可以配置指定应用接口API,通过该指定API从本地LAN网卡和本地WAN网卡处获取数据包。获取的数据包可以直接存入到目标数据包缓存队列中;或者可以按照数据包的协议类型将数据包分类存储到相应数据包缓存队列中,其中,目标数据包缓存队列可用于存储一种或几种协议类型的数据包。

指定API比如可以为DPDK的数据包接收接口。DPDK是运行在用户空间,利用自身提供的数据平面库来收发数据包,绕过了系统内核(比如linux内核)协议栈对数据包的处理过程。即,指定API将获取的数据包直接送到用户空间,而不通过内核协议栈的处理,对数据包的处理效率更高。

从目标数据包缓存队列中获取到第一数据包,由于第一数据包可能是通过本地LAN网卡接收的来自分析节点的数据包,也可能是通过本地WAN网卡接收的来自外部网络环境中设备的数据包,因而需要判断第一数据包是通过本地LAN网卡接收还是通过本地WAN网卡接收。

示例性的,判断第一数据包是通过本地LAN网卡接收还是通过本地WAN网卡接收可以包括:依据所述分析节点所用的网络掩码与所述第一数据包中的源IP地址计算对应的网络地址;判断计算出的网络地址与所述分析节点所用的网络地址是否匹配,若匹配,确定所述第一数据包是通过本地LAN网卡接收,否则,确定所述第一数据包是本地WAN网卡接收。

当然,具体方式也不限于此,也可以在主控节点中预设记录了所有分析节点的IP地址的分析节点IP地址表,可在分析节点IP地址表中查找第一数据包中的源IP地址,如果查找到,确定第一数据包是通过本地LAN网卡接收,否则,确定所述第一数据包是本地WAN网卡接收。

步骤S200中,在所述第一数据包是通过本地LAN网卡接收时,确定与第一数据包匹配的第一目标表项,依据所述第一目标表项对第一数据包进行NAT处理并转发。

第一数据包是通过本地LAN网卡接收,说明第一数据包是某个分析节点发送的,需转发到外部网络环境中。主控节点需要对第一数据包进行NAT处理并转发,第一目标表项中记录了对第一数据包进行NAT处理与转发所需的信息。NAT处理可以是源地址转换或带端口的源地址转换,比如将第一数据包中的源IP地址从私网IP地址转换为公网IP地址。转发时主控节点可对第一数据包进行相应转发所需的处理。

步骤S300中,在所述第一数据包是通过本地WAN网卡接收时,确定与第一数据包匹配的第二目标表项,依据所述第二目标表项对第一数据包进行NAT处理并转发。

第一数据包是通过本地WAN网卡接收,说明第一数据包是外部网络环境中的设备发送的,需转发给某个分析节点。主控节点需要对第一数据包进行NAT处理并转发,第二目标表项中记录了对第一数据包进行NAT处理与转发所需的信息。NAT处理可以是源地址转换或带端口的源地址转换,比如将第一数据包中的目的IP地址从公网IP地址转换为私网IP地址。转发时主控节点可对第一数据包进行相应转发所需的处理。

本发明实施例中,主控节点通过本地WAN网卡获取的数据包、通过本地LAN网卡获取的数据包可存入到目标数据包缓存队列中,从目标数据包缓存队列获取到第一数据包后,可根据第一数据包是通过本地WAN网卡接收还是本地LAN网卡接收来确定相应的目标表项,并根据相应目标表项实现第一数据包的NAT处理并转发,换言之,本发明实施例可通过主控节点来实现分布式分析系统的公网到私网、私网到公网的数据包转发,无需专用硬件的情况下仍可实现数据包的转发,更便于实现,兼容性更好,易于移植和部署。

本发明实施例中,结合图2来说,外部设备处于外部网络环境中,会将数据包通过网关30发送给主控节点200;主控节点200通过本地WAN网卡接收数据包,对数据包进行相应NAT处理,并通过本地LAN网卡转发给相应分析节点比如分析节点201;分析节点201对数据包解析并分析处理后再封装成数据包,将封装好的数据包发送给主控节点200,主控节点200通过本地LAN网卡接收数据包,对数据包进行相应NAT处理,并通过本地WAN网卡转发给网关30,再由网关发送给相应外部设备。在此过程中,由主控节点200来执行转发所需的处理,主控节点200上的本地LAN网卡和本地WAN网卡支持二层转发协议即可,无需三层交换机的参与仍可完成数据包的转发。

在一个实施例中,上述数据包处理方法流程可由数据包处理装置100执行,如图3所示,数据包处理装置100主要包含3个模块:数据包获取模块101,第一处理转发模块102和第二处理转发模块103。数据包获取模块101用于执行上述步骤S100,第一处理转发模块102用于执行上述步骤S200,第二处理转发模块103用于执行上述步骤S300。

在一个实施例中,步骤S200中,所述确定与第一数据包匹配的第一目标表项包括:

以第一数据包的第一数据包参数为关键字在本地源网络地址转换SNAT表中查找与所述第一数据包参数对应的SNAT表项,若查找到,将查找到的SNAT表项确定为所述与第一数据包匹配的第一目标表项,否则,构建与所述第一数据包参数对应的SNAT表项,并将构建的SNAT表项确定为所述与第一数据包匹配的第一目标表项。

第一数据包会携带有一些与第一数据包相关的参数,包括源IP地址、源Port、源MAC地址、目的IP地址、目的Port、目的MAC地址、传输层协议等。

第一数据包参数可以采用第一数据包的五元组信息,包括第一数据包中的源IP地址、源Port、目的IP地址、目的Port和传输层协议。关键字的形式可以为由源IP地址、源Port、目的IP地址、目的Port和传输层协议依次构成的字符串或者该字符串对应的哈希值等。用五元组信息作为关键字,可保证SNAT表中不同分析节点发往不同外部设备的数据包所匹配的SNAT表项的唯一性。

如果在SNAT表中查找到了第一数据包参数对应的SNAT表项,说明之前已经构建过该第一数据包参数对应的SNAT表项,直接将查找到的SNAT表项作为第一目标表项即可,如果没有,则说明之前未构建过,构建第一数据包参数对应的SNAT表项,并将构建的SNAT表项作为第一目标表项。

在SNAT表中记录SNAT表项,在下次收到相同源分析节点发送给相同目的设备的数据包的情况下,可直接从SNAT表中找到匹配的SNAT表项,减少创建所需的任务量。

在一个实施例中,所述第一目标表项至少包括:IP地址、Port标识、MAC地址,其中,IP地址为本地WAN网卡的IP地址,Port标识为所述第一数据包来源的分析节点的标识,MAC地址为指定的网关MAC地址;

步骤S200中,所述依据第一目标表项对第一数据包进行NAT处理并转发包括:

将所述第一数据包中的源IP地址修改为所述第一目标表项中的IP地址、源Port修改为所述第一目标表项中的Port标识、目的MAC地址修改为所述第一目标表项中的MAC地址,得到第二数据包;

通过本地WAN网卡转发所述第二数据包。

Port标识可以是主控节点中随机生成的或者预先设置的,具体不限,只要能够唯一标记发送该第一数据包的分析节点,保证依据Port标识可确定数据包是由哪个分析节点发送的。该第一数据包在到达外部网络环境中的服务器时,服务器可依据Port标识识别所来自的分析节点,从而可避免服务器处理时混淆数据包。

将所述第一数据包中的源IP地址修改为本地WAN网卡的IP地址、源Port修改为第一数据包来源的分析节点的标识,实现了第一数据包转发所需的NAT处理,将第一数据包中的源IP地址从私网IP地址转换为公网IP地址。

同时,还将第一数据包中的目的MAC地址修改为指定的网关MAC地址。该指定的网关为与本地WAN网卡连接的网关。完成上述修改后得到第二数据包,由于第二数据包的目的MAC地址为指定的网关MAC地址,保证第二数据包的下一跳为该网关。

在现有的路由方式中,需要以IP地址作为依据,在路由表中找到下一跳的地址,再修改当前数据包中的目的MAC地址为下一跳的MAC地址,因而需要支持三层转发的专用设备来实现转发。

本发明实施例中,仅通过修改MAC地址即实现了下一跳路径的确定,由主控节点即可实现转发;并且下一跳的MAC地址、及NAT所需的IP地址和Port标识都记录在第一目标表项中,只需通过一次查表,便可一并进行NAT与路由,处理速度更快。

得到第二数据包后,通过本地WAN网卡将第二数据包转发给网关,网关识别到目的MAC地址为自己的MAC地址时,就会进行相应的转发。为了避免本地WAN网卡来不及转发,可先将第二数据包缓存至主控节点中配置的第一转发队列,等待本地WAN网卡进行转发。

在一个实施例中,在SNAT表中未查找到与所述第一数据包参数对应的SNAT表项时,该方法进一步包括:

构建与第二数据包的第二数据包参数对应的第三目标表项,第三目标表项至少包括IP地址、Port、MAC地址,其中,IP地址为第一数据包的源IP地址,Port为第一数据包的源Port,MAC地址为第一数据包的源MAC地址;

将构建的第三目标表项记录至本地的目的网络地址转换DNAT表。

第二数据包的第二数据包参数可以为该第二数据包的五元组信息。关键字的形式可以为由该第二数据包的目的IP地址、目的Port、源IP地址、源Port和传输层协议依次构成的字符串或者该字符串对应的哈希值,其中,第一数据包参数确定的关键字与第二数据包参数确定的关键字中,源IP地址与目的IP地址发生了互换,目的Port与源Port发生了互换,当然,关键字形式不限于此。

第一数据包的源IP地址即为发送该第一数据包的分析节点的IP地址,第一数据包的源Port即为发送该第一数据包的分析节点的端口号,第一数据包的源MAC地址即为发送该第一数据包的分析节点的MAC地址。

本实施例中,可以根据第一数据包与第二数据包实现SNAT表和DNAT表的自学习。由于在SNAT表中创建第一目标表项时,会同步在DNAT表中创建第三目标表项,第一目标表项可以用于某个分析节点到指定外部设备的数据包转发时的处理,第二目标表项可用于该指定外部设备到该分析节点的数据包转发时的处理。

换言之,只有分析节点有数据包发往指定外部设备,才会在DNAT表中创建相应表项。那么,该指定外部设备需要将数据包发往该分析节点时,主控节点方可依据DNAT表中的相应表项来实现该数据包的转发。

因而,对于来自外部网络环境主动发送的数据包,主控节点是不会响应的(DNAT表中没有对应的表项,无法进行NAT处理与下一跳确定),只有分布式分析系统中的分析节点主动向外部网络环境发送数据包,主控节点才会进行表项学习,保证内部网络的安全性。

在一个实施例中,步骤S300中,所述确定与第一数据包匹配的第二目标表项包括:

以第一数据包的第一数据包参数为关键字在本地目的网络地址转换DNAT表中查找与所述第一数据包参数对应的DNAT表项,将查找到的DNAT表项确定为所述与第一数据包匹配的第二目标表项;

步骤S300中,所述依据所述第二目标表项对第一数据包进行NAT处理并转发包括:

将所述第一数据包中的目的IP地址修改为所述第二目标表项中的IP地址、目的Port修改为所述第二目标表项中的Port、目的MAC地址修改为第二目标表项中的MAC地址,得到第三数据包;

通过本地LAN网卡转发所述第三数据包。

如果在DNAT表中查找到DNAT表项,说明第一数据包是主控节点允许转发给分析节点的数据包,将查找到的DNAT表项确定为第二目标表项。

第二目标表项中的IP地址即为目的分析节点的IP地址,第二目标表项中的Port即为目的分析节点的Port,第二目标表项中的MAC地址即为目的分析节点的MAC地址。该目的分析节点为该第一数据包最终需到达的分析节点。

将所述第一数据包中的目的IP地址修改为目的分析节点的IP地址、目的Port修改为目的分析节点的Port,实现了第一数据包转发所需的NAT处理,将第一数据包中的目的IP地址从公网IP地址转换为私网IP地址,在分布式分析系统看来,相当于主控节点需发送数据包给目的分析节点。

同时,还将第一数据包中的目的MAC地址修改为目的分析节点的MAC地址,完成上述修改后得到第三数据包。由于第三数据包的目的MAC地址为目的分析节点的MAC地址,保证第三数据包的下一跳为该目的分析节点。

本发明实施例中,仅通过修改MAC地址即实现了下一跳路径的确定,由主控节点即可实现转发;并且下一跳的MAC地址、及NAT所需的IP地址和Port都记录在第二目标表项中,只需通过一次查表,便可一并进行NAT与路由,处理速度更快。

得到第三数据包后,通过本地LAN网卡将第三数据包转发给目的分析节点,目的分析节点收到该第三数据包后,便可进行分析处理。为了避免本地LAN网卡来不及转发,可先将第三数据包缓存至主控节点中配置的第二转发队列,等待本地LAN网卡进行转发。

在一个实施例中,当在DNAT表中未查找到第二目标表项时,说明该第一数据包是外部网络环境中的不合法设备主动发起的,直接丢弃该第一数据包,可防止来自外部网络环境的恶意攻击。

在一个实施例中,该方法还进一步包括以下步骤:

S400:监测MAC地址变化事件;所述MAC地址变化事件是由主控节点连接的分析节点和/或网关的MAC地址发生变化引起;

S500:当监测到所述MAC地址变化事件时,在本地SNAT表和DNAT表中查找所述MAC地址变化事件携带的IP地址对应的MAC地址,将找到的MAC地址修改为所述MAC地址变化事件携带的MAC地址。

步骤S400、S500与前述的步骤S100-S300之间并无先后顺序,可同时进行。

主控节点中可以预先设置有记录IP地址和对应MAC地址的ARP信息表。以主控节点连接的网关为例,在ARP信息表中与网关的IP地址对应的MAC地址与网关当前的MAC地址不同时,会修改ARP信息表中该IP地址对应的MAC地址,同时触发MAC地址变化事件,并将该IP地址和网关当前的MAC地址携带在该MAC地址变化事件中。

监测到MAC地址变化事件时,依据该事件中携带的IP地址来查找SNAT表和DNAT表中的对应MAC地址,并进行MAC地址的修改。在创建SNAT表和DNAT表中的表项时,可将MAC地址对应的IP地址与MAC地址一并记录在表项中,以便依据IP地址查找对应的MAC地址。

分布式分析系统所对接的下一跳网关的更换,对于主控节点来说是无法知晓和控制的。而主控节点所连接的网关更换所带来结果便是ARP信息表中MAC地址会发生变化。面对这种变化,本实施例中通过事件监测,可以在更换主控节点连接的网关和/或分析节点时,及时更新主控节点的SNAT表和DNAT表中的相应MAC地址。

本实施例中,实现MAC动态监测,可以及时更新SNAT表和DNAT表中的MAC地址,避免后续NAT处理和转发时发生错误,在主控节点连接的网关和/或分析节点发生变化时,也不影响分布式分析系统的正常工作。

在一个实施例中,所述目标数据包缓存队列用于存储协议类型为非ARP的数据包,所述第一数据包的协议类型为非ARP。

主控节点中从本地LAN网卡和本地WAN网卡处获取数据包之后,按照数据包的协议类型分类存储数据包。数据包的以太网头部携带有数据包的协议类型,可以解析数据包的以太网头部获取其协议类型。

数据包的协议类型可以包括ARP、TCP、UDP等,可以将协议类型为ARP的数据包存储到ARP数据包缓存队列中,将协议类型为非ARP(比如TCP、UDP)的数据包存储到目标数据包缓存队列中。

在一个实施例中,该方法还进一步包括:

从ARP数据包缓存队列中获取第四数据包;

在所述第四数据包是通过本地LAN网卡接收时,通过主控节点中已配置的虚拟LAN网卡对所述第四数据包执行ARP响应处理并生成第一ARP响应数据包,通过本地LAN网卡将所述第一ARP响应数据包发送至所述分析节点;

在所述第四数据包是通过本地WAN网卡接收时,通过主控节点中已配置的虚拟WAN网卡对所述第四数据包执行ARP响应处理并生成第二ARP响应数据包,并通过本地WAN网卡将所述第二ARP响应数据包发送至本地WAN网卡连接的网关。

对数据包执行ARP响应处理比如,依据数据包中携带的IP地址及MAC地址更新本地的ARP信息表、将主控节点的MAC地址携带在相应的ARP响应数据包中等,具体可参看相关ARP响应处理方式,在此不再赘述。

主控节点上可配置有DPDK,虚拟LAN网卡和虚拟WAN网卡可以用DPDK中的虚拟网卡实现,主控节点通过虚拟LAN网卡响应通过本地LAN网卡接收的来自分析节点的ARP数据包、通过虚拟WAN网卡响应通过本地WAN网卡接收的来自外部设备的ARP数据包,无需额外APR响应设备来处理ARP数据包,进一步减轻实现的复杂度,也降低设备成本。

本发明还提供一种数据包处理装置,参看图3,该数据包处理装置100应用于分布式分析系统中的主控节点,所述分布式分析系统还包括分析节点,该装置100包括:

数据包获取模块101,用于从目标数据包缓存队列中获取第一数据包;

第一处理转发模块102,用于在所述第一数据包是通过本地LAN网卡接收时,确定与第一数据包匹配的第一目标表项,依据所述第一目标表项对第一数据包进行NAT处理并转发;

第二处理转发模块103,用于在所述第一数据包是通过本地WAN网卡接收时,确定与第一数据包匹配的第二目标表项,依据所述第二目标表项对第一数据包进行NAT处理并转发。

在一个实施例中,第一处理转发模块确定与第一数据包匹配的第一目标表项时具体用于:

以第一数据包的第一数据包参数为关键字在本地源网络地址转换SNAT表中查找与所述第一数据包参数对应的SNAT表项,若查找到,将查找到的SNAT表项确定为所述与第一数据包匹配的第一目标表项,否则,构建与所述第一数据包参数对应的SNAT表项,并将构建的SNAT表项确定为所述与第一数据包匹配的第一目标表项。

在一个实施例中,所述第一目标表项至少包括:IP地址、Port标识、MAC地址,其中,IP地址为本地WAN网卡的IP地址,Port标识为所述第一数据包来源的分析节点的标识,MAC地址为指定的网关MAC地址;

所述第一处理转发模块依据第一目标表项对第一数据包进行NAT处理并转发时具体用于:

将所述第一数据包中的源IP地址修改为所述第一目标表项中的IP地址、源Port修改为所述第一目标表项中的Port标识、目的MAC地址修改为所述第一目标表项中的MAC地址,得到第二数据包;

通过本地WAN网卡转发所述第二数据包。

根据本发明的一个实施例,在SNAT表中未查找到与所述第一数据包参数对应的SNAT表项时,该装置进一步包括:

表项构建模块,用于构建与第二数据包的第二数据包参数对应的第三目标表项,第三目标表项至少包括IP地址、Port、MAC地址,其中,IP地址为第一数据包的源IP地址,Port为第一数据包的源Port,MAC地址为第一数据包的源MAC地址;

表项记录模块,用于将构建的第三目标表项记录至本地的目的网络地址转换DNAT表。

在一个实施例中,所述第二处理转发模块确定与第一数据包匹配的第二目标表项时具体用于:

以第一数据包的第一数据包参数为关键字在本地目的网络地址转换DNAT表中查找与所述第一数据包参数对应的DNAT表项,将查找到的DNAT表项确定为所述与第一数据包匹配的第二目标表项;

所述第二处理转发模块依据所述第二目标表项对第一数据包进行NAT处理并转发时具体用于:

将所述第一数据包中的目的IP地址修改为所述第二目标表项中的IP地址、目的Port修改为所述第二目标表项的Port、目的MAC地址修改为第二目标表项中的MAC地址,得到第三数据包;

通过本地LAN网卡转发所述第三数据包。

在一个实施例中,该装置还进一步包括:

事件监测模块,用于监测MAC地址变化事件;所述MAC地址变化事件是由主控节点连接的分析节点和/或网关的MAC地址发生变化引起;

MAC地址修改模块,用于当监测到所述MAC地址变化事件时,在本地SNAT表和DNAT表中查找所述MAC地址变化事件携带的IP地址对应的MAC地址,将找到的MAC地址修改为所述MAC地址变化事件携带的MAC地址。

在一个实施例中,所述目标数据包缓存队列用于存储协议类型为非ARP的数据包,所述第一数据包的协议类型为非ARP。

上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元。

本发明还提供一种电子设备,包括处理器及存储器;所述存储器存储有可被处理器调用的程序;其中,所述处理器执行所述程序时,实现如前述实施例中所述的数据包处理方法。

本发明数据包处理装置的实施例可以应用在电子设备上。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在电子设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图4所示,图4是本发明根据一示例性实施例示出的数据包处理装置100所在电子设备的一种硬件结构图,除了图4所示的处理器510、内存530、接口520、以及非易失性存储器540之外,实施例中装置100所在的电子设备通常根据该电子设备的实际功能,还可以包括其他硬件,对此不再赘述。

本发明还提供一种机器可读存储介质,其上存储有程序,该程序被处理器执行时,实现如前述实施例中所述的数据包处理方法。

本发明可采用在一个或多个其中包含有程序代码的存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。机器可读存储介质包括永久性和非永久性、可移动和非可移动媒体,可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。机器可读存储介质的例子包括但不限于:相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

17页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:信息处理设备、信息处理设备的控制方法和存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!