一种对以太网数据帧覆盖性的监测装置的制作方法

文档序号:13075562阅读:255来源:国知局
一种对以太网数据帧覆盖性的监测装置的制作方法

本发明属于通信技术领域;涉及面向以太网的数据包的检测方法;具体涉及一种对以太网数据帧覆盖性的检测装置。



背景技术:

在服务器级别的高性能以太网控制器中,都需要对网络中接收到的数据包进行指定规则的检测或分析,如规则检查(rulecheck)或iov(input/outputvirtualization),实现对指定数据包的高优先级处理,有助于实现网络实时监控,精细管理,有利于网络安全性能的提升,同时也可以满足特殊应用的需求。

随着千兆以太网、万兆以太网技术的发展,对网络中接收到的数据包进行检测的方法和结构的性能效率直接影响到网络控制器对网络数据包内容的检测效率。因为若检测方法和结构不能够实时、有效地处理海量数据包信息,就会导致数据包的丢弃,甚至影响到网络控制器的正常工作;另一方面,随着以太网技术的发展,数据帧的长度越来越长,如巨型帧的长度可以达到9600字节,因此对巨型帧中的相关信息进行覆盖性匹配是另一项重要特性。

为了提高以太网控制器对数据包检测的性能和灵活性,目前主要的方法包括:(1)基于传统bloomfilter的实现方法。bloomfilter由一个二进制数组和一系列随机映射函数组成,它可以用于检索一个元素是否在一个集合中;(2)基于dfa的实现方法,该方法基于硬件将模式集或规则表达式转化为自动机(nfa或dfa)以实现规则匹配检测,可参考文献《fastregularexpressionmatchingusingfpga》;(3)基于tcam的实现方法。tcama(ternarycontentaddressablememory)是一类能够进行并行查找的高速存储器,允许对位或域进行“0”、“1”或“*”三种方式的配置,具体可参考文献《gigabitratepacketpatternmatchingusingtcam》。

上述方法(1)的检测算法相对简单,对硬件资源开销小,实现起来相对容易,但其检测速率较低,未来将不能够满足高速网络的需求。方案(2)的本质是基于ac算法及其改进算法利用硬件资源实现模式匹配,这样的实现方法虽然可以获得比较好的性能,但是存在资源需求量大、并行性不好且粒度大和模式更新延迟大等缺点。方案(3)tcam执行速度块,效率高,有利于短模式的匹配,且支持通配符以及前缀匹配,但是基于tcam的模式匹配算法用硬件实现起来较负责,且硬件开销大,实现时每个模式存储相对独立,导致共享性不好。



技术实现要素:

本发明提供了一种以太网数据帧覆盖性的检测装置;提供了一种通过配置规则控制寄存器和mask/value寄存器实现对以太网数据帧的覆盖性检测装置,根据检测结果得出该帧在上层应用处理中的优先级。

本发明的技术方案是:一种以太网数据帧覆盖性的检测装置,包括对以太网数据帧缓存和管理的接收缓存模块,存储检测规则和mask/value信息的寄存器模块,多个提取及存储检测规则信息的寄存器信息读取模块,寄存器模块中的mask/value信息与接收缓存模块中接收到的以太网数据帧进行比较的比较模块,比较模块的数量与寄存器信息读取模块的数量相同;通过比较模块的结果确定整个数据帧优先级的仲裁模块;输出模块根据仲裁模块得到的数据帧的优先级配置dma模块,dma模块(8)将接收到的数据包发送至主机相应的内存区域。

更进一步的,本发明的特点还在于:

其中寄存器信息读取模块有8个,且寄存器信息读取模块与比较模块一一对应。

其中寄存器信息读取模块包括对寄存器模块中配置的规则信息进行读取。

其中寄存器信息读取模块读取的规则信息包括需要检测的数据帧信息、判断标准信息和控制位的使能信息。

其中仲裁模块对多个比较模块得到的配置规则进行仲裁,根据每个配置规则的匹配性,得到当前接受的以太网帧的集合。

其中输出模块包括rdi模块和rbd模块;其中rdi模块实现对dma模块的控制,rbd模块用于存储数据包的地址空间。

其中rdi模块输出fifo和数据包在内存中的地址和长度,并且从rdb模块中得到主机内存中可用的存储地址,然后将该存储信息发送给dma模块。

与现有技术相比,本发明的有益效果是:使用本发明的装置,用户可以根据不同帧的及时性、优先处理的需求灵活地配置多个或8个匹配规则;由于从mac接收的数据帧已经将前导符、帧起始定界符和帧校验序列剥离掉,因此每个规则的匹配性检查能够覆盖到整个以太网帧,从而实现了对关键数据帧的精确匹配和实时处理,从而给当前帧分配优先级等级,也可以实现对不需要处理帧的提前丢弃,大大提高了传输的有效性。

附图说明

图1为本发明的结构示意图;

图2为本发明中实施例1的寄存器模块中配置信息示意图:

图3为本发明中实施例2的寄存器模块中配置信息示意图。

图中:1为寄存器模块;2为寄存器信息读取模块;3为接收缓存模块;4为比较模块;5为仲裁模块;6为输出模块;7为mac模块;8为dma模块。

具体实施方式

下面结合附图和具体实施例对本发明的技术方案进一步说明。

本发明提供了一种以太网数据帧覆盖性的检测装置,如图1所示,包括1个寄存器模块1,寄存器模块1用于存储检测规则的配置信息,包括检测规则和mask/value规则;多个寄存器信息读取模块2,优选为8个,主要用于对接收寄存器模块1中的相关规则信息进行读取,读取的第一部分信息为需要检测数据帧中的部分内容,包括帧头、ip头、tcp头、udp头和数据部分,第二部分为判断标准,第三部分为mask/value寄存器的控制位是否使能;1个接收缓存模块3,接收缓存模块3用于接收并缓存mac模块7的以太网数据包;与寄存器信息读取模块2一一对应的比较模块4,优选为8个,比较模块4用于对寄存器信息读取模块2读取的诊信息和mask/value寄存器的配置信息进行对比,并且根据比较结果给出class等级;1个仲裁模块5,仲裁模块5根据8个寄存器信息读取模块2的高2位使能位和比较模块4的结果对整个以太网帧的优先级进行判断,以确定当前帧由哪个处理器核处理;1个输出模块6,根据仲裁模块5的结果,通过配置dma模块,由dma将接受到的数据包发送到主机对应的内存区域。

本发明中各个模块的工作原理是:寄存器模块1用于存储检测规则的配置信息,包括8个检测规则寄存器和8个mask/value寄存器的信息。当系统上电/复位后,先对这8组寄存器进行配置,然后寄存器信息读取模块2读取8个规则检测控制寄存器的信息,将读取结果进行提取,比较模块4读取8个mask/value寄存器的配置信息,该检测规则由用户通过配置寄存器设定。

寄存器信息读取模块2对寄存器模块1配置的相关规则信息进行存储及提取,主要的配置信息包括检测模式和检测规则,寄存器信息读取模块2定义如表1所示。共有8个规则控制寄存器,且8个规则配合使用,每个寄存器32位,共256位。提取的第一部分信息为该检测规则是否使能(bit31是否使能);第二部分信息为是否还需要进行下一个规则进行检测(bit30是否使能,且当下一个规则的bit31为“1”时才进行下个规则的检测,8个检测规则依此类推);第三部分信息为mask/value寄存器的控制位是否使能,若使能则用mask/value寄存器的bit15-bit0(bit31-bit16配置为16’hffff)、bit15-bit8(bit31-bit24配置为8’hff)或者bit7-bit0(bit23-bit16配置为8’hff)进行匹配性检测;若不使能则用mask/value寄存器的bit31-bit0进行匹配性检测;第四部分信息为discard,表示当前帧的规则匹配时将该帧丢弃;第五部分信息为判断标准是大于、小于、等于、不等于;第六部分信息为需要检测数据帧中的哪部分内容(帧头、ip头、tcp头、udp头、数据部分,从mac接收的数据帧已经将前导符、帧起始定界符和帧校验序列剥离掉),对帧头和数据部分进行检测是本发明的核心内容;第七部分信息为当前帧与的设置的检测规则匹配时分配的优先级等级;第八部分信息从接收的以太网帧中提取匹配信息时设置的偏移量。

表1:寄存器信息读取模块

接受缓存模块3完成对mac模块7发送的以太网数据包的缓存和管理。该模块主要由三个模块组成,分别为:ari-ram接口转换模块、地址管理模块和ram。ari-ram接口转换模块主要功能是实现ari接口到ram接口的转换,使来自mac模块7的数据包能够写入ram,地址管理模块主要功能是对ram的地址进行管理,ram大小为32kb,宽度为8字节,深度为4k。

为了能够高效地对ram地址进行管理,采用对ram分块的方法,将ram分为若干块,每块大小为128字节。地址管理模块中有一个地址队列,存储着ram中每一块的起始地址。接收到的数据包按块进行存储。若数据包大小超过128字节,将会使用连续的块来进行存储。因为以太网数据包最小64字节,最大1518字节,所以将每一块分为128字节,是折中的选择,既保证了存储的需要,也减小了ram资源的浪费,属于细粒度的操作。当ram中被写入或读出数据时,地址管理模块会更新内部的地址队列:当写ram开始时,队列头的地址会被消耗(出队操作),作为数据包存储的起始地址,因此该地址会被使用;当读ram完成时,读地址会被排到队列尾(入队操作),表示该块地址已被释放,可用来存储接收到的数据包。

比较模块4根据寄存器信息读取模块2读取的信息,对输入的以太网帧中的相关信息进行提取然后和mask/value寄存器中的配置值进行比较,然后得出该规则的class,当规则控制寄存器的mask位使能时则用mask/value寄存器的bit15-bit0(bit31-bit16配置为16’hffff)、bit15-bit8(bit31-bit24配置为8’hff)或者bit7-bit0(bit23-bit16配置为8’hff)进行匹配性检测;若不使能则用mask/value寄存器的bit31-bit0进行匹配性检测;mask/value寄存器的相关定义如表2所示。

表2mask/value寄存器

比较模块4根据接受缓存模块3接收到mac模块7的以太网数据包,并根据寄存器信息读取模块2的配置信息,从接收到的数据包中提取出相应的待检测部分,然后与mask/value寄存器中的内容进行匹配性检查。

比较模块4与mac模块7之间采用ari接口,数据线宽为64位,因此在接收阶段每个时钟上升沿采样8个字节有效数据包。预处理模块会监测ari接口中的sof信号(startofframe),一旦该信号产生上升脉冲,则代表有效帧的开始,预处理模块会在每一个时钟周期对数据总线进行采样。根据寄存器模块的配置,直到将需要的待检测内容提取完毕后,采样结束;或者当监测到eof信号(endofframe)的上升脉冲,采样结束。

比较模块4支持5种模式的待检测内容提取,分别为帧头提取、ip头提取、udp头提取、tcp头提取以及数据部分提取。提取出的待检测内容将会被存储在fifo中。该fifo的宽度为32位,深度为40。由于ip头和tcp头的长度均为20字节,而fifo的宽度只有32位(4字节),因此需要对fifo进行连续的5次写/读才能实现一个ip头或tcp头的存储/取出。同理,由于udp头的长度为8字节,因此需要连续的2次操作。另外,该fifo的深度为40,因此最多可以存储8个ip头或tcp头,或者20个udp头。

仲裁模块5对8个比较模块4得到的8个配置规则的class进行仲裁,在仲裁的过程中需要判断每个规则控制寄存器的bit31及bit30位,然后再判断每个规则的匹配性,从而得出当前接收的以太网帧的class。

输出模块6根据检测的结果,通过配置dma,由dma将接收到的数据包发送到主机对应的内存区域。输出模块主要有2个模块组成,分别为:rdi(receivedatainitiator)模块和rbd(receivebufferdescription)模块。rdi模块主要功能是实现对dma的控制。rbd模块的主要功能是存储和更新主机内存可用的地址空间。rbd模块分别存储高优先级数据包和普通数据包的地址空间。其具体工作过程是:rdi模块分别从检测结果输出fifo和地址管理模块中得到检测结果和对应数据包在ram中的地址、长度等信息,根据检测结果(高优先级数据包或普通数据包)从rbd模块中得到主机内存中可用的存储地址,然后将源地址、目的地址以及长度等控制信息发送到dma模块,dma模块根据控制信息开始数据包的搬移。

主机cpu会优先处理在内存中处于高优先级区域的数据包,只有当高优先级的数据包全部处理完成后,才会开始对普通数据包的处理。这样就实现了对符合规则的数据包的优先处理,满足了上层特殊应用的需求。

本发明一种以太网数据帧覆盖性的检测装置,能够用于具有数据包检测功能的网络控制器中,特别适用于服务器级别的、高性能网络多核数据处理系统中。采用本发明的装置,可对以太网数据包中的帧头、ip头、tcp/udp头、数据帧的有效载荷部分进行解析,该匹配规则能够实现以太网帧的覆盖性匹配,在网络控制器的设计中可以完整地替代现有的数据包检测电路。

根据上述技术方案,使用verilog语言对本发明中各个模块的逻辑设计进行描述,并将其集成到网络控制器中,进行系统级的验证。验证结果表明,本发明实现了设计功能,并实现了对接收数据帧的覆盖性匹配及优先级管理。其具体实施例为:

实施例1

对ip帧的数据部分进行优先级管理,规则控制寄存器和mask/value寄存器配置,具体如图2所示。

当电路上电完成寄存器模块1的配置之后就开始以太网帧的数据传输,接收缓存模块3先将mac模块7接收的以太网帧进行存储,同时寄存器信息读取模块2从寄存器模块1中读取图2所示的配置信息并进行解析,第一个规则用于判断接收的以太网帧是否是ipx帧,先offset12b(da和sa),然后对type/length部分进行判断(比较16bits,高16位对应控制低16位,低16位配置为value);第二个规则用于判断数据部分的第8字节是否大于0x06(用mask/value的高16位控制低16位,高16位配置为mask,用高8bits进行比较。每个规则比较8位、16位还是32位是由mask/value寄存器可用于比较的位数决定的),比较模块4根据寄存器信息读取模块2解析的控制信息从接受缓存模块3中存储的以太网帧中提取ip头部分和数据部分,然后和mask/value寄存器的配置值继续比较,当以太网帧为ipx帧且数据部分第8字节大于0x06时,则给当前帧分配等级为2的优先级;仲裁模块5对两个规则的结果进行综合考虑,只有当2个规则都匹配时最终的结果才算匹配;输出模块6根据仲裁模块5的结果请求dma模块8读取当前帧的优先级等级;从而该例实现了对ip头及数据部分的优先级管理。

实施例2

对广播帧进行优先级管理,规则控制寄存器和mask/value寄存器配置如图3所示,第一个规则用于对da的高32位进行比较;第二个规则用于对da的低16位进行比较(用高16位控制低16位),通过判断48位的da是否全部为1,如果全部为1表示该帧为广播帧,然后将该帧丢弃。

当电路上电完成寄存器模块1的配置之后就开始以太网帧的数据传输,接收缓存模块3先将mac模块7接收的以太网帧进行存储,同时寄存器信息读取模块2从寄存器模块1读取图3所示的配置信息并进行解析,比较模块4根据寄存器信息读取模块2解析的控制信息从接受缓存模块3存储的以太网帧中提取帧头的da部分,然后和mask/value寄存器的配置值继续比较,当以太网帧头的48位da全部为1表示该帧为广播帧,然后根据配置规则将该帧丢弃。;仲裁模块5对两个规则的结果进行综合考虑,只有当2个规则都匹配时最终的结果才算匹配;输出模块6根据仲裁模块5的结果请求dma模块8读取当前帧的优先级等级;从而该例实现了对以太网帧头的优先级管理。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1