一种网络包处理器及对数据包的处理方法与流程

文档序号:20701015发布日期:2020-05-12 15:42阅读:164来源:国知局
一种网络包处理器及对数据包的处理方法与流程

本发明属于网络通信技术领域,具体涉及一种网络包处理器及对数据包的处理方法。



背景技术:

随着传输技术不断进步,特别是光纤技术的飞速发展,网络带宽的增长速度逐渐超过了网络设备处理能力的增长速度,而且这种差距有加大的趋势,使得网络系统的瓶颈由“带宽”又逐渐变成了中间的“网络处理设备”,因此,对网络处理设备的速度要求越来越高。另外,新的网络应用不断出现,网络设备需要支持的协议数目越来越多、协议内容也越来越复杂,中间网络设备需要具有高度的灵活性来满足新协议和新业务出现带来的变化,它们需要识别网络中形形色色的各种网络包,针对不同的网络包采取不同的处理措施。

网络包处理器是网络处理器的一个功能单元,网络包处理器是专门用来执行网络数据包处理的,它的主要功能包括网络包分类、路由查找以及访问控制。网络处理器包括网络包处理器、包修改、队列管理和包转发等功能单元,网络包处理器是整个网络处理器中运算量最大、耗用资源最多的引擎单元。目前,业界在实现网络包处理器方面有三种通用方法:

(1)采用软件实现对网络包的分类和处理。一些厂家为了解决网络包分类和处理的灵活性问题,采用cpu的架构来实现。该方法将网络包输入给cpu,通过软件匹配模板来实现对网络包任意位置的字段进行匹配提取,然后根据提取的信息对网络包进行转发处理。这种方式是采用软件来实现的,虽然该方法使网络包探测处理变得很灵活,但需要增加cpu,以及cpu的相关部件。同时,由于网络包处理性能的要求达到10gbits/s以上时,一个cpu核很难完成网络包的探测和处理,往往需要多个cpu核结构,无疑增加了成本、资源和功耗。

(2)为采用内嵌的精简指令集计算机(reducedinstructionsetcomputer,缩写为risc)和三态内容寻址存储器(ternarycontentaddressablememory,缩写为tcam),通过对网络包进行检测,实现访问控制和多层虚拟局域网映射。对于要求芯片线速处理1到10gbits/s以上的数据包,如果采用risc,往往需要多个risc核结构,无疑增加芯片设计的复杂度、芯片占用的面积和功耗;此外,tcam面积和功耗也比较大,一般需要购买专门厂家的ip,这也会增加芯片的生产成本。

(3)专用专用集成电路(applicationspecificintegratedcircuit,缩写为asic)芯片或现场可编程门阵列(field-programmablegatearray,缩写为fpga)实现对已经知道的以太网网络包特征字段进行解析和处理。这种处理方式根据目前已经知道的网络包的结构,提取网络包的特征字段,比如,对于以太网帧结构的数据包来说,提取:二层的mac地址,虚拟局域网(virtuallocalareanetwork,简称为vlan),以太网包类型字段ethertype;三层的ip地址,ip协议;四层的tcp/udp网络包的相关信息。然后,根据这些特征字段进行网络包的转发处理。这种方式有一个致命的缺点,一旦有新网络包出现或者网络包有新的特征字段出现,这种网络包分类和处理方式不能满足要求。

针对无源光网络(passiveopticalnetwork,缩写为pon)芯片的虚拟局域网标记变换以及骨干网路由查找的需求,本专利提供一种网络包处理方法和装置以解决上述问题。



技术实现要素:

针对现有技术中存在的缺陷,本发明的目的是提供一种网络包处理器及其对数据包的处理方法,可以灵活方便地对数据包头进行抽样,得到网络数据包任意特征属性,还可以通过预先设置特征向量配置表得到网络数据包的处理方式。

为达到以上目的,本发明采用的技术方案是:一种网络包处理器对数据包的处理方法,包括:

(1)预设包括m个数据抽样和比较规则的规则表,为每个端口预设一个m位的数据抽样和比较规则使能寄存器,m为自然数,数据抽样和比较规则使能寄存器的一位对应一个数据抽样和比较规则使能位,位w使能时,选中位w对应的数据抽样和比较规则表,w为0或小于m的自然数;;

(2)接收数据包头,根据数据包的输入端口得到数据包的输入端口号;

(3)根据所述输入端口号获取对应的数据抽样和比较规则;

(4)根据所述数据抽样和比较规则对数据包头进行抽样比较,得到m位特征数据;

(5)将获得的数据包的m位特征数据与所述输入端口号组成一个特征向量,使用该特征向量对特征向量配置表进行匹配查找,若匹配查找成功则获得动作表地址索引,用得到的动作表地址索引查动作表,得到数据包的处理方式,若匹配查找不成功,则根据数据包的输入端口号,采用基于输入端口的数据包缺省处理方式对数据包进行处理。

进一步的,所述步骤(2)还包括:判断接收的数据包是否有2k字节,若不足,则在数据包尾后面用0补足,将接收的数据包补足到2k字节,再从数据包中提取2k字节的数据包头,一般情况下,k为不小于7的自然数。

进一步的,所述步骤(3)中所述数据抽样和比较规则具体包括:数据包的抽样点、抽样距离、数据比较掩码和比较数据。

进一步的,根据数据抽样和比较规则使能寄存器中每个使能的数据抽样和比较规则定义的数据包头的抽样点和抽样距离,对数据包头抽样,得到n字节的抽样数据;

根据数据比较掩码将所述抽样数据和比较数据进行比较,若两者相等则得到一位数1,不相等则得到一位数0;

每个不使能的数据抽样和比较规则,不会对数据包头进行数据抽样和比较,只会得到一位数0;

按照所述规则表对数据包头进行抽样比较,m个抽样规则对数据包抽样比较后,可以得到数据包头的m位特征数据。

进一步的,在步骤(4)之后,步骤(5)之前所述方法还包括:

预设特征向量配置表,所述特征向量配置表包括:表项有效位、特征数据、输入端口号和动作表地址索引。

进一步的,所述步骤(5)还包括:

预设动作表,所述预设动作表为与动作表地址索引对应的数据包处理方式,包括:不做任何修改的直接转发到指定端口、包修改之后转发到指定端口、丢弃或上交cpu处理。

进一步的,所述步骤(5)还包括:

若所述特征向量中至少一项与所述特征向量配置表每个表项中内容不相同,或虽然有内容相同的一个表项,但该表项有效位表明该表项无效,则为匹配失败;

若匹配失败,则对所述数据包采用其输入端口定义的缺省处理方式处理,缺省处理方式包括:不做任何修改的直接转发到指定端口、包修改之后转发到指定端口、丢弃或上交cpu处理。

为达到以上目的,本发明采用的技术方案是:一种网络包处理器,包括一个cpu接口,通过所述cpu接口对网络包处理器配置包括m个数据抽样和比较规则的规则表、特征向量配置表、动作表以及每个端口对应的输入数据包的缺省处理方式和数据抽样和比较规则使能寄存器;

所述网络包处理器包括:

数据抽样和比较模块,含有m个数据抽样和比较规则的规则表和数据抽样和比较规则使能寄存器,用于对输入的数据包头进行抽样比较;根据所述数据包输入端口得到数据包的输入端口号;获取对应的m位数据抽样和比较规则使能寄存器,根据数据抽样和比较规则使能寄存器的每个使能位得到每个对应的数据抽样和比较规则;并根据所述数据抽样和比较规则对数据包头进行抽样比较,从包头中提取m个特征数据,将特征数据和输入端口号组成的特征向量发送给特征向量查找模块;

特征向量查找模块,含有特征向量配置表,用于将特征向量与特征向量配置表进行匹配,若匹配成功,则将动作表地址索引发送给包处理方式模块;

数据包处理方式模块,含有动作表,用于根据动作表地址索引查动作表,得到数据包的处理方式。

进一步的,所述数据抽样和比较规则具体包括:数据包的抽样点、抽样距离、数据比较掩码和比较数据。

进一步的,数据抽样和比较模块根据所述数据抽样和比较规则对数据包进行抽样比较得到m位特征数据,具体包括:

具有m位的数据抽样和比较规则使能寄存器的一位对应一个数据抽样和比较规则,位w使能时,选中位w对应的数据抽样和比较规则;

根据使能选中的数据抽样和比较规则定义的数据包头的抽样点,对数据包头抽样得到n字节的抽样数据;根据数据比较掩码将所述n字节抽样数据和比较数据进行比较,若两者相等则得到一位数1,不相等则得到一位数0;

每个不使能未选中的数据抽样和比较规则,不会对数据包头进行数据抽样和比较,每个不使能未选中的数据抽样和比较规则,会得到一位数0;

按照所述规则对数据包头进行抽样比较,m个抽样规则对数据包抽样比较后,得到数据包头的m位特征数据。

进一步的,所述特征向量配置表包括:特征数据、输入端口号和动作表地址索引。

进一步的,所述动作表包括:与动作表地址索引对应的数据包处理方式,包括:不做任何修改的直接转发到指定端口、包修改之后转发到指定端口、丢弃或上交cpu处理。

进一步的,若特征向量查找模块匹配失败,数据包处理模块根据所述输入端口号采用数据包的缺省处理方式对数据包进行处理,所述输入数据包的缺省处理方式:不做任何修改的直接转发到指定端口、包修改之后转发到指定端口、丢弃或上交cpu处理。

本发明的效果在于,本发明提供的网络包处理器及其对数据包的处理方法可以灵活方便地对数据包头进行抽样,得到网络包的二层、三层或四层以上的任意特征属性或特征属性的组合,和预先设置的特征向量配置表进行匹配,根据匹配得到的索引查找动作表,通过动作表表项,得到包的处理方式:不做任何修改的直接转发到指定端口、包修改之后转发到指定端口、丢弃或上交cpu处理。

附图说明

图1为本发明所述的一种网络包处理器对数据包的处理方法的流程示意图;

图2为本发明中数据抽样和比较规则表的表项的结构示意图;

图3为本发明中端口数据抽样和比较规则使能寄存器的结构示意图;

图4为本发明中特征向量配置表的表项数据结构的示意图;

图5为本发明所述的一种网络包处理装置的结构示意图;

图6为本发明中一个动作表的表项结构案例示意图。

具体实施方式

为使本发明解决的技术问题、采用的技术方案和达到的技术效果更加清楚,下面将结合附图对本发明实施例的技术方案作进一步的详细描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,均属于本发明保护的范围。

参阅图1,图1为本发明所述的一种网络包处理器对数据包的处理方法的流程示意图。本发明提供的一种网络包处理器对数据包的处理方法包括以下步骤:

步骤一:系统预设一个含有m个表项的数据抽样和比较规则表,为每个端口预设一个m位的数据抽样和比较规则使能寄存器。

提前预设一个数据抽样和比较规则表,数据抽样和比较规则表中包括m个数据抽样和比较规则。每个端口都预设有端口数据抽样和比较规则使能寄存器。参阅图3,对应m个数据抽样和比较规则,每个端口数据抽样和比较规则使能寄存器也具有m位,其中m为自然数。数据抽样和比较规则表保存在一个至少有m个存储单元的存储器ram中,一个存储单元保存一个数据抽样和比较规则,每个存储单元里存储不同的数据抽样和数据比较规则,参阅图2,每个数据抽样和数据比较规则的存储地址就是它的编号,编号从0开始,到m-1结束。

一个编号对应数据抽样和比较规则寄存器中的一个使能位,即数据抽样和比较规则使能寄存器的一位对应一个数据抽样和比较规则的使能位,位w使能时,选中位w对应的数据抽样和比较规则,w为0或小于m的自然数。通过每个端口的数据抽样和比较规则使能寄存器可以配置每个输入端口使用的数据抽样和比较规则。

步骤二:接收数据包头,根据数据包的输入端口获得输入端口号。

具体包括:判断接收的数据包是否有2k字节,若不足,则在数据包尾后面用0补足,将接收的数据包补足到2k字节,再从数据包中提取2k字节的数据包头,一般情况下,k是不小于7的自然数,对于一个网络包处理器来说,k的大小可以设置。

步骤三:根据所述输入端口号获取对应的数据抽样和比较规则。

根据数据包的输入端口号,读取该端口的数据抽样和比较规则使能寄存器,每个为1的位对应的数据抽样和比较规则表表项使能,被该端口选中,为0的位对应的数据抽样和比较规则表表项不使能,没有被该端口选中,这样就能得到该端口所有使用的数据抽样和比较规则。需要说明的是,每个端口对应至少一个数据抽样和比较规则。

数据抽样和比较规则定义了数据抽样和比较方法。参阅图2,具体包括:数据包的抽样点、抽样距离、数据比较掩码和比较数据。偏移距离以字节为单位。继续参阅图2,每个数据抽样和数据比较规则表的表项就是一个抽样规则,它含有2*n*8+k位数据,该数据被分成3段,其中,高k位表示抽样距离,抽样距离以字节为单位,最大抽样距离为2k-1字节,中间的n*8位为数据比较掩码,低n*8位是用于比较的数据。

根据数据抽样和比较规则中定义的抽样距离从每个数据包头的抽样点开始连续抽样n*8位数据,n为自然数,得到n字节的抽样数据。

步骤四:根据所述数据抽样和比较规则对数据包进行抽样比较,得到m个特征数据。

具体包括:根据数据抽样和比较规则定义的数据包头的抽样点和抽样距离抽样得到n字节的抽样数据;根据数据比较掩码对所述抽样数据和比较数据进行比较,若两者相等则匹配。具体的,掩码置1的位需要比较,掩码置0的位不需要比较,如果抽样数据和比较数据相等,则得到一位数据1,如果不等或该表项不使能,则得到一位数0,不管该数据是1还是0,它就是该数据包的一位特征数据。

每个不使能的数据抽样和比较规则,不会对数据包头进行数据抽样和比较,每个不使能的规则会得到一位数0,该数据也是数据包的一位特征数据。

按照上述数据抽样和比较规则,对数据包头进行抽样比较,每个使能被选中或不使能没有被选中的数据抽样和比较规则都可以得到该数据包的1个一位特征数据。故m个数据抽样和比较规则,可以得到m位特征数据。

步骤五:将获得的数据包的m位特征数据与所述输入端口号组成一个特征向量,并通过特征向量配置表进行匹配查找,若匹配查找成功则获得动作表地址索引,查动作表,得到数据包的处理方式。

在匹配之前预设特征向量配置表、动作表和基于输入端口的输入数据包的缺省处理方式。特征向量配置表和动作表也保存在一个存储器ram中。

参阅图4,所述特征向量配置表包括:表有效位、m位特征数据、输入端口号和动作表地址索引。所述预设动作表为与动作表地址索引对应的数据包处理方式,包括:不做任何修改的直接转发到指定端口、包修改之后转发到指定端口、丢弃或上交cpu处理。

具体的,如果查特征向量配置表得到的表项有效,并且端口号、m位特征数据分别等于用于查表的端口号、m位特征数据,就说特征向量配置表查找成功,或说特征向量配置表匹配成功。

若匹配成功则获得动作表地址索引,查动作表,得到数据包的处理方式。包的处理方式包括:不做任何修改的直接转发到指定端口、包修改之后转发到指定端口、丢弃或上交cpu处理。如果是包修改之后转发,动作表还可以定义对数据包的修改方式。动作表可以同时告知网络包处理器当前处理数据包以字节为单位网络协议各层的起点,以便于对数据包进行修改。例如,如果是对包进行修改之后再转发,并且数据包含有vlan域,动作表可以选择对vlan域是否进行删除、修改或添加,也可以不做任何vlan域的修改,这取决于动作表的配置。

若所述特征向量中至少一项与所述特征向量配置表中内容不相同,或虽然每项都相同,但特征向量配置表的该表项有效位指示该表项无效,则为匹配失败;若匹配失败,则对所述数据包进行缺省处理,缺省处理方式包括:不做任何修改的直接转发到指定端口、包修改之后转发到指定端口、丢弃或上交cpu处理。如果是包修改之后转发,还可以定义对数据包的修改方式。缺省处理方式基于输入端口进行定义。

参阅图6,图6给出了一个动作表表项案例,其中action_code为包处理动作编码,为表项的[1:0]位,00:表示不做任何修改直接转发,01:表示对包进行修改之后转发,10:表示丢弃数据包,11:表示将数据包上交cpu进行处理;egress_port_id表示包输出端口编号,为表项的[6:2]位;

vlan_offset_en表示包是否存在虚拟局域网vlan标记域,位于表项的[7]位,为1时,表示存在vlan域,为0时表示vlan域不存在;vlan_offset表示vlan域的起始位置,用距离包头起始位置0字节偏移距离表示,位于表项的[15:8]位;vlan_modify表示对vlan域的修改动作,位于表项的[16]位,0:不修改,1:修改;vlan_id表示修改后的vlan域标识号,位于表项的[28:17]位;l3_offset_en表示网络包是否含有三层协议数据,位于表项的[29]位,为1表示存在,为0表示不存在;l3_offset表示,在三层协议数据存在的情况下,三层协议数据的起始位置,l3_offset位于表项的[37:30]位;l4_offset_en表示网络包是否含有四层协议数据,位于表项的[38]位,为1表示存在,为0表示不存在;l4_offset表示在四层协议数据存在的情况下,四层协议数据的起始位置,l4_offset位于表项的[46:39]位。

该表项告知了网络包处理器该该数据包是否存在vlan域,如果存在vlan域,它的起始位置在哪里,是否需要修改包的vlan域标识号,如果需要修改,就采用动作表表项里的vlan_id替换原来包所含的vlan域标识号;此外,动作表还告知该包是否含有三层、四层数据,以及各层数据的起始位置,egress_port_id告知了包转发的输出端口号。

区别于现有技术特征,本方法通过改变数据抽样和比较规则表可以灵活方便地对数据包头进行抽样,还可以通过改变抽样距离得到网络包的二层、三层或四层以上的任意特征属性或特征属性的组合,再和预先设置的特征向量配置表进行匹配,根据匹配得到的索引查找动作表,通过动作表表项,得到包的处理方式。

参阅图5,图5为一种网络包处理器的结构示意图。本发明提供的一种网络包处理器包括一个cpu接口,通过所述cpu接口对网络包处理器预设包括m个的数据抽样和比较规则的规则表、特征向量配置表、动作表、每个端口对应的输入数据包的缺省处理方式和数据抽样和比较规则使能寄存器。

一般地,在一个网络设备中,所有的输入端口共享一个网络包处理器。由于每个输入端口的数据包格式可能不一样,或用户关注点可能不一样,因而采用的数据抽样和比较规则就可能不一样。系统上电的时候,通过cpu接口对每个端口的数据抽样和比较规则使能寄存器(如图3所示)进行配置,使得每个端口选择符合自己要求的数据抽样和比较规则(如图2所示)。同时,通过cpu配置特征向量配置表、动作表和每个端口对输入数据包的缺省处理方式。

所述数据抽样和比较规则具体包括:数据包的抽样点、抽样距离、数据比较掩码和比较数据。

特征向量配置表包括:一个使能位、特征数据、输入端口号和动作表地址索引。

所述动作表包括:与动作表地址索引对应的数据包处理方式,包括:不做任何修改的直接转发到指定端口、包修改之后转发到指定端口、丢弃或上交cpu处理。

继续参阅图5,所述网络包处理器还包括:

数据抽样和比较模块,含有m个数据抽样和比较规则的规则表和数据抽样和比较规则使能寄存器,用于接收输入的数据包头;根据所述数据包的输入端口号获取对应的数据抽样和比较规则;并根据所述数据抽样和比较规则对数据包头进行抽样比较;从包头中提取数据的特征数据,将特征数据和输入端口号组成的特征向量发送给特征向量查找模块。

其中数据抽样和比较模块根据所述选中的数据抽样和比较规则对数据包进行抽样比较具体包括:

根据使能选中的数据抽样和比较规则定义的数据包头的抽样点和抽样数据抽样得到n字节的抽样数据;根据数据比较掩码将所述抽样数据和比较数据进行比较,若相等则匹配,得到一位数据1,不相等则不匹配,得到一位数据0。

每个不使能未被选中的数据抽样和比较规则,不会对数据包头进行数据抽样和比较,每个不使能的数据抽样和比较规则,会得到一位数0;

按照所述规则对数据包头进行抽样比较,m个抽样规则对数据包抽样比较后,得到数据包头的m位特征数据。

特征向量查找模块,含有特征向量配置表,用于将特征向量与特征向量配置表进行匹配,若匹配成功,则将动作表地址索引和匹配成功的信息发送给包处理方式模块,数据包处理方式模块根据动作表地址索引和匹配成功信息查动作表,得到数据包的处理方式。若特征向量查找模块匹配失败,特征向量查找模块会将数据包的输入端口号和匹配失败的信息告知数据包处理模块,数据包处理模块根据所述输入端口号和匹配失败的信息得到数据包的缺省处理方式,所述输入数据包的缺省处理方式:不做任何修改的直接转发到指定端口、包修改之后转发到指定端口、丢弃或上交cpu处理。

数据包处理方式模块,含有动作表,用于根据动作表地址索引或输入端口号查动作表,得到数据包的处理方式。

区别于现有技术,本发明提供的一种网络包处理器通过改变配置的数据抽样和比较规则表可以灵活方便地对数据包头进行抽样,还可以通过改变抽样距离得到网络包的二层、三层或四层以上的任意特征属性或特征属性的组合,再和预先设置的特征向量配置表进行匹配,根据匹配得到的索引查找动作表,通过动作表表项,得到包的处理方式。

本领域技术人员应该明白,本发明的方法及装置并不限于具体实施方式中所述的实施例,上面的具体描述只是为了解释本发明的目的,并非用于限制本发明。本领域技术人员根据本发明的技术方案得出其他的实施方式,同样属于本发明的技术创新范围,本发明的保护范围由权利要求及其等同物限定。

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