网卡及网络数据接收方法

文档序号:7748756阅读:418来源:国知局
专利名称:网卡及网络数据接收方法
技术领域
本发明与经由网卡接收来自外部网络的数据有关,尤其涉及具有对网络数据包进行协议分析处理功能的智能网卡以及相应的网络数据接收方法。
背景技术
目前,用于在例如工控机、个人计算机、服务器等计算处理装置的CPU (Center Processing Unit,中央处理单元)与外部网络之间进行数据传输的标准网卡几乎都采用中断方式来处理网络数据。具体地,如图1所示,每当经由例如光纤接口、RJ45接口等的LAN(Local Area Network,局域网)接口从外部网络200接收到一个数据包时,网卡100就产生一个中断请求,并将所产生的中断请求发送至CPU 300。相应地,CPU 300接收到该中断请求时,将首先根据中断优先级确定该中断请求的处理顺序,并当不存在具有比该中断请求更高的优先级的中断时,CPU300才向网卡100输出允许传输数据的传输许可应答,以使得网卡100接收到的网络数据包能够经由PCI或PCI-E接口传输至CPU 300。对于如上所述的中断处理机制,当网卡接收到非常多的数据包时,也即需从网卡传输至CPU的数据包的数量很大,则CPU需处理的中断数量相应地也将很大。由此使得, 当所需处理的中断数量超出了 CPU的中断处理能力时,将不可避免地出现数据包丢失的现象。

发明内容
有鉴于此,本发明目的在于提供一种具有网络数据包分析处理能力的智能网卡, 以使得用户可以使用性能一般的CPU来处理大量的网络数据,而不会出现由于CPU中断处理能力差而导致的数据(包)丢失现象。为了实现上述发明目的,本发明提供了一种用于在计算处理装置的中央处理单元 (CPU)与外部网络之间进行数据传输的网卡,其包括数据处理部,用于对从所述外部网络接收到的网络数据包进行协议分析处理;数据缓存器,用于存储由所述数据处理部进行处理后所得到的网络数据,并在所存储的网络数据的数据量达到预定的阈值时产生数据传输请求;以及数据传输部,用于将由所述数据缓存器产生的数据传输请求转换为 符合PCI协议标准,并将转换后的数据传输请求发送至所述CPU,其中,响应于所接收到的数据传输请求,所述CPU判断是否能够接受该数据传输请求,并在判断为能够接受的情况下以直接内存访问的方式将所述数据缓存器中的数据搬运到所述计算处理装置的存储器中。另一方面,本发明还提供了一种经由上述网卡进行的网络数据接收方法,其包括对从所述外部网络接收到的网络数据包进行协议分析处理,并将处理后所得到的网络数据缓存在所述数据缓存器中;判断存储在所述数据缓存器中的网络数据的数据量是否达到了预定的阈值,且在判断为是的情况下产生一个数据传输请求,并将该数据传输请求发送至所述CPU ;响应于所接收到的数据传输请求,所述CPU判断是否能够接受该数据传输请求, 且在判断为能够接受的情况下开始以直接内存访问的方式将所述数据缓存器中的网络数据搬运至所述计算处理装置中的存储器。对于上述网卡及相应的网络数据接收方法,通过利用网卡上的数据处理部代替 CPU处理网络中断信息,将零碎的网络数据包汇总后以DMA (Direct Memory Access,直接内存访问)方式传输给CPU,既能够充分利用CPU的数据处理能力,又能够有效避免由CPU中断处理能力不足导致的数据丢失现象。根据下面参考附图对示例性实施例的详细说明,本发明的其它特征及方面将变得 清楚。


包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本发明的示例性实施例、特征和方面,并且用于解释本发明的原理。图1示出经由标准网卡进行网络数据包传输的示例性系统框图。图2示出经由根据本发明实施例的智能网卡进行网络数据传输的示例性系统框图。图3示出经由根据本发明实施例的智能网卡进行网络数据接收的示例性流程图。图4示出经由根据本发明实施例的智能网卡中数据处理部对网络数据包进行协议分析处理的具体操作的示例性流程图。图5示出基于根据本发明实施例的网络数据的示例性内部数据传输格式。图6示出根据本发明实施例的智能网卡中数据处理部的示例性结构框图。图7示出根据本发明实施例的智能网卡中数据处理部的网络数据传输协议处理器的示例性结构框图。
具体实施例方式以下将参考附图详细说明本发明的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性” 所说明的任何实施例不必解释为优于或好于其它实施例。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。如上所述,本发明旨在于改进用于在外部网络与CPU之间进行数据传输的网卡, 以尽量避免在经由网卡从外部网络接收数据时出现数据丢失现象。并且,本发明改进网卡的主要思路是,通过在网卡上集成能够对网络数据包进行初步分析的处理器,使得处理器可将零碎的网络数据包汇总后再传输至CPU,从而能够有效降低CPU的中断处理负荷,并因此避免由CPU的中断处理能力不足导致的瓶颈问题。下面将参考图2详细描述根据本发明实施例的智能网卡的示例性结构框图及其工作原理。 如图2所示,根据本发明实施例的具有对网络数据包410进行协议分析处理功能的智能网卡IOOa包括数据处理部110、数据缓存器120以及数据传输部130,其中数据处理部110具有网络协议分析和协议数据处理能力,被配置为对从外部网络 200接收到的网络数据包410进行初步的协议分析,并根据协议分析结果进行相应的协议数据处理,以将网络数据包410按预定的内部数据传输格式转换为网络数据420,并将网络数据420经由局部总线发送至数据缓存器120。优选地,可利用例如DSP(Digital Signal Processing,数字信号处理)芯片、 ARM (Advanced RISC Machines,高级精简指令集机器)或单片机等的微处理器来实现数据处理部110。数据缓存器120被配置为对从数据处理部110传送来的网络数据420进行缓存。 以及,数据缓存器120还被配置为在其中所存储的网络数据420的数据量达到预定阈值 (例如,小于或等于数据缓存器的总存储量的任意值)时产生一个数据传输请求510,并将该数据传输请求510发送至数据传输部130。优选地,可利用例如FPGA (Field Programmable Gate Array,现场可编程门阵列) 或标准FIF0(First in First out,先进先出)芯片等的器件来实现数据缓存器120。数据传输部130被配置为将该数据传输请求510转换成符合PCI协议标准的数据,并将转换后的数据传输请求510经由PCI总线发送至CPU 300,以便CPU 300能够进行后续数据分析。此外,数据传输部130还可被配置为根据PCI总线的工作状态向数据缓存器120传输控制命令,以控制是否读出数据缓存器120中的数据;和/或,根据来自CPU 300 的命令清空数据缓存器120。优选地,数据传输部130可由PCI接口或PCI-E接口构成。在接收到经由数据传输部130发送来的数据传输请求510之后,CPU 300基于所需处理的中断数量和/或优先级以及自身的中断处理能力进行仲裁,以判断是否能够接受该数据传输请求510。如果判断为能够接受该数据传输请求510,则CPU 300开始以DMA方式将存储在数据缓存器120中的网络数据420搬运到其所在计算处理装置(例如,工控机、 个人计算机、服务器等)的存储器中。例如,CPU 300以DMA方式将存储在数据缓存器120 中的网络数据420搬运到配置在其所在工控机中的RAM (Random Access Memory,随机存取存储器)中,直到数据缓存器120中没有数据为止。下面参考图3详细描述经由根据本发明的智能网卡100a进行网络数据接收的具体操作流程。如图3所示,如果智能网卡100a中的数据处理部110接收到来自外部网络200的网络数据包410 (步骤S0),则启动经由智能网卡100a进行网络数据接收的操作流程。随后,数据处理部110对网络数据包410进行协议分析及相应的协议数据处理,并将处理后的数据按预定的内部数据传输格式转换为待存储至FIFO存储器(作为智能网卡100a中的数据缓存器120)的网络数据420(步骤Si)。然后,数据处理部110将该网络数据420写入 FIFO存储器中(步骤S2)。至此,FIFO存储器判断缓存于其中的网络数据420的数据量是否达到了预定的阈值,例如FIFO存储器判断其中所存储的网络数据420的数据量是否达到了其总存储容量的70% (步骤S3)。如果判断为尚未达到,则继续等待(也即重复步骤S3),直到FIFO存储器中的网络数据420的数据量达到了预定阈值为止。如果判断为已达到了,则FIFO存储器产生一个数据传输请求510 (步骤S4),并将该数据传输请求510经由PCI接口(作为智能网卡IOOa中的数据传输部130)发送至CPU 300 (步骤S5)。响应于所接收到的数据传输请求510,CPU 300基于所需处理的中断数量和/或优先级以及自身的中断处理能力进行仲裁,以决定是否能够接受该数据传输请求510(步骤 S6)。如果判断为不能接受,则继续等待(也即重复步骤S6),直到CPU能够接受该数据传输请求510为止。如果判断为能够接受,则CPU开始以DMA方式从FIFO存储器搬运网络数据 420至配置在其所在计算处理装置中的存储器(步骤S7),直到将FIFO存储器中的网络数据420搬空为止。也即,在以DMA方式获取网络数据时,判断FIFO存储器中的网络数据的数据量是否为0 (步骤S8)。如果判断为不是,则重复步骤S7以继续获取FIFO存储器中的网络数据。 如果判断为是,则结束DMA方式的数据获取操作,并结束了根据本发明的网络数据接收方法的一个例程。对于上述网络数据接收方法,下面将参考图4详细描述其中步骤Sl的具体操作流程。如图4所示,当经由步骤SO接收到网络数据包410时,首先进行网络协议判断(步骤Sll),以判断网络数据包410是基于标准的网络数据传输协议,还是基于SNTP(Simple NetworkTime Protocol,简单网络时间协议)的对时协议。在判断为网络数据包410基于SNTP对时协议的情况下,则利用基于SNTP对时协议的网络数据包来确定数据处理部Iio的当前时间。具体而言利用基于SNTP对时协议的网络数据包410进行时间计算(步骤S12),并根据时间计算的结果重新设定数据处理部 110的当前时间(步骤S13)。并且,在判断为网络数据包410基于标准的网络数据传输协议的情况下,则利用基于网络数据传输协议的网络数据包410生成网络数据420。具体而言首先,获取数据处理部110在接收到基于网络数据传输协议的网络数据包410时的时间信息(步骤S14);然后,从该网络数据包410中提取例如源MAC地址、有效传输数据、目标MAC地址等的传输信息(步骤S15);最后,按预定的内部数据传输格式拼接所提取到的传输信息和所获取到的时间信息,从而生成网络数据420 (步骤S16)。尽管图4例示了在获取时间信息之后提取传输信息,但本领域技术人员应能理解,只要能够在生成网络数据420之前获得时间信息和传输信息即可,而无需限定获取时间信息与提取传输信息的执行顺序。换言之,在获取时间信息之前或者同时提取传输信息, 同样适用于本发明。其中,图5示出了根据本发明实施例的网络数据420的示例性内部数据传输格式图。如图5所示,网络数据420包括表示数据头421、数据长度422、时间信息423、目标 MAC地址424、传输数据425、源MAC地址426、数据尾427和校验码428等的信息。其中,时间信息423表示数据处理部110在接收到基于网络数据传输协议的网络数据包410时的时间信息。而目标MAC地址424、传输数据425、源MAC地址426是从基于网络数据传输协议的网络数据包410提取出来的有效传输信息。 通过上述介绍可知,根据本发明实施例的智能网卡IOOa中数据处理部110工作在混杂模式下,其可优选地如图6所示包括协议判断器111、SNTP对时协议处理器112和网络数据传输协议处理器113。其中协议判断器111被配置为对从外部网络200接收到的网络数据包410进行协议分析,以判断该网络数据包410是基于标准的网络数据传输协议还是基于SNTP对时协议,也即判断该网络数据包410是SNTP对时协议数据包411还是网络数据传输协议数据包412。
SNTP协议处理器112被配置为利用SNTP对时协议数据包411进行基于SNTP对时协议的时间计算,并根据时间计算的结果重新设定数据处理部110的当前时间。网络数据传输协议处理器113被配置为利用网络数据传输协议数据包412生成网络数据420。具体而言,网络数据传输协议处理器113被配置为获取数据处理部110在接收到网络数据传输协议数据包412时的时间信息423,提取网络数据传输协议数据包412 所包括的例如源MAC地址426、目标MAC地址424和传输数据425等的有效传输信息,并按预定的内部数据传输格式拼接所获取到的时间信息423和所提取到的传输信息424、425、 426,从而生成网络数据420。进一步优选地,网络数据传输协议处理器113可如图7所示包括传输信息提取单元113-1,被配置为从网络数据传输协议数据包412提取包括源MAC地址426、目标MAC地址 424和传输数据425等的有效传输信息;时间信息获取单元113-2,被配置为获取数据处理部110在接收到网络数据传输协议数据包412时的时间信息423 ;以及网络数据生成单元 113-3,被配置为按例如图5所示的内部数据传输格式拼接时间信息423、源MAC地址426、 目标MAC地址424和传输数据425等,从而生成网络数据420。综上所述,当将根据本发明实施例的智能网卡IOOa用于从外部网络200接收网络数据包410时,CPU 300只需接收智能网卡IOOa中数据缓存器120根据其中所存储的网络数据的数据量而申请的DMA数据传输请求510信号,然后以内存搬运的形式进行网络数据接收处理。这种数据接收方式可以在最大程度上减小CPU进行中断处理的负荷,从而有效避免数据丢失的现象。并且,通过将CPU从繁重的中断处理工作中解脱出来,它能够更好地负责完成后续的数据解析工作。需要声明的是,上述发明内容及具体实施方式
仅旨在证明本发明所提供技术方案的实际应用,不应解释为对本发明保护范围的限定。本领域技术人员在本发明的精神和原理内,当可作各种修改、等同替换或改进。本发明的保护范围以所附权利要求书为准。
权利要求
1.一种网卡,用于在计算处理装置的中央处理单元与外部网络之间进行数据传输,其特征在于,包括数据处理部,用于对从所述外部网络接收到的网络数据包进行协议分析处理; 数据缓存器,用于存储由所述数据处理部进行处理后所得到的网络数据,并在所存储的网络数据的数据量达到预定的阈值时产生数据传输请求;以及数据传输部,用于将由所述数据缓存器产生的数据传输请求转换为符合PCI协议标准,并将转换后的数据传输请求发送至所述中央处理单元,其中,响应于所接收到的数据传输请求,所述中央处理单元判断是否能够接受该数据传输请求,并在判断为能够接受的情况下以直接内存访问的方式将所述数据缓存器中的数据搬运到所述计算处理装置的存储器中。
2.根据权利要求1所述的网卡,其特征在于,所述数据处理部由单片机、数字信号处理芯片或高级精简指令集机器构成。
3.根据权利要求1或2所述的网卡,其特征在于,所述数据处理部包括协议判断器,用于对从所述外部网络接收到的网络数据包进行协议分析,以判断所述网络数据包是基于网络数据传输协议,还是基于简单网络时间协议;简单网络时间协议处理器,用于在所述协议判断器判断为所述网络数据包基于简单网络时间协议的情况下,利用基于简单网络时间协议的网络数据包进行时间计算,并将所述数据处理部的当前时间设定为所述时间计算的结果;以及网络数据传输协议处理器,用于在所述协议判断器判断为所述网络数据包基于网络数据传输协议的情况下,获取所述数据处理部在接收到基于网络数据传输协议的网络数据包时的时间信息,并提取该网络数据包中的传输信息,从而利用所述时间信息和所述传输信息生成所述网络数据。
4.根据权利要求3所述的网卡,其特征在于,所述网络数据传输协议处理器包括传输信息提取单元,用于从基于网络数据传输协议的网络数据包提取所述传输信息, 其中所述传输信息包括目标MAC地址、源MAC地址和传输数据;时间信息获取单元,用于获取所述数据处理部在接收到该网络数据包时的时间信息;以及网络数据生成单元,用于按预定的内部数据传输格式拼接所提取到的传输信息和所获取到的时间信息,以生成所述网络数据。
5.根据权利要求3所述的网卡,其特征在于,所述数据缓存器由可编程逻辑阵列或先进先出存储器构成。
6.根据权利要求4所述的网卡,其特征在于,所述数据传输部为PCI接口或PCI-E接
7.—种经由根据权利要求1-6中任一项所述网卡进行的网络数据接收方法,其特征在于,包括对从所述外部网络接收到的网络数据包进行协议分析处理,并将处理后所得到的网络数据缓存在所述数据缓存器中;判断存储在所述数据缓存器中的网络数据的数据量是否达到了预定的阈值,且在判断为是的情况下产生一个数据传输请求,并将该数据传输请求发送至所述中央处理单元;响应于所接收到的数据传输请求,所述中央处理单元判断是否能够接受该数据传输请求,且在判断为能够接受的情况下开始以直接内存访问的方式将所述数据缓存器中的网络数据搬运至所述计算处理装置中的存储器。
8.根据权利要求7所述的网络数据接收方法,其特征在于,对所述网络数据包进行协议分析处理具体包括判断所述网络数据包是基于网络数据传输协议,还是基于简单网络时间协议;在判断为所述网络数据包基于简单网络时间协议的情况下,利用基于简单网络时间协议的网络数据包进行时间计算,并将所述数据处理部的当前时间设定为所述时间计算的结果;以及在判断为所述网络数据基于网络数据传输协议的情况下,获取所述数据处理部在接收到基于网络数据传输协议的网络数据包时的时间信息,并提取该网络数据包中的传输信息,从而按预定的内部数据传输格式拼接所述传输信息和所述时间信息以生成所述网络数据。
9.根据权利要求7或8所述的网络数据接收方法,其特征在于,响应于所接收到的数据传输请求,所述中央处理单元基于所需处理的中断数量和/或优先级以及自身的中断处理能力进行仲裁,以判断是否能够接受该数据传输请求。
10.根据权利要求9所述的网络数据接收方法,其特征在于,所述预定的阈值为小于或等于所述数据缓存器的总存储量的值。
全文摘要
具有网络数据包协议分析处理能力的智能网卡以及相应的网络数据接收方法,包括智能网卡的数据处理部对从外部网络接收到的网络数据包进行协议分析处理,并将处理后所得到的网络数据缓存在智能网卡的数据缓存器中;判断存储在数据缓存器中的网络数据的数据量是否达到了预定的阈值,并在判断为是的情况下产生一个数据传输请求并发送至CPU;以及,CPU判断是否能够接受该数据传输请求,且在判断为能够接受的情况下开始以直接内存访问的方式将数据缓存器中的网络数据搬运至其所在装置的存储器中。通过利用智能网卡上的数据处理部代替CPU处理网络中断信息,既能充分利用CPU的数据处理能力,又能有效避免由CPU中断处理能力不足导致的数据丢失现象。
文档编号H04L12/02GK102244579SQ20101017271
公开日2011年11月16日 申请日期2010年5月12日 优先权日2010年5月12日
发明者何春盛 申请人:北京研华兴业电子科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1