适用于软件定义网络的数据包分类方法及装置与流程

文档序号:22119121发布日期:2020-09-04 15:57阅读:269来源:国知局
适用于软件定义网络的数据包分类方法及装置与流程

本发明涉及通信技术领域,尤其是涉及一种适用于软件定义网络的数据包分类方法及装置。



背景技术:

目前数据包分类问题可以通过以下两类方法解决,即基于算法的方法和基于结构的方法。基于算法的方法包括基于树的grid-of-tries,crossproducting,dcfl等方法;基于几何空间分割的hicut,hypercuts,parallelbit-vectors,aggregatedbit-vector,recursiveflowclassification等方法;基于元组空间的方法。此类基于算法的方法具有与条件数目和匹配域数目呈线性或非线性的查找时间,因此在具有灵活的条件数目和匹配域数目的sdn网络中难以提供稳定的查表时间以支持高速数据转发。

基于结构的方法使用了特定的三态内容寻址存储器(ternarycontentaddressablememory,tcam),通过与所有分类条件同时并行匹配来保证查找结果可以在单个时钟周期内被数据包分类器返回。然而tcam的高查找速度是以高资源开销、高能耗和低灵活性为代价的,例如在xilinx最新的7系列中的最大的芯片xc7vx1140t上,仅64字节宽,1k条可用表项的tcam表也需要开销25%的slices和luts等逻辑资源的开销。因此,商用的fe不得不使用片外且昂贵的tcam嵌入芯片来提供较为有限的可用表项。与此同时,tcam固定的硬件结构很难适应sdn网络灵活的数据包分类需求。

综上,现有技术存在sdn网络查表时间不稳定,逻辑资源开销大,无法适应sdn网络灵活的数据包分类需求的技术问题。



技术实现要素:

本发明的目的在于提供一种适用于软件定义网络的数据包分类方法及装置,以缓解现有技术中存在的sdn网络查表时间不稳定,逻辑资源开销大,无法适应sdn网络灵活的数据包分类需求的技术问题。

本发明提供的一种适用于软件定义网络的数据包分类方法,其中,应用于数据包分类器,包括:获取待分类数据包;基于数据包分类单元索引图(unitarraymap,uam)中存储的所有偏移量,从所述待分类数据包中提取每个所述偏移量指向的目标规则;在根据所述uam遍历所有数据包分类标准单元(packetclassificationstandardunit,pcsu)的过程中,将所述目标规则与所述pcsu中的规则进行匹配,得到匹配结果;基于所述匹配结果和分类条件比特位图(conditionbitmap,cbm),确定目标分类条件,以通过所述目标分类条件对所述待分类数据包进行分类。

进一步的,所述数据包分类器的数据结构包括以下至少之一:数据包分类单元阵列(packetclassificationunitarray,pcua)、所述数据包分类单元索引图uam和所述分类条件比特位图cbm;所述pcua包括若干个可配置的所述数据包分类标准单元pcsu,所述pcsu用于存储所述规则与条件标签之间的对应关系;其中,每个所述pcsu具有唯一的偏移量和pcsu编号,所有所述pcsu根据偏移量的不同被纳入不同的分组,每个所述pcsu具有唯一的分组编号;所述规则为对样本分类条件进行拆分之后得到的规则;所述条件标签为样本分类条件的标签,不同的样本分类条件对应不同的分类标签;所述样本分类条件为已知业务的分类条件;所述uam用于存储所述偏移量、所述pcsu编号与所述分组编号之间的对应关系;所述cbm用于存储所述样本分类条件与比特串之间的对应关系;所述比特串的每个位置表示对应的分组编号,所述比特串中的每一位置上的数值用于表示所述样本分类条件包含的规则是否分配到与分组编号对应的pcsu中。

进一步的,在获取待分类数据包之前,所述方法还包括:将多个所述样本分类条件写入所述数据包分类器的数据结构的目标位置中。

进一步的,所述目标位置包括所述pcsu,将多个所述样本分类条件写入所述数据包分类器的数据结构的目标位置中包括:基于预设偏移量宽度对每个所述样本分类条件进行拆分,得到与每个所述样本分类条件对应的规则;将所有所述样本分类条件对应的规则按照预设配置方法配置到所述pcsu中;预设配置方法包括:将同一偏移量的规则聚类到同一pcsu中,对同一pcsu中的规则进行排序存储,将同一pcsu中不同样本分类条件在同一偏移量的相同规则进行聚合。

进一步的,在根据所述uam遍历所有数据包分类标准单元pcsu的过程中,将所述目标规则与所述pcsu中的规则进行匹配,得到匹配结果包括:访问到当前pcsu时,利用快速查找算法将所述目标规则与所述当前pcsu中存储的所述样本分类条件对应的规则进行匹配,若匹配成功,则将所述规则所属的条件标签和pcsu对应的分组编号确定为匹配结果,或,若匹配失败,则将空集确定为匹配结果;其中,所述快速查找算法包括二分法和/或哈希法。

进一步的,所述pcsu包括:规则表和聚合记录器;所述规则表用于存储所述样本分类条件对应的规则,并为所述规则标记序列号;所述聚合记录器用于记录所述序列号以及所述规则所属的条件标签。

进一步的,将所有所述样本分类条件对应的规则按照预设配置方法配置到所述pcsu中,包括:通过ping-pong操作将所有所述样本分类条件对应的规则按照预设配置方法配置到所述pcsu中。

本发明提供的一种适用于软件定义网络的数据包分类装置,其中,应用于数据包分类器,包括:获取单元,用于获取待分类数据包;提取单元,用于基于数据包分类单元索引图uam中存储的所有偏移量,从所述待分类数据包中提取每个所述偏移量指向的目标规则;匹配单元,用于在根据所述uam遍历所有数据包分类标准单元pcsu的过程中,将所述目标规则与所述pcsu中的规则进行匹配,得到匹配结果;确定单元,用于基于所述匹配结果和分类条件比特位图cbm,确定目标分类条件,以通过所述目标分类条件对所述待分类数据包进行分类。

进一步的,所述数据包分类器的数据结构包括以下至少之一:数据包分类单元阵列pcua、所述数据包分类单元索引图uam和所述分类条件比特位图cbm;所述pcua包括若干个可配置的所述数据包分类标准单元pcsu,所述pcsu用于存储所述规则与条件标签之间的对应关系;其中,每个所述pcsu具有唯一的偏移量和pcsu编号,所有所述pcsu根据偏移量的不同被纳入不同的分组,每个所述pcsu具有唯一的分组编号;所述规则为对样本分类条件进行拆分之后得到的规则;所述条件标签为样本分类条件的标签,不同的样本分类条件对应不同的分类标签;所述样本分类条件为已知业务的分类条件;所述uam用于存储所述偏移量、所述pcsu编号与所述分组编号之间的对应关系;所述cbm用于存储所述样本分类条件与比特串之间的对应关系;所述比特串的每个位置表示对应的分组编号,所述比特串中的每一位置上的数值用于表示所述样本分类条件包含的规则是否分配到与分组编号对应的pcsu中。

进一步的,所述装置还包括:写入单元,用于将多个所述样本分类条件写入所述数据包分类器的数据结构的目标位置中。

本发明提供的一种适用于软件定义网络的数据包分类方法及装置,应用于数据包分类器,包括:先获取待分类数据包;然后基于数据包分类单元索引图uam中存储的所有偏移量,从待分类数据包中提取每个偏移量指向的目标规则;再在根据uam遍历所有数据包分类标准单元pcsu的过程中,将目标规则与pcsu中的规则进行匹配,得到匹配结果;最后基于匹配结果和分类条件比特位图cbm,确定目标分类条件,以通过目标分类条件对待分类数据包进行分类。本发明通过从待分类数据包中提取每个偏移量指向的目标规则,在遍历所有pcsu的过程中,将目标规则与pcsu中的规则进行匹配,并基于匹配结果确定目标分类条件,进而实现对待分类数据的分类的方式,提高了sdn网络查表时间的稳定性,逻辑资源开销小,可以适应sdn网络灵活的数据包分类需求。

附图说明

为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的第一种适用于软件定义网络的数据包分类方法的流程图;

图2为数据包分类器的数据结构示意图;

图3为本发明实施例提供的第二种适用于软件定义网络的数据包分类方法的流程图;

图4为样本分类条件的第一种写入结果的结构示意图;

图5为样本分类条件的第二种写入结果的结构示意图;

图6为样本分类条件的第三种写入结果的结构示意图;

图7本发明实施例提供的第一种适用于软件定义网络的数据包分类装置的结构示意图。

图标:

11-获取单元;12-提取单元;13-匹配单元;14-确定单元。

具体实施方式

下面将结合实施例对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

目前,现有技术存在sdn网络查表时间不稳定,逻辑资源开销大,无法适应sdn网络灵活的数据包分类需求的技术问题。基于此,本发明实施例提供了一种适用于软件定义网络的数据包分类方法及装置,以提高了sdn网络查表时间的稳定性,逻辑资源开销小,可以适应sdn网络灵活的数据包分类需求。

为便于对本实施例进行理解,首先对本发明实施例所公开的一种适用于软件定义网络的数据包分类方法进行详细描述。

实施例一:

参照图1,本发明实施例提供的一种适用于软件定义网络的数据包分类方法,其中,应用于数据包分类器,包括以下步骤:

步骤s102,获取待分类数据包;

在本发明实施例中,待分类数据包为分类条件待确定的数据包,而分类条件与业务一一对应,即不同业务的待分类数据包携带不同的分类条件,因此可以将分类条件作为待分类数据包的分类依据。不同的分类条件具有不同的体现形式,其中,体现形式包括但不限于:匹配域在待分类数据包中的位置、匹配域的数目和匹配域内的字节取值。

步骤s104,基于数据包分类单元索引图uam中存储的所有偏移量,从待分类数据包中提取每个偏移量指向的目标规则;

在本发明实施例中,uam中存储的每一个偏移量均用于指示某个规则(或称为字段)在已知业务的数据包中的位置。此外,所有偏移量的确定方式在对下述数据包分类器的数据结构进行介绍时再作具体说明。

步骤s106,在根据uam遍历所有数据包分类标准单元pcsu的过程中,将目标规则与pcsu中的规则进行匹配,得到匹配结果;

现有技术将待确定的分类条件和写入的样本分类条件直接进行匹配,该传统方式容易受样本分类条件数目的影响,导致查表时间不稳定,例如:样本分类条件数目较少时,查表时间较短;反之查表时间较长。与之相比,本发明实施例通过目标规则与pcsu中的规则进行匹配的方式,可以提供稳定的查表时间以支持高速数据转发。其中,pcsu中的规则可以在执行下述步骤s101中生成,在此不作具体说明。

步骤s108,基于匹配结果和分类条件比特位图cbm,确定目标分类条件,以通过目标分类条件对待分类数据包进行分类。

在本发明实施例中,本发明实施例可以基于所有数据包分类标准单元pcsu,数据包分类单元索引图uam和分类条件比特位图cbm即可实现对待分类数据包的分类,无需tcam固定的硬件结构,因此逻辑资源开销小,可以适应sdn网络灵活的数据包分类需求。

本发明实施例提供的一种适用于软件定义网络的数据包分类方法,应用于数据包分类器,包括:先获取待分类数据包;然后基于数据包分类单元索引图uam中存储的所有偏移量,从待分类数据包中提取每个偏移量指向的目标规则;再在根据uam遍历所有数据包分类标准单元pcsu的过程中,将目标规则与pcsu中的规则进行匹配,得到匹配结果;最后基于匹配结果和分类条件比特位图cbm,确定目标分类条件,以通过目标分类条件对待分类数据包进行分类。本发明实施例通过从待分类数据包中提取每个偏移量指向的目标规则,在遍历所有pcsu的过程中,将目标规则与pcsu中的规则进行匹配,并基于匹配结果确定目标分类条件,进而实现对待分类数据的分类的方式,提高了sdn网络查表时间的稳定性,逻辑资源开销小,可以适应sdn网络灵活的数据包分类需求。

进一步的,参照图2,数据包分类器的数据结构包括以下至少之一:数据包分类单元阵列pcua、数据包分类单元索引图uam和分类条件比特位图cbm。

pcua包括若干个可配置的数据包分类标准单元pcsu,pcsu用于存储规则与条件标签之间的对应关系;其中,每个pcsu具有唯一的偏移量(偏移量为可重配置的提取器偏移量)和pcsu编号(或称为单元id),所有pcsu根据偏移量的不同被纳入不同的分组,每个pcsu具有唯一的分组编号;规则为对样本分类条件进行拆分之后得到的规则;条件标签为分类条件标签的简称,可以指样本分类条件的标签,不同的样本分类条件对应不同的分类标签;样本分类条件为已知业务的分类条件。

在本发明实施例中,pcua是一组具有相同规模l×α的pcsu,其中l为匹配域的字节宽度(即下述的预设偏移量宽度),α为pcsu允许存储的最大规则数目。pcsu可以称为规则存储单元,每一个pcsu均可以独立完成针对同一匹配域(同一偏移量)的规则查找。pcsu包括:规则表和聚合记录器;规则表用于存储样本分类条件对应的规则,并为规则标记序列号;聚合记录器用于记录序列号以及规则所属的条件标签。

uam用于存储偏移量、pcsu编号与分组编号之间的对应关系。

在本发明实施例中,先利用逻辑资源和存储资源实现对若干个规则存储单元的可重配置,然后为所有的规则存储单元建立索引目录(即上述uam)。具体的,在数据结构中写入样本分类条件之后,可以将pcsu分为已配置的pcsu和未配置的pcsu两种类型,然后根据偏移量的不同将所有已配置的pcsu归入不同的分组,所有的分组信息(即分组编号)以及pcsu的配置信息(即规则与条件标签之间的对应关系)可以作为索引图记录在uam中,即uam中的每个条目包含三个字段,分别是偏移量,单元id和分组编号。其中,每个分组具有不同且唯一的分组编号和偏移量,偏移量用于指示在数据包分类过程中被提取并用于分类的规则(或称为字段)在数据包中的位置。每个分组可以对应一个单元id,也可以对应多个单元id,一个分组对应的单元id的总个数小于pcsu的总个数。在极端情况下,所有的pcsu可以被配置为同一偏移量,例如:将所有pcsu的提取器偏移量配置为30,则整个数据包分类器可以作为查找数据包目的ip地址的传统路由器使用。

cbm用于存储样本分类条件与比特串之间的对应关系;比特串的每个位置表示对应的分组编号,比特串中的每一位置上的数值用于表示样本分类条件包含的规则是否分配到与分组编号对应的pcsu中。

本发明实施例为所有写入的样本分类条件建立一个映射表(即上述cbm),根据该映射表可以确定与样本分类条件对应的比特串,还可以根据比特串确定该样本分类条件拆分成若干个规则之后每个规则的存储位置。cbm用于记录每个分类条件被拆分后所存入的pcsu的分组信息,每个样本分类条件对应唯一的比特串,比特串中的每个比特值用于表示该样本分类条件拆分后得到的规则是否存入相应分组编号的pcsu。例如:某样本分类条件在cbm中的比特串为11001,则表示该样本分类条件被拆分成三个规则后存入了第1,2,5个分组编号的pcsu中,而第3,4分组编号的pcsu中不包含该样本分类条件拆分成得到的任一规则。

进一步的,参照图3,在执行步骤s102,获取待分类数据包之前,方法还包括以下步骤:

步骤s101,将多个样本分类条件写入数据包分类器的数据结构的目标位置中。

进一步的,目标位置包括pcsu,步骤s101,将多个样本分类条件写入数据包分类器的数据结构的目标位置中,可以包括以下步骤:

步骤1,基于预设偏移量宽度对每个样本分类条件进行拆分,得到与每个样本分类条件对应的规则;

在本发明实施例中,样本分类条件可以指待写入的分类条件,对待写入的分类条件按照预设偏移量宽度l拆分成i个长度为l字节的规则。在拆分的过程中,若规则的长度不满l字节,则利用通配符“*”补齐,并按照(偏移量,规则)的形式进行记录。

在本发明实施例中,在记录完所有规则之后,可以在网络控制层进行存储预计算,预计算的流程如下:对于步骤1中记录的每条(偏移量,规则),在uam中查找是否存在与该偏移量对应的分组,若存在与该偏移量对应的分组,且该分组内的pcsu处于未写满状态时,则认定该规则的写入无需配置新的pcsu,否则认定该规则需要配置一个新的pcsu进行存储。统计所有样本分类条件的规则写入所需配置的pcsu的数量,若该数量小于等于pcua中未配置的pcsu的数目,则认为该样本分类条件可以写入到未配置的pusu中;否则终止写入,并返回存储空间不足的结果。

步骤2,将所有样本分类条件对应的规则按照预设配置方法配置到pcsu中;预设配置方法包括:将同一偏移量的规则聚类到同一pcsu中,对同一pcsu中的规则进行排序存储,将同一pcsu中不同样本分类条件在同一偏移量的相同规则进行聚合。

在本发明实施例中,若规则的长度不满l字节,则利用通配符“*”补齐;此外,规则自身可能也会存在通配符“*”。无论是上述哪种情况,只要规则含有通配符“*”,则对其排序的过程均可以进行如下描述:步骤1,将所有带通配符“*”的规则展开成所有可能的确定值形式;步骤2,对展开后的确定值连同原pcsu中的规则进行冒泡排序;步骤3,在排序后,若同一pcsu中存在同一规则属于不同的样本分类条件,则对规则进行聚合以压缩存储空间。

进一步的,步骤2,将所有样本分类条件对应的规则按照预设配置方法配置到pcsu中,可以包括以下步骤:通过ping-pong操作将所有样本分类条件对应的规则按照预设配置方法配置到pcsu中。

在本发明实施例中,规则的配置相当于样本分类条件的写入,下面对样本分类条件的写入进行如下描述:将样本分类条件的各个规则按照偏移量的大小依次写入至与偏移量对应的pcsu,且每条规则均按照如下ping-pong的方式写入:首先在网络控制层对与该偏移量对应的pcsu中原有的规则和新下发的规则进行重新排序并改写相应的序列号和聚合记录器记录的条目(分类条件标签,序列号),其中,序列号用于区分同一pcsu中的规则,聚合记录器用于表示该序列号对应的规则所属样本分类条件的标签。然后将新下发的规则插入到对应的位置即可。

对于数据结构来说,在原pcsu重新排序后,网络控制层将原pcsu中原有的规则和新插入的规则连同修改后的序列号和聚合记录器条目整体发送给数据包分类器,数据包分类器将其写入至未配置的新pcsu,写入完成后修改uam,将uam中所有原pcsu的单元id替换为新pcsu的单元id,并将新pcsu的提取器偏移量配置为原pcsu的提取器偏移量,最后清空原pcsu。

在上述步骤2,将所有样本分类条件对应的规则按照预设配置方法配置到pcsu中之后,可以将配置信息存储到uam中,并基于所有样本分类条件对应的规则,确定cbm中所有样本分类条件的比特串。

在本发明实施例中,确定cbm中所有样本分类条件的比特串,即为每个写入的样本分类条件生成对应的cbm条目。其中,cbm条目为长度与uam中分组的数目相同的bit串,其中,第x个bit的取值为1表示该样本分类条件存在写入至分组x的pcsu中的规则,取值为0则表示不存在写入至分组x的pcsu中的规则。每个样本分类条件的cbm条目由网络控制层在进行ping-pong写入的同时生成,最终下发并存储至数据包分类器的cbm中。

进一步的,步骤s106,在根据uam遍历所有数据包分类标准单元pcsu的过程中,将目标规则与pcsu中的规则进行匹配,得到匹配结果包括以下具体步骤:

访问到当前pcsu时,利用快速查找算法将目标规则与当前pcsu中存储的样本分类条件对应的规则进行匹配,若匹配成功,则将规则所属的条件标签和pcsu对应的分组编号确定为匹配结果,或,若匹配失败,则将空集确定为匹配结果;其中,快速查找算法包括二分法和/或哈希法。

在待分类数据包的分类过程中,首先根据索引目录,有序地对所有已配置的规则存储单元进行遍历。当访问到某个规则存储单元时,该规则存储单元通过快速查找算法查找与待分类数据包中目标规则相匹配的规则,进而确定规则对应的序列号,并将规则所属的条件标签和用于存储规则的pcsu对应的分组编号作为匹配结果进行输出。快速查找算法可以包括但不限于二分法和哈希计算。若规则存储单元与待分类数据包之间没有匹配的规则,则将空集确定为匹配结果。在遍历完所有规则存储单元之后,基于所有返回的目标规则对应的匹配结果和映射表,得到最终的分类结果。本发明实施例通过利用有序遍历规则存储单元的方式,待分类数据包可以以流水线的方式完成数据包分类过程,增加了同等时钟频率条件下数据包分类器的处理吞吐。于此同时,通过在每个规则存储单元实施快速查找算法的方式,提高了对待分类数据包分类的速度。

待确定的分类条件的查找流程包含遍历和验证两个过程,遍历过程为根据uam中分组的升序,有序地遍历所有已配置的pcsu,返回匹配的分类条件标签。其中,对分组s对应的pcsu进行遍历的步骤如下:步骤1,访问uam,根据各个分组s对应的偏移量值在待分类数据包中相应的位置提取长度为l字节的字段作为待匹配字段(即提取多个目标规则);步骤2,访问uam,根据各个分组s对应的单元id值将上述待匹配字段分别输入至pcsu中进行独立且并行的查找。每个pcsu独立进行查找的过程如下:采用二分法查找的方式查找与该待匹配字段相同的规则,读取其对应的序列号,并在聚合记录器中读取并返回该序列号所在条目的所有分类条件标签。

验证过程为确认待分类数据包最终的分类结果,假设对分组编号s对应的pcsu遍历返回的匹配结果为其中n表示备选分类条件,且n的个数不限定,不同pcsu返回的n的取值可以相同,也可以不相同。例如:由于分组的数目共有s个,因此匹配结果的集合为m,其中,对于备选分类条件n,根据得到待分类数据包所有比特串的可能an,其中an的长度为s比特,例如,n的个数为2,s=6,其中,n=1时,a1={1,1,1,1,0,0};n=3时,a3={0,0,0,1,0,0}。将an与条件n在cbm中的条目进行比较,当且仅当an与备选分类条件的字符串相同时,将该备选分类条件确定为目标分类条件。在确定目标分类条件之后,可以将目标分类条件的条件标签作为最终查找结果。

基于pcua、uam和cbm构成的数据结构,当一定规模的样本分类条件写入时,根据样本分类条件的特征(即样本分类条件对应的业务的属性)对规则存储单元进行适应性的配置,其中,配置是指样本分类条件写入pcsu的过程,并生成索引目录。根据规则存储单元的存储能力(即预设偏移量宽度l)将每个样本分类条件分割成若干规则后,对规则进行排序、聚类以及聚合,最终分散地写入到不同的规则存储单元中,写入完成后生成样本分类条件的映射表。通过灵活地配置规则存储单元以及样本分类条件的分割、排序、聚类和聚合,样本分类条件的存储不再依赖于基于特殊的三态内容寻址存储器的专用芯片也可以在普通fpga芯片上进行实现,并且在存储时不再是稀疏的单级表结构,而是更加紧密的存储在各个规则存储单元中,大大减小了存储开销。

本发明实施例中的数据包分类器可以直接基于blockram等普通硬件存储单元在fpga芯片上实现对样本分类条件的存储,不再依赖于片外的专用tcam芯片。于此同时,与tcam芯片相比,本发明实施例可以在每一个分组达到常数查表时间log2(α),其中α为每个pcsu的可存储规则数目,通过每一个分组流水线式进行不同样本分类条件的匹配,可以支持高速数据流的数据包分类。例如:α选取数值256,片上时钟周期选取125mhz,则本发明实施例可以支持15.625mpps的数据包速率,对应8(包长64byte)至187(包长1500byte)的以太网数据流。与此同时,相对于tcam,开销更少的逻辑资源和存储资源,大大降低了数据包分类器和整个交换机的能耗。

实施例二:

在前述实施例的基础上,本实施例提供了一种适用于软件定义网络的数据包分类方法的示例。

本发明实施例以软件定义网络为应用场景,对本发明实施例的原理进行说明。假设将该数据包分类方法应用于软件定义网络的某一交换机或其他网络单元,并假设有3种类型的数据包,第一种类型是使用ip协议的数据包,其样本分类条件为数据包的第1~6字节取值为0x80fa5b2327c5,第13~14字节取值为0x0800;第二种类型是使用空间ccsds协议的数据包,其样本分类条件为第1~4字节取值为0x1*e2ab22,第20~21字节为0xff0c;第三种类型为用户自定义协议的数据包,其样本分类条件为第13~16字节取值为0x080041ca。假设匹配域宽度(即预设偏移量宽度l)为2字节。

其中,3个样本分类条件的写入过程包括以下步骤:首先根据l的取值将每个样本分类条件划分成多个(偏移量,规则)的形式,划分结果如下表所示:

表1样本分类条件的划分结果

首先如图4所示,样本分类条件1是第一个写入的样本分类条件,因此可以直接配置单元id为1,2,6,7的pcsu的提取器偏移量为1,3,5,13,并在uam中建立4个新的分组。与此同时,将样本分类条件1对应的4个规则分别写入到对应偏移量的pcsu中,为每个规则设置未使用的序列号1,并在聚合记录器中写入序列号1与条件标签1的关系;紧接着如图5所示写入样本分类条件2,对于规则1*e2,由于偏移量为1的pcsu已被创建且处于非满状态,因此可以在直接写入前与已有规则80fa进行排序。由于存在通配符“*”,因此1*e2可以等效成两项规则10e2和11e2,排序结果为10e2<11e2<80fa。根据ping-pong的方式,选取未配置的单元id为3的pcsu,配置其偏移量为1,并按顺序写入规则10e2,11e2,80fa,之后将uam中对应的项中的单元id将1改为3并清空单元id为1的pcsu。对其他规则进行同样的操作得到如图6所示的写入结果,其中单元id为7的pcsu中的规则0x0800同时存在于样本分类条件2和3,因此对其进行聚合,聚合后的序列号为1,在聚合记录器中通过查找序列号1可以得到2和3两个条件标签。单元id为1的pcsu在被清空后可以继续被其他分组所使用,从而确保了资源可持续复用。

在上述3种样本分类条件按照实施例一的流程完成写入之后,对待分类数据包进行分类。例如,此时到达的待分类数据包,其前20字节为:0x80fa-5b23-27c5-e294-6737-4070-0800-4500-05dc-90ad,则对其进行数据包分类的过程如下:首先,访问uam的第一个分组,根据偏移量1(图6中的offset=1)提取数据包的前2个字节0x80fa(即实施例一中的目标规则),并将其与单元id为3的pcsu中的规则进行匹配。接着,该pcsu对0x80fa利用二分法进行查找。假设每个pcsu的规则表的表项数目为64,则第一次将0x80fa与第32个位置的规则进行匹配,由于第32个位置为空(全0),则折半与第16个位置的规则进行匹配,以此类推,在与第8,4,2个位置的规则进行匹配后命中。命中后,根据规则0x80fa对应序列号2在聚合记录器中查找序列号2所对应的分类条件标签为1,并记录之后,访问uam的第二个分组,根据偏移量3提取待分类数据包的第3~4字节5b23。利用同样的二分查找方式得到分类条件标签为1,并记录以此类推得到全部6个分组的匹配结果:对上述6组匹配结果取并集得到{1,3},即该待分类数据包可能符合样本分类条件1,也可能符合样本分类条件3。

最后进行验证过程,将不匹配的样本分类条件剔除,确定目标分类条件。对于样本分类条件1,在6个分组中的命中结果用bit串表示为a1=111100,而样本分类条件1在bit位图(即cbm)中的bit串为b1=111100,b1中1所在位置表示样本分类条件1对应的规则位于的分组编号,当且仅当待分类数据包位于所有分组的规则都命中样本分类条件1时,待分类数据包属于样本分类条件1定义的分类。因此由a1=b1可得待分类数据包最终命中样本分类条件1。对于样本分类条件3,同理可以得到相应的bit串a3=000100,而b3=000110,由于a3≠b3,可知待分类数据包未命中样本分类条件3。最终将样本分类条件的条件标签1作为查找结果返回,以通过样本分类条件1对待分类数据包进行分类。

实施例三:

如图7所示,本发明实施例提供的一种适用于软件定义网络的数据包分类装置,其中,应用于数据包分类器,包括:

获取单元11,用于获取待分类数据包;

提取单元12,用于基于数据包分类单元索引图uam中存储的所有偏移量,从待分类数据包中提取每个偏移量指向的目标规则;

匹配单元13,用于在根据uam遍历所有数据包分类标准单元pcsu的过程中,将目标规则与pcsu中的规则进行匹配,得到匹配结果;

确定单元14,用于基于匹配结果和分类条件比特位图cbm,确定目标分类条件,以通过目标分类条件对待分类数据包进行分类。

进一步的,数据包分类器的数据结构包括以下至少之一:数据包分类单元阵列pcua、数据包分类单元索引图uam和分类条件比特位图cbm;

pcua包括若干个可配置的数据包分类标准单元pcsu,pcsu用于存储规则与条件标签之间的对应关系;其中,每个pcsu具有唯一的偏移量和pcsu编号,所有pcsu根据偏移量的不同被纳入不同的分组,每个pcsu具有唯一的分组编号;规则为对样本分类条件进行拆分之后得到的规则;条件标签为样本分类条件的标签,不同的样本分类条件对应不同的分类标签;样本分类条件为已知业务的分类条件;

uam用于存储偏移量、pcsu编号与分组编号之间的对应关系;

cbm用于存储样本分类条件与比特串之间的对应关系;比特串的每个位置表示对应的分组编号,比特串中的每一位置上的数值用于表示样本分类条件包含的规则是否分配到与分组编号对应的pcsu中。

进一步的,装置还包括:写入单元;

写入单元,用于将多个样本分类条件写入数据包分类器的数据结构的目标位置中。

进一步的,目标位置包括pcsu,写入单元包括:拆分模块和配置模块;

拆分模块,用于基于预设偏移量宽度对每个样本分类条件进行拆分,得到与每个样本分类条件对应的规则;

配置模块,用于将所有样本分类条件对应的规则按照预设配置方法配置到pcsu中;预设配置方法包括:将同一偏移量的规则聚类到同一pcsu中,对同一pcsu中的规则进行排序存储,将同一pcsu中不同样本分类条件在同一偏移量的相同规则进行聚合。

进一步的,匹配单元13包括:匹配模块,第一确定模块和第二确定模块;匹配模块,用于访问到当前pcsu时,利用快速查找算法将目标规则与当前pcsu中存储的样本分类条件对应的规则进行匹配;第一确定模块,用于若匹配成功,则将规则所属的条件标签和pcsu对应的分组编号确定为匹配结果;第二确定模块,用于若匹配失败,则将空集确定为匹配结果;其中,快速查找算法包括二分法和/或哈希法。

进一步的,pcsu包括:规则表和聚合记录器;规则表用于存储样本分类条件对应的规则,并为规则标记序列号;聚合记录器用于记录序列号以及规则所属的条件标签。

进一步的,配置模块包括:配置子模块,用于通过ping-pong操作将所有样本分类条件对应的规则按照预设配置方法配置到pcsu中。

另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。

在本实施例的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本实施例的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本实施例所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。

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