CN105183373B - 一种数据处理方法及网络设备 - Google Patents
一种数据处理方法及网络设备 Download PDFInfo
- Publication number
- CN105183373B CN105183373B CN201510541484.5A CN201510541484A CN105183373B CN 105183373 B CN105183373 B CN 105183373B CN 201510541484 A CN201510541484 A CN 201510541484A CN 105183373 B CN105183373 B CN 105183373B
- Authority
- CN
- China
- Prior art keywords
- buffer
- software
- pointer
- hardware
- address
- 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
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明实施例提供一种数据处理方法及网络设备,涉及通信技术领域,能够解决现有技术中由于需要将硬件buffer中的数据拷贝到软件buffer的数据区以供上层应用模块进行数据处理,从而导致的系统运行效率低的问题。具体方案为:网络设备从物理接口接收到待处理数据后,获取指向空闲硬件buffer的第一指针,第一指针指向的地址为硬件buffer的起始地址,根据第一指针将待处理数据存储至硬件buffer,根据第一指针获取第二指针,第二指针指向的地址为与硬件buffer对应的软件buffer的起始地址,软件buffer的数据区与硬件buffer对应同一块内存区域,将第二指针指向的软件buffer交由上层应用模块进行数据处理。本发明实施例用于数据处理。
Description
技术领域
本发明实施例涉及通信技术领域,尤其涉及一种数据处理方法及网络设备。
背景技术
随着现代通信网络的飞速发展,人们对网络设备提出了更高的要求,不仅需要保证数据的可靠性和安全性,还要求更加高速的数据处理能力。路由器、交换机、防火墙等网络设备通常通过软件管理内存例如通过软件申请或释放的软件缓冲区buffer,对接收的数据进行处理。高速数据处理能力的要求使得网络设备的数据处理方式扩展为通过硬件管理的内存进行数据处理。
现有技术中,网络设备从外部设备接收到数据后,通过硬件申请硬件buffer,并通过直接内存存取(Direct Memory Access,DMA)方式将数据存储至硬件buffer对应的内存区域中,该存储过程无需中央处理器(Central Processing Unit,CPU)和软件的参与,仅通过网络设备的硬件部分进行操作。在硬件buffer获取到该数据后,网络设备可以将硬件buffer中的数据拷贝到软件buffer的数据区,从而由硬件buffer转换成软件buffer以使得上层应用模块可以通过软件buffer进行数据处理,并将硬件buffer释放回硬件buffer管理单元。其中的软件buffer满足上层应用模块进行数据处理时需要的数据结构,例如,linux系统中需要的sk_buff结构的软件buffer,vxwork系统中需要的m_blk结构的软件buffer等。在上层应用模块完成数据处理或数据转发后,将软件buffer释放回软件buffer池。上述过程可以正确地将硬件buffer释放回硬件buffer管理单元并将软件buffer释放回软件buffer池,从而可以避免软件buffer和硬件buffer的错误释放。
但是,上述过程将硬件buffer中的数据拷贝到软件buffer的数据区的拷贝动作,增加了网络设备进行数据处理的时间,并且过多地消耗了系统资源,从而降低了系统的运行效率。
发明内容
本发明实施例提供一种数据处理方法及网络设备,能够解决现有技术中由于需要将硬件buffer中的数据拷贝到软件buffer的数据区以供上层应用模块进行处理,从而导致的系统运行效率低的问题。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,提供一种数据处理方法,包括:
A、从物理接口接收到待处理数据后,获取指向空闲硬件buffer的第一指针,所述第一指针指向的地址为所述硬件buffer的起始地址;
B、根据所述第一指针将待处理数据存储至所述硬件buffer;
C、根据所述第一指针获取第二指针,所述第二指针指向的地址为与所述硬件buffer对应的软件buffer的起始地址,所述软件buffer的数据区与所述硬件buffer对应同一块内存区域;
D、将所述第二指针指向的所述软件buffer交由上层应用模块进行数据处理。
结合第一方面,在第一方面的第一种可能的实现方式中,在步骤A之前,所述方法还包括初始化步骤:
在所述软件buffer中存放指向该软件buffer起始地址的第二指针,所述第二指针的起始存放地址与所述第一指针指向的地址间隔预设字节数。
结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,步骤C中,所述根据所述第一指针获取所述第二指针包括:
根据预设字节数,将所述第一指针指向的地址进行偏移计算,从计算出的地址中获取存放的软件buffer的起始地址。
结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第三种可能的实现方式中,所述方法还包括如下步骤:
E、若确定不需要将上层应用模块处理后的数据进行转发,则将所述软件buffer释放至软件buffer池,并按照一定的周期时间将所述软件buffer池中的所有软件buffer的数据区作为空闲硬件buffer进行管理;
若确定需要将上层应用模块处理后的数据进行转发,则在将上层应用模块处理后的数据发送完成后,若确定待释放buffer为与硬件buffer对应的软件buffer,则将所述待释放软件buffer的数据区作为空闲硬件buffer进行管理。
结合第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,步骤E中,所述确定待释放buffer为与硬件buffer对应的软件buffer包括:
判断所述软件buffer中存放的硬件buffer标识符与预设标识符一致,和/或所述软件buffer起始地址的起始存放地址与其数据区的起始地址间隔的字节数与预设字节数一致,则确定所述待释放软件buffer为与硬件buffer对应的软件buffer。
第二方面,提供一种网络设备,包括:
硬件buffer管理单元,用于根据buffer处理单元的申请,向buffer处理单元分配指向空闲硬件buffer的第一指针,所述第一指针指向的地址为所述硬件buffer的起始地址;
buffer处理单元,用于从物理接口接收待处理数据,并将所述待处理数据存储至所述第一指针指向的硬件buffer;并用于根据所述第一指针获取第二指针,所述第二指针指向的地址为与所述硬件buffer对应的软件buffer的起始地址,所述软件buffer的数据区与所述硬件buffer对应同一块内存区域;并将所述第二指针指向的所述软件buffer交由上层应用模块进行数据处理。
结合第二方面,在第二方面的第一种可能的实现方式中,所述网络设备还包括:
初始化单元,用于在软件buffer中存放指向该软件buffer起始地址的第二指针,所述第二指针的起始存放地址与所述第一指针指向的地址间隔预设字节数。
结合第二方面或第二方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述buffer处理单元还用于:
根据预设字节数,将所述第一指针指向的地址进行偏移计算,从计算出的地址中获取存放的软件buffer的起始地址。
结合第二方面或第二方面的第一种可能的实现方式,在第一方面的第三种可能的实现方式中,所述buffer处理单元还用于:
若确定不需要将上层应用模块处理后的数据进行转发,则将所述软件buffer释放至软件buffer池,并按照一定的周期时间将所述软件buffer池中的所有软件buffer的数据区批量释放至硬件buffer管理单元;
若确定需要将上层应用模块处理后的数据进行转发,则在将上层应用模块处理后的数据发送完成后,若确定待释放buffer为与硬件buffer对应的软件buffer,则将所述待释放软件buffer的数据区释放至硬件buffer管理单元。
结合第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,所述buffer处理单元还用于:
判断所述软件buffer中存放的硬件buffer标识符与预设标识符一致,和/或所述软件buffer起始地址的起始存放地址与其数据区的起始地址间隔的字节数与预设字节数一致,则确定所述待释放软件buffer为与硬件buffer对应的软件buffer,则将所述待释放软件buffer的数据区释放至硬件buffer管理单元。
本发明实施例提供一种数据处理方法及网络设备,由于硬件buffer与对应的软件buffer的数据区对应同一块内存区域,因而当网络设备根据指向硬件buffer起始地址的第一指针将待处理数据存储至硬件buffer时,相当于同时将待处理数据存储至硬件buffer对应的软件buffer的数据区,从而在网络设备根据第一指针获取到指向软件buffer起始地址的第二指针后,可以将第二指针指向的软件buffer交由上层应用模块进行数据处理,从而可以避免将待处理数据从硬件buffer拷贝到软件buffer的数据区,因此,能够解决现有技术中由于需要将硬件buffer中的数据拷贝到软件buffer的数据区以供上层应用模块进行数据处理,从而导致的系统运行效率低的问题。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种数据处理方法流程图;
图2为本发明另一实施例提供的一种数据处理方法流程图;
图3为本发明实施例提供的另一种数据处理方法流程图;
图4为本发明实施例提供的一种软件buffer的结构示意图;
图5为本发明另一实施例提供的一种网络设备结构示意图;
图6为本发明另一实施例提供的一种网络设备结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明以下实施例中的硬件buffer及其对应的软件buffer的数据区共用一块内存区域,当路由器等网络设备将待处理数据存储至硬件buffer时,同时也将待处理数据存储到了硬件buffer对应的软件buffer的数据区,从而可以避免现有技术中的拷贝动作,节省资源开销,提高系统运行效率。
实施例1
本发明实施例提供一种数据处理方法,参见图1,该方法可以包括:
101、网络设备从物理接口接收到待处理数据后,获取指向空闲硬件buffer的第一指针,第一指针指向的地址为硬件buffer的起始地址。
其中,网络设备可以为路由器、交换机、防火墙等通信网络中的各种设备。当代数字通信网络通常以数据包的形式进行数据交互,网络设备通过物理接口从通信网络中的其它外部设备接收到的待处理数据也为数据包的形式。网络设备从物理接口接收到待处理数据后,可以获取指向空闲硬件buffer起始地址的第一指针,以便于根据第一指针将待处理数据存储至硬件buffer。
在网络设备中,指向硬件buffer起始地址的第一指针可以由硬件buffer管理单元(例如硬件加速单元)进行分配和回收管理,硬件buffer管理单元属于网络设备的硬件部分。网络设备从物理接口接收到待处理数据后,可以从硬件buffer管理单元获取指向硬件buffer起始地址的第一指针。
102、网络设备根据第一指针将待处理数据存储至硬件buffer。
在获取到指向硬件buffer起始地址的第一指针后,网络设备可以根据第一指针将待处理数据存储至硬件buffer。其中,网络设备根据第一指针将待处理数据存储至硬件buffer的过程是通过网络设备的硬件部分完成的,不需要CPU和软件的参与。而通过硬件部分将数据存储至硬件buffer的处理速度比通过CPU和软件将数据存储至软件buffer的处理速度快。
103、网络设备根据第一指针获取第二指针,第二指针指向的地址为与硬件buffer对应的软件buffer的起始地址,软件buffer的数据区与硬件buffer对应同一块内存区域。
其中,与硬件buffer对应的软件buffer满足上层应用模块进行数据处理时需要的数据结构,软件buffer和硬件buffer的对应关系在初始化时就已配置完成,硬件buffer及其对应的软件buffer的数据区对应同一块内存区域,即将软件buffer的数据区交给硬件来管理。
由于硬件buffer及其对应的软件buffer的数据区共用一块内存区域,因而指向硬件buffer起始地址的第一指针,也指向与硬件buffer对应的软件buffer的数据区的起始地址。当网络设备将待处理数据存储至硬件buffer时,实际上是将待处理数据存储到与硬件buffer对应的软件buffer的数据区,从而避免了现有技术中将硬件buffer中存储的待处理数据拷贝至软件buffer的数据区的拷贝动作,节省了网络设备进行数据处理的时间,降低了系统资源的消耗,提高了系统运行效率。
在将待处理数据存储至硬件buffer后,网络设备可以根据第一指针获取指向硬件buffer对应的软件buffer的起始地址的第二指针。第一指针指向的地址与第二指针的关系可以在初始化时在软件buffer中进行设置。
104、网络设备将第二指针指向的软件buffer交由上层应用模块进行数据处理。
网络设备在根据第一指针获取到指向与硬件buffer对应的软件buffer的起始地址的第二指针后,由于软件buffer的数据区已经存储有待处理数据,且软件buffer的结构满足上层应用模块进行数据处理的要求,因而可以将第二指针指向的软件buffer交由上层应用模块进行数据处理。
可选地,在步骤101之前,本发明实施例提供的方法还可以包括初始化步骤:
网络设备在软件buffer中存放指向该软件buffer起始地址的第二指针,第二指针的起始存放地址与第一指针指向的地址间隔预设字节数。
可选地,在步骤103中,网络设备根据第一指针获取第二指针可以包括:
网络设备根据预设字节数,将第一指针指向的地址进行偏移计算,从计算出的地址中获取存放的软件buffer的起始地址。
可选地,在步骤104之后,本发明实施例提供的方法还可以包括:
105、若确定不需要将上层应用模块处理后的数据进行转发,则网络设备将软件buffer释放至软件buffer池,并按照一定的周期时间将软件buffer池中的所有软件buffer的数据区作为空闲硬件buffer进行管理;若确定需要将上层应用模块处理后的数据进行转发,则网络设备在将上层应用模块处理后的数据发送完成后,若确定待释放buffer为与硬件buffer对应的软件buffer,则将待释放软件buffer的数据区作为空闲硬件buffer进行管理。
可选地,在步骤105中,网络设备确定待释放buffer为与硬件buffer对应的软件buffer可以包括:
判断软件buffer中存放的硬件buffer标识符与预设标识符一致,和/或软件buffer起始地址的起始存放地址与其数据区的起始地址间隔的字节数与预设字节数一致,则网络设备确定待释放软件buffer为与硬件buffer对应的软件buffer。
本发明实施例提供一种数据处理方法,由于硬件buffer与对应的软件buffer的数据区对应同一块内存区域,因而当网络设备根据指向硬件buffer起始地址的第一指针将待处理数据存储至硬件buffer时,相当于同时将待处理数据存储至硬件buffer对应的软件buffer的数据区,从而在网络设备根据第一指针获取到指向软件buffer起始地址的第二指针后,可以将第二指针指向的软件buffer交由上层应用模块进行数据处理,从而可以避免将待处理数据从硬件buffer拷贝到软件buffer的数据区,因此,能够解决现有技术中由于需要将硬件buffer中的数据拷贝到软件buffer的数据区以供上层应用模块进行数据处理,从而导致的系统运行效率低的问题。
实施例2
本发明实施例提供一种数据处理方法,其方法流程图可以参见图2和图3,可以包括:
201、网络设备在软件buffer中存放指向该软件buffer起始地址的第二指针,第二指针的起始存放地址与第一指针指向的地址间隔预设字节数。
在本发明实施例中,网络设备可以通过初始化步骤在软件buffer中存放指向该软件buffer起始地址的第二指针,第二指针的起始存放地址与第一指针指向的地址间隔预设字节数。其中,存放第二指针的第二内存区域与作为数据区的第一内存区域为前后相对位置,第二指针占用的内存空间大小以及预设字节数的大小,均可以根据实际需要进行设置。
示例性的,本发明实施例提供的一种与硬件buffer对应的软件buffer的结构示意图可以参见图4。在图4中,软件buffer中第二内存区域与第一内存区域相邻,且第二内存区域位于第一内存区域之前,第二内存区域的大小可以为8个字节,此时间隔的预设字节数即为8。当然,若网络设备的操作系统为32位系统,则第二内存区域的大小为4个字节,此时间隔的预设字节数即为4。当然,如果第二指针的保存地址与数据区不相邻时,其间隔的预设字节数肯定是大于第二内存区域的空间大小的。图4中的软件buffer还可以包括位于头部的缓冲区描述字段即buf_info字段,可以用来存放上层应用模块进行数据处理时添加的相关信息(例如协议信息)。
202、网络设备从物理接口接收到待处理数据后,获取指向空闲硬件buffer的第一指针,第一指针指向的地址为硬件buffer的起始地址。
在网络设备通过物理接口接收到待处理数据后,参见图3中的步骤a,待处理数据可以通过内部总线到达网络设备内部的硬件buffer处理单元;参见图3中的步骤b,网络设备可以通过硬件buffer处理单元向硬件buffer管理单元申请硬件buffer,并获取硬件buffer管理单元分配的指向硬件buffer起始地址的第一指针。其中,硬件buffer处理单元和硬件buffer管理单元是网络设备的硬件部分。
203、网络设备根据第一指针将待处理数据存储至硬件buffer。
在获取第一指针后,参见图3中的步骤c,网络设备的硬件buffer处理单元根据第一指针将待处理数据通过DMA方式存储至硬件buffer。将待处理数据通过DMA方式存储至硬件buffer,可以通过网络设备的硬件直接进行操作,而不需要CPU和软件的参与。在通过物理接口从外部设备接收到待处理数据后,为了达到更加高效的接收效率,网络设备可以通过硬件buffer处理单元、硬件buffer管理单元以及硬件buffer获取待处理数据,即可以通过硬件管理的内存获取待处理数据(不需要CPU和软件的参与),而通过软件管理的内存例如软件buffer获取待处理数据(需要CPU和软件的参与),则会使得网络设备的数据接收效率较低。
另外,图3中的虚线1和虚线2可以表示硬件buffer管理单元管理的硬件buffer和软件buffer池中的软件buffer均是网络设备的内存区域的一部分。
204、网络设备根据预设字节数,将第一指针指向的地址进行偏移计算,从计算出的地址中获取存放的软件buffer的起始地址,软件buffer的数据区与硬件buffer对应同一块内存区域。
其中,与硬件buffer对应的软件buffer满足上层应用模块进行数据处理时需要的数据结构,并且硬件buffer与软件buffer的数据区对应同一块内存区域,即软件buffer的数据区与硬件buffer共用第一内存区域。由于软件buffer的数据区与硬件buffer共用第一内存区域,因而第一指针指向硬件buffer的起始地址,同时指向第一内存区域的起始地址,还指向软件buffer的数据区的起始地址。网络设备可以将第一指针指向的地址偏移预设字节数,即将第一指针指向的软件buffer的数据区的起始地址偏移预设字节数,并从计算出的地址中获取存放的与硬件buffer对应的软件buffer的起始地址。其中,从计算出的地址中获取的软件buffer的起始地址即为第二指针指向的地址。
以图4所示结构的软件buffer为例,当网络设备具有32位的操作系统时,可以将第一指针指向的地址向前偏移4个字节,从而计算出存放软件buffer起始地址的第二内存区域的起始地址,并从第二内存区域的起始地址开始读取4个字节(与第二内存区域的大小相一致)的内容,该4个字节的内容即为第二指针指向的软件buffer的起始地址。
在本发明实施例中,由于硬件buffer及其对应的软件buffer的数据区对应相同的第一内存区域,即硬件buffer对应的第一内存区域即为软件buffer的数据区,因而将待处理数据存储至硬件buffer即第一内存区域之后,相当于同时将待处理数据存储至软件buffer的数据区,从而避免了现有技术中将硬件buffer中存储的待处理数据拷贝至软件buffer的数据区的拷贝动作,节省了网络设备进行数据处理的时间,降低了系统资源的消耗,提高了系统运行效率。
205、网络设备将第二指针指向的软件buffer交由上层应用模块进行数据处理。
网络设备在根据第一指针获取到指向与硬件buffer对应的软件buffer的起始地址的第二指针后,由于软件buffer的数据区已经存储有待处理数据,且软件buffer的结构满足上层应用模块进行数据处理的要求,因而可以将第二指针指向的软件buffer交由上层应用模块进行数据处理。
206、网络设备确定是否需要将上层应用模块处理后的数据进行转发,若否,则进入步骤207;若是,则进入步骤208。
上层应用模块对第二指针指向的软件buffer中的数据进行处理后,若网络设备确定当前数据处理流程至此结束,不需要将上层应用模块处理后的数据进行转发,则进入步骤207;若网络设备确定需要将上层应用模块处理后的数据进一步发送至外部设备,则进入步骤208。
207、网络设备将软件buffer释放至软件buffer池,并按照一定的周期时间将软件buffer池中的所有软件buffer的数据区作为空闲硬件buffer进行管理。
当网络设备确定当前数据处理流程至此结束,不需要将上层应用模块处理后的数据进行转发时,待释放buffer为上层应用模块进行数据处理时使用的与硬件buffer对应的软件buffer,但由于上层应用模块并不能识别硬件buffer,并且不具有与硬件buffer管理单元的接口,因而只会将待释放buffer释放至软件buffer池,而不能直接将待释放buffer释放回硬件buffer管理单元。
在将与硬件buffer对应的软件buffer释放至软件buffer池后,参见图3中的虚线3,网络设备可以通过启用任务,按照一定的周期时间将软件buffer池中的所有软件buffer的数据区作为空闲硬件buffer进行管理,从而批量地将软件buffer池中的所有软件buffer的数据区作为空闲硬件buffer进行管理。其中,将软件buffer池中的所有软件buffer的数据区作为空闲硬件buffer进行管理,实际上是将指向硬件buffer的第一指针释放回硬件buffer管理单元进行管理。
208、在将上层应用模块处理后的数据发送完成后,若确定待释放buffer为与硬件buffer对应的软件buffer,则网络设备将待释放软件buffer的数据区作为空闲硬件buffer进行管理。
当需要将上层应用模块处理后的数据转发至外部设备时,参见图3中的步骤f,网络设备可以通过物理接口将上层应用模块处理后的数据发送至外部设备。
需要注意的是,虽然上层应用模块进行数据处理时使用的是与硬件buffer对应的软件buffer,但网络设备在进行数据发送的过程中还可能使用现有技术中其它类型的软件buffer,其它类型的软件buffer对应的内存区域与硬件buffer对应的内存区域是相互独立的,其它类型的软件buffer的数据区与硬件buffer并不对应同一内存区域。因而,网络设备在数据发送完成后,需要确定待释放的软件buffer是否为与硬件buffer对应的软件buffer,若是,则直接将待释放软件buffer的数据区作为空闲硬件buffer进行管理;若否,则采用现有技术中的buffer释放机制将待释放软件buffer释放至软件buffer池。因而,可以正确地释放与硬件buffer对应的软件buffer以及其它类型的软件buffer。
进一步地,在与硬件buffer对应的软件buffer中,还可以存放预设标识符字段,其中,预设标识符字段可以用以标识当前软件buffer为软件buffer,预设标识符的具体形式可以根据需要进行设置,例如预设标识符可以是一个具体的数值,预设标识符字段在软件buffer中的位置和大小可以根据实际情况进行设置。示例性的,预设标识符字段与第二内存区域相邻,且位于第二内存区域之前,预设标识符字段的大小可以为4字节。
在本步骤中,网络设备确定待释放buffer为与硬件buffer对应的软件buffer可以包括:
判断软件buffer中存放的硬件buffer标识符与预设标识符一致,和/或软件buffer起始地址的起始存放地址与其数据区的起始地址间隔的字节数与预设字节数一致,则网络设备确定待释放软件buffer为与硬件buffer对应的软件buffer。
其中,软件buffer中存放的硬件buffer标识符与预设标识符是否一致,和/或软件buffer起始地址的起始存放地址与其数据区的起始地址间隔的字节数与预设字节数是否一致,可以构成确定待释放软件buffer是否为与硬件buffer对应的软件buffer的严格的预判条件,根据上述严格的预判条件可以严格地确定待释放软件buffer是否为与硬件buffer对应的软件buffer。
若确定待释放软件为与硬件buffer对应的软件buffer,则参见图3中的步骤g,网络设备可以直接将待释放软件buffer的数据区作为空闲硬件buffer进行管理,即网络设备可以直接将第一指针释放回硬件buffer管理单元进行管理,以便于硬件buffer的循环使用。另外,对于待释放buffer不是软件buffer而是其它类型软件buffer的情况,则参见图3中的步骤h,网络设备采用现有技术中的buffer释放机制将待释放软件buffer释放至软件buffer池。
需要注意的是,如果其它类型的软件buffer错误地释放到硬件buffer管理单元,必然造成硬件buffer的不可识别,由此可能导致硬件buffer管理单元不可用。为了达到更高的数据接收效率,系统需要使用硬件buffer管理单元管理的硬件buffer获取数据,如果硬件buffer管理单元不可用,则必然会影响整个数据处理流程以及整个系统的正常工作。而在本发明实施例中,由于根据上述严格的预判条件可以准确地确定待释放软件buffer是否为与硬件buffer对应的软件buffer,因而可以正确释放与硬件buffer对应的额软件buffer以及其它类型的软件buffer,从而可以保证系统正常工作。
需要说明的是,现有技术在将硬件buffer中的数据拷贝到软件buffer的数据区以及在数据成功转发后,都需要将硬件buffer释放回硬件buffer管理单元并将软件buffer释放回软件buffer池,且这种buffer释放动作是每完成一个数据拷贝动作或数据发送动作都会存在的,因此会增加系统在释放buffer时的资源开销,提高系统运行的复杂度进而降低系统运行效率。而本发明实施例通过启用任务批量地释放buffer,提高了buffer的回收效率和系统的运行效率。
另外,由于本发明上述实施例中硬件管理的硬件buffer和软件管理的软件buffer都是内存区域的一部分,因而,本发明上述实施例提供的数据处理方法还可以用于通过硬件管理的内存和软件管理的内存进行数据处理,这里不再进行详细描述。
本发明实施例提供一种数据处理方法,由于硬件buffer与对应的软件buffer的数据区对应同一块内存区域,因而当网络设备根据指向硬件buffer起始地址的第一指针将待处理数据存储至硬件buffer时,相当于同时将待处理数据存储至硬件buffer对应的软件buffer的数据区,从而在网络设备根据第一指针获取到指向软件buffer起始地址的第二指针后,可以将第二指针指向的软件buffer交由上层应用模块进行数据处理,从而可以避免将待处理数据从硬件buffer拷贝到软件buffer的数据区,因此,能够解决现有技术中由于需要将硬件buffer中的数据拷贝到软件buffer的数据区以供上层应用模块进行数据处理,从而导致的系统运行效率低的问题。
实施例3
本发明实施例提供一种网络设备300,参见图5,该网络设备300可以包括:
硬件buffer管理单元301,用于根据buffer处理单元302的申请,向buffer处理单元302分配指向空闲硬件buffer的第一指针,第一指针指向的地址为硬件buffer的起始地址;
buffer处理单元302,用于从物理接口接收待处理数据,并将待处理数据存储至第一指针指向的硬件buffer;并用于根据第一指针获取第二指针,第二指针指向的地址为与硬件buffer对应的软件buffer的起始地址,软件buffer的数据区与硬件buffer对应同一块内存区域;并将第二指针指向的软件buffer交由上层应用模块进行数据处理。
其中,网络设备300可以为路由器、交换机、防火墙等通信网络中的各种设备。由于硬件buffer及其对应的软件buffer的数据区对应同一块内存区域,因而当网络设备300将待处理数据存储至硬件buffer时,实际上也同时将待处理数据存储到了硬件buffer对应的软件buffer的数据区,从而避免了现有技术中将硬件buffer中存储的待处理数据拷贝至软件buffer的数据区的拷贝动作,节省了网络设备300进行数据处理的时间,降低了系统资源的消耗,提高了系统运行效率。
可选地,参见图6,网络设备300还可以包括:
初始化单元303,用于在软件buffer中存放指向该软件buffer起始地址的第二指针,第二指针的起始存放地址与第一指针指向的地址间隔预设字节数。
可选地,buffer处理单元302还可以用于:
根据预设字节数,将第一指针指向的地址进行偏移计算,从计算出的地址中获取存放的软件buffer的起始地址。
可选地,buffer处理单元302还可以用于:
若确定不需要将上层应用模块处理后的数据进行转发,则将软件buffer释放至软件buffer池,并按照一定的周期时间将软件buffer池中的所有软件buffer的数据区批量释放至硬件buffer管理单元301;
若确定需要将上层应用模块处理后的数据进行转发,则在将上层应用模块处理后的数据发送完成后,若确定待释放buffer为与硬件buffer对应的软件buffer,则将待释放软件buffer的数据区释放至硬件buffer管理单元301。
可选地,buffer处理单元302还可以用于:
判断软件buffer中存放的硬件buffer标识符与预设标识符一致,和/或软件buffer起始地址的起始存放地址与其数据区的起始地址间隔的字节数与预设字节数一致,则确定待释放软件buffer为与硬件buffer对应的软件buffer,则将待释放软件buffer的数据区释放至硬件buffer管理单元301。
本发明实施例提供一种网络设备,由于硬件buffer与对应的软件buffer的数据区对应同一块内存区域,因而当网络设备根据指向硬件buffer起始地址的第一指针将待处理数据存储至硬件buffer时,相当于同时将待处理数据存储至硬件buffer对应的软件buffer的数据区,从而在网络设备根据第一指针获取到指向软件buffer起始地址的第二指针后,可以将第二指针指向的软件buffer交由上层应用模块进行数据处理,从而可以避免将待处理数据从硬件buffer拷贝到软件buffer的数据区,因此,能够解决现有技术中由于需要将硬件buffer中的数据拷贝到软件buffer的数据区以供上层应用模块进行数据处理,从而导致的系统运行效率低的问题。
在本申请所提供的几个实施例中,应该理解到,所揭露的网络设备和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种数据处理方法,其特征在于,包括如下步骤:
A、从物理接口接收到待处理数据后,获取指向空闲硬件buffer的第一指针,所述第一指针指向的地址为所述硬件buffer的起始地址;
B、根据所述第一指针将待处理数据存储至所述硬件buffer;
C、根据所述第一指针获取第二指针,所述第二指针指向的地址为与所述硬件buffer对应的软件buffer的起始地址,所述软件buffer的数据区与所述硬件buffer对应同一块内存区域,其中,所述软件buffer的数据区与所述硬件buffer对应同一块内存区域是在初始化时就已配置完成;
D、将所述第二指针指向的所述软件buffer交由上层应用模块进行数据处理。
2.根据权利要求1所述的方法,其特征在于,在步骤A之前,所述方法还包括初始化步骤:
在所述软件buffer中存放指向该软件buffer起始地址的第二指针,所述第二指针的起始存放地址与所述第一指针指向的地址间隔预设字节数。
3.根据权利要求1或2所述的方法,其特征在于,步骤C中,所述根据所述第一指针获取所述第二指针包括:
根据预设字节数,将所述第一指针指向的地址进行偏移计算,从计算出的地址中获取存放的软件buffer的起始地址。
4.根据权利要求1或2所述的方法,其特征在于,所述方法还包括如下步骤:
E、若确定不需要将上层应用模块处理后的数据进行转发,则将所述软件buffer释放至软件buffer池,并按照一定的周期时间将所述软件buffer池中的所有软件buffer的数据区作为空闲硬件buffer进行管理;
若确定需要将上层应用模块处理后的数据进行转发,则在将上层应用模块处理后的数据发送完成后,若确定待释放软件buffer为与硬件buffer对应的软件buffer,则将所述待释放软件buffer的数据区作为空闲硬件buffer进行管理。
5.根据权利要求4所述的方法,其特征在于,步骤E中,所述确定待释放buffer为与硬件buffer对应的软件buffer包括:
判断所述软件buffer中存放的硬件buffer标识符与预设标识符一致,和/或所述软件buffer起始地址的起始存放地址与其数据区的起始地址间隔的字节数与预设字节数一致,则确定所述待释放软件buffer为与硬件buffer对应的软件buffer。
6.一种网络设备,其特征在于,所述网络设备包括:
硬件buffer管理单元,用于根据buffer处理单元的申请,向buffer处理单元分配指向空闲硬件buffer的第一指针,所述第一指针指向的地址为所述硬件buffer的起始地址;
buffer处理单元,用于从物理接口接收待处理数据,并将所述待处理数据存储至所述第一指针指向的硬件buffer;并用于根据所述第一指针获取第二指针,所述第二指针指向的地址为与所述硬件buffer对应的软件buffer的起始地址,所述软件buffer的数据区与所述硬件buffer对应同一块内存区域,其中,所述软件buffer的数据区与所述硬件buffer对应同一块内存区域是在初始化时就已配置完成;并将所述第二指针指向的所述软件buffer交由上层应用模块进行数据处理。
7.根据权利要求6所述的网络设备,其特征在于,所述网络设备还包括:
初始化单元,用于在软件buffer中存放指向该软件buffer起始地址的第二指针,所述第二指针的起始存放地址与所述第一指针指向的地址间隔预设字节数。
8.根据权利要求6或7所述的网络设备,其特征在于,所述buffer处理单元还用于:
根据预设字节数,将所述第一指针指向的地址进行偏移计算,从计算出的地址中获取存放的软件buffer的起始地址。
9.根据权利要求6或7所述的网络设备,其特征在于,所述buffer处理单元还用于:
若确定不需要将上层应用模块处理后的数据进行转发,则将所述软件buffer释放至软件buffer池,并按照一定的周期时间将所述软件buffer池中的所有软件buffer的数据区批量释放至硬件buffer管理单元;
若确定需要将上层应用模块处理后的数据进行转发,则在将上层应用模块处理后的数据发送完成后,若确定待释放软件buffer为与硬件buffer对应的软件buffer,则将所述待释放软件buffer的数据区释放至硬件buffer管理单元。
10.根据权利要求9所述的网络设备,其特征在于,所述buffer处理单元还用于:
判断所述软件buffer中存放的硬件buffer标识符与预设标识符一致,和/或所述软件buffer起始地址的起始存放地址与其数据区的起始地址间隔的字节数与预设字节数一致,则确定所述待释放软件buffer为与硬件buffer对应的软件buffer,则将所述待释放软件buffer的数据区释放至硬件buffer管理单元。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510541484.5A CN105183373B (zh) | 2015-08-28 | 2015-08-28 | 一种数据处理方法及网络设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510541484.5A CN105183373B (zh) | 2015-08-28 | 2015-08-28 | 一种数据处理方法及网络设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105183373A CN105183373A (zh) | 2015-12-23 |
CN105183373B true CN105183373B (zh) | 2018-11-09 |
Family
ID=54905482
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510541484.5A Active CN105183373B (zh) | 2015-08-28 | 2015-08-28 | 一种数据处理方法及网络设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105183373B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109547389B (zh) * | 2017-08-08 | 2021-12-07 | 中国移动通信集团宁夏有限公司 | 一种码流文件重组的方法及装置 |
CN108717381B (zh) * | 2018-03-22 | 2021-04-16 | 新华三信息安全技术有限公司 | 一种报文处理方法及安全设备 |
US11115383B2 (en) * | 2018-05-24 | 2021-09-07 | Texas Instruments Incorporated | System on chip firewall memory architecture |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1996271A (zh) * | 2006-12-30 | 2007-07-11 | 华为技术有限公司 | 一种数据传输的方法及系统 |
US7502876B1 (en) * | 2000-06-23 | 2009-03-10 | Mips Technologies, Inc. | Background memory manager that determines if data structures fits in memory with memory state transactions map |
CN102209042A (zh) * | 2011-07-21 | 2011-10-05 | 迈普通信技术股份有限公司 | 一种避免先入先出队列溢出的方法及设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8250260B2 (en) * | 2009-12-15 | 2012-08-21 | International Business Machines Corporation | Method, arrangement, data processing program and computer program product for exchanging message data in a distributed computer system |
-
2015
- 2015-08-28 CN CN201510541484.5A patent/CN105183373B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7502876B1 (en) * | 2000-06-23 | 2009-03-10 | Mips Technologies, Inc. | Background memory manager that determines if data structures fits in memory with memory state transactions map |
CN1996271A (zh) * | 2006-12-30 | 2007-07-11 | 华为技术有限公司 | 一种数据传输的方法及系统 |
CN102209042A (zh) * | 2011-07-21 | 2011-10-05 | 迈普通信技术股份有限公司 | 一种避免先入先出队列溢出的方法及设备 |
Non-Patent Citations (1)
Title |
---|
Win9x下VxD和应用程序双向通讯的实现(一);郭月洋等;《计算机测量与控制》;20031231;第11卷(第1期);第72-74页 * |
Also Published As
Publication number | Publication date |
---|---|
CN105183373A (zh) | 2015-12-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102427550B1 (ko) | 재구성 가능한 멀티 포트들을 구비한 PCIe 스토리지 시스템을 위한 서비스 품질을 인식하는 입출력 관리 | |
CN110063045B (zh) | 云计算系统中的报文处理方法及设备 | |
CN105511954A (zh) | 一种报文处理方法及装置 | |
US11568092B2 (en) | Method of dynamically configuring FPGA and network security device | |
EP3023880B1 (en) | Method, device and computer storage medium for implementing interface cache dynamic allocation | |
CN106936739B (zh) | 一种报文转发方法及装置 | |
CN105183373B (zh) | 一种数据处理方法及网络设备 | |
CN104580107B (zh) | 恶意攻击检测方法及控制器 | |
CN104424122B (zh) | 一种电子设备及内存划分方法 | |
CN101539902A (zh) | 多计算机系统中节点的dma设备及通信方法 | |
CN110380992A (zh) | 报文处理方法、装置及网络流量采集设备 | |
CN103176855A (zh) | 消息交互处理方法及装置 | |
CN104123173B (zh) | 一种实现虚拟机间通信的方法及装置 | |
CN109561025A (zh) | 一种信息处理方法以及相关设备 | |
CN109286584A (zh) | 一种多核系统中的分片重组方法、装置及设备 | |
CN104123188A (zh) | 一种资源分配方法及相关装置 | |
CN109286564B (zh) | 一种报文转发方法及装置 | |
US20150319069A1 (en) | Method, Apparatus, and System for Identifying Abnormal IP Data Stream | |
CN108139969B (zh) | 一种内存配置方法、装置及系统 | |
CN111679918B (zh) | 一种消息传输方法及装置 | |
CN106161068B (zh) | 一种对网络资源的回收提示和分配方法,及控制器 | |
CN110650546A (zh) | 文件传输的方法、装置、存储介质以及终端 | |
CN104391751A (zh) | 一种算法数据处理的同步方法及装置 | |
CN105653490B (zh) | 一种基于地址控制的数据处理方法及装置 | |
CN110519333B (zh) | 数据传输的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |