CN114327882A - 一种数据转发方法、装置及*** - Google Patents

一种数据转发方法、装置及*** Download PDF

Info

Publication number
CN114327882A
CN114327882A CN202111592643.6A CN202111592643A CN114327882A CN 114327882 A CN114327882 A CN 114327882A CN 202111592643 A CN202111592643 A CN 202111592643A CN 114327882 A CN114327882 A CN 114327882A
Authority
CN
China
Prior art keywords
network card
memory
dma
data
dma memory
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
CN202111592643.6A
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.)
Nsfocus Technologies Inc
Nsfocus Technologies Group Co Ltd
Original Assignee
Nsfocus Technologies Inc
Nsfocus Technologies Group 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 Nsfocus Technologies Inc, Nsfocus Technologies Group Co Ltd filed Critical Nsfocus Technologies Inc
Priority to CN202111592643.6A priority Critical patent/CN114327882A/zh
Publication of CN114327882A publication Critical patent/CN114327882A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请提供一种数据转发方法、装置及***,用于解决现有技术在通过软件的方式实现网卡的Bypass功能时存在的数据转发效率较低或实现成本较高的技术问题,所述方法包括:修改网络安全设备的网卡驱动;基于修改后的网卡驱动,在操作***的内核空间为网络安全设备的每个网卡创建DMA内存队列和对应的Buffer内存队列;将第一网卡接收到的待转发数据写入第一DMA内存对应的Buffer内存;将第一DMA内存对应的Buffer内存与第二DMA内存对应的Buffer内存进行交换;将第二DMA内存对应的Buffer内存中的待转发数据写入第二网卡,以使第二网卡发送待转发数据。

Description

一种数据转发方法、装置及***
技术领域
本申请涉及通信技术领域,尤其涉及一种数据转发方法、装置及***。
背景技术
网络安全设备通常应用在两个或更多的网络之间,例如内外和外网之间,网络安全设备内的程序会对通过它的网络封包来进行分析,分析完后再按照路由规则将封包转发出去,但是当网络安全设备处于“虚拟线”模式时,将不再按照路由规则将封包转发出去,而是按照网卡映射表将封包转发出去,例如网卡A映射的网卡为网卡B,网卡A接收的数据就将由网卡B发送出去,处于“虚拟线”模式的网络安全设备相当于一根网线,从而减少网络安全设备对网络的入侵。
目前,因为处于“虚拟线”模式的网络安全设备进行软件升级或者出现逻辑异常时会导致数据断流,所以常通过支持旁路(Bypass)功能的网卡避免数据断流。由于有些网络安全设备的网卡可能不支持Bypass功能,若更换网卡,实现成本又较高,此时可通过软件的方式实现网卡的Bypass功能,例如网卡A接收的数据通过操作***转发给网卡B发送出去,即网卡A接收的数据先从网卡A拷贝到操作***的内核(Kernel)空间,再从操作***的内核空间拷贝到操作***的用户空间,在操作***的用户空间经过应用程序交换后从操作***的用户空间发回操作***的内核空间,然后通过网卡B发送出去,但是数据需要经过两次拷贝(网卡到内核空间,内核空间到用户空间),导致数据转发效率较低,或者网卡A接收的数据通过数据平面开发套件(Data Plane Development Kit,DPDK)转发给网卡B发送出去,虽然数据只经过一次拷贝(网卡到用户空间),但是需要对用户应用程序进行改动,导致实现成本较高。
由此可见,现有技术在通过软件的方式实现网卡的Bypass功能时存在要么数据需要经过两次拷贝,导致数据转发效率较低,要么数据虽然只经过一次拷贝,但是需要对用户程序进行改动,导致实现成本较高的问题。
发明内容
本申请实施例提供一种数据转发方法、装置及***,用于解决现有技术在通过软件的方式实现网卡的Bypass功能时存在的数据转发效率较低或实现成本较高的技术问题。
第一方面,为解决上述技术问题,本申请实施例提供一种数据转发方法,包括:
修改网络安全设备的网卡驱动;其中,所述修改为禁用所述网卡驱动的中断和发送函数;
基于所述修改后的网卡驱动,在操作***的内核空间为所述网络安全设备的每个网卡创建直接存储器访问DMA内存队列和对应的缓冲Buffer内存队列;其中,所述DMA内存队列中的DMA内存与对应的所述Buffer内存队列中的Buffer内存一一对应,所述DMA内存队列包括接收DMA内存队列和发送DMA内存队列;
将第一网卡接收到的待转发数据写入第一DMA内存对应的Buffer内存;其中,所述第一DMA内存为所述第一网卡的所述接收DMA内存队列中标识为空闲的任一DMA内存;
将所述第一DMA内存对应的Buffer内存与第二DMA内存对应的Buffer内存进行交换;其中,所述第二DMA内存为第二网卡的所述发送DMA内存队列中标识为空闲的任一DMA内存,所述第二网卡为在网卡映射表中与所述第一网卡对应的网卡;
将所述第二DMA内存对应的Buffer内存中的所述待转发数据写入所述第二网卡,以使所述第二网卡发送所述待转发数据。
在本申请实施例中,可以先修改网络安全设备的网卡驱动,其中,修改为禁用网卡驱动的中断和发送函数,基于修改后的网卡驱动,在操作***的内核空间为网络安全设备的每个网卡创建DMA内存队列和对应的Buffer内存队列,其中,DMA内存队列中的DMA内存与对应的Buffer内存队列中的Buffer内存一一对应,DMA内存队列包括接收DMA内存队列和发送DMA内存队列,将第一网卡接收到的待转发数据写入第一DMA内存对应的Buffer内存,其中,第一DMA内存为第一网卡的接收DMA内存队列中标识为空闲的任一DMA内存,将第一DMA内存对应的Buffer内存与第二DMA内存对应的Buffer内存进行交换,其中,第二DMA内存为第二网卡的发送DMA内存队列中标识为空闲的任一DMA内存,第二网卡为在网卡映射表中与第一网卡对应的网卡,将第二DMA内存对应的Buffer内存中的待转发数据写入第二网卡,以使第二网卡发送待转发数据。通过禁用网卡驱动的中断和发送函数,使得通过软件的方式实现网卡的Bypass功能避免数据断流时,只有一个***在处理网卡的数据,进而避免产生脏数据,并在将第一网卡接收到的待转发数据写入第一DMA内存对应的Buffer内存之后,交换第一DMA内存对应的Buffer内存和第二DMA内存对应的Buffer内存,待转发数据直接从第一网卡的接收DMA内存队列被交换到第二网卡的发送DMA内存队列,不仅减少需拷贝的数据,而且使得第一网卡接收的数据通过操作***的内核转发给第二网卡发送出去时,数据只需要经过网卡到内核空间这一次拷贝,进而提高数据转发效率,降低实现成本。
一种可选实施方式中,所述修改网络安全设备的网卡驱动,包括:
确定所述网络安全设备是否处于预设状态;其中,所述预设状态指示所述网络安全设备进行软件升级或出现逻辑异常;
若确定所述网络安全设备处于所述预设状态,则修改所述网络安全设备的网卡驱动。
在本申请实施例中,可以确定网络安全设备是否处于预设状态,其中,预设状态指示网络安全设备进行软件升级或出现逻辑异常,若确定网络安全设备处于预设状态,则修改网络安全设备的网卡驱动,通过确定网络安全设备是否进行软件升级或出现逻辑异常,确定网络安全设备是否可能出现数据断流,并在确定可能出现数据断流时,禁用网卡驱动的中断和发送函数,使得通过软件的方式实现网卡的Bypass功能避免数据断流时,只有一个***在处理网卡的数据,进而避免产生脏数据。
一种可选实施方式中,所述网络安全设备的每个网卡支持DMA功能;其中,所述DMA功能用于将网卡的数据拷贝到所述内核空间,以及将所述内核空间的数据拷贝到所述网卡。
一种可选实施方式中,还包括:
在将第一网卡接收到的待转发数据写入第一DMA内存对应的Buffer内存之后,将所述第一DMA内存的标识由空闲修改为非空闲;
在将所述第一DMA内存对应的Buffer内存与第二DMA内存对应的Buffer内存进行交换之后,将所述第一DMA内存的标识由非空闲修改为空闲,所述第二DMA内存的标识由空闲修改为非空闲。
第二方面,本申请实施例还提供一种数据转发装置,包括:
第一修改模块,用于修改网络安全设备的网卡驱动;其中,所述修改为禁用所述网卡驱动的中断和发送函数;
创建模块,用于基于所述修改后的网卡驱动,在操作***的内核空间为所述网络安全设备的每个网卡创建直接存储器访问DMA内存队列和对应的缓冲Buffer内存队列;其中,所述DMA内存队列中的DMA内存与对应的所述Buffer内存队列中的Buffer内存一一对应,所述DMA内存队列包括接收DMA内存队列和发送DMA内存队列;
第一写入模块,用于将第一网卡接收到的待转发数据写入第一DMA内存对应的Buffer内存;其中,所述第一DMA内存为所述第一网卡的所述接收DMA内存队列中标识为空闲的任一DMA内存;
交换模块,用于将所述第一DMA内存对应的Buffer内存与第二DMA内存对应的Buffer内存进行交换;其中,所述第二DMA内存为第二网卡的所述发送DMA内存队列中标识为空闲的任一DMA内存,所述第二网卡为在网卡映射表中与所述第一网卡对应的网卡;
第二写入模块,用于将所述第二DMA内存对应的Buffer内存中的所述待转发数据写入所述第二网卡,以使所述第二网卡发送所述待转发数据。
一种可选实施方式中,所述修改模块,具体用于:
确定所述网络安全设备是否处于预设状态;其中,所述预设状态指示所述网络安全设备进行软件升级或出现逻辑异常;
若确定所述网络安全设备处于所述预设状态,则修改所述网络安全设备的网卡驱动。
一种可选实施方式中,所述网络安全设备的每个网卡支持DMA功能;其中,所述DMA功能用于将网卡的数据拷贝到所述内核空间,以及将所述内核空间的数据拷贝到所述网卡。
一种可选实施方式中,所述装置还包括第二修改模块,用于:
在将第一网卡接收到的待转发数据写入第一DMA内存对应的Buffer内存之后,将所述第一DMA内存的标识由空闲修改为非空闲;
在将所述第一DMA内存对应的Buffer内存与第二DMA内存对应的Buffer内存进行交换之后,将所述第一DMA内存的标识由非空闲修改为空闲,所述第二DMA内存的标识由空闲修改为非空闲。
第三方面,本申请实施例还提供一种数据转发***,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序指令执行第一方面中的任一种实施方式包括的步骤。
第四方面,本申请实施例提供一种存储介质,该存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行第一方面中的任一种实施方式包括的步骤。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例。
图1为本申请实施例提供的一种数据转发***的结构示意图;
图2a为本申请实施例提供的一种数据转发方法的流程示意图;
图2b为本申请实施例提供的一种数据转发的示意图;
图3为本申请实施例提供的一种数据转发装置的结构示意图;
图4为本申请实施例提供的又一种数据转发***的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚明白,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,能够以不同于此处的顺序执行所示出或描述的步骤。
本申请的说明书和权利要求书及上述附图中的术语“第一”和“第二”是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的保护。例如包含了一系列步骤或单元的过程、方法、***、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
本申请实施例中,“至少一个”可以表示至少两个,例如可以是两个、三个或者更多个,本申请实施例不做限制。
另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,在不做特别说明的情况下,一般表示前后关联对象是一种“或”的关系。
目前,因为处于“虚拟线”模式的网络安全设备进行软件升级或者出现逻辑异常时会导致数据断流,所以常通过支持旁路(Bypass)功能的网卡避免数据断流。由于有些网络安全设备的网卡可能不支持Bypass功能,若更换网卡,实现成本又较高,此时可通过软件的方式实现网卡的Bypass功能,例如网卡A接收的数据通过操作***转发给网卡B发送出去,即网卡A接收的数据先从网卡A拷贝到操作***的内核(Kernel)空间,再从操作***的内核空间拷贝到操作***的用户空间,在操作***的用户空间经过应用程序交换后从操作***的用户空间发回操作***的内核空间,然后通过网卡B发送出去,但是数据需要经过两次拷贝(网卡到内核空间,内核空间到用户空间),导致数据转发效率较低,或者网卡A接收的数据通过数据平面开发套件(Data Plane Development Kit,DPDK)转发给网卡B发送出去,虽然数据只经过一次拷贝(网卡到用户空间),但是需要对用户应用程序进行改动,导致实现成本较高。由此可见,现有技术在通过软件的方式实现网卡的Bypass功能时存在要么数据需要经过两次拷贝,导致数据转发效率较低,要么数据虽然只经过一次拷贝,但是需要对用户程序进行改动,导致实现成本较高的问题。
鉴于此,本申请实施例提供一种数据转发方法,该方法可以先修改网络安全设备的网卡驱动,其中,修改为禁用网卡驱动的中断和发送函数,基于修改后的网卡驱动,在操作***的内核空间为网络安全设备的每个网卡创建DMA内存队列和对应的Buffer内存队列,其中,DMA内存队列中的DMA内存与对应的Buffer内存队列中的Buffer内存一一对应,DMA内存队列包括接收DMA内存队列和发送DMA内存队列,将第一网卡接收到的待转发数据写入第一DMA内存对应的Buffer内存,其中,第一DMA内存为第一网卡的接收DMA内存队列中标识为空闲的任一DMA内存,将第一DMA内存对应的Buffer内存与第二DMA内存对应的Buffer内存进行交换,其中,第二DMA内存为第二网卡的发送DMA内存队列中标识为空闲的任一DMA内存,第二网卡为在网卡映射表中与第一网卡对应的网卡,将第二DMA内存对应的Buffer内存中的待转发数据写入第二网卡,以使第二网卡发送待转发数据。通过禁用网卡驱动的中断和发送函数,使得通过软件的方式实现网卡的Bypass功能避免数据断流时,只有一个***在处理网卡的数据,进而避免产生脏数据,并在将第一网卡接收到的待转发数据写入第一DMA内存对应的Buffer内存之后,交换第一DMA内存对应的Buffer内存和第二DMA内存对应的Buffer内存,待转发数据直接从第一网卡的接收DMA内存队列被交换到第二网卡的发送DMA内存队列,不仅减少需拷贝的数据,而且使得第一网卡接收的数据通过操作***的内核转发给第二网卡发送出去时,数据只需要经过网卡到内核空间这一次拷贝,进而提高数据转发效率,降低实现成本。
为了更好的理解上述技术方案,下面通过说明书附图以及具体实施例对本申请技术方案做详细的说明,应当理解本申请实施例以及实施例中的具体特征是对本申请技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本申请实施例以及实施例中的技术特征可以相互组合。
图1为本申请实施例所提供方法可适用的一种数据转发***的结构示意图,当然本申请实施例所提供的方法可以适用到多种数据转发***上,应当理解图1所示的数据转发***是对可适用本申请实施例所提供方法的数据转发***的简单说明,而不是对可适用本申请实施例所提供方法的数据转发***的限定。
图1所示的数据转发***包括网络安全设备101和操作***102。其中,网络安全设备101包括第一网卡1011和第二网卡1012,操作***102的内存空间包括内核空间(KernelSpace)和用户空间(User Space),例如Linux操作***,它的虚拟地址空间为4G(即2的32次方)字节,其中,最高的1G字节(从虚拟地址0xC0000000到虚拟地址0xFFFFFFFF)由内核使用,称为内核空间,而较低的3G字节(从虚拟地址0x00000000到虚拟地址0xBFFFFFFF)由各个进程使用,称为用户空间。
需要说明的是,在本申请实施例中,网络安全设备101可以包括一个网卡,也可以包括多个网卡,图1仅是示例性的绘制两个网卡,本申请实施例并不限定网络安全设备101包括的网卡的数量。
请参见图2a,为本申请实施例提供的一种数据转发方法的流程示意图,该方法可以由前述图1所示的数据转发***执行。该方法的具体流程描述如下。
步骤201:修改网络安全设备的网卡驱动。
在本申请实施例中,可以确定网络安全设备是否处于预设状态,其中,预设状态指示网络安全设备进行软件升级或出现逻辑异常,若确定网络安全设备处于预设状态,则确定网络安全设备可能出现数据断流,修改网络安全设备的网卡驱动,其中,修改为禁用网卡驱动的中断和发送函数,使得通过软件的方式实现网卡的Bypass功能来避免数据断流时,只有一个***在处理网卡的数据,进而避免产生脏数据。
步骤202:基于修改后的网卡驱动,在操作***的内核空间为网络安全设备的每个网卡创建直接存储器访问((Direct Memory Access,DMA)内存队列和对应的缓冲(Buffer)内存队列。
在本申请实施例中,在修改网络安全设备的网卡驱动之后,可以基于修改后的网卡驱动,在操作***的内核空间为网络安全设备的每个网卡创建DMA内存队列和对应的Buffer内存队列,其中,DMA内存队列中的DMA内存与对应的Buffer内存队列中的Buffer内存一一对应,DMA内存队列包括接收DMA内存队列和发送DMA内存队列
需要说明的是,在本申请实施例中,网络安全设备的每个网卡支持DMA功能,其中,DMA功能用于将网卡的数据拷贝到操作***的内核空间,以及将操作***的内核空间的数据拷贝到网卡。
示例性的,如图2b所示,为本申请实施例提供的一种数据转发的示意图。图2b中的网络安全设备101包括第一网卡1011和第二网卡1012,其中,第一网卡1011和第二网卡1012为以太网卡,包括开放式***互联(Open System Interconnection,OSI)模型的两个层:物理层和数据链路层,物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等,并向数据链路层设备提供标准接口,物理层的芯片简称为PHY,数据链路层则提供寻址机构、数据帧的构建、数据差错检查、传送控制、向网络层提供标准的数据接口等功能,数据链路层的芯片简称为MAC,第一网卡1011和第二网卡1012接收(Receive,Rx)数据和发送(Transport,Tx)数据都遵循先进先出(First Input FirstOutput,FIFO)原则。
基于网络安全设备101的修改后的网卡驱动,在操作***102的内核空间为第一网卡1011创建接收DMA内存队列(Rx_DMA_Que_1011)和对应的Buffer内存队列(Rx_Buffer_Que_1011),发送DMA内存队列(Tx_DMA_Que_1011)和对应的Buffer内存队列(Tx_Buffer_Que_1011),为第二网卡1012创建接收DMA内存队列(Rx_DMA_Que_1012)和对应的Buffer内存队列(Rx_Buffer_Que_1012),发送DMA内存队列(Tx_DMA_Que_1012)和对应的Buffer内存队列(Tx_Buffer_Que_1012)。
其中,DMA内存队列中的DMA内存与对应的Buffer内存队列中的Buffer内存一一对应,标识为空闲(Empty)的DMA内存对应的Buffer内存未被写入数据,标识为非空闲(Used)的DMA内存对应的Buffer内存已被写入数据,例如,Rx_DMA_Que_1011中有三个DMA内存,Rx_DMA_Que_1011对应的Rx_Buffer_Que_1011中也有三个Buffer内存,且三个DMA内存与三个Buffer内存一一对应,即一个DMA内存相当于一个数据结构,存在一个变量指针,指向用于存储数据的Buffer内存,使得网卡的DMA功能可基于DMA内存中的部分子字段来读写内存,将网卡的数据拷贝到标识为Empty的DMA内存对应的Buffer内存中,或者将标识为Used的DMA内存对应的Buffer内存中的数据拷贝到网卡。
步骤203:将第一网卡接收到的待转发数据写入第一DMA内存对应的Buffer内存。
在本申请实施例中,在基于修改后的网卡驱动,在操作***的内核空间为网络安全设备的每个网卡创建DMA内存队列和对应的Buffer内存队列之后,可以将第一网卡接收到的待转发数据写入第一DMA内存对应的Buffer内存,其中,第一网卡为网络安全设备的任一网卡,第一DMA内存为第一网卡的接收DMA内存队列中标识为Empty的任一DMA内存。
需要说明的是,在本申请实施例中,在将第一网卡接收到的待转发数据写入第一DMA内存对应的Buffer内存之后,可以将第一DMA内存的标识由Empty修改为Used,从而表明第一DMA内存对应的Buffer内存已被写入数据。
示例性的,如图2b所示,利用第一网卡1011的DMA功能,将第一网卡1011接收到的待转发数据拷贝到操作***102的内核空间中为第一网卡1011创建的Rx_DMA_Que_1011中标识为Empty的任一DMA内存之后,将该DMA内存的标识由Empty修改为Used。
步骤204:将第一DMA内存对应的Buffer内存与第二DMA内存对应的Buffer内存进行交换。
在本申请实施例中,在将第一网卡接收到的待转发数据写入第一DMA内存对应的Buffer内存之后,可以将第一DMA内存对应的Buffer内存与第二DMA内存对应的Buffer内存进行交换,其中,第二DMA内存为第二网卡的发送DMA内存队列中标识为Empty的任一DMA内存,第二网卡为在网卡映射表中与第一网卡对应的网卡。例如,第一DMA内存对应第一Buffer内存,第二DMA内存对应第二Buffer内存,交换后第一DMA内存将对应第二Buffer内存,第二DMA内存将对应第一Buffer内存,使得待转发数据直接从第一网卡的接收DMA内存队列被拷贝到第二网卡的发送DMA内存队列,减少需拷贝的数据。
需要说明的是,在本申请实施例中,在将第一DMA内存对应的Buffer内存与第二DMA内存对应的Buffer内存进行交换之后,可以将第一DMA内存的标识由Used修改为Empty,第二DMA内存的标识由Empty修改为Used,从而表明第一DMA内存对应的Buffer内存未被写入数据,第二DMA内存对应的Buffer内存已被写入数据。
步骤205:将第二DMA内存对应的Buffer内存中的待转发数据写入第二网卡,以使第二网卡发送待转发数据。
在本申请实施例中,在将第一DMA内存对应的Buffer内存与第二DMA内存对应的Buffer内存进行交换之后,可以将第二DMA内存对应的Buffer内存中的待转发数据写入第二网卡,以使第二网卡发送待转发数据,使得第一网卡接收的数据通过操作***转发给第二网卡发送出去时,数据只需要经过网卡到内核空间这一次拷贝,进而提高数据转发效率,降低实现成本。
需要说明的是,在本申请实施例中,在将第二DMA内存对应的Buffer内存中的待转发数据写入第二网卡之后,可以将第二DMA内存的标识由Used修改为Empty,从而表明第二DMA内存对应的Buffer内存未被写入数据。
基于同一发明构思,本申请实施例还提供一种数据转发装置,该数据转发装置可以应用于前述图1所示的数据转发***。该数据转发装置可以实现前述的数据转发方法对应的功能。该数据转发装置可以是硬件结构、软件模块、或硬件结构加软件模块。该数据转发装置可以由芯片***实现,芯片***可以由芯片构成,也可以包含芯片和其他分立器件。请参见图3,为本申请实施例提供的一种数据转发装置的结构示意图,该数据转发装置包括第一修改模块301、创建模块302、第一写入模块303、交换模块304以及第二写入模块305。
第一修改模块,用于修改网络安全设备的网卡驱动;其中,所述修改为禁用所述网卡驱动的中断和发送函数;
创建模块,用于基于所述修改后的网卡驱动,在操作***的内核空间为所述网络安全设备的每个网卡创建直接存储器访问DMA内存队列和对应的缓冲Buffer内存队列;其中,所述DMA内存队列中的DMA内存与对应的所述Buffer内存队列中的Buffer内存一一对应,所述DMA内存队列包括接收DMA内存队列和发送DMA内存队列;
第一写入模块,用于将第一网卡接收到的待转发数据写入第一DMA内存对应的Buffer内存;其中,所述第一DMA内存为所述第一网卡的所述接收DMA内存队列中标识为空闲的任一DMA内存;
交换模块,用于将所述第一DMA内存对应的Buffer内存与第二DMA内存对应的Buffer内存进行交换;其中,所述第二DMA内存为第二网卡的所述发送DMA内存队列中标识为空闲的任一DMA内存,所述第二网卡为在网卡映射表中与所述第一网卡对应的网卡;
第二写入模块,用于将所述第二DMA内存对应的Buffer内存中的所述待转发数据写入所述第二网卡,以使所述第二网卡发送所述待转发数据。
一种可选实施方式中,所述修改模块301,具体用于:
确定所述网络安全设备是否处于预设状态;其中,所述预设状态指示所述网络安全设备进行软件升级或出现逻辑异常;
若确定所述网络安全设备处于所述预设状态,则修改所述网络安全设备的网卡驱动。
一种可选实施方式中,所述网络安全设备的每个网卡支持DMA功能;其中,所述DMA功能用于将网卡的数据拷贝到所述内核空间,以及将所述内核空间的数据拷贝到所述网卡。
一种可选实施方式中,所述装置还包括第二修改模块,用于:
在将第一网卡接收到的待转发数据写入第一DMA内存对应的Buffer内存之后,将所述第一DMA内存的标识由空闲修改为非空闲;
在将所述第一DMA内存对应的Buffer内存与第二DMA内存对应的Buffer内存进行交换之后,将所述第一DMA内存的标识由非空闲修改为空闲,所述第二DMA内存的标识由空闲修改为非空闲。
基于同一发明构思,本申请实施例还提供一种数据转发***,请参见图4,为本申请实施例提供的一种数据转发***的结构示意图,该数据转发***包括至少一个处理器402,以及与至少一个处理器连接的存储器401,本申请实施例中不限定处理器402与存储器401之间的具体连接介质,图4是以处理器402和存储器401之间通过总线400连接为例,总线400在图4中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不以此为限。总线400可以分为地址总线、数据总线、控制总线等,为便于表示,图4中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
在本申请实施例中,存储器401存储有可被至少一个处理器402执行的指令,至少一个处理器402通过调用存储器401存储的指令,可以执行前述的数据转发方法中所包括的步骤。其中,处理器402是数据转发***的控制中心,可以利用各种接口和线路连接整个数据转发***的各个部分,通过执行存储在存储器401内的指令,从而实现数据转发***的各种功能。可选的,处理器402可包括一个或多个处理单元,处理器402可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作***、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器402中。在一些实施例中,处理器402和存储器401可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
存储器401作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器401可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(Random AccessMemory,RAM)、静态随机访问存储器(Static Random Access Memory,SRAM)、可编程只读存储器(Programmable Read Only Memory,PROM)、只读存储器(Read Only Memory,ROM)、带电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性存储器、磁盘、光盘等等。存储器401是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器401还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
在本申请实施例中,处理器402可以是通用处理器,例如中央处理器(CPU)、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的数据转发方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
通过对处理器402进行设计编程,可以将前述实施例中介绍的数据转发方法所对应的代码固化到芯片内,从而使芯片在运行时能够执行前述的数据转发方法的步骤,如何对处理器402进行设计编程为本领域技术人员所公知的技术,这里不再赘述。
基于同一发明构思,本申请实施例还提供一种存储介质,该存储介质存储有计算机指令,当该计算机指令在计算机上运行时,使得计算机执行如前述的数据转发方法的步骤。
在一些可能的实施方式中,本申请提供的数据转发方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在数据转发***上运行时,程序代码用于使该数据转发***执行本说明书上述描述的根据本申请各种示例性实施方式的数据转发方法中的步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (10)

1.一种数据转发方法,其特征在于,包括:
修改网络安全设备的网卡驱动;其中,所述修改为禁用所述网卡驱动的中断和发送函数;
基于所述修改后的网卡驱动,在操作***的内核空间为所述网络安全设备的每个网卡创建直接存储器访问DMA内存队列和对应的缓冲Buffer内存队列;其中,所述DMA内存队列中的DMA内存与对应的所述Buffer内存队列中的Buffer内存一一对应,所述DMA内存队列包括接收DMA内存队列和发送DMA内存队列;
将第一网卡接收到的待转发数据写入第一DMA内存对应的Buffer内存;其中,所述第一DMA内存为所述第一网卡的所述接收DMA内存队列中标识为空闲的任一DMA内存;
将所述第一DMA内存对应的Buffer内存与第二DMA内存对应的Buffer内存进行交换;其中,所述第二DMA内存为第二网卡的所述发送DMA内存队列中标识为空闲的任一DMA内存,所述第二网卡为在网卡映射表中与所述第一网卡对应的网卡;
将所述第二DMA内存对应的Buffer内存中的所述待转发数据写入所述第二网卡,以使所述第二网卡发送所述待转发数据。
2.如权利要求1所述的方法,其特征在于,所述修改网络安全设备的网卡驱动,包括:
确定所述网络安全设备是否处于预设状态;其中,所述预设状态指示所述网络安全设备进行软件升级或出现逻辑异常;
若确定所述网络安全设备处于所述预设状态,则修改所述网络安全设备的网卡驱动。
3.如权利要求1所述的方法,其特征在于,所述网络安全设备的每个网卡支持DMA功能;其中,所述DMA功能用于将网卡的数据拷贝到所述内核空间,以及将所述内核空间的数据拷贝到所述网卡。
4.如权利要求1-3任一所述的方法,其特征在于,还包括:
在将第一网卡接收到的待转发数据写入第一DMA内存对应的Buffer内存之后,将所述第一DMA内存的标识由空闲修改为非空闲;
在将所述第一DMA内存对应的Buffer内存与第二DMA内存对应的Buffer内存进行交换之后,将所述第一DMA内存的标识由非空闲修改为空闲,所述第二DMA内存的标识由空闲修改为非空闲。
5.一种数据转发装置,其特征在于,包括:
第一修改模块,用于修改网络安全设备的网卡驱动;其中,所述修改为禁用所述网卡驱动的中断和发送函数;
创建模块,用于基于所述修改后的网卡驱动,在操作***的内核空间为所述网络安全设备的每个网卡创建直接存储器访问DMA内存队列和对应的缓冲Buffer内存队列;其中,所述DMA内存队列中的DMA内存与对应的所述Buffer内存队列中的Buffer内存一一对应,所述DMA内存队列包括接收DMA内存队列和发送DMA内存队列;
第一写入模块,用于将第一网卡接收到的待转发数据写入第一DMA内存对应的Buffer内存;其中,所述第一DMA内存为所述第一网卡的所述接收DMA内存队列中标识为空闲的任一DMA内存;
交换模块,用于将所述第一DMA内存对应的Buffer内存与第二DMA内存对应的Buffer内存进行交换;其中,所述第二DMA内存为第二网卡的所述发送DMA内存队列中标识为空闲的任一DMA内存,所述第二网卡为在网卡映射表中与所述第一网卡对应的网卡;
第二写入模块,用于将所述第二DMA内存对应的Buffer内存中的所述待转发数据写入所述第二网卡,以使所述第二网卡发送所述待转发数据。
6.如权利要求5所述的装置,其特征在于,所述修改模块,具体用于:
确定所述网络安全设备是否处于预设状态;其中,所述预设状态指示所述网络安全设备进行软件升级或出现逻辑异常;
若确定所述网络安全设备处于所述预设状态,则修改所述网络安全设备的网卡驱动。
7.如权利要求5所述的装置,其特征在于,所述网络安全设备的每个网卡支持DMA功能;其中,所述DMA功能用于将网卡的数据拷贝到所述内核空间,以及将所述内核空间的数据拷贝到所述网卡。
8.如权利要求5-7任一所述的装置,其特征在于,所述装置还包括第二修改模块,用于:
在将第一网卡接收到的待转发数据写入第一DMA内存对应的Buffer内存之后,将所述第一DMA内存的标识由空闲修改为非空闲;
在将所述第一DMA内存对应的Buffer内存与第二DMA内存对应的Buffer内存进行交换之后,将所述第一DMA内存的标识由非空闲修改为空闲,所述第二DMA内存的标识由空闲修改为非空闲。
9.一种数据转发***,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序指令执行权利要求1-4任一项所述的方法包括的步骤。
10.一种存储介质,其特征在于,所述存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行权利要求1-4任一项所述的方法包括的步骤。
CN202111592643.6A 2021-12-23 2021-12-23 一种数据转发方法、装置及*** Pending CN114327882A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111592643.6A CN114327882A (zh) 2021-12-23 2021-12-23 一种数据转发方法、装置及***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111592643.6A CN114327882A (zh) 2021-12-23 2021-12-23 一种数据转发方法、装置及***

Publications (1)

Publication Number Publication Date
CN114327882A true CN114327882A (zh) 2022-04-12

Family

ID=81054933

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111592643.6A Pending CN114327882A (zh) 2021-12-23 2021-12-23 一种数据转发方法、装置及***

Country Status (1)

Country Link
CN (1) CN114327882A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115442183A (zh) * 2022-08-02 2022-12-06 天翼云科技有限公司 一种数据转发方法及装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115442183A (zh) * 2022-08-02 2022-12-06 天翼云科技有限公司 一种数据转发方法及装置
CN115442183B (zh) * 2022-08-02 2024-01-02 天翼云科技有限公司 一种数据转发方法及装置

Similar Documents

Publication Publication Date Title
CN111930676B (zh) 多处理器间的通信方法、装置、***及存储介质
EP1764703A1 (en) A system for providing access to multiple data buffers of a data retaining and processing device
CN109688058B (zh) 报文处理方法、装置及网络设备
US20050097240A1 (en) Supercharge message exchanger
JP2006502470A (ja) 複数のレジスタ・コンテキストを有するデータ処理システムおよび該システムのための方法
CN103647807A (zh) 一种信息缓存方法、装置和通信设备
US7526579B2 (en) Configurable input/output interface for an application specific product
CN103218266B (zh) 虚拟机与外部机器通信时使用的方法、设备及虚拟机***
US10936048B2 (en) System, apparatus and method for bulk register accesses in a processor
CN104598402A (zh) 一种闪存控制器和闪存控制器的控制方法
JP3943616B2 (ja) バックグランド・モードでトランスペアレント動作を有するデータ・プロセッサ
CN114168271B (zh) 一种任务调度方法、电子设备及存储介质
US8751703B2 (en) Interrupt event management
CN114327882A (zh) 一种数据转发方法、装置及***
CN117311817B (zh) 一种协处理器控制方法、装置、设备及存储介质
CN110659143B (zh) 一种容器间的通讯方法、装置及电子设备
JPH11272603A (ja) バスブリッジ装置及びトランザクションフォワード方法
KR20170117326A (ko) 랜덤 액세스 메모리를 포함하는 하나 이상의 처리 유닛을 위한 직접 메모리 액세스 제어 장치
US10803007B1 (en) Reconfigurable instruction
US20220156211A1 (en) Dynamic provisioning of pcie devices at run time for bare metal servers
WO2010050957A1 (en) Bit inversion for communication interface
CN114186517A (zh) 一种面向嵌入式场景的可定制化risc-v架构处理器设计方法
US8990436B2 (en) Method for handling access transactions and related system
US8966149B2 (en) Emulation of an input/output advanced programmable interrupt controller
KR20100087294A (ko) 간접 액세스가능 메모리를 구비한 컨트롤러

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