专利名称:用于对数据分组进行分类的方法和系统的制作方法
技术领域:
本发明涉及通信领域,并且更具体地,本发明涉及对通信系统中使用的数据分组进行分类。
背景技术:
网络通信通常要求对在各种网络设备(例如,路由器、交换机、终端等)之间传送的诸如分组的信息单元进行分类。例如,可以对分组进行检查和分类以支持各种应用,例如网络划分、群移动性跟踪、安全控制和实施、服务质量支持等。特别是,网络元件可以使用分类规则对输入的分组进行检查和分类,从而确定应该应用于分组的动作,例如是否应当丢弃分组、传送至它的目的地、重新路由、修改、隔离等。由于这些规则的复杂性和可定制性, 典型地将分类处理实现为软件应用。然而,这种应用的性能通常由于运行应用的中央处理单元(CPU)的有限的处理能力以及由于分类规则的灵活性所导致应用的复杂度扩大而变慢。为了提高缓慢的性能,通常对规则复杂度实施限制。例如,可以将规则限定为能够容易地组织到二进制搜索树中的集合。然而,由于精确匹配限制,需要将具有充分复杂度的规则组织到多个树中而不是单一树中。由于对多个树进行搜索明显慢于对单个树进行搜索,因此牺牲了使用二进制搜索树的优化的优势。另一常用的方法是利用哈希(hash)表,其中哈希表包括将分类规则的查找关键字转换为与实际规则位置相关联的有利于统计的哈希索引。虽然哈希表容易实现,但是由于精确匹配限制,因此需要多次通过不同的表来实现所期望的分类能力。此外,即使规则确实存在,也不能确保成功的匹配。
发明内容
通过用于对数据分组进行分类和使用多个分类规则构建分类结构的方法和系统的实施方式来处理现有技术的各种不足。一个实施方式提供了一种用于构建分类树结构的方法。分类树结构适于能够根据多个规则对所接收的分组进行单程分类(single pass classification) 0每个规则与多个字段相关联,其中每个字段具有优先级别。用于构建分类树结构的方法包括构建顶部优先级别。为了构建顶部优先级别,创建对应于顶部优先级别字段的字段值的节点,其中如果几个字段值是相同的,仅创建一个节点。对于每个所创建的节点,识别匹配节点值的规则的各自集合。构建顶部优先级别的过程进一步包括在所创建的节点中选择头节点;创建从头节点至顶部优先级别中的其它节点的逻辑决策路径;以及,创建从顶部优先级别节点至下一较低优先级别节点的逻辑决策路径。用于创建分类树结构的方法进一步包括逐级构建分类树结构的剩余优先级别。按下列方式构建每个剩余的优先级别。对于从下一较高优先级别接收的每个逻辑决策路径, 创建各自的子树,其中子树仅包括这些节点和需要满足与各自的下一较高优先级别节点相关联的规则的相关逻辑决策路径。此外,当剩余优先级别不是最低优先级别时,创建从当前优先级别中的节点至下一较低优先级别的逻辑决策路径。另一实施方式提供一种用于对输入的数据分组进行分类的方法。该方法包括接收包含多个分组字段的数据分组,其中分组字段与不同优先级别相关联。该方法进一步包括通过单程的分类结构来确定匹配数据分组的分类规则。分类结构包括多个级别,其中每个级别对应于与分组字段相关联的优先级别中的一个。分类结构中的级别根据优先级别从分类结构的上层至底层下降的顺序排列。该方法进一步包括,对于分类结构的每一级别,从顶部级别开始逐级向底部级别进行,将具有相应优先级别的分组字段的值与分类结构的级别中用于分组的逻辑决策路径的节点进行比较以发现匹配节点。匹配节点是与分组字段具有相同值的节点。对于每个非最低优先级别,如果发现匹配节点,这样的匹配节点定义了到达分类结构的下一级别的逻辑决策路径。对于最低优先级别,发现匹配节点就完成了分类处理,其中最低优先级别的匹配节点识别匹配分组的分类规则。本发明的再一个实施方式提供了一种分组处理器。分组处理器包括用于存储分类结构的存储器和适于使用存储在存储器中的分类结构来确定与输入数据分组匹配的分类规则。分类结构表示多个分类规则,其中每个规则具有多个字段。每个字段与不同的优先级别相关联。分类结构包括多个级别,其中顶部级别具有最高优先级别,并且每个下一级别具有下一较低的优先级别。数据分组包括多个分组字段,其中字段具有对应于分类结构优先级别的优先级别。分组处理器适于通过单程的分类结构确定匹配的分类规则。具体地,对于分类结构的每个级别,分组处理器适于从顶部级别开始并逐级向底部级别移动,以将具有相应优先级别的分组字段的值和在用于分类结构的级别内的分组的逻辑决策路径的节点进行比较,以发现匹配节点。匹配节点是具有与分组字段相同值的节点。对于每个非最低优先级别,如果发现匹配节点,这样的匹配节点定义到达分类结构的下一级别的逻辑决策路径。对于最低优先级别,发现匹配节点就完成了分类处理,其中分组处理器使用最低优先级别的匹配节点来识别匹配分组的分类规则。
通过考虑下列的详细说明并结合附图,能够容易地理解各种实施方式的教导,其中图1描述了根据本发明的一个实施方式的用于对数据分组进行分类的系统的高层示意图;图2描述了根据本发明的一个实施方式的包含分类规则的表;图3A-图3C描述了根据本发明的一个实施方式的分类结构及其级别;图4A-图4G描述了根据本发明的一个实施方式的用于构建分类结构的方法的流程图;图5A-图5B描述了根据本发明的一个实施方式的用于对数据分组进行分类的方法。为了便于理解,尽可能地使用相同的附图标记来指示图中通用的相同元件。
具体实施例方式通常要求诸如路由器、交换机、防火墙、终端等的网络元件检查输入的数据业务, 从而确定需要对数据执行的进一步动作。在本发明的各种实施方式的上下文中,根据组织到专用分类结构中的预定分类规则,对诸如国际互联网协议(IP)分组的数据分组进行分类。每个规则定义与所接收分组相比较的标准,并且当规则可应用(也就是,匹配)于分组时与规则相关联的动作定义一个或多个要采取的动作。当规则的标准(也就是,规则的字段的值)和分组的相应值匹配时,规则可应用于分组。在下面,将参照本发明的实施方式。然而需要注意的是,本发明不局限于任何具体描述的实施方式。相反,无论是否与不同的实施方式相关联,下面特征和元素的任意组合都预期完成和实现本发明。此外,在各种实施方式中,本发明提供多种超过现有技术的优势。 虽然本发明的实施方式可以实现超过其它可能的方案和/或现有技术的优势,但是是否由给定实施方式实现特定的优势不是对本发明的限制。因此,下列的方面、特点、实施方式和优势仅仅是解释性的,并不被认为是所附权利要求的元素或者限制,除非在权利要求中明确说明。同样,参照“本发明,,并不应解释为对这里公开的任何发明主题的概括,并不应理解为所附权利要求的元素或限制,除非在权利要求中明确说明。本发明的一个实施方式实现为适用于计算机系统的程序产品。程序产品的程序定义实施方式(包括这里描述的方法)的功能,并且可以包含在各种计算机可读存储介质中。示例性的计算机可读存储介质包括,但不局限于(i)在其上永久保存信息的不可写存储介质(例如,计算机中的只读存储设备,例如通过⑶-ROM驱动可读取的⑶-ROM盘);(ii) 在其上存储可改变信息的可写存储介质(例如,在磁盘驱动器中的软盘或者硬盘驱动器)。 当携带有控制本发明功能的计算机可读指令时,这种计算机可读存储介质为本发明的实施方式。其它介质包括通过其将信息传送给计算机的通信介质,例如通过计算机或者包括无线通信网络的电话网络。后一实施方式具体包括在国际互联网和其它网络之间相互发送信息。当携带有控制本发明功能的计算机可读指令时,这种通信介质为本发明的实施方式。概括地说,这里可以将计算机可读存储介质和通信介质称为计算机可读介质。一般来说,执行以实现本发明实施方式的例程可以是操作系统或者专用应用、组件、程序、模块、对象、或者指令序列的一部分。本发明的计算机程序典型地由本地计算机将其转换为机器可读格式并从而成为可执行指令的多个指令所构成。并且,程序由位于程序本地的或者在存储器中或者存储设备上建立的变量和数据结构构成。此外,可以根据在本发明的具体实施方式
中实现的应用来识别这里描述的各种程序。然而,可以理解的是,仅仅是因为方便而使用下面的任何特定的程序术语,并且因此本发明不应当局限于独自用于由这样的术语所暗示的和/或所识别的任何特定应用。图1描述了根据本发明的一个实施方式的用于对数据分组进行分类的系统100的高层示意图。具体地,系统100包括多个源设备(例如源IlO1、源IlO2、和源110z,将其统称为源110)、路由器120、分组处理器130、网络140、和多个目的地设备(例如目的地150” 目的地1502、和目的地150y,将其统称为目的地110)。当通过网络140在源110和目的地 150之间传送分组时,路由器120可以截取这样的分组并将它们提供给用于分类和进一步处理的分组处理器130。在一个实施方式中,分组处理器130通过网络路由器120或者网络140收集关于重新定向到分组处理器130的分组的统计信息,并且然后将结果汇总到网
6络管理系统(在图中没有示出)。网络管理系统可以使用这样的信息来配置和管理分组分类规则。如图所示,分组处理器130包括输入/输出设备132 (例如,监视器、键盘、鼠标、调制解调器、打印机等)、中央处理单元(CPU) 134、和存储器136。将分组分类器138和分类结构139放入存储器136中。一般来说,诸如三叉搜索树(ternary search tree)的分类结构139组织由分组分类器138所使用的分组分类规则,以对输入分组进行分析以及确定,如果有的话,应当应用哪个动作(例如,丢弃分组、重新路由分组等)以及应当应用到何种数据分组(例如,具有特定目的地地址的分组)。每个规则可以包括对应于多种分组字段并与可用于匹配分组的动作相关联(这在下面做更为详细说明)的多个标准/字段。当规则的标准/字段匹配分组的相应字段的值时,分组与规则匹配。如果分组分类器138确定在规则和输入分组之间的成功匹配,则将与规则相关联的动作应用于分组(例如,可以将分组隔离)。然而,当分组分类器138确定不存在成功的匹配,将应用默认的动作(例如,丢弃分组)。虽然在图1中,将分组处理器130、分组分类器138、和分类结构139表示为与路由器120或网络140相分离,但是在一个实施方式中,可以将分组处理器130、分组分类器 138、和分类结构139的全部或者任意组合实现在路由器120中或者可替换地,实现在网络 140中。在另一实施方式中,将分组分类器138和/或分类结构139实现在接收和传送网络数据的网络元件(例如,交换引擎、路由器等)中,或者与这样的网络元件进行通信的设备中。可以将网络元件放置在特定网络中的数据路径上或者与各个网络相连接的数据路径上。此外,不需要配置分组分类器138和分类结构139,并且可以使用多于一个的分类结构 139和/或分组分类器138。图2描述了根据本发明的一个实施方式的包含分类规则的表200。在一个实施方式中,规则包括两个部分用于确定是否应当将规则应用于特定分组的匹配部分和用于定义在分组上要执行的动作的动作部分。匹配部分典型地包含与数据分组的相应字段相比较的多个字段(标准),其中在规则字段和相应分组字段之间的完全匹配表明应当将规则的动作部分应用于分组。动作部分通常定义可以在分组上执行的一个或多个动作,例如丢弃分组、重新路由分组、隔离分组、重新定义或修改分组、将分组传送至其目的地等等。表200描述了规则1-4的匹配部分,其中每个这样的部分包括3个字段,字段1、字段2和字段3。在一个实施方式中,规则中字段的顺序定义了这种字段的优先级。例如,对于表200中的每个字段,字段1这一列字段的优先级要高于字段2这一列的字段,字段2这一列字段的优先级又高于字段3这一列的字段。换句话说,在字段2这一列的字段与数据分组的相应字段进行比较之前,由字段1这一列的字段与数据分组的相应字段进行比较。然而需要注意的是,表中的组织规则和按上述方式定义字段的优先级仅仅是为了方便。例如, 字段1这一列的字段的优先级可以高于字段3这一列的字段,但是低于字段2这一列的字段的优先级别。此外,尽管方便,按照表格来组织规则或者它们的部分不是必需的。例如, 可以将规则组织为列表。在表200中包括的每个所描述的字符,也就是“A”、“B”、“C”和“*”,代表字段值。
一般来说,规则中的每个字段代表分组的子部分或者字段,其中每个这样的字段/子部分包含代表一个网络协议层(例如,开放式系统互联(OSI)的层、传输控制协议/国际互联网协议(TCP/IP)的层等)的分组数据。在一个实施方式中,规则字段表示一个或多个源和/ 或目的地媒体访问控制(MAC)地址、源和/或目的地以太网硬件地址(EHA)、源和/或目的地IP地址、源和/或目的地端口、协议ID、用户数据协议(UDP)端口、TCP端口、虚拟局域网 (VLAN)标签、载荷类型、和其它类型数据。典型地,这样的数据可以在对应于不同网络协议层的分组的报头/页脚中发现。规则字段可以包含诸如特定MAC地址的具体值,或者诸如通配符的特殊值。每个规则可以包括多个包含各种具体值和/或特殊值的字段。在图2中,由诸如“A”的字母符号表示具体值,同时由诸如“*”(通配值)的符号来表示特殊值。当规则包括一个或多个具有通配值的字段时,输入分组的每个相应字段可以包含任意值,并且如果规则的全部其它字段和分组匹配,则该规则将仍与分组匹配。换句话说,当规则包含一个或多个通配符时, 特定规则是否可以应用于分组不取决于对应于规则的通配辅字段的分组字段的值。如图2所示,分类规则可能发生冲突,或者换句话说,一些分组可能匹配多于一个的规则。例如,在表200中,规则1、规则2和规则4可能发生冲突。更具体地,如果输入分组在其相应的字段中具有值[A、B、C],所述分组与规则1、规则2和规则4中的每一个匹配。 然而,在其相应的字段中具有值[A、B、D]的输入分组仅与规则2匹配,而具有值[C、B、C]的分组仅与规则4匹配。相似地,规则3和规则4可能发生冲突(例如,[B、C、C]分组)。另一方面,规则2和规则3是相互排斥的,意味着不存在分组能够同时与这两个规则相匹配。如下所述,发现一个匹配对于完成分类处理通常是充分的。因此,使用上述的实施例,如果将具有值[A、B、C]的分组进行分类以匹配规则1,则分类处理结束,即使分组还可以与规则2和规则4匹配。在一个实施方式中,将冲突的规则列入优先位置,并且以这种方式组织分类结构139 具有最高优先级的匹配规则是首先发现的规则。例如在一个实施方式中,规则越具体,这样的规则所具有的优先级就越高。因此,在表200中,没有通配符值的规则1具有的优先级要高于具有1个通配符值的规则2。同时,具有1个通配符值的规则2 具有的优先级要高于具有2个通配符值的规则4。图3A-图3C描述了根据本发明的一个实施方式的分类结构300及其级别。如图所示,分类结构300组织包含在图2的表200中的分类规则(下面参考图4A-图4G更为详细地描述用于构建分类结构的方法)。典型地,分类结构300逐级进行构建,其中分类结构 300的级别越高,其表示的字段的优先级越高。在一个实施方式中,分组处理器130使用分类结构300来对输入的分组进行分类。分类处理(在下面参考图5A和图5B更为详细地进行描述)从在每一级别上确定与输入分组的相应字段匹配或者不匹配的分类结构300的一个级别进行处理。换句话说,分组的分类处理沿着对应于该分组的分类树中的逻辑决策路径进行,直到发现匹配的分类规则或者确定没有与分组匹配的分类规则为止。在图3A-图3C描述的实施方式中,分类结构300是具有表示表200列的级别的三叉搜索树。通常,三叉搜索树是每个节点可以具有多至3个分支的搜索树,也就是右侧分支表示大于当前节点值的值,中间分支表示等于当前节点值的值,以及左侧分支表示小于当前节点值的值。在本发明的一个实施方式中,分类结构的中间分支表示在树的当前级别已经发现成功的匹配(也就是,已经识别可应用于输入分组的字段的规则),并且分类处理可以在树的下一级别上继续进行(也就是,关于下一分组字段)。在一个实施方式中,引入两个附加类型的节点。第一类型是未匹配的节点,也就是表示未成功匹配(在下文中,称之为“X”节点)的终端的节点。在一个实施方式中,如果在分类处理中到达这样的节点,则停止分类处理并提供指示输入分组不能完全匹配于任何可使用的规则的信息。另一类型是通配符节点,也就是,在树的当前级别上通常指示成功匹配的节点 (在下文中,将其称为“*”节点)。换句话说,通配符节点的值可以等于与其相比的任何值。 通配符节点值还可以大于或者小于任何其它节点的值。在一个实施方式中,当在分类处理中到达这样的节点时,分类处理在分类树300的下一级别继续进行。如果在分类树300的最低级别上到达通配节点,将提供指示在输入分组和相应规则之间匹配成功的信息。图3A描述了分类树300的最高级别,也就是顶部级别310。顶部级别310表示表 200的字段1这一列。字段1这一列包括在它们各自的分类规则中具有最高优先级字段的字段。如图2所示,分类规则的字段1可以包括下列值“A”(规则1和规则2)、“B”(规则 3)、和“ ^ ” (规则4)。分类树300的顶部级别310包括一个或者多个用于这些值中每一个的节点,也就是,具有值的节点312和节点318、具有值“A”的节点314、和具有值“B” 的节点316。如图所示,节点314是分类树300的根节点。典型地,分类树300的根节点具有分类树300顶部级别的可使用的值中近似中等(中间)的值。由于大约一半的节点将具有小于根节点值的值以及大约一半的节点将具有大于根节点值的值,因此选择用于根节点值的中等值允许构建更平衡的树。然而,其它选择也是可行的。例如,在一个实施方式中,可随机选择根节点。在另一实施方式中,根节点是具有中间值的节点。如图所示,节点314的左侧指针指向具有比节点314的值(也就是,“A”)小的值 (也就是,“*”)的节点312。节点314的右侧指针指向节点316,其中节点316的值(也就是,“B”)大于节点314的值(也就是,“A”)。由于通配符值可以大于或者小于任何值,因此节点316的右侧指针和左侧指针都指向具有通配符值的节点318。然而需要注意的是,尽管节点316的右侧指针和左侧指针指向单一节点318,但是在一个实施方式中,节点的右侧指针和左侧指针指向两个不同的节点,其中每个节点具有通配符值。每个节点还具有一个或多个与节点相关联的规则(也就是,匹配规则),其中节点值与每个相关分类规则的相应字段值相匹配。从而,节点314与表200的3个规则相关联, 也就是,规则1、规则2和规则4,规则1和规则2在它们的字段1中具有值“A”,规则4在它的字段1中具有通配符值。相似地,节点312和节点318与规则4相关联,节点316与规则3和规则4相关联,其中规则3在其字段1中具有值“B”,规则4在其字段1中具有通配符值。然而需要注意的是,在图3A中给出了 2个通配符节点,也就是节点312和节点318, 但是在一个实施方式中,分类结构仅包括一个通配符节点。在这样的实施方式中,通配符节点之前的节点(例如,节点314和节点316)简单地指向相同的通配节点。例如,不将节点 312和节点318作为两个独立的节点,可以删除节点312,并且与节点316的左侧指针相似, 节点314可以使其左侧指针指向节点318。图;3B描述了分类树300的头两个级别,也就是,顶部级别310和中间级别320。中间级别320表示表200的字段2这一列。字段2这一列包括在其各自的分类规则中具有第二优先级别的字段。如图2所示,分类规则的字段2可以包括如下值“B” (规则1和规则 2)、“C” (规则3)、和“ * ” (规则4)。因此,分类树300的中间级别320包括一个或多个用
9于这些值中每一个的节点,也就是,具有值“女”的节点321、322、3M、325、327和328,具有值“B”的节点323,和具有值“C”的节点326。如上所述,分类处理通过中间分支中的一个(由双箭头表示)从一个级别进行到另一级别,例如通过节点312和节点321之间的分支。节点的中间分支表示如果节点值与输入分组的相应字段匹配时分类处理采用的逻辑决策路径的一部分。例如,如果输入分组在其字段1中具有值“A”,分类处理通过节点314和323之间的分支从顶部级别310移动到中间级别320。通常,至少一部分分类规则在相同的字段中具有不同的值(例如,规则1的字段1 具有值“A”,而规则3的字段1具有值“B”)。从而,在一个级别上可能被认为是与输入分组相关的一组规则表示在前述级别上可能被认为与输入分组相关的规则的子集。更具体地, 在顶部级别,输入分组可能与任何所有可使用的分类规则相匹配。然而,由于在顶部级别上输入分组的最高优先级字段已经与顶部级别节点中的一个的值相匹配,因此在中间级别上输入分组可以潜在地仅与输入分组的最高优先级字段具有相同值的规则(也就是与匹配的顶部级别节点相关联的规则)相匹配。例如,如果输入分组在字段1中具有值“B”,分类处理通过节点316和3 之间的中间分支移动到中间级别320。由于分组的字段1具有值 “B”,在其字段1中具有值“A”的规则1和2不可能与输入分组相匹配。因此,输入分组仅和与节点316相关联的规则(也就是规则3和4)进行比较。一般来说,可以将中间级别320看做多个子树或者子树的顶部级别,其中中间级别节点形成子树的顶部级别。如图3C-A和3C-B所示,根据一个实施方式,由中间级别和底部级别节点形成的搜索子树如下第1子树包括节点321、331、345 ;第2子树包括节点322、 323、324、332、333、334、335、336、以及 345 ;第 3 子树包括节点 325、325、327、337、338、339 和345 ;以及第4子树包括节点328,340和345。例如,节点322,323和324形成第2子树的顶部级别。与顶部级别310相似,使用与相应父节点相关联的规则而不是所有的分类规则(也就是,表200)构建每个子树的顶部级别。例如,为了构建第2子树的顶部级别,使用与节点314相关联的规则(也就是,规则1、2和4)。图3C描述了分类树300的所有3个级别,也就是,顶部级别310、中间级别320和底部级别330。底部级别330表示表200的字段3这一列。字段3这一列包括在其各自的分类规则中具有第3优先级别的字段。如图2所示,分类规则的字段3可以包括下列值 “C” (规则1、3和4)和“ * ” (规则2)。因此,分类树300的底部级别330包括一个或者多个用于这些值中每一个的节点,也就是节点具有值“C”的节点331、332、334、336、337、338、 339和340以及具有值“ * ”的节点333和335。在一个实施方式中,分类树300还可以包括“X”节点345(未匹配节点),也就是, 表示输入分组不与任何分类规则相匹配的节点。尽管在所描述的分类树300中,“X”节点仅出现在底部级别330处,但是根据分类规则的初始集合,“X”节点可以出现在分类树300的任意级别上。例如,如果表200中没有分类规则在其字段1中具有通配符值,分类树300可在顶部级别310具有“X”节点。此外,在一个实施方式中,仅实现一个“X”节点(例如,每个分类结构300有一个“X”节点)。在这样的实施方式中,在“X”节点之前的节点(例如, 节点331、336、340等)指向相同的“X”节点(或与相同的“X”节点相关联)。可替换地,分类结构的每一级别可能只是有一个“X”节点。需要注意的是,因为通配符节点与任意分组字段值相匹配,所以通配符节点不可能指向“X”节点。类似于中间级别320来构建底部级别330。更具体地,类似于中间级别320,可以将底部级别330视为子树的多个顶部级别。由于底部级别330是分类树300的最后的级别, 每个这样的子树仅包括一个顶部级别,其中分类树300的底部级别节点形成这样的顶部级别。如图3C-B所示,搜索子树如下第1子树包括节点331和345 ;第2子树包括节点332 和345 ;第3子树包括节点333、334和335 ;第4子树包括节点336和345 ;第5子树包括节点337和345 ;第6子树包括节点338和345 ;第7子树包括节点339和345 ;以及第8子树包括节点340和345。例如,节点333,334和335形成第3子树的顶部级别和子树自身。 类似于中间级别320,使用与相应父节点相关联的规则而不是所有的分类规则(也就是,表 200),类似于顶部级别310来构建子树的每个顶部级别。例如,为了构建第3子树的顶部级别,使用与节点323相关联的规则(也就是,规则1、2和4)。在上述方式中,分类树300结合表200的所有规则。例如,规则1由节点314、323 和334表示;规则2由节点314、323、322和3 表示;等等。如下面参考图5A和图5B进行的更为详细地描述,将这样的分类树用于对输入分组进行分类,其中依次分析分组字段,从分类树的一个级别移动到另一级别。在一个实施方式中,将在分类树中通向节点的完成分组分类处理的路径认为是逻辑决策路径,其中路径中的节点是逻辑决策点。因此,如所描述的,分类树300表示多个逻辑决策路径,其中对于根据由分类树300所表示的分类规则来提供输入分组的单程分类来说,包括在分类树300中的每个逻辑决策路径是必需的。图4A-图4G描述了根据本发明的一个实施方式的用于构建诸如分类树300的分类结构的方法400的流程图。一般来说,所描述的方法400使用一组分类规则来为创建分类树作准备,其中所创建的分类树结合该组的每个分类规则以将单程分类提供给输入分组。 为了便于对方法400的解释,使用在图2和图3中所示的表200的分类规则和相应的分类树300,并在下文中将其称为实施例1。该方法从步骤402开始,其中接收到多个分类规则。如上所述,可以将这样的规则组织到表中,例如图2的表200。典型地,例如,在表内逐字段核对分类规则,其中每个字段具有优先级别。在这种情况下,当将分类规则组织到利用行表示分类规则的表中时,这样的表的每一列将包括具有相同优先级别的字段。在步骤403,选择具有最高优先级别的所接收的分类规则的字段并将其与当前级别相关联。例如,在表200的分类规则中,可以在步骤403选择在字段1这一列中发现的规则1-4的字段。一般来说,当前级别表示对应于分类树的一个级别的分类规则的字段。例如,当构建分类树的顶部级别时,当前级别与由顶部级别所表示的字段相关联。在步骤404, 对于在所选择字段的值中识别的每个唯一的值,创建分类树的节点。换句话说,如果字段具有唯一的值则创建相应的节点,而当如果几个字段具有相同的值,仅创建一个相应的节点。 因此,在实施例1中,在步骤404将分别创建具有值“A”、“B”和的3个节点。所创建的节点形成分类树的顶部级别。然而需要注意的是,在图3A-3C中将两个通配符节点,也就是节点312和318,描述为包括在顶部级别310中。可替换地并且如图4A-4G的实施方式所定义的,仅仅创建节点 312和318中的一个。如图3C中所看到的,节点312或318具有同样的相应子树312- > 321- > 331- > 345 和 318- > 328- > 340- > 345。因此,实施例 1 中根据图 4A-4G 的实施方式所构建的分类树的顶部级别可以视为图3A中的顶部级别310,其中节点318除去指向节点312的节点316的左侧和右侧指针。在步骤405,在所创建的节点中确定具有中间值的节点并将其与头节点相关联。在一个实施方式中,如果近似一半节点具有小于节点值的值以及近似一半节点具有大于节点值的值,则节点具有中间值。从而,在实施例1中这样的值为“A”。“A”大于且小于 “B”,从而具有值“A”的节点314是头节点。然而,在另一实施方式中,用这样的方式定义中间值,即将值“B”而并非是值“A”确定为中间值(“B”大于A且小于“*”)。在再一个实施方式中,在步骤405选择随机节点。在步骤406,识别与头节点相关联的一个或多个匹配规则。匹配规则是在其当前级别字段中具有头节点值(也就是中间值)或者通配符值(也就是“*”)的分类规则。在实施例1中,由于规则1和2在当前级别字段(字段1)中具有“A”值,以及规则4在当前级别字段(字段1)中具有“女,,值,因此与头节点314相关联的匹配规则是规则1、2和4。为了创建头节点的左右分支,在步骤407创建左侧节点和右侧节点集合。左侧节点集合包括其值小于中间值的节点(例如,在实施例1中,左侧节点集合将包括具有小于中间值“A”的“*”值的节点312)。右侧节点集合包括具有大于中间值的值的节点(例如,在实施例1中,右侧节点集合将包括具有大于中间值“A”的“B”值的节点316,以及任意其它 “*”节点、节点318)。在步骤408,头节点与当前节点相关联。一般来说,当前节点是当前确定左侧和/或右侧分支的节点。换句话说,当前节点允许方法400关于分类树的节点进行移动以定义节点之间的关系。步骤409-417基于左侧节点集合的节点提供对头节点的左侧分支的识别。通常来说,在图4A-4G所示的实施方式中,左侧节点集合的节点从在左侧节点集合的节点中由具有最大值的节点开始按照节点值下降的顺序形成头节点的左侧分支。在步骤409,确定与当前节点相关联的节点是否在左侧节点集合值中具有最小的值。如果是,则分析左侧节点集合的所有创建的节点,并定义左侧分支节点之间的关系,从而,方法400进入步骤416。在当前节点值不是左侧节点集合的节点中最小的值时(步骤409),则不是左侧分支的节点之间的所有关系都已经被定义。因此,在步骤410,在左侧节点集合的节点中选择相比于当前节点值具有下一较小值的节点。例如,如果左侧节点集合包括节点[A、B、C],并且当前节点值为C,那么在步骤410将选择具有值B的节点。然而,如果当前节点值是B,那么所选择的节点值为A。如果在步骤411,确定当前节点不是头节点,则在步骤413,当前节点的左侧指针和右侧指针与所选择的节点相关联。然而,如果当前节点是头节点,那么在步骤412,仅是当前节点的左侧指针与所选择的节点相关联。在步骤414,识别用于所选择节点的匹配规则。 更具体地,识别在当前级别字段中与所选择的节点具有相同值或者具有通配符值的分类规则,并将其与所选择的节点相关联以作为匹配规则。在步骤415,将所选择的节点与当前节点相关联,以及该方法返回步骤409。按这种方式,该方法400沿着左侧分支的节点以节点值下降的顺序移动,直到左侧分支的所有节点之间的关系被定义。在步骤416,确定当前节点值是否为通配符值(也就是,“*”)。如果不是,在当前级别中没有通配符值,从而可能存在具有不与任何顶部级别节点值相匹配的当前级别值的输入分组。因此,在步骤417,将专用的“X”节点加入到左侧分支,诸如图3C中的节点345。更具体地,当前节点的右侧指针和左侧指针与“X”节点相关联(指向“X”节点)。如上所述,在一个实施方式中,这样的“X”节点表示不会发现用于输入分组的匹配规则以及分类处
理应该停止。然而,在当前节点值是通配符值时,不将“X”节点加入到左侧分支中,这是因为任何输入分组会与当前节点匹配,并且分类处理会简单地进入到下一树级别。典型地,包括通配符节点的分类树的级别不具有“X”节点,并且反之亦然。此外,通配符节点通常不具有左侧分支或者右侧分支。在步骤418,头节点与当前节点相关联以允许构建头节点的右侧分支。按与步骤 409-417相似的方式,步骤418-4 根据右侧节点集合的节点来提供对头节点的右侧分支的识别。通常说来,在图4A-4G所描述的实施方式中,右侧节点集合的节点从在右侧节点集合的节点中具有最小值的节点开始以节点值增加的顺序形成头节点的右侧分支。在步骤 419,确定与当前节点相关联的节点是否具有右侧节点集合值中的最大值。如果是,则已经分析了右侧节点集合的所有创建的节点,并且已经定义了右侧分支的节点之间的关系,从而,方法400进入到步骤416。在当前节点值不是右侧节点集合的节点中最大的值时(步骤419),则不是右侧分支的节点之间的所有关系都已经被定义。因此,在步骤420,在右侧节点集合的节点之间选择具有相比于当前节点值的下一较大值的节点。例如,如果右侧节点集合包括节点[A、B、 C],并且当前节点值为A,则在步骤420会选择具有值B的节点。然而,如果当前节点值为 B,则所选择的节点值为C。如果在步骤421,确定当前节点不是头节点,则在步骤423,当前节点的左侧指针和右侧指针与所选择的节点相关联。然而,如果当前节点是头节点,则在步骤422,仅当前节点的右侧指针与所选择的节点相关联。在步骤424,识别用于所选择节点的匹配规则。更具体地,识别在当前级别字段中具有通配符值或者与所选择节点具有相同值的分类规则,并将其与所选择的节点相关联以作为匹配规则。在步骤425,所选择的节点与当前节点相关联,以及该方法返回步骤419。按这种方式,方法400以节点值增加的顺序沿着右侧分支的节点移动,直到右侧分支的所有节点之间的关系被定义。在步骤426,确定左侧节点集合是否包括通配符节点。如果否,则在当前级别中不存在通配符字段,从而可能存在具有不与任何顶部级别节点值相匹配的当前级别值的输入分组。因此,在步骤427,当前节点的右侧指针和左侧指针与“X”节点相关联。然而,当左侧节点集合包括通配符节点时,因为任何输入分组可以与这样的节点相匹配,那么不将“X”节点加入到左侧分支。不管分类处理是沿着左侧分支还是右侧分支来采用逻辑决策路径,如果至少一个分类规则在当前级别字段中具有通配符值,则输入分组的相应字段应当与通配符字段相匹配,除非已经发现具体值的匹配。因此,在步骤428,当前节点的左侧指针和右侧指针与左侧节点集合的通配符节点相关联。一般来说,方法400的上述步骤403至4 提供了构建分类树的顶部级别。步骤 4四-462提供了分类树的剩余级别的构建并定义分类树的级别之间的关系以完成分类树的构建。在步骤429,确定当前级别是否与最低优先级别字段相关联。换句话说,步骤4 确定是否已经建立分类树的全部级别。如果没有,在步骤431选择表示分类树的下一级别的字段。更具体地,选择在分类树中还没有表示的字段中具有最高优先级别的分类规则的字段,并将其与下一级别相关联。在实施例1中可以在表200的字段2这一列中发现这样的字段。通常,下一级别表示由分类树的单一级别(也就是由当前级别节点的孩子孩子)所表示的分类规则的字段。一般来说,通过重复步骤432-434,可定义当前级别节点和下一级别节点之间的关系。更具体地,在步骤432,选择还没有与任何节点相关联的具有下一级别指针(也就是,指示节点中间分支的指针)的当前级别节点。在一个实施方式中,这样的选择是随机的;而在另一实施方式中,以当前级别节点值的顺序依次选择当前级别节点。在步骤433,创建下一级别节点的池,其中在分类过程中仅在所选择的当前级别节点匹配后才可能到达池中的节点。一般来说,所创建的池包括通过节点的中间分支与所选择的当前级别节点相关联的分类子树的顶部级别的节点。更具体地,根据在所选择节点匹配规则的下一级别字段之间的每个唯一值,创建具有所述值的节点。换句话说,节点的所创建的池表示分类规则的下一级别字段的子集,其中所选择的当前级别节点用作限制条件。 在步骤434,确定所创建节点之间的头节点。在所描述的实施方式中,头节点是在所创建的节点值之间具有中间值的节点。所确定的头节点与所选择的当前级别节点的下一级别指针相关联。步骤435至460与上述的步骤406至似8相似,但有稍微的改动。一般来说,这些步骤用于构建分类子树的顶部级别,其中所确定的头节点是每个这样的子树的根节点。因此,在步骤435,识别与所确定的头节点相关联的一个或多个匹配规则,其中匹配规则是在其当前级别字段中具有中间值或通配符值(也就是,“*”)的分类规则。然而,与从所有可使用的分类规则中选择匹配规则的步骤406不同,在步骤435使用仅包括头节点的父节点 (例如,所选择的当前级别节点)的匹配规则的分类规则的集合来确定用于下一级别头节点的匹配规则。为了创建下一级别头节点的左侧分支和右侧分支,在步骤436创建左侧节点集合和右侧节点集合,其中左侧节点集合包括其值小于中间值的节点以及右侧节点集合包括具有大于中间值的值的节点。在步骤437,下一级别头节点与当前节点相关联。与步骤409至417相似,步骤438至444用于根据左侧节点集合的节点识别下一级别头节点的左侧分支。在步骤438,确定与当前节点相关联的节点是否具有左侧节点集合的值中的最小值。如果是,则已经分析了左侧节点集合的所有所创建的节点,并且已经定义了左侧分支的节点之间的关系,从而,方法400进入步骤457。在当前节点值不是左侧节点集合的节点之间的最小值(步骤438),则不是左侧分支的节点之间的所有关系都已经被定义。因此,在步骤439,在左侧节点集合的节点中选择具有相比于当前节点值的下一较小值的节点。如果在步骤440,确定当前节点不是头节点, 则在步骤442,当前节点的左侧指针和右侧指针与所选择的节点相关联。然而,如果当前节点是头节点,则在步骤441,仅当前节点的左侧指针与所选择的节点相关联。在步骤443,识别用于所选择节点的匹配规则。更具体地,识别在下一级别字段具有与所选择节点的相同值或者具有通配符值的所选择当前级别节点的匹配规则之间的分类规则,并将其与所选择的节点相关联以作为匹配规则。在步骤444,所选择的节点与当前节点相关联,并且该方法返回步骤439。当到达左侧分支的最后节点时,当前节点是左侧分支的最后节点,且其值是左侧节点集合的最小值。在步骤445,确定当前节点值是否为通配符值(也就是,“*”)。如果不是,则在用于构建分类子树的分类规则之间的下一级别上没有通配符字段,从而可能存在具有不与任何子树的顶部级别节点值相匹配的下一级别值的输入分组。然而需要注意的是,这不妨碍在下一级别字段中具有通配符值的分类规则的原始集合中存在分类规则。仅当左侧节点中的节点是头节点时,当前节点也可以具有左侧节点集合的最小值。典型地,作为构建的分类树,用于构建分类子树的分类规则的数量在分类树的每个下一级别上减小。从而,不同字段的值的数量也在每一级别上减小。因此,最终,左侧节点集合和/或右侧节点集合将仅包括一个节点-头节点。因此,在步骤446确定当前节点是否是头节点。如果是,那么头节点是左侧集合中仅有的节点,从而,在步骤448其左侧指针与专用的“X”节点相关联。如果不是,则在步骤447,当前节点的左侧指针和右侧指针与“X”节点相关联。在步骤449,头节点与当前节点相关联以允许创建头节点的右侧分支。与步骤418 至4 相似,步骤450至460根据右侧节点集合的节点提供用于识别下一级别头节点的右侧分支。更具体地,在步骤450,确定与当前节点相关联的节点是否在右侧节点集合值中具有最大值。如果是,则已经分析了右侧节点集合的所有创建的节点,并且已经定义了右侧分支的节点之间的关系,从而方法40进入步骤457。在当前节点值不是右侧节点集合的节点中最大的值(步骤450)时,则不是右侧分支的节点之间的所有关系都已经被定义。因此,在步骤451,在右侧节点集合的节点中选择相比于当前节点值具有下一较大值的节点。如果在步骤452,确定当前节点不是头节点, 那么在步骤454,当前节点的左侧指针和右侧指针与所选择的节点相关联。然而,如果当前节点是头节点,那么在步骤453,仅有当前节点的右侧指针与所选择的节点相关联。在步骤 455,识别用于所选择节点的匹配规则。更具体地,识别在下一级别字段中与所选择节点具有相同值或者具有通配符值的分类规则,并将其与所选择的节点相关联以作为匹配规则。在步骤456,所选择的节点与当前节点相关联,并且该方法返回步骤450。在这种方式下,方法400沿着右侧分支的节点以节点值增加的顺序移动,直到右侧分支的所有节点之间的关系被定义。如果当前节点值是右侧节点集合的节点中的最大值,则方法进入到步骤457。这可能发生在当右侧节点分支的最后节点已经到达时或者仅右侧节点集合中的节点是头节点时。当右侧节点集合和左侧节点集合中的唯一节点是头节点并且其值是通配符值时,由于仅有一个值和输入分组的相应字段相比较并且该值与任何值相匹配,因此不需要将头节点的右侧指针和左侧指针与任何节点相关联。因此,在一个实施方式中,在步骤 457,确定当前节点值是否是通配符值,并且如果是,该方法简单地通过当前节点和下一级别节点之间的定义关系继续进行。在当前节点值不是通配符值时,在步骤457,确定左侧节点集合是否包括通配符节点。当左侧节点集合包括通配符节点时,不给右侧分支增加“X”节点,但是,在步骤460,当前节点的左侧指针和右侧指针与左侧节点集合的通配符节点相关联。当左侧节点集合不包括通配符节点时,如果之前没有关联,在步骤459,当前节点的右侧指针和左侧指针与“X” 节点相关联(例如,当左侧节点集合仅包括头节点时,在左侧分支的处理过程中,非指针的头可能已经与“X”节点相关联)。在步骤461,确定是否已经定义当前级别的每个节点和下一级别的节点之间的关系。在当前级别的至少一个节点具有不与下一级别节点相关联的下一级别指针时,方法400 返回步骤432。在这种情况下,重复步骤432至461直到当前级别的每个节点与下一级别节点相关联。从而,在步骤462,下一级别字段与当前级别相关联,并且方法400返回步骤4 以处理分类树的下一级别。换句话说,在步骤462下一级别变成当前级别。如果在步骤429,确定当前级别与最低优先级别字段相关联,则分类规则的所有字段已经被分析并已经通过相应级别表示在分类树中。因此,方法400在步骤430结束。在这种情况下,构建了具有多个决策路径的分类树。如上所述,在一个实施方式中,所构建的分类树仅包括那些提供输入分组的单程分类所要求的逻辑决策路径。然而需要注意的是,对于相同的分类规则集合,可以有多种如何构建分类树的变化。例如,如上所述,使用节点的有序集合构建头节点的左侧分支和右侧分支,从而有效地创建每个节点的当前级别的分支,左侧指针和右侧指针与相同节点相关联。在另一实施方式中,例如,不是如步骤410和420所述的选择下一较小/较大节点,而是在剩下的未分析节点中选择具有中间值的节点。在这种情况下,一些节点的左侧指针和右侧指针将与不同节点相关联。此外,典型地,分类处理在每一级别上将采用的路径(逻辑决策路径)比在上述分类树中的要短。然而,例如,多个指向通配符节点和/或“X”节点的指针可能显著增加。 进一步需要注意的是,尽管在上述说明中,使用指针定义节点之间的关系,但是可以使用其它工具,例如将节点识别为父辈和孩子(例如,左孩子、中间孩子、右孩子)和特定节点之间的关联。根据本发明的一个实施方式,图5A和图5B描述了用于对分组进行分类的方法 500。所描述的方法500使用分类结构,例如根据上述图3A-3C描述的分类树300。方法500 从步骤505开始。在步骤510接收分组。在步骤515,给两个变量(也就是当前级别和当前节点)分配初始值。例如,在一个实施方式中,这样的值分别是分类树的顶部级别(例如, 图3A-3C的顶部级别310)和头节点(例如,节点314)。通常,当前级别表示根据方法500 当前分析的分类树的级别(例如,顶部级别310、中间级别320、或底部级别330)。当前节点表示根据方法500当前分析的分类树的节点(例如,节点312、3沈、336等)。在步骤520,当前字段和与当前级别相关的分组字段相关联。如上所述,分类树 300的级别对应于分类规则的字段的优先级别。当前字段表示具有与当前分析的树的级别相对应的优先级别的分组字段的值。例如,如果分组的字段具有值[B、C、A],其中B是具有最高优先级的字段的值,A是具有最低优先级的字段的值(实施例2),并且方法500处于分析分类树的第二级别(例如,中间级别320)的阶段,从而当前字段将具有值“B”。在步骤525和555,将当前字段值与当前节点值进行比较以确定应当采用当前节点的哪个分支(左、中间、或右),或者换句话说是哪个逻辑决策路径,来处理分类过程。如果当前字段值不与当前节点值相等,方法500进入到步骤555。步骤555提供确定当前字段值是否大于或小于当前节点值。由于本实施方式的分类树的基本结构,如果当前字段值小于当前节点值,则匹配节点(如果它存在)位于沿着当前节点的左侧分支的某个地方。因此,方法500进入到步骤580,其中识别与当前节点的左侧指针相关联的节点(也就是,左侧孩子)。相反,如果当前字段值大于当前节点值,则匹配节点(如果它存在)位于沿着当前节点的右侧分支的某个地方。因此,方法500进入到步骤560,其中识别与当前节点的右侧指针相关联的节点(也就是,右侧孩子)。
考虑上述描述的实施例2。为了分析顶部级别310,以及节点314特别与所接收的分组[B、C、A]相关,节点314的值(也就是“A”)与当前字段值(也就是“B”)相比。由于 “B”大于“A”,因此分类处理将沿着节点314的右侧分支移动到节点316,其中节点316的值将依次与当前字段值进行比较,这在下面做详细描述。在一个实施方式中,不是每个输入分组都有匹配分类规则。在这样的实施方式中, 分类树可以包括特定的“X”节点,如果在特定分组的分类处理中到达该“X”节点,则指示输入分组不与分类树中表示的任意分类规则匹配,从而,分类处理可以停止。因此,图5的方法500包括步骤565,其中确定在步骤560或步骤580识别的节点是否是“X”节点。如果是,在步骤570,将未匹配数据提供给负责应用规则的元件,并且方法500在步骤550结束。在一个实施方式中,未匹配数据仅指示输入分组不与分类树中表示的任何分类规则相匹配。在另一实施方式中,提供附加信息。例如,这种信息可以包括一列部分匹配的规则、一列已经匹配的所接收分组的字段、分类树的级别(在该级别到达“X”节点)、等等。考虑下面的示例实施例3。假设输入分组的字段具有值[D、C、A],其中D是具有最高优先级的字段的值,以及A是具有最低优先级的字段的值。应用方法500,分组的头两个字段成功匹配,也就是,“D”与节点318相匹配、以及“C”与节点3 相匹配。然而,可能发现没有用于分组的最后字段(也就是“A”)的成功匹配。作为在该特定实施例中在底部级别330上可用于分析的唯一节点的节点340具有值“C”。当“A”小于“C” (步骤555),在步骤580确定与节点340的左侧指针相关联的节点,也就是节点345。节点345是“X”节点 (步骤56 ,从而提供未匹配数据(步骤570)。这样的数据可以包括头两个分组字段的值 “D”和“C”与规则4 (例如,与最后匹配的节点(节点328)相关联的规则)相匹配、在分类树300的底部级别330已经确定的未匹配等等的信息。返回到步骤565,如果在该步骤确定步骤560或580所识别的节点不是“X”节点, 在步骤590,所识别的节点变成当前节点并且方法500返回步骤525。在这种情况下,方法 500的分类处理从一个节点进行到另一个节点,其中节点是相同级别的节点(或者换句话说,沿着在分类树的一个级别中形成的逻辑决策路径),直到在步骤525中发现当前级别的匹配节点或者到达“X”节点565。因此,在上述实施例1中,在分析顶部级别320和第一分组字段时,最初当前节点变量与头节点314相同。由于第一分组字段的值“B”大于节点314 的值,因此给当前节点变量分配一个新值,也就是节点314的右侧孩子,节点316。该分配允许在分组第一字段的值和节点316的值之间进行比较,从而将第一分组字段与节点316相匹配。如果在步骤525确定当前字段的值等于当前节点值(也就是,匹配),方法500进入到步骤530。这意味着分组字段中的一个已经与分类规则中的至少一个相匹配。因此,分类处理沿着由当前节点的中间分支所形成的逻辑决策路径继续进行到分类树的下一级别。 从而,在上述实施例2中,可以在第一分组字段的值“B”和节点316之间以及第二分组字段的值“C”和节点3 之间发现这样的匹配。在步骤530,确定当前节点是否是底部级别(例如,底部级别330)的节点。如果当前级别是底部级别,则分类树的每一级别都已经被考虑。换句话说,由于底部级别节点与所接收分组的最低优先级字段相匹配,因此已经对分组进行分类并且已经发现匹配规则。匹配规则是与当前节点相关联的规则。在步骤M5,将这样的规则提供给负责应用规则的元件,并且该方法500在步骤550结束。例如,考虑具有字段值为[A、B、C]的分组,其中A是具有最高优先级的字段的值, 以及B是具有最低优先级的字段的值(实施例幻。进一步考虑方法500当前处于分析底部级别330和节点334的阶段。因此,当前级别表示底部级别330并且当前节点表示节点334。 因此,由于分组的第三字段是对应于底部级别的字段,因此当前节点的值(也就是“C”)等于当前字段的值(也就是“C”)。此外,由于当前级别是底部级别,则分组的所有字段已经被匹配,也就是,“A”与节点314、“B”与节点323、“C”与节点334。从而,匹配分类规则是与底部级别的匹配节点(也就是,节点314)相关联的规则,以及是表200的规则1。因此,本发明的实施方式提供了一种用于根据多个分类规则构建单分类结构的方法,按这种方式能够进行通常提供具体结果的单程分类。尽管这里已经详细说明和描述了各种实施方式,但是本领域技术人员仍然能够容易地设计出许多与所描述的教导结合的其它变化的实施方式。
权利要求
1.一种用于构建分类树结构的方法,所述分类树结构适于能够根据多个规则对接收的分组进行单程分类,每个规则具有与其相关联的多个字段,每个字段具有与其相关联的优先级别,该方法包括对于顶部优先级别,执行以下步骤 为顶部优先级别字段中的每个唯一值创建节点;对于顶部优先级别中的每个节点,识别与相应节点值相匹配的一个或多个规则的各个集合;从所创建的节点中选择头节点;创建从头节点至顶部优先级别中的其它节点的逻辑决策路径; 创建从顶部优先级别中的节点至下一较低优先级别的逻辑决策路径;以及对于任何剩余优先级别的每一个,执行以下步骤对于从下一较高优先级别接收的每个逻辑决策路径,创建仅包括这些节点和满足与各个下一较高优先级别的节点相关联的规则所要求的相关逻辑决策路径的各个子树;对于每个非最低优先级别,创建从当前优先级别中的节点至下一较低优先级别的逻辑决策路径。
2.根据权利要求1所述的方法,其中至少一个逻辑决策路径包括通配符节点。
3.根据权利要求1所述的方法,其中至少一个逻辑决策路径包括未匹配节点。
4.根据权利要求1所述的方法,其中创建各个子树的步骤包括 构建子树的顶部级别,构建子树的顶部级别的步骤包括 为多个规则的子集的顶部级别的字段中的每个唯一值创建节点;对于顶部级别中的每个节点,使用多个规则的子集识别与相应节点值相匹配的一个或多个规则的各个集合;从所创建的节点中选择头节点;创建从头节点至顶部级别中的其它节点的逻辑决策路径;以及创建从顶部优先级别中的节点至下一较低优先级别的逻辑决策路径; 其中多个规则的子集包括相对于顶部级别具有下一较高优先级别的节点的匹配规则并且与子树相关联。
5.根据权利要求1所述的方法,其中创建从头节点至顶部优先级别中的其它节点的逻辑决策路径的步骤包括形成包括具有大于头节点值的值的顶部优先级别的节点的第一节点组; 形成包括具有小于头节点值的值的顶部优先级别的节点的第二节点组; 从第一节点组中选择头节点的第一孩子;以及从第二节点组中选择头节点的第二孩子。
6.根据权利要求5所述的方法,其中第一孩子是相比于头节点值具有下一较大值的节点,以及第二孩子是相比于头节点值具有下一较小值的节点,创建从头节点至顶部优先级别中的其它节点的逻辑决策路径的步骤进一步包括对于第一节点组的每个节点,除了具有最大值的节点之外,选择孩子节点,其中在与节点的值相比时孩子节点的值是下一较大值;对于第二节点组的每个节点,除了具有最小值的节点之外,选择孩子节点,其中在与节点的值相比时孩子节点的值是下一较小值。
7.一种用于对输入数据分组进行分类的方法,该方法包括接收包括多个分组字段的数据分组,每个字段具有与其相关联的不同优先级别;以及通过表示多个分类规则的分类树结构的单程来确定匹配数据分组的分类规则,分类树结构包括多个级别,其中分类树的顶部级别对应于最高优先级别,以及分类树结构的每个下一级别对应于下一较低优先级别,其中确定步骤包括选择分组字段,所选择的分组字段与最高优先级别相关联;在分类树结构中沿着对应于数据分组的逻辑决策路径逐级地从顶部级别的根节点开始并向底部级别移动以进行处理,其中对于分类树结构的每一级别将所选择的分组字段的值与在分类结构的当前级别中运行的逻辑决策路径的节点进行比较以发现匹配节点,匹配节点与所选择的分组字段具有相同的值,其中匹配节点定义了到达分类树结构的下一较低级别的逻辑决策路径;以及对于每个非最低级别,在发现匹配节点时,选择具有下一较低优先级别的分组字段;以及在发现底部级别的匹配节点时,提供与所发现的匹配节点相关联的分类规则以作为匹配数据分组的分类规则。
8.根据权利要求7所述的方法,进一步包括如果用于数据分组的逻辑决策路径在多个级别的一个中到达未匹配的节点时,提供数据分组没有匹配的分类规则的信息。
9.根据权利要求7所述的方法,其中在当前级别中确定逻辑决策路径的步骤包括 将当前级别的头节点的值和相应分组字段的值进行比较以确定逻辑决策路径的下一节点,其中,在当前级别是顶部级别时,头节点是根节点,以及其中,在当前级别不是顶部级别时,由之前级别的逻辑决策路径定义头节点;在确定头节点的值小于分组字段的值时,选择头节点的第一孩子作为下一节点,第一孩子具有比根节点值大的值;以及在确定头节点的值大于分组字段的值时,选择头节点的第二孩子作为下一节点,第二孩子具有比根节点值小的值。
10.根据权利要求7所述的方法,其中在当前级别中确定逻辑决策路径的步骤包括 直到逻辑决策路径到达当前级别中的匹配节点或者未匹配节点时,在当前级别中选择逻辑决策路径的下一节点,其中如果前述节点的值小于分组字段的值,则下一节点是前述节点的第一孩子;以及如果前述节点的值大于分组字段的值,则下一节点是前述节点的第二孩子。
全文摘要
本发明的实施方式提供了一种根据多个规则来构建分类树的方法。每个规则包括具有不同优先级别的多个字段。构建分类树以根据多个规则来提供所接收分组的单程分类。逐级构建分类树,其中每一级别表示优先级别中的一个。构建分类树的单个级别包括对于每一个从下一较高优先级别接收的逻辑决策路径,创建各自的子树。子树仅包括节点和相关的逻辑决策路径,所述逻辑决策路径是满足与各自的下一较高优先级别节点相关联的规则所要求的逻辑决策。单个级别的构建进一步包括对于每个非最低优先级别,创建在从当前优先级别中的节点至下一较低优先级别的逻辑决策路径。
文档编号H04L12/56GK102204180SQ200980143335
公开日2011年9月28日 申请日期2009年10月20日 优先权日2008年10月30日
发明者C·叶, K·R·贝利, P·R·拉奥, V·马格雷 申请人:阿尔卡特朗讯公司