首页> 中国专利> 基于万兆网卡的以太网包检验和FPGA硬件校验方法

基于万兆网卡的以太网包检验和FPGA硬件校验方法

摘要

本发明公开了基于万兆网卡的以太网包检验和FPGA硬件校验方法,该万兆网卡包括用于实现以太网协议数据传输的物理层协议的XAUI模块,用于实现以太网协议数据传输的数据链路层协议的10GEMAC模块,用于实现接口转换的接口时序转换逻辑模块,用于管理以太网数据包的AXI以太网模块,用于数据缓存的AXIDMA模块,用于实现路由控制的AXI互联网模块,用于实现对以太网数据包拆包组包过程的PCIeHardIp模块,用于实现以太网数据包的硬件校验总和校验逻辑的校验总和硬件逻辑模块。该硬件实现方法,可以实现以太网数据包的校验和的硬件计算且计算速度快、以及数据传输的稳定性和可靠性高的优点。

著录项

  • 公开/公告号CN103001827A

    专利类型发明专利

  • 公开/公告日2013-03-27

    原文格式PDF

  • 申请/专利号CN201210502656.4

  • 发明设计人 张庆敏;张衡;胡刚;

    申请日2012-11-30

  • 分类号H04L12/26(20060101);

  • 代理机构11249 北京中恒高博知识产权代理有限公司;

  • 代理人宋敏

  • 地址 214028 江苏省无锡市新区震泽路18号无锡国家软件园金牛座A栋6层

  • 入库时间 2024-02-19 18:48:14

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-07-06

    专利权人的姓名或者名称、地址的变更 IPC(主分类):H04L12/26 变更前: 变更后: 申请日:20121130

    专利权人的姓名或者名称、地址的变更

  • 2015-09-23

    授权

    授权

  • 2013-11-06

    著录事项变更 IPC(主分类):H04L12/26 变更前: 变更后: 申请日:20121130

    著录事项变更

  • 2013-05-29

    实质审查的生效 IPC(主分类):H04L12/26 申请日:20121130

    实质审查的生效

  • 2013-03-27

    公开

    公开

说明书

技术领域

本发明涉及计算机系统的网络通讯技术领域,具体地,涉及基于万兆网卡的以太网包检验和硬件现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)硬件校验方法。 

背景技术

电脑总和检验码(checksum,又称校验总和),在数据处理和数据通信领域中,是用于校验目的的一组数据项的和,这些数据项可以是数字或在计算检验总和过程中看作数字的其它字符串,通常是以十六进制为数制表示的形式,如:十六进制串:0102030405060708的效验和是:24(十六进制)。如果效验和的数值超过十六进制的FF,也就是255。就要求其补码作为效验和通常用来在通信中,尤其是远距离通信中保证数据的完整性和准确性。 

在IP首部校验算法中,IP首部校验和字段是根据IP首部计算的校验和码,它不对首部后面的数据进行计算。例如,Internet控制报文报协议(Internet Control Message Protocol,简称ICMP)、Internet组管理协议(Internet Group Management Protocol,简称IGMP)、用户数据报协议(User Datagram Protocol,简称UDP)和传输控制协议(Transmission Control Protocol,简称TCP)在,它们各自的首部中均含有同时覆盖首部和数据校验和码。   在IP首部校验和计算中,为了计算一份数据报的IP检验和,首先把检验和字段置为0。然后,对首部中每个16bit进行二进制反码求和(整个首部看成是由一串16bit的字组 成),结果存在检验和字段中。当收到一份IP数据报后,同样对首部中每个16bit进行二进制反码的求和。由于接收方在计算过程中包含了发送方存在首部中的检验和,因此,如果首部在传输过程中没有发生任何差错,那么接收方计算的结果应该为全1。如果结果不是全1(即检验和错误),那么IP就丢弃收到的数据报。但是不生成差错报文,由上层去发现丢失的数据报并进行重传。   在TCP和UDP校验和计算(两者相同)中,校验和还包含—个96位的伪首标,理论上它位于TCP首标的前面。这个伪首标包含了源地址、目的地址、协议和TCP长度等字段,这使得TCP能够防止 出现路由选择错误的数据段。这些信息由网际协议(IP)承载,通过TCP/网络接口,在IP上运行的TCP调用参数或者结果中传递。   伪首部并非UDP数据报中实际的有效成分,伪首部是一个虚拟的数据结构,其中的信息是从数据报所在IP分组头的分组头中提取的,既不向下传送也不向上递交,而仅仅是为计算校验和。   这样的校验和,既校验了UDP用户数据的源端口号和目的端口号以及UDP用户数据报的数据部分,又检验了IP数据报的源IP地址和目的地址。伪报头保证UDP和TCP数据单元到达正确的目的地址。因此,伪报头中包含IP地址并且作为计算校验和需要考虑的一部分。最终目的端根据伪报头和数据单元计算校 验和以验证通信数据在传输过程中没有改变而且到达了正确的目的地址。 

在数据通信网络中,基于网络协议传输的网络包的数据完整性和准确性尤为重要,通常的方法是通过应用层软件去检查以太网数据包包头(header)的checksum区域的值,同时重新计算接收到的以太网数据包包头(header)的checksum的值,由应用层软件去比较这两个checksum的值来判断接收到的以太网数据包是否有效,如果数据包有效,则准备继续接收下一帧数据,如果无效则返回无效信息等待重新接收数据包,整个过程中应用层软件的执行过程通过CPU处理中断和分配资源,占用CPU资源和进程。 

在网络协议传输的以太网包中,checksum作为一种传输数据完整性的检测方法,用CPU去处理中断,然后解析以太网数据包包头的checksum值,并重新计算以太网数据包包头的checksum值,再来比较这两个checksum的值。 

以太网协议规定了以太网帧的IP首部必须使用检验和(checksum)并被检验,TCP也必须使用校验和,UDP可以不使用校验和。进行checksum的算法在以太网协议中已经定义好了,但是实现的方法各有不同。通常checksum实现的方法都是通过以太网应用层软件,来实现checksum的算法和CPU处理中断控制数据传输过程,这种实现方法实现起来简单,但是应用层软件占用CPU资源,会影响CPU的工作效率和性能。 

在实现本发明的过程中,发明人发现现有技术中至少存在占用CPU资源多、CPU处理中断和进程所占用的时间长、以及CPU处理数据的效率和性能低等缺陷。 

发明内容

本发明的目的在于,针对上述问题,提出基于万兆网卡的以太网包检验和FPGA硬件校验方法,以实现以太网数据包的checksum检验和的硬件计算且计算速度快、以及数据传输的稳定性和可靠性高的优点。 

为实现上述目的,本发明采用的技术方案是:基于万兆网卡的以太网包检验和FPGA硬件校验方法的万兆网卡结构主要包括: 

XAUI模块:主要用于实现以太网协议数据传输的物理层协议,主要包括以太网协议物理层数据传送和接收所需的光电信号转换、数据的编码、串并转换和提供数据链路层的MAC子层的XGMII接口;

10GE MAC模块:主要用于实现以太网协议数据传输的数据链路层协议,主要包括以太网数据链路层的MAC子层和LLC子层、上层协议的Avalon-ST接口(Avalon流接口)和低层协议的XGMII接口;以及,用于负责对数据包进行封装成以太网数据帧格式传输,即数据帧的构建和数据差错检验; 

接口时序转换逻辑模块:主要用于通过FPGA硬件逻辑,实现Avalon-ST接口到AXI -Stream接口的转换;

AXI 以太网(Ethernet)模块:主要用于管理以太网数据包,映射发送和接收的以太网数据包内容到AXI Ethernet模块内部独立的RAM块中,对接收和发送的以太网数据包内容作全双工checksum校验,以及提供AXI-Stream接口数据帧的流控判断和寄存器端口的AXI-Lite接口读写以及外部PHY芯片访问的独立管理接口;

AXI DMA模块:能够与外部中断控制模块和外部DDR3通信,主要用于实现AXI Ethernet 模块内部独立RAM块中的数据和AXI interconnect模块中AXI-Stream接口流数据的缓存FIFO中的数据;

AXI 互联网(interconnect)模块:主要用于定义AXI-Stream接口流数据的缓存FIFO,实现读写内存模块的路由包括作为master或slaver的MM2S Read接口和S2MM Write接口控制;

PCIe Hard Ip模块:能够与外部CPU通信,作为PCIe的硬核模块,主要用于实现对以太网数据包的拆包组包过程;

校验总和(checksum)硬件逻辑模块:用于实现以太网数据包的硬件checksum校验逻辑,主要是用于通过FPGA逻辑来实现对AXI-Stream接口流数据进行解析,同时判断检验位对需要进行校验数据进行checksum检验,最后把校验的checksum值填入到以太网数据IP头部和以太网协议类型规定的数据包的头部格式相应位置。

进一步地,所述的接口时序转换模块,AXI_Ethernet模块和AXI_DMA模块,主要包括: 

AXI-Lite接口:主要用于实现系统访问硬件寄存器的接口时序逻辑;

AXI-Stream接口:主要用于实现系统数据发送和接收流接口时序逻辑;

AXI-Lite子模块:主要用于实现以太网应用层软件的寄存器读写;

SG R/W子模块:主要用于实现应用层软件读取硬件描述符信息的读写功能;

MM2S Read子模块:主要用于实现硬件读内存信息到硬件的高级可扩展总线流接口功能;

S2MM Write子模块:主要用于实现硬件通过高级可扩展总线流接口写数据信息到内存的接口功能。

进一步地,所述checksum硬件逻辑模块,主要包括: 

CSUM_CTRL模块:主要用于实现checksum模块的主要硬件逻辑,主要是用于对接收和发送的以太网数据包进行解析,提取数据包的传输协议类型、checksum值和计算IP头的checksum,同时根据传输协议类型来计算或比较传输协议类型的数据包的checksum值,最后将正确的checksum值填入到以太网数据包包头的位置进行传输;

TX_CSUM模块:主要用于对发送数据的checksum值进行计算;

RX_CSUM模块:主要用于对接收数据的checksum值进行计算;

TX_FIFO模块:主要用于调用的FPGA内部一个发送数据的缓存,FIFO的输入是上端AXI-Stream接口下来的发送包数据,FIFO的输出是通过TX_CSUM模块计算后的数据;

RX_FIFO模块:主要用于调用的FPGA内部一个接收数据的缓存,FIFO的输入是上端AXI-Stream接口下来的接收包数据,FIFO的输出是通过RX_CSUM模块计算后的数据。

进一步地,所述AXI DMA模块,主要包括: 

AXI-Lite子模块:主要用于实现以太网应用层软件的寄存去读写;

SG R/W子模块:主要用于实现应用层软件读取硬件描述符信息的读写功能;

MM2S Read子模块:主要用于实现硬件读内存信息到硬件的高级可扩展总线流接口功能;

S2MM Write子模块:主要用于实现硬件通过高级可扩展总线流接口写数据信息到内存的接口功能。

进一步地,所述10GE MAC模块用于实现数据帧的构建和数据差错检验时,主要是对发送以太网数据包添加帧头和帧尾,对接收以太网数据包去除帧头和帧尾;帧头包括目标主机的MAC地址,自己的源MAC地址和数据包类型;帧尾为数据包的CRC校验字。 

进一步地,所述的checksum硬件逻辑校验的实现过程主要包括: 

对接收和发送的以太网包头或协议数据包头作checksum校验,对以太网数据帧头和协议数据包头格式的填充和判断,以及对作checksum校验时的状态信息的输出控制。

进一步地,在所述对接收和发送的以太网包头或协议数据包头作checksum校验的操作中,接收部分具体包括: 

在接收以太网数据包作checksum时,checksum硬件逻辑判断checksum硬件逻辑模块的接口控制信号TX_CSBEGIN的状态,根据状态信息确定是否进入到接收以太网数据包checksum检验状态;

在这个状态,checksum硬件逻辑模块解析数据包的内容,同时调用checksum硬件逻辑模块的硬件逻辑去执行IP头或者TCP/UDP包头的checksum计算,根据硬件解析的以太网数据包的类型来确定是否计算TCP/UDP包头,完成计算后硬件逻辑校验checksum的值来判断数据包的完整性;

在接收以太网数据包作checksum时,checksum硬件逻辑判断checksum硬件逻辑模块的接口控制信号RX_CSRAW的状态,根据状态信息确定是否进入到接收数据完整性校验状态;

在这个状态,checksum硬件逻辑模块的硬件逻辑会比较两次checksum值,如果值一致则进入到 RX_CSUM_PLAYLOAD状态,开始接收这一帧以太网包数据;否则丢弃这帧数据,进入到IDLE状态等待重新接收数据。

进一步地,所述checksum硬件逻辑模块会解析数据包的内容,包括以太网数据包的类型、IP头的checksum和TCP/UDP包头的checksum、以及TCP/UDP的数据部分。 

进一步地,在所述对接收和发送的以太网包头或协议数据包头作checksum校验的操作中,发送部分具体包括: 

在发送以太网数据包作checksum时,checksum硬件逻辑模块的接口控制信号TX_CSBEGIN的状态,进入到发送以太网数据包checksum检验状态;

在这个状态,checksum硬件逻辑模块的硬件逻辑判断发送以太网帧数据类型,确定是否需要作协议数据包头的checksum校验,同时对以太网数据包IP header进行checksum校验;

在TX_CSUM_IP_HEADER状态,checksum硬件逻辑模块根据接口控制信号TX_CSINSERT、TX_CSCNTRL和TX_CSINIT,来确定是否开始作TCP/UDP header的checksum,确定是否改填充TCP/UDP header的checksum数据包头格式;

硬件做完数据的填充后,进入到发送以太网数据包状态,开始发送完整的以太网数据包格式的数据到AXI 数据链路层接口,此帧数据发送完成后跳到IDEL状态重新开始检测发送以太网数据包。

本发明各实施例的基于万兆网卡的以太网包检验和FPGA硬件校验方法,由于该结构包括主要用于实现以太网协议数据传输的物理层协议的XAUI模块,主要用于实现以太网协议数据传输的数据链路层协议的10GE MAC模块,主要用于通过FPGA硬件逻辑实现Avalon-ST接口到AXI -Stream接口转换的接口时序转换逻辑模块,主要用于管理以太网数据包的AXI Ethernet模块,主要用于实现AXI Ethernet 模块内部独立RAM块中的数据和AXI interconnect模块中AXI-Stream接口流数据的缓存FIFO中数据的AXI DMA模块,主要用于定义AXI-Stream接口流数据的缓存FIFO实现读写内存模块的路由包括作为master或slaver的MM2S Read接口和S2MM Write接口控制的AXI interconnect模块,主要用于实现对以太网数据包的拆包组包过程的PCIe Hard Ip模块,主要用于实现以太网数据包的硬件checksum校验逻辑的checksum硬件逻辑模块;相对于在数据传输过程中,通过硬件逻辑来实现这个过程不但可以节省占用CPU的资源和减少CPU处理中断和进程所占用的时间,还可以提高CPU处理其它进程的效率和性能;而且通过硬件逻辑来实现以太网数据包包头(header)的checksum计算更快,提高了数据传输的稳定性和可靠性;从而可以克服现有技术中占用CPU资源多、CPU处理中断和进程所占用的时间长、以及CPU处理数据的效率和性能低的缺陷,以实现以太网数据包的checksum检验和计算速度快、以及数据传输的稳定性和可靠性高的优点。 

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。 

下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。 

附图说明

附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中: 

图1是基于万兆网卡的以太网包检验和FPGA硬件校验方法所用系统的硬件模块结构示意图;

图2是checksum硬件模块的结构示意图;

图3是基于万兆网卡的以太网包检验和FPGA硬件校验方法所用系统的结构示意图;

图4是checksum硬件校验状态机(即checksum校验和的实现方法)的工作流程示意图。

结合附图,本发明实施例中附图标记如下: 

10-XAUI模块;11-10GE MAC模块;12-接口时序转换逻辑模块;13-AXI Ethernet模块;14-AXI DMA模块;15-AXI interconnect模块;16- PCIe Hard Ip模块;17-checksum硬件逻辑模块;18-CSUM_CTRL模块;19-TX_CSUM模块;20-RX_CSUM模块;21-TX_FIFO模块;22-RX_FIFO模块。

具体实施方式

以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。 

系统实施例

根据本发明实施例,如图1-3所示,提供了基于万兆网卡的以太网包检验和FPGA硬件校验方法所用系统。

参见图1,本实施例的基于万兆网卡的以太网包检验和FPGA硬件校验方法所用系统,主要包括XAUI模块(10吉比特传输速率硬件接口模块)10、10GE MAC模块(10吉比特以太网介质访问控制模块)11,接口时序转换逻辑模块12,AXI Ethernet模块13,AXI DMA模块14,AXI interconnect模块15,PCIe Hard Ip模块16,checksum硬件逻辑模块17。 

在图1中,每个模块的具体功能描述如下: 

XAUI模块10:主要用于实现以太网协议数据传输的物理层协议;该以太网协议数据传输的物理层协议,包括以太网协议物理层数据传送和接收所需的光电信号转换、数据的编码、串并转换和提供数据链路层的MAC子层的XGMII接口。

10GE MAC模块11:主要用于实现以太网协议数据传输的数据链路层协议;该以太网协议数据传输的数据链路层协议,包括以太网数据链路层的MAC(介质访问控制)子层和LLC(逻辑链路控制)子层、上层协议的Avalon-ST接口和低层协议的XGMII接口。 

该10GE MAC模块11:主要还用于负责对数据包进行封装成以太网数据帧格式传输,即数据帧的构建和数据差错检验。10GE MAC模块用于实现数据帧的构建和数据差错检验时,主要是对发送以太网数据包添加帧头和帧尾,对接收以太网数据包去除帧头和帧尾;帧头包括目标主机的MAC地址,自己的源MAC地址和数据包类型;帧尾为数据包的CRC校验字。 

接口时序转换逻辑模块12:主要用于通过FPGA硬件逻辑实现Avalon-ST接口(Avalon流接口)到AXI -Stream接口(高级可扩展总线流接口)的转换。 

AXI Ethernet模块13:主要用于管理以太网数据包,映射发送和接收的以太网数据包内容到AXI Ethernet模块内部独立的RAM块中,对接收和发送的以太网数据包内容作全双工checksum校验,提供AXI-Stream接口数据帧的流控判断和寄存器端口的AXI-Lite接口读写以及外部PHY芯片访问的介质独立管理接口(MIIM接口)。 

AXI DMA模块14:主要用于实现AXI Ethernet模块13内部独立RAM块中的数据和AXI interconnect模块15中AXI-Stream接口流数据的缓存FIFO中的数据。 

AXI interconnect模块15:主要用于定义AXI-Stream接口流数据的缓存FIFO,实现读写内存模块的路由包括作为master或slaver的MM2S Read接口和S2MM Write接口控制。 

PCIe Hard Ip模块16:能够与外部电脑主板(如CPU)通信,作为PCIe的硬核模块,主要用于实现对以太网数据包的拆包组包过程。 

checksum硬件逻辑模块17:主要用于实现以太网数据包的硬件checksum校验逻辑,即:主要是通过FPGA逻辑来实现对AXI-Stream接口流数据进行解析,同时判断检验位对需要进行校验数据进行checksum检验,最后把校验的checksum值填入到以太网数据IP头部和以太网协议类型规定的数据包的头部格式相应位置。 

在上述实施例的基于万兆网卡的以太网包检验和FPGA硬件校验方法所用系统中,checksum硬件逻辑的实现方案为:以太网数据包的checksum检验包括对IP首部的检验和传输层数据包的checksum检验,在数据传输过程中checksum的值都是被填入到数据传输的帧格式的固定位置,通过硬件逻辑实现checksum检验就必须清楚以太网数据包的传输格式。 

上述以太网数据帧格式,为:帧头+数据包+帧尾;其中帧头包括源和目标主机MAC地址及类型,帧尾是CRC校验字。 

。 

以太网数据帧的类型决定了数据包将是以哪种数据包传输协议进行传输。数据包包含网络协议IP头部和数据传输协议的数据信息。数据传输协议的数据信息包含有 TCP、UDP、ICMP和IGMP等,最常见的数据包传输协议为TCP和UDP协议,数据传输协议的传输取决于以太网数据帧格式的类型。以下是TCP和UDP数据包的帧传输格式: 

TCP数据包格式:

UDP数据包格式: 

不管数据传输是哪一种格式,网络协议规定了IP头部(首部)必须使用检验和(checksum)并被检验,TCP也必须使用检验和,UDP可以不使用检验和。以下是IP首部和TCP首部的数据结构: 

IP头的结构

 TCP协议的头结构

参见图2,checksum硬件逻辑模块17的结构框图(列出主要的控制信号)包括有五个硬件逻辑模块,即CSUM_CTRL模块18、TX_CSUM模块19、RX_CSUM模块20、TX_FIFO模块21和RX_FIFO模块22。 

在图2中,checksum硬件逻辑模块17内部各个模块功能描述如下: 

CSUM_CTRL模块18:实现checksum模块的主要硬件逻辑,主要是对接收和发送的以太网数据包进行解析,提取数据包的传输协议类型、checksum值和计算IP头的checksum,同时根据传输协议类型来计算或比较传输协议类型的数据包的checksum值,最后将正确的checksum值填入到以太网数据包包头的位置进行传输。

TX_CSUM模块(发送数据checksum检验模块)19:作发送数据的checksum值计算。 

RX_CSUM模块(接收数据checksum检验模块)20:作接收数据的checksum值计算。 

TX_FIFO模块(发送数据缓存模块)21:将调用的FPGA内部一个发送数据的缓存,FIFO的输入是上端AXI-Stream接口下来的发送包数据,FIFO的输出是通过TX_CSUM模块计算后的数据。 

RX_FIFO模块(接收数据缓存模块)22:将调用的FPGA内部一个接收数据的缓存,FIFO的输入是上端AXI-Stream接口下来的接收包数据,FIFO的输出是通过RX_CSUM模块计算后的数据。 

参见图2,checksum硬件逻辑模块17的硬件控制接口信号(列出主要的控制信号)如下: 

TX_CSBEGIN:指示硬件逻辑开始对发送的数据作checksum检验;

TX_CSINSERT:指示硬件逻辑把协议传输数据的checksum插入到传输协议数据头的位置(TCP/UDP的头部checksum位置);

TX_CSCNTRL:指示硬件逻辑checksum值是否要放到传输协议数据头的位置(TCP/UDP的头部checksum位置);

TX_CSINIT:指示硬件逻辑作UDP传输协议的checksum时需要插入UDP伪头部来作checksum校验;

RX_CSRAW(接收数据完整性校验):指示硬件逻辑对接收以太网包作数据的checksum校验,接收数据包从接收开始的第14个字节开始作checksum并比对接收到的checksum值。

checksum硬件逻辑模块17中硬件逻辑的接口,还包括AXI-Stream接口过来的流控数据,实现对硬件checksum的计算硬件逻辑。该AXI-Stream接口,主要实现描述为首先硬件逻辑会判断接收到的控制信号的值,根据信号的值去接收到流控数据,并解析出以太网传输数据的帧的类型判断执行传输数据协议的类型来作IP头部的checksum和传输协议的头和数据的checksum(TCP/UDP的头部和数据的checksum)。 

图3可以实现万兆网卡功能,它通过PCIe接口与主机相连,PCIe Hard Ip模块是FPGA逻辑调用的PCIe硬核,实现以太网数据包的拆包组包功能,数据传输通道硬件接口直接通过PCIe接口插在电脑主板上。AXI_DMA模块14实现到以太网数据搭到内存的访问;AXI_DMA模块14通过AXI_interconnet接口链接到CPU模块,DDR3模块和PCIe Hard Ip模块16。 

参见图3,AXI DMA模块14,主要包括AXI-Lite子模块(高级可扩展总线轻量级读写寄存器接口子模块),SG R/W子模块(聚集集散读写接口子模块),MM2S Read子模块(读内存映射到流接口子模块),S2MM Write子模块(写流接口到内存映射子模块)。 

AXI DMA模块14中各子模块功能描述如下: 

AXI-Lite子模块:主要用于实现以太网应用层软件的寄存去读写;

SG R/W子模块:主要用于实现应用层软件读取硬件描述符信息的读写功能;

MM2S Read子模块:主要用于实现硬件读内存信息到硬件的高级可扩展总线流接口功能;

S2MM Write子模块:主要用于实现硬件通过高级可扩展总线流接口写数据信息到内存的接口功能。

方法实施例

根据本发明实施例,如图4所示,提供了基于万兆网卡的以太网包检验和FPGA硬件校验方法,主要包括:

采用如图1-图3所示的checksum硬件逻辑模块17,作为checksum硬件校验状态机,主要实现对接收和发送的以太网包头(IP header)或协议数据包头(TCP/UDP header)作checksum校验,以及对以太网数据帧头(IP header)和协议数据包头(TCP/UDP header)格式的填充和判断,对作checksum校验时的状态信息的输出控制。整个状态机流程分为接收和发送两部分。

在接收以太网数据包作checksum时:checksum硬件逻辑模块接口控制信号TX_CSBEGIN的状态进入到接收以太网数据包checksum检验状态,在这个状态checksum硬件逻辑模块会解析数据包的内容,包括以太网数据包的类型,IP头的checksum和TCP/UDP包头的checksum以及TCP/UDP的数据部分。同时会调用checksum硬件逻辑模块的硬件逻辑去执行IP头或者TCP/UDP包头的checksum计算,是否计算TCP/UDP包头要根据硬件解析的以太网数据包的类型来确定。完成计算后会校验checksum的值来判断数据包的完整性。 

checksum硬件逻辑模块接口控制信号RX_CSRAW的状态进入到接收数据完整性校验状态,checksum硬件逻辑模块的硬件逻辑会比较两次的checksum值,如果值一致则进入到 RX_CSUM_PLAYLOAD状态开始接收这一帧以太网包数据,否则丢弃这帧数据进入到IDLE状态等待重新接收数据。 

在发送以太网数据包作checksum时:checksum硬件逻辑模块接口控制信号TX_CSBEGIN的状态进入到发送以太网数据包checksum检验状态,在这个状态,checksum硬件逻辑模块的硬件逻辑判断发送以太网帧数据类型,确定是否需要作协议数据包头(TCP/UDP header)的checksum校验,同时作以太网数据包IP header的checksum校验。在TX_CSUM_IP_HEADER状态,checksum硬件逻辑模块接口控制信号TX_CSINSERT,TX_CSCNTRL和TX_CSINIT来确定是否开始作TCP/UDP header的checksum,确定是否改填充TCP/UDP header的checksum数据包头格式。硬件做完数据的填充后进入到发送以太网数据包状态。开始发送完整的以太网数据包格式的数据到AXI 数据链路层接口,此帧数据发送完成后跳到IDEL状态重新开始检测发送以太网数据包。 

具体地,上述checksum硬件校验状态机进行接收和发送校验时,有如下状态: 

IDLE状态(状态机空闲状态):判断来自AXI-Ethernet模块的TX_CSBEGIN信号,如此信号有效则进入到TX_CSUM状态,否则进入到RX_CSUM状态。

TX_CSUM状态(发送数据checksum检验状态):判断发送以太网帧数据类型,确定是否需要做协议数据包头(TCP/UDP header)的checksum校验,进入到TX_CSUM_IP_HEADER状态。 

TX_CSUM_IP_HEADER状态【以太网包数据帧头(IP header)校验状态】:封装经过checksum模块检验的checksum值到IP头结构checksum值,判断 TX_CSINSERT、TX_CSCNTRL和TX_CSINIT 确定是否要封装协议数据包头(TCP/UDP header)。如果需要对TCP/UDP头进行校验计算则会跳转到 TX_CSUM_TCP/UDP_HEADER状态,否则跳转到 TX_INSERT_HEADER状态。 

TX_CSUM_TCP/UDP_HEADER状态(协议数据包头检验状态)调用checksun模块计算TCP/UDP 包头的checksum值,同时封装TCP/UDP包头结构,封装完成跳转到 TX_CSUM_PLAYLOAD状态。 

TX_INSERT_HEADER状态(填充以太网数据包格式状态):填充无协议数据包头(TCP/UDP header)的以太网数据包,数据填充完成状态跳转到 TX_CSUM_PLAYLOAD状态。 

TX_CSUM_PLAYLOAD状态(发送以太网数据包状态):发送以太网数据包完整数据格式到AXI 数据链路层接口,此帧数据发送完成跳到IDEL状态。 

RX_CSUM状态(接收数据checksum检验状态):接收以太网包数据,解析数据帧类型,IP头的checksum值,协议数据包的checksum值。根据数据帧类型调用checksun模块计算IP头和TCP/UDP 包头的checksum值。 

RX_CSRAW状态(接收数据完整性校验状态):比较接收的以太网包数据包IP头部和TCP/UDP包头的checksum值和计算的以太网包数据包IP头部和TCP/UDP包头的checksum值,如果两个checksum值相同则跳转到 RX_CSUM_PLAYLOAD状态,否则丢弃此帧数据跳转到IDEL状态。 

RX_CSUM_PLAYLOAD状态(接收以太网数据包状态):接收以太网数据包完整数据格式到AXI 数据上层(应用层)接口,此帧数据接收完成跳到IDEL状态。 

上述各实施例的基于万兆网卡的以太网包检验和FPGA硬件校验方法,基于FPGA硬件逻辑实现checksum检验,在以太网包数据帧传输过程中包括对以太网数据包首部即IP头的checksum检验和TCP/UDP头和数据的checksum检验。在以太网数据包传输过程中,FPGA硬件逻辑会解析出以太网数据包的IP头部信息,同时转存IP头部中的checksum值信息,并重新计算IP头部的checksum校验值。计算完数据包的checksum值后会对这两个值进行比较,根据比较结果来确定此帧数据是否完整。如果数据包的checksum值计算与IP头部的checksum值不匹配则会丢弃此次帧数据传输,并等待接收下次数据传输开始;如果数据包的checksum值计算与IP头部的checksum值匹配则继续进行数据包传输。在数据传输过程中,FPGA逻辑会判断数据包传输的类型,根据数据包信息的类型执行TCP或UDP协议数据包的传输。在TCP和UDP协议数据包中,硬件逻辑同样会解析TCP和UDP协议数据包的包头和数据信息,转存TCP或UDP协议数据包包头的checksum值至硬件逻辑中定义的寄存器,同时对TCP协议数据包包头进行checksum检验和计算(UDP协议数据包包头信息可以不使用checksum校验),在数据传输过程中FPGA硬件逻辑会对TCP协议数据包包头进行判断对比来确定整个数据的完整性。如果checksum值检验通过则传输数据到上层接口或者低层接口,如果checksum值检验不通过则会丢弃整个数据传输,重新等待接收和发送数据的传输。 

综上所述,本发明上述各实施例的基于万兆网卡的以太网包检验和FPGA硬件校验方法,通过硬件逻辑实现了对checksum的检验(即通过FPGA硬件逻辑实现checksum的算法和逻辑控制以及数据传输通路的控制),节省了占用CPU的资源和减少CPU处理中断和进程所占用的时间,提高CPU处理的效率和性能;而且通过硬件逻辑来实现以太网数据包包头(header)的checksum检验和计算更快,提高了数据传输的稳定性和可靠性。 

最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。 

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号