CN101554021A - 静态分组分类器的简明表示 - Google Patents
静态分组分类器的简明表示 Download PDFInfo
- Publication number
- CN101554021A CN101554021A CNA2007800284904A CN200780028490A CN101554021A CN 101554021 A CN101554021 A CN 101554021A CN A2007800284904 A CNA2007800284904 A CN A2007800284904A CN 200780028490 A CN200780028490 A CN 200780028490A CN 101554021 A CN101554021 A CN 101554021A
- Authority
- CN
- China
- Prior art keywords
- supernode
- trie
- memory
- node
- packet
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000003068 static effect Effects 0.000 title description 3
- 230000015654 memory Effects 0.000 claims abstract description 194
- 238000003860 storage Methods 0.000 claims abstract description 27
- 238000000034 method Methods 0.000 claims abstract description 22
- 238000004891 communication Methods 0.000 claims abstract description 20
- 230000009471 action Effects 0.000 claims abstract description 14
- 238000004590 computer program Methods 0.000 claims abstract description 6
- 238000004422 calculation algorithm Methods 0.000 description 35
- 230000009191 jumping Effects 0.000 description 21
- 101100189913 Caenorhabditis elegans pept-1 gene Proteins 0.000 description 19
- 238000005457 optimization Methods 0.000 description 14
- 238000002474 experimental method Methods 0.000 description 13
- 230000002829 reductive effect Effects 0.000 description 13
- 238000012360 testing method Methods 0.000 description 13
- 244000141353 Prunus domestica Species 0.000 description 12
- 230000006870 function Effects 0.000 description 12
- 238000005516 engineering process Methods 0.000 description 7
- 238000010606 normalization Methods 0.000 description 7
- 230000000295 complement effect Effects 0.000 description 6
- 230000003247 decreasing effect Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000008676 import Effects 0.000 description 4
- 238000013138 pruning Methods 0.000 description 4
- 239000000725 suspension Substances 0.000 description 4
- 101150049032 ACL1 gene Proteins 0.000 description 3
- 101100448894 Arabidopsis thaliana GLR3.1 gene Proteins 0.000 description 3
- 101100243399 Caenorhabditis elegans pept-2 gene Proteins 0.000 description 3
- 101150023061 acpP gene Proteins 0.000 description 3
- 238000013459 approach Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 230000002708 enhancing effect Effects 0.000 description 3
- 101100490194 Arabidopsis thaliana ACL5 gene Proteins 0.000 description 2
- 241001234523 Velamen Species 0.000 description 2
- 230000003321 amplification Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 2
- 229910052739 hydrogen Inorganic materials 0.000 description 2
- 238000003199 nucleic acid amplification method Methods 0.000 description 2
- 238000005728 strengthening Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- YOYAIZYFCNQIRF-UHFFFAOYSA-N 2,6-dichlorobenzonitrile Chemical compound ClC1=CC=CC(Cl)=C1C#N YOYAIZYFCNQIRF-UHFFFAOYSA-N 0.000 description 1
- 241001582888 Lobus Species 0.000 description 1
- 208000037656 Respiratory Sounds Diseases 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000007635 classification algorithm Methods 0.000 description 1
- 230000019771 cognition Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 238000003066 decision tree Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 206010037833 rales Diseases 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/48—Routing tree calculation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/14—Routing performance; Theoretical aspects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/54—Organization of routing tables
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/742—Route cache; Operation thereof
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种将通过数据通信网络传送的数据分组分类的计算机实现方法,包括:提供由多个过滤器定义的存储器可存储的分组分类器规则,每个过滤器唯一地对应于在通过数据通信网络传送数据分组时要采取的多个动作之一;以及通过生成服从用于减少对其中存储分组分类器规则的存储器的访问的预定约束的至少一个超节点trie来根据分组分类器规则将数据分组分类。提供一种包括硬件和软件模块的系统来执行该方法。还提供了一种计算机可读存储介质来存储用于执行该方法的计算机程序。
Description
发明领域
本发明涉及通信网络路由器和路由技术,尤其涉及用于路由数据分组的分组分类器的表示。
发明背景
因特网路由器使用分类器基于传入分组的报头字段将传入分组分类,该分类器通常被实现为规则表。每个分类器规则指定一对(F,A),其中F是过滤器而A是动作。如果传入分组与分类器中的过滤器相匹配,则相关联的动作指定对此分组作如何处理。典型动作包括分组转发和丢弃。
d维过滤器F是d元组(F[1],F[2],...,F[d]),其中F[i]是可指定目的地址、源地址、端口号、协议类型、TCP标志和其它信息的范围。如果分组的报头字段值落在范围F[1],...,F[d]内,分组被认为匹配滤波器F。由于分组与分类器中一个以上的过滤器相匹配是可能的,因此平局决胜制(tie breaker)通常被用来确定唯一匹配过滤器。在一维分组分类(即,d=1)中,F[1]常常被指定为目的地址前缀,并且查找涉及查找与分组的目的地址相匹配的最长前缀。尽管1维前缀过滤器对于基于目的地的分组转发而言是足够的,但是例如防火墙、服务质量和虚拟专用网应用一般需要高维过滤器。
一维分组分类
如已叙述的,1维分类器中的过滤器被假定为目的地址的前缀。针对1维分类器的表示开发的许多数据结构是基于二叉trie(单词查找树)结构。二叉trie是二叉树结构,其中每个节点具有数据域和两个子女域。分支是基于搜索关键字中的位来进行的。如果搜索关键字的第i位(搜索关键字的最左位为位0)为0,则在层i(根为层0)后跟随左子女分支,否则跟随右子女分支。层i节点将其长度为i的前缀存储在其数据字段中。将在其中存储前缀的节点是通过使用该前缀作为关键字执行搜索来确定的。N可对应于二叉trie中的节点。Q(N)可以是由从根到N的路径定义的位串。Q(N)是对应于N的前缀。在Q(N)是要存储在trie中的前缀之一的情形中,Q(N)被存储在N.data(N.数据)中。
图1(a)示出了5个前缀的集合。每个前缀的右端处所示的*既不被用于以上描述的分支也不被用于长度计算。因此,P2的长度为1。图1(b)示出了与前缀的集合相对应的二叉trie。阴影节点对应于规则表中的前缀,且各自包含相关联前缀的下一跳。图1(b)中的二叉trie与1位trie的不同之处在于,1位trie在节点中存储最多2个前缀,而二叉trie的每个节点存储至多1个前缀。由于前缀存储策略中的这种不同,二叉trie在存储IP.v4前缀时可具有最多达33层,而1位trie中层数至多为32。二叉trie在存储IP.v4前缀时可具有最多达129层,而1位trie中层数至多为128。
对于任何目的地址d,最长匹配前缀可通过沿起始于trie根并由d支配的路径来寻找。在此路径中最后遇到的前缀是与d匹配的最长前缀。虽然这种搜索算法相对简单,但是其导致与trie中的层数一样多的高速缓存缺失。甚至对于IP.v4,此数目——最多为33——也过大而无法以线速度分类/转发分组。诸如LC trie、Lulea、树位图、多位trie和形态转移trie等若干策略皆已被提出以改善二叉trie的查找性能。所有这些策略可将二叉trie的每个子树的若干层折叠(collapse)成称为超节点的单个节点,其可用比折叠成超节点的层数少的存储器访问(MA)的数目来搜索。例如,多位trie中的正确的子女指针(以及其相关联的前缀)可用单个存储器访问来访问,而与多位节点的大小无关。由超节点构成的结果trie被称为超节点trie。
已针对超节点的紧凑表示开发了数据结构。一种这样的结构是由Song等人提出的形态转移trie(SST)结构(参见“Shape Shifting Tries for Faster IP RouteLookup(用于快速IP路由查找的形态转移trie)”,第13次IEEE国际会议关于网络协议的会议记录,2005),其很大程度上又是从Eatherton等人的树位图(TBM)方案(参见“bitmap:hardware/software IP lookups with incrementalupdates(位图:使用增量更新的硬件/软件IP查找)”,计算机通信评论,34(2):97-122,2004)以及由Jacobson开发的用于二叉树的简明表示的技术(“简明静态数据结构”,卡内基梅隆大学博士论文,1998)得到的。在TBM中,二叉trie被划分成各自具有至多S层的子trie。每个分块随后被表示成(TBM)超节点。S是TBM超节点的跨步。虽然针对真实世界的IPv4分类器建议S=8,但是在此使用S=2来例示TBM结构。
图2(a)示出了将图1(b)的二叉trie划分成各自具有2个层的4个子trie W-Z。尽管具有S=2层的完全二叉trie具有3个节点,但是X仅具有两个节点,而Y和Z各自仅具有一个节点。每个分块由具有以下分量的超节点(FIG.2(b))来表示:
第一,(2s-1)位内部位图(IBM),其指示分块中最多达2s-1个节点中的每一个是否包含前缀。IBM是通过将分块节点重叠在具有S层的完全二叉trie上并按层次序遍历此完全二叉trie的节点来构造的。对于节点W,IBM是110,指示根及其左子女节点具有前缀,而根的右子女节点或者不存在或者没有前缀。X的IBM为010,其指示X的根的左子女节点具有前缀,且根的右子女节点或者不存在或者没有前缀(注意,根本身总是存在,因此IBM的前导位置中的0是指示根没有前缀)。Y和Z的IBM都是100。
第二,2S位EBM(外部位图),其对应于完全S层二叉trie的叶子所具有的2S个子女指针。W的EBN为1011,其指示仅完全二叉trie的最左叶子的右子女为空。X、Y和Z的EBM为0000,指示X、Y和Z的节点各自没有未包括在X、Y和Z中的子女。从一个分块中的一节点指向另一分块中的节点的每个子女指针变成从一超节点到另一超节点的指针。为了减小这些超节点间指针所需的空间,超节点的子女超节点被从左到右地存储,以使得使用超节点的第一子女的位置和大小,可计算出任何子女超节点的位置。
第三,子女指针,其指向第一子女超节点被存储的位置。
以及第四,指向分块中前缀的下一跳数据的列表NH。NH可具有最多达2S-1个条目。此列表通过按层次序遍历分块节点来形成。W的NH列表为nh(P1)和nh(P2),其中nh(P1)是前缀P1的下一跳。X的NH列表为nh(P3)。尽管NH指针是超节点的部分,但是NH列表并非如此。NH列表被方便地表示为数组。
超节点的NH列表(数组)被与超节点自身分开地存储,并且仅在已确定最长匹配前缀时且在期望确定与此前缀相关联的下一跳时被访问。如果指针需要b位,则每个TBM超节点所需总共2S+1+2b-1位(加NH列表的空间)。使用IBM,可确定超节点中的最长匹配前缀;EBM被用来确定其是否需要向下移至当前超节点的第一、第二以及由此的第四子女。如果单个存储器访问足以检索整个超节点,则使用单个访问从一个超节点移至其子女节点是可能的。用于搜索超节点trie的存储器访问的总数变成超节点trie的层数加1(用于访问最长匹配前缀的下一跳)。
SST超节点结构是通过将二叉trie划分成各自具有至多K个节点的子trie来得到的。K是SST超节点的跨步。为了正确地搜索SST,每个SST超节点还要求除IBM和EBM之外的形态位图(SBM)。SBM是二叉树的简明表示。其通过用外部节点替代由SBM编码的二叉树中的每个空链接,之后通过在每个外部节点中放置0并在每个其它节点中放置1、以及最后通过按层次序遍历扩展二叉树、在遍历访问节点时列出该节点中的位来获得。
如果图1(b)的示例二叉trie要被划分成各自具有至多K=3个节点的二叉trie,则图3(a)示出可能划分成3个分块X-Z。X包括图1(b)的节点a、b和d。Y包括节点c、e和f。而Z包括节点g。SST表示具有3个(SST)超节点。超节点X-Z的SBM分别为1101000、1110000和100。注意:具有K个内部节点的二叉树具有确切K+1个外部节点。因此,当将二叉trie划分成具有至多K个内部节点的二叉trie时,SBM至多为2K+1位长。由于SBM中的第一位为1而最后两位为0,因此无需显式地存储这些位。因而,SBM仅要求2K-2个存储位。图3(b)示出了图3(a)的每个分块的节点表示。示例性SBM排除第一位和最后两位。
SST超节点的IBM是通过按层次序遍历分块来得到的。当节点被访问时,如果节点具有前缀则将1输出到IBM,否则输出0。节点X-Z的IBM分别为110、011和1。注意,SST超节点的IBM的长度至多为K位。为了获得超节点的EBM,针对分块从扩展二叉树开始,在与原始二叉trie中的节点相对应的每个外部节点中放置1,而在每个其它外部节点中放置0。接着,按层次序访问外部节点,并且它们的位被输出到EBM。3个超节点的EBM分别为1010、0000和00。由于每个分块的外部节点的数目至多为K+1,因此EBM的大小至多为K+1位。
在TBM结构的情形中,SST超节点的子女超节点被顺续存储并且指向第一子女超节点的指针被维护。超节点的NH列表被存储在单独存储器(MEM)中,并且指向此列表的指针被维护在该超节点中。尽管SBM、IBM和EBM的大小随分块大小而变化,但是SST超节点有固定大小,并且将2K个位分配给SBM,K个位分配给IBM,以及K+1个位分配给EBM。未使用位用0来填充。因此,SST结构的大小为4K+2b-1位。
对于任何给定K,已开发了称为后序剪枝的O(m)时间算法来从m节点二叉trie构造最小节点SST。对于任何给定K,也开发了宽度优先剪枝算法来构造最小高度SST。此算法的复杂度为O(m2)。
对于密集二叉trie,TBM比SST更为空间有效。然而,对于稀疏二叉trie,SST更为空间有效。已提出了混合式SST(HSST),其中整体二叉trie的密集子trie被划分成TBM超节点,而稀疏子trie被划分成SST超节点。图4示出了图1(b)的二叉trie的HSST。对于此HSST,K=S=2。HSST还具有两个SST节点X和Z,以及一个TBM节点Y。
二维分组分类
将过滤器假定为具有形式(D,E),其中D是目的地址前缀,而E是源地址前缀。2维分类器可被表示为2维二叉trie(2DBT),其为一维trie(称为顶层trie),其中每个节点的数据域是指向(可能为空的)二叉trie(低层trie)的指针。因此,2DBT具有1个顶层trie,且潜在可能有许多低层trie。
图5例示了示例性5规则二维分类器。对于每个规则,过滤器是通过目的(Dest)和源(Source)前缀来定义的。因此,例如,F2=(0*,1*)匹配其目的地址以0为开始且其源地址以1为开始的所有分组。当分组被两个或更多过滤器匹配时,使用具有最低成本的匹配规则。图5的分类器可被表示为2DBT,其中顶层trie是使用目的前缀来构造的。在目的-源过滤器的上下文中,此顶层trie被称为目的trie(或类似地,desttrie)。N是目的trie中的节点。如果没有dest前缀等于Q(N),则N.data指向空低层trie。如果有等于Q(N)的dest前缀D,则N.data指向所有源前缀E的二叉trie,以使得(D,E)为过滤器。在目的-源过滤器的上下文中,低层trie被称为源树。图6给出了图5的过滤器的2DBT。
以针对目的-源前缀过滤器提出了二维1位trie——2DBT的近亲。所提出的二维trie结构采用O(nW)存储器,其中n是分类器中过滤器的数目,而W是最长前缀的长度。使用这种结构,分组可通过O(W2)次存储器访问被分类。基本二维1位trie可基于通过使用预计算和切换指针来改进。改进版本将分组分类仅进行O(W)次存储器访问。已提出向高维1位trie的扩展,其可与d维——d>2——过滤器联用。具有桶的二维1位trie也可被用于d维——d>2——分类器。基本上,用过滤器的目的和源字段来构造二维1位trie。具有相同的目的字段和源字段的过滤器可被认为等效。等效过滤器被存储在可被连续搜索的桶中。这种方案预期在实践中工作良好,因为桶大小往往较小。而且,切换指针可能不结合桶化方案来使用。已开发了快速多项式时间算法来构造空间最优约束2DMT(二维多位trie)。所构造的2DMT可用至多k次存储器访问来搜索,其中k是设计参数。空间最优约束2DMT可被用于使用桶化策略的d维过滤器——d>2。对于d=2的情形,可采用切换指针来获得多位trie,后者要求比空间最优约束2DMT所需的更少的存储器且允许通过至多k次存储器访问进行分组分类。也已开发了快速启发式算法来构造具有切换指针的良好多位trie。实验表明,给定相同存储器预算,空间最优约束2DMT结构使用二维1位trie所需的存储器访问的1/4到1/3来执行分组分类。
发明概述
本发明提供了具有存储器效率的分类器表示,该具有存储器效率的分类器表示可用减少的存储器访问次数来高效搜索,并且在所需的计算机存储器总量方面有所减小。本发明的一个方面是基于用于构造最小高度SST的快速算法的程序,该程序将构造的复杂度从O(m2)减至O(m),其中m是输入二叉trie中的节点数目。本发明的其它方面是用于构造空间最优HSST以及良好的2DHSST和2DHSSTPC(具有前缀继承的约束2DHSST)的动态编程程序。
附图简要说明
在附图中示出了目前优选的实施例。然而,特别注意:本发明不限于所示的精确布置和手段。
图1(a)是示例性5个前缀的集合及相对应二叉trie的示意性表示;
图1(b)是与图1(a)中的前缀相对应的二叉trie的示意性表示;
图2是图1(b)中使用TBM方案的二叉trie的划分的示意性表示;
图3是图1(b)中使用SST方案的二叉trie的划分的示意性表示;
图4是图1(b)中使用HSST方案的二叉trie的划分的示意性表示;
图5是示例性5个目的-源过滤器的示意性表示;
图6是图5的2DBT的示意性表示;
图7是其中部署根据本发明的具体实施例的数据通信网络的示意图;
图8示意性图解了根据本发明的具体实施例的图6的二维超节点trie(2DHSST)的构造;
图9示意性图解了根据本发明的具体实施例的图8的具有前缀继承的2DHSST(2DHSSTP)的构造;
图10示意性图解了根据本发明的具体实施例的四种叶子超节点格式的构造;
图11是使用本发明的算法程序的每一种在IP4v表中进行查找所需的存储器访问的次数的图形表示;
图12是图11中所示的存储器访问次数的柱状图的图形表示;
图13(a)和(b)分别为由EBO数据归一化的IPv4数据的访问和存储器统计的表;
图14是IP4v表所需的总存储器的图形表示;
图15(a)和(b)是根据本发明的具体实施例的图14(a)和(b)中所示的所需总存储器的柱状图形式的图形表示;
图16是BART所需的存储器的量的表。
图17是通过根据本发明的具体实施例实现的六种算法过程中的每一种在IP4v表中进行查找所需的存储器访问的次数的表;
图18是图17中所示的存储器访问次数的图形表示;
图19(a)和(b)分别为由EBP数据归一化的Ipv6数据的访问和存储器统计的表;
图20是IP6v表所需的总存储器的表;
图21是如图20中所示的所需总存储器的图形表示;
图22是根据本发明的具体实施例的在最优化之后IP4v表所需的总存储器和访问次数的表;
图23是本发明的2DHSST和2DHSSTPC所需的总存储器和存储器访问次数的表;
图24是本发明的2DHSST和2DHSSTPC所需的总存储器的图形表示;
图25是根据本发明的具体实施例执行的2D查找的存储器访问的次数的图形表示;
图26是2DHSSTPC、2DMTd和trie栅格(Grid-of-Trie)所需的总存储器的表;
图27(a)和(b)是本发明的2DHSSTPC和扩展2DHSSTPC分别所需的总存储器(千字节)和存储器访问的次数的表;
图28是5维数据集合上的HyperCut(超切割)所需的总存储器(千字节)、位/规则和存储器访问次数的表;以及
图29(a)和(b)是根据本发明的具体实施例的HyperCut和扩展2DHSSTPC所需的总存储器(千字节)和存储器访问的次数的图形表示。
图30是根据本发明的具体实施例的用于将通过数据通信网络传送的数据分组分类的方法的示例性步骤的流程图。
详细描述
图7示意性图解了数据通信网络20,该网络是其中可部署根据一个实施例的系统100的示例性环境。数据通信网络20示例性地包括多个主机——仅示出了两个为22a、22b,主机所连接的多个节点24a-h、26a-e,以及连接到多个节点的两个附加的示例性网络28a、28b。本领域技术人员将易于理解,数据通信网络可以是例如因特网、局域网(LAN),或者由两个或多个主机形成的其它网络,这些主机的应用层程序借助通过各个节点路由的分组化数据的传输来彼此通信。节点24a-h、26a-e可以是路由器、集线器、桥接器、或能够基于所存储的路由信息存储和转发数据分组的任何其它通用计算机或专用处理设备。多个节点24a-h、26a-e基于传入数据分组的报头中所含的信息以及每个节点存储在其路由表中的信息来将该传入数据分组分类到各个流。表中的每个条目是过滤器-动作对。
更具体而言,系统100是用于将通过数据通信网络20传送的数据分组分类的系统。出于容易表述起见而通过示为相异元素,系统100可在数据通信网络20的一个或多个节点24a-h、26a-e中实现。如图所示,系统100被通信地链接到数据通信网络20的各个节点24a-h、26a-e。
系统100包括用于将通过数据通信网络20传送的数据分组分类的硬件和软件模块的组合。示例性地,系统包括存储器102。在存储器120中,由多个过滤器定义的至少一个分组分类器规则被存储为计算机可读代码。每个过滤器唯一地对应于在通过数据通信网络20传送数据分组时要采取的多个动作之一。
另外,系统100包括处理器104,后者包括响应于计算机可读指令或代码并处理其的逻辑电路(未明确示出)。具体而言,处理器104被配置成访问存储器102中分组分类器规则以及基于分组分类器规则将数据分组分类。如以下更具体描述的,数据分组通过处理器104生成服从用于减少对存储器的访问的预定约束的至少一个超节点来分类。在以下描述的算法过程的上下文中明确定义了超节点trie。
根据一个实施例,分类器规则包括1维节点、空间优化超节点,并且其中预定义约束使得在分类数据分组时由处理器执行的存储器访问最小化。根据另一实施例,分类器规则包括多维节点、空间优化超节点,其中预定义约束使得在分类数据分组时由处理器执行的存储器访问最小化。因此,根据此实施例,处理器104可被配置成生成与使得存储器内至少一个分类器规则的存储最小化的预定约束相对应的超节点。
本发明的各个实施例包括基于算法的程序,该程序可以计算机可读代码实现,用于简明地表示1维trie和2维trie。本文描述了各算法连同演绎每种算法的逻辑基础的严密证据。
最小高度SST
本发明包括用于简明表示分组分类器的算法。更具体而言,本发明的实施例包括用于1维trie和2维trie的简明表示的算法。
对于任何给定K和二叉trieT,宽度优先剪枝算构造最小高度SST。这种算法的复杂度为O(m2),其中m是T中节点的数目。本发明针对此任务提供O(m)算法。此算法——本文中称为minHtSST——执行对T的后序遍历。当T的节点x在此遍历期间被访问时,x的当前剩余子trie的一个或两个,以及有时甚至以x为根的整个剩余子trie被修剪掉以形成被构造的SST的节点。
当minHtSST访问T的节点x时,T中x的子孙的一部分(或全部)已被早先的节点访问修剪。x的经修剪的子孙已被映射到形成一个或多个SST的超节点。这些SST被称为悬挂在x的SST。从x悬挂的这些SST中的一部分是在访问x的左子树中的节点期间形成的。这些SST被称为左悬挂SST;剩余SST是x的右悬挂SST。使用以下符号:x.leftChild(x.左子女)(x.rightChild(x.右子女)),为T中x的左(右)子女;x.st,为T中以x为根的子trie中的节点的集合;x.rn(剩余节点),为x.st中在x被访问时未被修剪掉的子集;x.size(x.大小),为x.rn中节点的数目;x.SST,为在x被访问时从x悬挂的SST的集合;x.leftSST(x.左SST)(x.rightSST(x.右SST)),是x.SST中为左(右)悬挂SST的子集。如果x.leftSST为空,则x.lht=-1(左高度)。否则,x.lht是x.leftSST中SST的最大高度(SST的高度比树中的层数小1)。x.rht是x.rightSST的相应量,且x.ht=max{x.lht,x.rht}。
函数prune(y)通过移除y.rn中的所有节点来修剪节点y处的T。y.rn中的节点被用于形成其子trie为y.SST的超节点。当y是NULL(空)时,prune(y)是NULL操作。以下是后序遍历算法minHtSST采用的访问函数:
情形1:[x.lht==x.rht]
if(x.size>K){prune.(x.leftChild);prune.(x.rightChild);}
else if(x.size==K)prune.(x);
return;
情形2:[x.lht<x.rht]
prune.(x.leftChild);
更新x.size;
if(x.size==K)prune.(x);
return;
情形3:[x.lht>x.rht]
与情形2相对称。
x是被访问的T的节点。此访问函数具有3种互斥情形。在访问期间仅执行这些中的一种。
如本文所示范的,如果使用该访问函数以后序对T进行遍历,则当x被访问时,x.leftChild.size(x.左子女.大小)<K且x.rightChild.size(x.右子女.大小)<K。明确的不足之处在于这个事实:当x被访问时,x的左(右)子树中以及x.rn中的每个节点y具有y.ht=x.lht(x.rht)。
引理1:当x被访问时,x的左(右)子树中以及x.rn中的每个节点y具有y.ht=x.lht(x.rht)。
证明:u是x当中在x.rn中且具有u.ht≠x.lht的最靠近的左子孙(即,左子trie中的子孙)。如果没有这种u,则对于rn中x的每个左子孙,y.ht=x.lht。因此,假定有这种u。明确地,u.ht<x.lht,因此u不会是x的左子女,因为否则x.leftSST=u.SST,则x.lht=u.ht。因此,u具有在x.rn中的父亲(v也是x的左子孙),且u.ht<v.ht=x.lht。在不丧失一般性的情况下,假定u是v的左子女。因而,v.lht=u.ht<v.ht=v.rht。在对T的后序遍历期间,节点v在节点x之前被访问。当v被访问时,v的左子树(包括节点u)应当已被从T修剪(访问函数的情形2),并且因此u不会在x.rn中,这产生矛盾。
对于在x的右子树以及在x.rn中的节点的证明类似。
定理1:对于每个二叉trieT且整数K>0,后序遍历算法minHtSST构造具有最小高度的SST。
证据:定理可通过表明对于T若存在包括直至(但不包括)节点x被访问时构造的所有超节点的最小高度SST则对于T存在包括直到访问x且包括访问x时构造的所有超节点的最小高度SST来建立。由于这种论点的前提在T的第一节点被访问时为真,因此此定理根据归纳得出。
考虑对T的任何节点x的访问。U是包括直至此时由算法所构造的所有超节点的SST。在访问x的期间,如果没有新的超节点被构造,则无法证明。因此,假定构造一个或多个超节点。P指示包括x的U的(超)节点。
假设在访问函数的情形1中构造新的超节点。因此,x.lht=x.rht且x.size≥K。如果x.size>K,则P不能包括x.rn的所有节点。因而,x.rn的节点中的某些被包含在P的子孙中。根据以上的引理1,对于每个y∈x.rn——除y=x之外——可得到y.ht=x.lht=x.rht=x.ht。因而,U中以P为根的子SST的高度为至少x.ht+2。现在,从U的超节点删去x.rn的节点(除x之外),从U删去变为空的任何超节点,并且向U添加由prune(x.leftChild)和prune(x.rightChild)构造的两个超节点。获得T的SST U′,其高度不大于U的高度并且包含直至访问x且包括访问x所构造的所有超节点。如果x.size=K,则P可包括x.rn的所有节点。在这种情形中,U具有由算法直至访问x且包括访问x所构造的所有超节点。如果P不包括x.rn的所有节点,则x.rn的某些节点必须在P的子孙节点中,且因此,如之前那样,以P为根的子SST的高度为至少x.ht+2。现在,从U的超节点删去x.rn的节点,从U删去变为空的任何超节点,并且向U添加由prune(x)构造的超节点。获得T的SST U′,其高度不大于U的高度并且包含直至访问x且包括访问x所构造的所有超节点。
如果在情形2中构造新的超节点,则T中以P为根的子SST的高度为至少x.rht+1。从U的超节点删去x中在x.rn内的左子孙,从U删去变为空的任何超节点,并且向U添加由prune(x.leftChild)构造的超节点。获得T的SST U′,其高度不大于U的高度。现在,如果x.size=K,则进行以上情形1(x.size=K)中给出的变换,并且获得一SST,其高度不大于U的高度并且包含直至访问x且包括访问x所构造的所有超节点。
对情形3的证明类似于对情形2的证明。
由于访问函数可被实现为以O(1)时间运行,因此后序遍历函数minHtSST的复杂度为O(m),其中m是二叉trie T中的节点的数目。注意:n个其长度至多为W的前缀的二叉trie中的节点的数目为O(nW)。因此,根据n和W,minHtSST的复杂度为O(nW)。
空间最优HSST
令minSpHSST(T,H)为二叉trie T在TBM节点的跨步为S且SST节点的跨步为K以及HSST的高度至多为H的约束下的最小空间HSST。假定S和K使得TBM超节点的大小与SST超节点的大小相等。尽管选择S和K使得TBM超节点所需的位数确切等于SST超节点所需的位数实际上是不可能的,但是可选择节点大小来匹配存储器的带宽。这意味着根据需要在每个超节点中浪费较少的位以确保超节点大小等于存储器带宽。因此,实际上,计入所浪费的存储器,TBM超节点的大小等于SST超节点的大小。因此,使HSST所需的空间最小化等价于使HSST中的超节点的数目最小化。因此,HSST中超节点数目被用作其空间需求的度量。
令ST(N)指示T中以节点N为根的子树。因此,T=ST(root(T))。另opt(N,h)为minSpHSST(ST(N),h)中超节点的数目。opt(root(T),H)是minSpHSST(T,H)中超节点的数目。本发明提供了对opt(N,h)的动态编程递归。这种递归可被求解以确定opt(root(T),H)。对递归的简单扩展可被用来实际计算minSpHSST(T,H)。
令opt(N,h,k)为ST(N)在以下约束下的空间最优HSST中超节点的数目:(a)对于二叉trieST(N)的精确k——0<k<K——个节点(k是SST节点的利用率),HSST的根是SST超节点,以及(b)HSST的高度至多为h。令Dt(N)为在ST(N)的层t处的N的子孙(在T中)。
对于minHSST(ST(N),h)——h≥0——的根,有两种可能性:根为TBM超节点或者根为SST超节点。在前一情形中,
并且在后一情形中,
将两种情形组合在一起,可获得
为了简化opt(N,h,k)的递归,使用函数f(N,h,k),其给出了由ST(N)和N的父亲(假定N不是T的根)构成的二叉trie在以下约束下的空间最佳HSST中的超节点的数目:(a)HSST的根是其利用率为k+1的SST超节点,以及(b)HSST的高度为至多h。注意:当k=0时,此HSST的根仅包含N的父亲。因此,f(N,h,0)=1+opt(N,h-1)。当k>0时,根表示包括N的父亲加上ST(N)的k个节点的分块。因此,f(N,h,k)=opt(N,h,k)。为了获得opt(N,h,k)——h>0且k>0——的递归,考虑三种情形,即,考虑N具有0、1和2个子女。
当N没有子女时,
opt(N,h,k)=1 (4)
当N仅具有一个子女a时,
opt(N,h,k)=f(a,h,k-1) (5)
当N具有两个子女a和b时,
最后,对于h<0,
opt(N,h,k)=opt(N,h)=∞ (7)
以及,对于k<0,
opt(N,h,k)=∞ (8)
因为用其高度小于0的HSST或用其根是利用率<0的SST节点的HSST来表示ST(N)是不可能的。
使用式3,每个opt(*,*)值可在O(K)时间内被计算出,因为|Ds(N)|<2s≈2K。而且,每个opt(*,*,*)值可使用式4-8在O(K)时间内被计算出。要计算O(mH)opt(*,*)和O(mHk)opt(*,*,*)值。因此,时间复杂度是O(mHk+mHk2)=O(mHk2)=O(nWHK2),其中n是过滤器的数目,而W是最长前缀的长度。
空间最优2DHSST
令T为2DBT。假定T的源trie已被修改以使得每个搜索路径上遭遇的最后前缀是该搜索路径的最小成本前缀。这种修改是通过检查包含前缀的每个源trie节点N以及用从根到N的路径上的最小成本前缀替代所包含的前缀来实现。可通过将T的顶层二叉trie(即,目的trie)以及每个低层二叉trie划分成TBM和SST超节点的混合来从T构造2DHSST。涵盖顶层二叉trie的超节点使用其NH(下一跳)列表来存储代表T的低层trie的低层HSST的根超节点。
图8示出了图6的2DBT的可能的2DHSST。所用的超节点跨步为K=S=2。可对2DHSST搜索最小成本过滤器,该过滤器通过沿2DHSST的目的HSST中da的搜索路径来匹配任何给定目的和源地址对(da,sa)。对在此路径上遭遇的所有源trie搜索sa。返回这些源trie搜索路径上与sa相匹配的最小成本过滤器。假设找到与(000,111)相匹配的最小成本过滤器,对000的搜索路径首先始于图8的2DHSST的根(ab),并在随后转到左子女(dg)。在2DHSST根中,搜索通过目的二叉trie的节点a和b并在超节点dg中通过T的节点d和g。三个遭遇的节点(a,b,和g)具有悬挂源trie。对相对应的源HSST搜索111,并且返回F2作为最小成本匹配过滤器。
为了确定对2DHSST的搜索所需的存储器访问的次数,假定足够的存储器带宽,即可用单个存储器引用访问整个超节点(此包括IBM、EBM、子女和NH指针)。为了访问NH数组的分量,需要附加存储器访问。对于da的搜索路径上的每个超节点,进行一次存储器访问以获得超节点的字段(例如,IBM、EBM、子女和NH指针)。另外,对于此路径上的每个超节点,需要检查某些悬挂源HSST。对于被检查的每个源HSST,访问目的trie超节点的NH数组的分量以获得悬挂源HSST的根。随后,通过访问此HSST的搜索路径(如由源地址所确定的)上的剩余节点来搜索此悬挂源HSST。最后,访问与此路径上的与该最后节点相对应的NH分量。因此,在以上示例的情形中,进行两次存储器访问以获取目的HSST路径上的两个超节点。另外,搜索3个源HSST。各自需要对其根超节点路径加上每个源HSST中的NH分量的访问。存储器访问总数为2+2*3=8。
令MNMA(X)为搜索源HSST X所需的最大存储器访问次数(MNMA)。对于源HSST,MNMA包括对搜索路径上最后节点的NH分量的访问。因此,MNMA(X)比X中的层数大1。令U为T中具有跨步S和K的2DHSST。令P为U的顶层HSST中任何根到叶子的路径。令路径P上低层HSST的MNMA的总数为H(P)。令nodes(P)为路径P上超节点的数目。定义2DHSST(h)为T的可能2DHSST的子集,其中
注意:可在每次查找下用至多h次存储器访问搜索每个U——U∈2DHSST(h)。还注意:具有H(P)+nodes(P)=h的路径P的某些2DHSST可在比h少的存储器访问下被搜索,因为可能没有导致对通过H(P)+nodes(P)=h的路径P上每个源HSSAT的最长路径进行搜索的(da,sa)。
考虑使得V∈2DHSST(H)的空间最优2DHSST V的构造,这样的V被称为空间最优2DHSST(h)。令N为T的低层trie中的节点,且令2DBT(N)为以N为根的2维二叉trie。令opt1(N,h)为2DBT(N)的空间最优2DHSST(h)的大小(即,超节点的数目)。opt1(root(T),H)给出T的空间最优2DHSST(H)的大小。令g(N,q,h)为2DBT(N)在2DHSST的根为其跨步为q的TBM超节点这个约束下的空间最优2DHSST(h)的大小(不包括根)。因此,g(N,S,h)+1给出为2DBT(N)在2DHSST的根为其跨步为S的TBM超节点这个约束下的的空间最优2DHSST(h)的大小。可看到,对于q>0,
其中m(N)是从节点N悬挂的源trie(如果有)的MNMA的最小可能值(在没有从N悬挂的源trie的情况下,m(N)=0),g(N,0,h)=opt1(N,h-1)、g(空,t,h)=0、以及LC(N)和RC(N)分别为N的左和右子女(在T中)。s(N,i)是从N悬挂的源trie在HSST具有至多i的MNMA的约束下HSST的空间最优HSST的大小。如果N没有悬挂源trie,则s(N,i)为零。
令opt1(N,h,k)为2DBT(N)在2DHSST的根为其利用率为k的SST超节点这个约束下的空间最优2DHSST(h)的大小。易于看到
假设k>0且h>0。如果N没有子女,则
opt1(N,h,k)=1+s(N,h-1) (12)
当N仅具有一个子女a时,
其中f(N,h,k)是2DBT(N)加N的父亲(在T中)(但是不包括从N悬挂的低层trie(如果有的话))在2DHSST的根为其利用率为k+1的SST超节点这个约束下的空间最优2DHSST(h)的大小。例如,当k=0时,约束2DHSST的根具有利用率1且仅包含N的父亲;2DHSST的剩余超节点表示2DBT(N)。因此,当k>0时f(N,h,k)=opt1(N,h,k),而当k=0时,f(N,h,k)=1+opt1(N,h-1,0)。
当N具有两个子女a和b时,
对于h≤0
opt1(N,h,*)=∞ (15)
当有n个过滤器且最长前缀的长度为W时,T的目的trie中节点的数目为O(nW),而T中源trie的数目为O(n)。用于使用章节“空间最优2DHSST”中描述的用来计算opt的算法来计算所有s(N,h)值的时间为O(n2WHK2)时间。使用式10和先前计算出的g值,计算每个g(*,*,*)值需要O(H)时间。使用式11,可在O(K)时间下计算每个opt1(*,*)值。使用式12-15,可在O(KH)时间下计算每个opt1(*,*,*)值。由于要计算O(nWH)opt1(*,*)、O(nWHK)opt1(*,*,*)、以及O(nWSH)g(*,*,*)值,因此用于确定opt1(root(T),H)的时间为O(n2WHK2+nWHK+nWH2K2+nWSH2)=O(n2WHK2)(如在典型应用中,n>H)。
具有前缀继承的2DHSST(2DHSSTP)
令T为图6的2DBT。考虑图8的目的trie超节点ab。此超节点表示T中由二叉节点a和b构成的子trie。在此子trie中的搜索具有三个出口点:b的左子女、b的右子女以及a的右子女。对于前两个出口点,搜索a和b悬挂的源trie,而对于第三出口点,仅搜索a悬挂的源trie。换言之,前两个出口点使用a和b悬挂的源trie,而第三出口点仅使用a悬挂的源trie。如果用a悬挂的源trie中的前缀扩增b悬挂的源trie,则当使用前两个出口点时,仅所扩增的、b悬挂源trie需要被搜索。
在前缀继承中,用分块中祖先悬挂的所有源trie中的前缀来扩增该分块中的每个非空源trie。当此扩增导致副本前缀时,保留每个副本集合中的最小成本前缀。结果扩增源trie被称为出口(exit)trie。在具有前缀继承的2DHSST(2DHSSTP)中,在每个超节点中进行前缀继承。图9给出了图8的2DHSST的2DHSSTP。
注意:为了搜索2DHSSTP,对于遭遇的每个目的trie超节点,至多一个出口trie需要被搜索:在对由该目的trie超节点表示的分块的搜索中遭遇的最后出口trie。因此,当搜索(da,sa)=(000,111)时,对b和g悬挂的出口trie搜索111。存储器访问的次数为2(对于两个超节点ab和dg)+2(用于访问被搜索的两个源trie的每一个中的超节点)+2(用于访问源trie超节点的NH数组)=6。使用图8的2DHSST的相同搜索将对应于8次存储器访问的总成本搜索三个源trie(a、b和g悬挂的那些)。
如果在从N到分块的出口点的每条路径上有出口trie,则目的trie中的节点N是支配节点。注意:如果N具有两个子女——这两个子女皆为支配节点,则从不搜索N中的出口trie(如果有的话)。因此,无需存储此出口trie。
即时应用的发明人已开发了用于为任何2DBT T构造空间最优约束2DHSSTP的良好算法。注意:T的2DHSSTP是由T的目的trie的超节点加出口trie的超节点构成。
令2DHSSTPC(h)为2DHSSTP,后者被约束成使得(a)其可用至多h次存储器访问来搜索,以及(b)每个出口trie的HSST是该出口trie的最小高度HSST。实验性研究表明HSST所需的空间对于施加于HSST上的高度约束而言稍微不敏感。因此,希望空间最优2DHSSTPC(h)所需的空间接近于空间最优2DHSSTP(h)所需的空间。
令N为2DBT T的目的trie中的节点,并且令opt2(N,h)为T中以N为根的子树ST(N)的空间最优2DHSSTPC(h)的大小。超节点跨步为K和S。注意:opt2(root(T),H)给出T的空间最优2DHSSTPC(H)的大小。opt2的动态编程递归的开发遵循用于早期动态编程递归的模式。假设空间最优2DHSSTPC(N)的根为TBM超节点。则,
其中ss(N)是根TBM超节点的出口trie的最小高度HSST的大小的总和,而h(R)是在到R的路径上的根的最后出口trie(若有)的MNMA;如果在此路径上没有出口trie,则h(R)=0。
2DHSSTPC(h)的根的唯一其它可能性在于,其为占用率为范围[1,K]中的某个k的SST节点。令2DHSSTPC(N,h,k,p)为ST(N)在以下约束下的2DHSSTPC(h):(a)2DHSSTPC的根为其利用率为k的SST节点,(b)对于根,前缀继承不限于T中由2DHSSTPC的根表示的分块;相反,前缀继承扩展到T中N的p个最靠近祖先。令opt2(N,h,k,p)为空间最优2DHSSTPC(N,h,k,p)的大小。可看到:
为了助益opt2(N,h,k,p)的计算,三个新的函数:s(N,p)、h(N,p)和x(N,h,k,p)被引入。如果N具有非空源trie,则s(N,p)是N及其在T中的p个最靠近祖先悬挂的源trie的联合的空间最优最小高度HSST的大小,而h(N,p)是此HSST的MNMA。否则,s(N,p)=h(N,p)=0。在这种使用章节“空间最优2DHSST”的算法的后序遍历之前计算s(N,p)值。易于在计算s(N,p)值期间计算h(N,p)值。
x(N,h,k,p)是在2DHSSTPC(N,b,k,p)的根为支配节点这个附加约束下的空间最优2DHSSTPC(N,h,k,p)的大小。opt2(N,h,k,p)和x(N,h,k,p)的递归可通过针对N考虑三种情形来获得。当N没有子女(即,N是叶子)时,
当N具有单个子女a时,
当N具有两个子女a和b时,
其中
组合式16和17,可获得
当有n个过滤器且最长前缀的长度为W时,T的目的trie中节点的数目以及由此的出口trie的数目为O(nW)。使用章节“空间最优HSST”的算法,所有s(*,*)和h(*,*)值可在O(n2W2HK2)时间内被计算出。在此计算之后,每个ss(N)值可通过遍历T中以N为根的子树的前S个层来在O(2S)=O(K)时间内被计算出。因此所有ss(*)值可在O(nWK)附加时间内被确定。如可从式25中看到的,计算每个opt2(*,*)值需要O(K)时间(假设式右边的ss和opt2项已知)。花费O(K)时间来计算每个opt2(*,*,*,*)和(*,*,*,*)值。由于有O(nWH)opt2(*,*)值以及O(nW2HK)opt2(*,*,*,*)和x(*,*,*,*)值,因此总时间复杂度为O(n2W2HK2+nWK+nWHK+nW2HK2)=O(n2W2HK2)。
实现考虑
HSST
如果可用单次存储器访问检查每个超节点,则可通过进行至多H+2次存储器访问对其高度为H(即,层数为H+1)的HSST搜索最长匹配前缀的下一跳。为了获得此性能,超节点参数K和S可被选择成使得每一类超节点可用单次访问来检索。TBM节点的大小为2S+1+2b-1位,并且SST节点的大小为4K+2b-1位。需要附加位来区分两种节点类型。因此,HSST的任何实现必须为TBM节点分配2S+1+2b-1位,为SST节点分配4K+2b位。这样的一种实现可被称为HSST的基实现。令B为可用单次存储器访问检索的位的数目,并假定b=20位被用于指针。当B=72时,超节点参数编程K=8和S=4。当B=64时,超节点参数编程K=6和S=3。由于需要将超节点与字边界对齐,因此当B=64时,每个TBM节点浪费8位。
已针对超节点提出了称为前缀位实现的的替换性实现。这种替换性实现采用前缀位最优化技术。将附加位(称为prefixBit(前缀位))添加到每个超节点。如果通向N的、通过N的父亲超节点(如果有的话)的搜索路径通过包含前缀的二叉trie,则对于超节点,此位为1。在将prefixBit添加到每个超节点的情况下,可如下搜索HSST:
步骤1:沿HSST向下移动,并保持跟踪最近看到的其prefixBit为1的超节点的父亲Z,不检查在此步骤中遭遇的任何节点的IBM。
步骤2:检查搜索路径上的最后超节点的IBM。如果在此超节点中没有找到匹配前缀,则检查超节点Z的IBM。
当采用前缀位最优化时,具有较大K和S是可能的,因为超节点的IBM(K或2S-1位)和NH(b位)字段未被访问(除步骤2中之外)。因此,保留超节点字段所需的空间为至多B位是足够的。IBM和NH字段可能溢出到下一存储器字。换言之,K和S被选择成最大整数,其中3K+b+1≤B且2S+b+2≤B。当B=72且b=20时,使用K=17和S=5;以及当B=64且b=20时,使用K=14和S=5。当采用前缀位最优化方案时,用于搜索的存储器访问的次数为H+4,因为需要两次附加访问(相对于基实现)来获取可能在步骤2中所需的最多达两个IBM和NH字段。
对Z的IBM的附加访问可通过使用受控叶子进栈(pushing)来避免。回顾HSST的每个超节点表示分类器的二叉trie的子树。在受控叶子进栈中,检查由每个超节点表示的二叉子树的根N。如果N不包含下一跳,则与Q(N)相匹配的最长前缀的下一跳被调加到N。注意:当使用受控叶子进栈时,不需要prefixBit,并且在查找期间无需对父亲节点Z保持跟踪。具有受控叶子进栈的HSST的这种实现被称为增强前缀位实现。增强前缀位实现中的查找所需的存储器访问的次数为H+3。
基实现最优化
当使用基实现且b=20时,如果NH指针可被消去(用于节省b位),则K的值可增大5。NH指针的消去还可导致S的增大。为了消去NH指针,超节点N的下一跳数组NA紧接其子女数组CA被存储。N的下一跳数组的起始可从N的子女指针以及对N所具有的子女超节点的数目的认知来计算。后者可根据N的EBM来确定。由于下一跳数组的大小可能不是B的倍数,因此这种策略可能导致每个下一跳数组浪费最多达B-1位,因为每个子女数组必须在字边界处对齐。如果(CA,NA)对中的某些成对且每一对中的第二(CA,NA)元组被翻转,则这种增强基实现所用的存储器字的总数可被减小。例如,假设B=72,每个下一跳条目使用18位,NA1需要162位,而NA2需要180位。子女数组中的每个条目是使用B位的超节点。由于每个(CA,NA)必须在字边界处开始,因此将(CA1,NA1)和(CA2,NA2)放入存储器使用n1+n2+6个B位字,其中n1和n2分别为CA1和CA2中超节点的数目。如果翻转(CA2,NA2)获得(NA2,CA2),则下一跳数组NA2可使用B位字的54位中未被NA1使用的36位,并将总字数减小1。B位字中NA1和NA2的这种共享在共享B位字留下18个未使用位,且子女数组CA2保持与字边界对齐。(NA2,CA2)的子女指针现在指向数组NA2的起始,并且为了从此子女指针计算数组CA2的起始,NH2中下一跳条目的数目必须已知。此数目是根据IBM确定的。为了采用此翻转策略以潜在地减小增强基实现所需的总存储器,每个超节点必须扩增一位,该位标识用于其子女和下一跳数组的定向(CA,NA)或(NA,CA)。
为了最小化增强基实现所用的存储器,以下约束装箱问题(RBIN)必须被求解:将范围[1,B]中的n个整数b1,...,bn填充到最小数目个大小为B的桶中,以使得没有桶被指派两个以上的整数。可通过使用经修改的首次拟合递减启发式算法来在O(n log n)时间内求解RBIN问题以在每个箱中填充至多两个项目。这种策略的最优性易于通过对n进行归纳来构建。替换性策略是将biS排列成降序,并在随后反复使最小未成对bi与最大未成对bi(在成对biS的总数不大于B的约束下)成对。当没有新对可被创建时成对过程终止。剩余单元素和对的数目是填充所需的箱的数目。
端节点最优化HSST
HSST所需的空间的进一步缩减可通过采用端节点最优化来达成。允许四种格式的叶子超节点。图10示出了基实现的这四种格式。每个超节点(叶子或非叶子)使用一位来在叶子与非叶子超节点之间进行区分。每个叶子超节点使用两个附加位来在四种叶子格式当中进行区分,而每个非叶子超节点使用一附加位来在SST与TBM超节点之间进行区分。叶子超节点是通过标识符合四种叶子超节点格式之一的二叉trie的最大子trie来获得的。注意,叶子超节点没有子女指针。因此,在SST格式中,可使用比用于非叶子超节点大的K,并且在TBM格式中,更大的S也是可能的。当子trie中的前缀被填充到单个超节点中时,使用第三格式(SuffixA(后缀A))。对于这种填充,令N为被填充的子trie的根。随后,Q(N)(由从T的根到N的路径定义的前缀)对于以N为根的子trie中的所有前缀而言相同。因此,叶子超节点需要仅存储通过从ST(N)中的每一前缀删除Q(N)获得的后缀。叶子超节点存储这些后缀的编号,紧接着存储(后缀长度,后缀)形式的对。在图10中,len(S1)是第一后缀的长度,而Sl是超节点中的第一后缀。第三格式的叶子超节点通过连续地检查存储在节点中的后缀并将这些与目的地址(在其被从前缀Q(N)剥除之后;此剥除可如从root(T)移至N那样来进行)作比较来搜索。与第三格式相类似的第四格式(SuffixB(后缀B))避免了第三格式用于提取下一跳所需的存储器访问。当将受控叶子进栈应用于SuffixB超节点时,在最坏情况下查找所需的存储器访问的次数可减少。注意:在没有受控叶子进栈的情况下,如果在SuffixB叶子超节点中没有找到匹配前缀,则需要附加访问来沿搜索路径提取与最长匹配前缀相关联的下一跳。
对于可由前三种类型的叶子超节点表示的所有ST(N),针对h≥0设置opt(N,h)=1,而对于可由SuffixB超节点表示的所有ST(N),针对h≥-1设置opt(N,h)=1。章节“空间最优HSST”的动态编程递归在随后被用于确定opt(root(T),H)。
尽管已针对基实现描述了端节点最优化,但是这种技术也可被应用于增强前缀位实现以及用于降低总存储器需求。
2DHSST和2DHSSTPC
HSST的增强基实现被用于2DHSST和2DHSSTPC的目的和源trie两者。端节点最优化是在2DHSST和2DHSSTPC的每个源trie上进行的。然而,对于目的trie,进行如下:
1.在应用章节“空间最优2DHSST”和“具有前缀继承的2DHSST(2DHSSTP)”中的式子之前切掉目的二叉trie的叶子以构造空间最优2DHSST和2DHSSTPC。在构造之后,标识被切掉的每个叶子的父亲目的trie超节点。
2.在2DHSSTPC的情形中,目的二叉trie的叶子悬挂的每个源trie继承沿父亲目的trie超节点中去往此叶子的路径存储的前缀。
3.每个切掉的叶子被HSST替换成其源trie(此源trie包括(2)中在2DHSSTPC的情形中继承的前缀)。此HSST的根被替换成父亲目的trie超节点的适当的子女。(这要求使用附加位来在目的trie超节点与源HSST根之间进行区分)。
通过如以上处理二叉目的trie的叶子,略去搜索在目的trie父亲中去往叶子子女的路径上的源trie的这种需要。
最后,对于2DHSSTPC,构造空间最优结构所需的时间和空间可通过使用章节“具有前缀继承的2DHSST(2DHSSTP)”中所用的p的替换性定义来减小。在此新的定义中,前缀继承向上延伸至T中N的具有非空源trie的p个最接近的祖先。由于在典型数据集合中,尽管祖先的数目在IPv4中可达32以及在IPv6中可达128,但是目的trie节点具有较少数目(比方3或4个)的祖先——这些祖先具有非空源trie,因此p的新定义允许使用小得多的p。这减小了x(*,*,*,*)和opt2(*,*,*,*)的数组所需的存储器,并且还减小了计算时间。注意:必须修改章节“具有前缀继承的2DHSST(2DHSSTP)”中的式子以计及定义中的这种改变。还注意:虽然minx(*,*,*,*)所需的空间也被减小,但是章节“具有前缀继承的2DHSST(2DHSSTP)”中的递归可在实际上不使用这种数组的情况下被求解。
实验结果
用于空间最优1维和2维超节点trie的算法的C++是使用具有最优化层O3的GCC 3.3.5编译器编译的,并且在2.80GHz Pentium(奔腾)4PC上运行。参照目前公布的算法对这些算法进行基准测试以构造用于1维和2维分组分类的空间有效数据结构。经基准测试的算法力图构造查找结构,该结构(a)使在最坏情况下查找所需的存储器访问的次数最小化,以及(b)使存储所构造的数据结构所需的总存储器最小化。结果,这些实验仅测量这两个量。首先,运行所有测试算法以便于生成使最坏情况下查找所需的存储器访问次数最小化的查找结构;所构造的查找结构的大小(即,所需存储器)被最小化以服从此前的约束。出于基准测试的目的,假定分类器数据结构将驻留在QDRII SRAM上,该QDRII SRAM支持B=72位(双突发)和B=144位(四突发)两者。对于这些实验,针对指针(无论子女指针还是指向下一跳数组的指针)使用b=22位而针对每下一跳使用12位。在二维表的情形中,与前缀相关联的优先级和动作需要被存储。出于这个目的,分配18位。
一维路由表
实现空间最优HSST的四个变量:增强前缀位(EP)、具有端节点最优化的增强前缀位(EPO)、增强基(EB)、以及具有端节点最优化的增强基(EBO)。另外,考虑Song等人的BFP算法以及Sun等人的变体3算法(其被称为V3MT)以构造多路树。Sun等人报告的广泛实验确立了V3MT在空间和查找效率方面胜于其它用于IP查找表的空间和时间有效表示的已知方案的优越性。Song等人确立了BFP胜于Eatherton等人的TBM的优越性。然而,Song等人没有将BFP与V3MT作对比。
IPv4路由器表
对于测试数据,使用IPv4和IPv6路由器表两者。首先,将报告IPv4实验,这是使用六个IPv4路由表Aads、MaeWest、RRC01、RRC04、AS4637和AS1221来进行的。这些路由器表中的前缀的数目分别为17486、29608、103555、109600、173501和215487。
图11示出了在由本发明中的每种算法(假定根被保存在寄存器中)构造的数据结构中进行查找所需的存储器访问的次数。与Song等人以及Sun等人所报告的访问数不同,本发明报告的次数包括获得最长匹配前缀的下一跳所需的附加访问(如果有的话)。图12标绘了此数据。如可看到的,EBO导致所有测试集合的最小访问次数;当B=72时,在所有六个测试集合上,EPO与EBO不分胜负(其它具有9位下一跳和18位指针域的实验指示当B=72时EBO常常需要比EPO少1次存储器访问),而当B=144时,在这些测试情形中的两种上EPO与EBO不分胜负。
图13(a)按EBO的计数归一化访问计数数据,并给出了6个数据集合的经归一化计数的最小、最大和标准偏差。在由BFP构造的结构中进行查找的存储器访问次数是EBO结构所需的次数的1.33倍至2.00倍;平均而言,BFP结构需要EBO结构所需访问次数的1.53倍的访问次数,并且标准偏差为0.25。
当B从B=72变成B=144时,由6种算法的每一种所构造的结构所需的存储器访问次数减少。关于EPO的减少在17%与33%之间(平均偏差和标准偏差为23%和8%)。关于EBO的减少为从33%到40%(平均偏差和标准偏差为36%和3%)注意,当B=72时,在6个数据集合的5个中BFP优于V3MT一次存储器访问,而在第六个数据集合上彼此不分胜负。注意,当B=144时,在6个数据集合的3个中V3MT优于BFP一次存储器访问,而其余三个数据集合上彼此不分胜负。
图14示出了由6中算法的每一种所构造的查找结构所需的总存储器。图15标绘了此数据而图13(b)给出了按EBO的数据归一化的统计。如可看到的,EPO和EBO导致最小总存储器要求。尽管EPO在12种测试情形中的9种上的存储器度量上略优于EBO,但是对于所有12种情形,EBO所需的总存储器比EPO所需的少2%。由其余算法构造的搜索结构平均上需要比由EBP构造的结构多23%到61%之间的存储器。当B=72时,对于BFP,每个前缀所需的平均存储位数为48,对于V3MT为42而对于EBO为27。对于当B=144时的情形,相对应的数目为41、35和27。
当B从72增至144时,对于6个数据集合中的4种,EPO和EBO所需的存储器减少,而对于其余2种,所需的存储器增加。按B=72存储器归一化的B=144存储器在0.95与1.26之间,平均偏差和标准偏差分别为1.05和0.15。对于EBO,相应的归一化数值为0.96、1.13、1.0和0.07。
在IPv4数据集合上,EBO和EPO是完全胜利者。EBO在存储器访问度量上略优于EPO,并且两者在所需存储器度量上极具竞争力。由于前者更为重要,因此相对于EPO推荐EBO。EBO查找结构要求比EFP结构少25%到50%的访问;它们还将存储器需求减少24%到44%。存储器访问次数和存储器需求上相对于V3MT的减少为25%到40%以及12%到38%。
与其它简明表示的比较
一种提出的简明路由器表结构被称为Lulea。其为3层多位trie。Lulea中的查找要求12次存储器访问。因此,只要随着查找时间的流逝,Lulea对于以上考虑的所有6种结构而言都是较差的。由于无Lulea的代码可用,因此仅进行大概的存储器比较。Degermark等人报告6个数据库的存储器要求,其中最大的具有38,141个前缀并且每个前缀使用34个存储器位。由于每个前缀所需的存储器随着数据库大小的增大而减少,所以将其与具有29,608个前缀的MaeWest相比(此比较偏向支持Lulea)。在B=72的MaeWest上,EPO、EBO、BFP和VM3T分别要求每个前缀32、31、55和49位。关于B=144的相应数值为30、35、46和40。注意,出于以下原因,这是非常大概的比较:(1)数据库不同,以及(2)分配给指针和下一跳的位数在Lulea和其余结构中是不同的。例如,Lulea方案要求指针的大小与下一跳的相同,并因此向每一个各分配14位。在以上实验中,将22位用于指针以及将12位用于下一跳。在Lulea中将下一跳大小减至12位不会减少所需的总存储器,除非指针大小也减至12位。假定这些不平等抵消,数据表明EPO和EBO在查找复杂度和存储器复杂度两者上皆胜于Lulea!
Lunteren I已提出使用完全散列函数——平衡路由表搜索(BART)的多位trie的简明表示。图6的第一行给出了BART 12-4-4-4-8——其两个最高存储器效率方案(另一方案是BART 8-4-4-4-4-8,其对于搜索而言要求略少的存储器,但是多两次访问)之一——的存储器需求。在BART 12-4-4-4-8中,查找所需的存储器访问的次数为9。相比之下,B=72下的EBO的查找复杂度为5或6次访问/查找,并且所需的总存储器落在BART 12-4-4-4-8的存储器的38%与43%之间。注意:Lunteren I和本发明所用的实现假设略微不同。Lunteren I向每个指针和下一跳分配18位,而在本发明中,向指针分配22位且向下一跳分配12位。Lunteren I的方案要求指针和下一跳有相同大小。实际上,不同的下一跳的数目较小,因此12位是足够的。另一方面,对于较大数据库,对于指针而言,18位可能是不够的。不管这些微小差异,实验表明EBO在查找复杂度和所需的总存储器上胜于Lunteren I的方案。
Lunteren II描述了用于很宽的存储器——B≥288——相关完全散列函数策略(BARTS)。图16的第二行示出了其用于很宽的存储器的存储器最有效方案——BARTS 12-6-6-8——的存储器要求。所报告的数据是对应于B=288这种情形的。查找所需的存储器访问的次数为4。B=144下的EBO实现3或4次访问/查找的查找复杂度,同时要求BARTS 12-6-6-8所需的存储器的44%到60%。
Ipv6路由器表
对于IPv6实验,833-前缀AS1221-Telstra路由器表连同6个合成IPv6表一起被使用。从AS1221-Telstra表移除比64长的前缀,因为当前IPv6地址分配方案至多64位。对于合成表,Wang等人提出的策略(“Non-random Generatorfor IP6v Tables(用于IP6v表的非随机发生器)”,关于高性能互联的12周年IEEE座谈会,2004)被用于从IPv4表生成IPv6表。在这种策略中,16位串被预加到每个IPv4前缀,后者由001之后跟随13个随机位构成。如果这种预加没有至少使前缀长度翻倍,则预加足够数目的随机位以使得前缀的长度翻倍。在这种预加和可能的追加之后,四分之一的前缀中的最后一位被丢弃,以使得真实路由器表中观测到的偶数长度前缀与奇数长度前缀之比保持3∶1。对每个合成表赋予与合成所源自的IPv4表相同的名称。AS1221-Telstra IPv6被命名为AS1221*以将其与合成自IPv4AS1221表的IPv6表区分开。
图17和20给出了7个IPv6数据集合的搜索结构所需的存储器访问的次数和存储器。图18和21标绘了这些数据,而图19给出了按EBO的数据归一化的统计。EPO和EBO就存储器访问次数而言是最佳的。当B=72时,在7个数据集合的2个上EPO优于EBO一次存储器访问,而其余5个上彼此不分胜负。然而,当B=144时,在7个数据集合的3个上EBO优于EPO一次存储器访问,而其余4个上彼此不分胜负。至于IPv4数据,EBO结构的存储器利用率基本上与EPO结构一样好(1%的平均差异)。所构造的BFP中的最坏情况下的查找需要EBO结构中所需的存储器访问的1.14到2.00倍,而BFP结构需要EBO结构所需的存储器的1.82到3.17倍。
如同IPv4实验的情形那样,将B从72增至144,导致查找所需存储器访问的次数的减少。对于EPO,存储器访问的最大、最小和平均减少为33%、17%和25%;标准偏差为8%。EBO的相应百分比为57%、20%、34%和13%。对于7个数据集合中的5个,EPO所需的存储器减少,而在其余2个上,所需存储器增大。当B=144时所需的总存储器按当B=72时所需的归一化成落在0.86与1.1之间;平均偏差和标准偏差分别为1.01和0.1。对于EBO,在所有7个数据集合上所需的存储器减少。最大、最小和平均存储器减少为16%、4%和12%;标准偏差为4%。
进一步最优化
Song等人已提出了两种技术:子女晋升和最接近祖先折叠,其可被用于减少一位二叉树中的节点数目和前缀数目。这些技术减少了一位二叉trie的大小及其紧凑表示的大小。在子女晋升中,如果二叉节点的兄弟还包含有效前缀,则存储在该二叉节点中的前缀被晋升至父亲节点。在晋升之后,倘若节点为叶子,则删除该节点。在最接近祖先折叠技术中,如果节点的最接近祖先包含与下一跳相同的前缀,则存储在该节点中的前缀被忽略;如果叶子变成空,则删除它们。注意:最接近祖先折叠非常类似于Sun等人提出的端口融合技术。端口融合被用来通过融合具有相同下一跳的两个连续目的地址区间来减少端点的数目。
在此章节中,将学习到子女晋升和最接近祖先折叠对由EBO、BFP和V3MT生成的简明表示的影响。对于V3MT,对从经最优化的二叉trie构造的区间进行端口融合。对于这种实验研究,仅使用IPv4数据集合中的三个——Aads、Maewest、和AS1221,因为这些是仅有的有下一跳数据可用的数据集合。
图22给出了查找所需的总存储器需求和存储器访问。在存储器访问次数的度量以及总存储器度量上EBO仍为最佳简明表示方法。在18个测试中的两个(在B=144的情况下AS1221上的BFP以及在B=72的情况下Aads上的V3MT)上,查找所需的存储器访问的次数减少1次。对于其余16个测试,查找所需的访问次数不变。
子女晋升和最接近祖先折叠最优化的应用减少了二叉trie的简明表示所需的总存储器。对于EBO,减少从24%变为35%,且平均减少为29%;标准偏差为5%。对于BFP,这些百分比为23%、37%、28%和6%。对于V3MT,这些百分比为34%、49%、40%和7%。这些实验指示存储器需求中的大多数减少归因于最接近祖先折叠最优化。子女降级贡献约1%的存储器减少。
按EBO结构所需的存储器归一化的BFP结构所需的存储器落在1.41与1.82之间,并且平均偏差与标准偏差为1.62和0.17。V3MT的相应比为1.02、1.40、1.19和0.16。
多维IPv4表
评估所提出的使用二维和5维数据集合的数据结构的性能。使用由Taylor等人的过滤器发生器所创建的十二个5维数据集合。这些数据集合中的每一个实际上具有10个不同的规则数据库。因此,总共有120个5维规则数据库。命名为ACL1到ACL5(访问控制列表)、FW1到FW5(防火墙)、IPC1和IPC2(IP链)的数据集合平均上在每个数据库中分别具有20K、19K、19K、19K、12K、19K、19K,18K、17K、17K、19K和20K规则。从这些5维数据集合导出的2维数据集合平均上在每个数据库中分别具有20K、19K、10K、13K、5K、19K、19K、18K、17K、17K、16K和20K规则。2维规则是通过剥除源和地址端口字段以及协议字段来从5维规则获得的;目的和源前缀字段被保留。在此剥除过程之后,副本被删除(即,如果两个规则具有相同的目的前缀和相同的源前缀,则其被认为是副本)。
二维IPv4表
首先,对空间最优最小访问2DHSST和2DHSSTPC结构进行比较。图23和24示出了由实验产生的结果。对于12个数据集合中的5个——ACL2-5以及IPC 1——2DHSSTPC以增加的存储器要求为代价减少访问的次数。对于其余的数据集合,2DHSSTPC和2DHSST要求几乎相同的访问次数和相同的存储器量。
在所有这些数据集合中,2DHSSTPC要求比2DHSST所需的存储器多0%到29%之间的存储器(所需存储器中的平均增加为6%而标准偏差为9%)。如之前所叙述的,尽管2DHSSTPC要求更多存储器,但是它们要求更少的存储器访问次数来进行查找。2DHSSTPC所实现的存储器访问次数的减少落在0%与41%之间(平均减少为11%而标准偏差为13%)。
当B从72增至144时,对于2DHSST和2DHSSTPC两者,所需的存储器访问的次数得以减少,但是所需的总存储器一般增加。对于2DHSST,当B=144时所需的总存储器按当B=72时所需的被归一化成落在0.98与1.50之间(平均偏差和标准偏差为1.21和0.19);存储器访问的次数减少达28%到41%之间(平均减少为30%而标准偏差为9%)。对于2DHSSTPC,经归一化的存储器需求落在1.04与1.49之间(平均偏差和标准偏差为1.23和0.16);存储器访问次数的减少在从18%到56%的范围内(平均减少为31%而标准偏差为11%)。
由于主要目标是减少存储器访问的次数,因此使用在B=144的情况下用于用2DMTSa和2DMTd进一步进行基准测试的2DHSSTPC。2DMTSa和2DMTd使用压缩技术来紧缩数组和butler节点。这两种技术非常相似;两者都是尝试用单个节点来替换具有小量实际数据(前缀和指针)的子trie,其中该单个节点具有这些数据。注意:2DMTd和2DMTSa是所开发的最佳结构,并且使用这两种压缩技术,Lu等人已确立2DMTd和2DMTSa胜过诸如trie栅格、EGT-PC和HyperCut等其它竞争分组分类结构的优势。为了进一步的基准测试,构造针对最坏情况的搜索具有最小可能的存储器访问次数H的空间最优2DHSSTPC。最小值H作为输入被提供给2DMTSa(2DMTd)算法,以构造在最坏情况下可用H次存储器访问搜索的2DMTSa(2DMTd)。由于这种策略,对于2DHSSTPC和2DMTSa(2DMTd),最坏情况下的存储器访问次数是相同的。
图25标绘了2DHSSTPC、2DMTd和2DMTSa所需的存储器。可看到,在存储器准则上,2DHSSTPC在12个数据集合中的4个上胜过2DMTSa一数量级,且胜过2DMTSa一数量级。2DMTd所需的存储器按2DHSSTPC所需的被归一化成落在1.14与624之间,平均偏差和标准偏差为56和179。2DMTSa的经归一化的数值为9、49、17、11。还观测到,当对2DMTd给予最多比具有最小可能H的空间最优DHSSTPC所需的多60%的存储器时,对于数据集合FW1-5和IPC2可用少1或2次的访问来搜索的2DMTd可被构造。
五维IPv4表
对于5维表,使用Baboescu等人提出的桶方案(“Packet classification forcore routers:is there an alternative to CAMs?(用于核心路由器的分组分类:有作为CAM的替换方案?)”INFOCOM,2003)来扩展2DHSSTPC。始于目的和源地址的2维trie。具有相同目的-源前缀对(dp,sp)的所有规则被放置在从2维trie的适当源trie节点指向的桶中。由于dp和sp是由通向此桶的路径所定义的,因此目的和源前缀字段不被显式地存储在桶中。然而,针对桶中的每一个规则存储源端口范围、目的端口范围、协议类型、优先级和动作。使用此论文的2DHSSTPC算法来获得2维trie的超节点表示,并且下一跳数据的NH列表包括桶。SuffixB节点(Lu等人提出的端节点最优化)被修改以使得它们包含源前缀后缀、目的和源端口、协议、优先级和动作而非仅仅是源前缀后缀、优先级和动作。在2DHSSTPC中的前缀继承期间,源trie可从祖先trie继承已存在于该源trie中的前缀。当这种情况发生时,与这些继承前缀相关联的规则也需要被存储在此源trie中。为了避免这种冗余,指针被存储在与源trie前缀相关联的桶中,该指针指向与最接近的祖先源trie中的相同前缀相关联的桶。具有桶的2DHSSTPC被称为扩展2DHSSTPC。与2DHSST不同,扩展2DHSSTPC的源trie不被修改以使得搜索路径上看到的最后的源前缀具有最高优先级(或最小成本)。
Baboescu等人声明,如上所述,当使用具有桶的2维trie时,对于5维表,大多数桶具有不多于5个规则,且没有桶具有20个以上的规则。虽然这种言论对于Baboescu等人所用的数据集合成立,但是某些桶对于数据集合具有显著更多的规则。例如,在FW4中,约100个规则在目的和源前缀字段两者中皆包含通配符。这些规则可被从原始数据集合移除并被存储在针对其余3个字段最优化的搜索结构中。注意:将具有通配符的较大的规则簇存储在单独结构的目的和源前缀字段中的这种策略较早地被用在HyperCut方案中。以下附图和表中报告的数据仅对应于针对具有在目的和源前缀字段中的通配符的规则被移除之后剩余的那些规则构造的结构。
图26给出了扩展2DHSSTPC在十二个5维数据集合上所需的总存储器和存储器访问次数。图27将2DHSSTPC(当然,这些仅存储导出的2维规则)与存储5维规则的扩展2DHSSTPC作比较。扩展2DHSSTPC每个规则所需存储器(千字节)的位数落在59与196之间;平均为128。令人惊讶的,添加三个字段仅使位/规则的数目的增加落在0.5与42之间;平均仅增加13。实际上,对于12个数据集合中的8个(ACL1-2、FW1-5和IPC2),扩展2DHSSTPC和2DHSSTPC(皆使用B=144)要求几乎相同数目的位/规则。位/规则中的很小的增加归因于(a)这些规则中的很大一部分中的端口范围是各自仅需要一位的通配符,以及(b)对于5维规则中的3个附加字段的大多数数据可被填充到在2维规则的情况下被浪费的SuffixB节点的空间中。搜索扩展2DHSSTPC所需的存储器访问的次数在从6到35的范围内;平均为15。对于12个数据集合中的6个(ACL1、FW1-3、FW4和IPC2),特定5维数据集合的扩展2DHSSTPC中的查找所需的存储器访问次数相对于相对应的2维数据集合的2DHSSTPC中的查找没有增加。
以上Singh等人所报告的HyperCut——其为先前已知的多维分组分类的算法方案中的一种——使用决策树并且规则被存储在有界大小的桶中;每个桶与树节点相关联。与其中目的和源前缀不被显式存储的扩展2DHSSTPC所用的桶方案不同,HyperCut的桶方案要求存储这些字段以及在扩展2DHSSTC桶中存储的那些。因此,HyperCut中个体规则的存储要求比扩展2DHSSTPC所需的多的空间。另外,在HyperCut中,规则可被存储在若干桶中,而在扩展2DHSSTPC,每个规则被确切地存储在1个桶中。最有效的Hypercut方案是HyperCut-4。这种方案被用来与扩展2DHSSTPC作比较。
图28给出了HyperCut在十二个5维数据集合上所需的总存储器和存储器访问次数。HyperCut结构每个规则所需存储器的位数落在242与163,519之间;平均为56,801。重要的是注意:Hypercut所需的位/规则有较宽的变化;扩展2DHSSTPC所需的位/规则是可更加容易地预测的。具体而言,Singh等人报告对于防火墙类的数据库,HyperCut的特性并非良好的,因为这些往往在源和/或目的字段中具有高频率的通配符。实际上,Singh等人在以上报告源或者目的前缀字段中百分比为10%的通配符导致存储器需求的激增。这种言论通过本发明中的实验来证实。HyperCut在ACL1和ACL5上展现了其最佳位/规则性能(分别为242和400),其中源或目的字段中的通配符的频率低于1%。其在5个防火墙数据集合FW1-5上以及IPC2上展现了其最差性能(位/规则在从25,757到163,519的范围内)。在这些数据集合中,通配符频率落在60%与90%之间。其余数据集合(ACL2-4和IPC1)具有10%与15%之间的通配符频率,而Hypercut结构所需的位/规则从4,415变动到16,363。搜索数据集合的Hypercut结构所需的访问次数在16到51的范围内,且平均为30。
图29将扩展2DHSSTPC与HyperCut作比较。由扩展2DHSSTPC构造的结构要求的存储器落在由HyperCut构造的结构所需的存储器的0.1%到79%之间;平均偏差和标准偏差分别为8%和23%。扩展2DHSSTPC中查找的访问次数落在HyperCut结构所需的访问次数的31%与81%之间;平均偏差和标准偏差分别为46%和16%。对于两种方案,所报告的存储器和访问仅对应于在目的和源前缀字段两者中具有通配符的规则被移除之后剩余的那些规则。
由于在扩展2DHSSTPC中,没有规则被存储两次,但是相同的规则可被存储在若干Hypercut桶中(取决于规则集合的复杂度),因此2DHSSTPC的存储器需求可被更好地预测,并且在平均情况以及最坏情况下数据要少得多。
现在参看图30,由示例性步骤的流程图来表示用于将数据通信网络上传送的数据分组分类的方法300。示例性地,在初始步骤302之后,在步骤304,提供由多个过滤器定义的存储器可存储分组分类器规则。每个过滤器唯一地对应于在通过数据通信网络传送数据分组时要采取的多个动作之一。在步骤306,数据分组通过生成服从用于减少对其中存储分组分类器的存储器的访问的预定约束的至少一个超节点trie来根据分组分类器规则来分类。在步骤308示例性地终结该方法。
根据一个实施例,生成步骤306包括生成1维节点、空间最优超节点,其中预定义约束使存储器访问最小化。根据另一个实施例,生成步骤306包括生成多维节点、空间最优超节点,其中预定义约束使存储器访问最小化。此外,超节点和预定义约束可被配置成使用于存储至少一个分类器规则的存储器的量最小化。
如已叙述的,本发明可在硬件、软件或硬件和软件的组合中实现。本发明可以集中式方式在一个计算机系统中实现,或者以其中不同元素分散在若干个互联的计算机系统上的分布式方式来实现。任何类型的计算机系统或适于执行本文所描述的方法的其它装置是合适的。硬件和软件的典型组合可以是具有计算机程序的通用计算机系统,该计算机程序在被加载和执行时控制该计算机系统以使其执行本文所描述的方法。
本发明可被体现在计算机程序产品中,或计算机可读存储介质中,后者包括使得能够实现本发明所描述的方法的所有特征,并且其在被加载到计算机系统中时能够执行这些方法。本上下文中的计算机程序意味着任何语言、代码或符号的任何表达的指令集意在使具有信息处理能力的系统直接执行或者在以下任一者或两者之后执行特定功能:a)转换成另一种语言、代码或符号;b)以不同物质形式再现。
本发明可以其它形式来体现而不背离其精神或实质属性。相应地,应引用所附权利要求而非先前的描述来作为本发明的范围。
Claims (12)
1.一种将通过数据通信网络传送的数据分组分类的计算机实现方法,所述方法包括:
提供由多个过滤器定义的存储器可存储的分组分类器,每个过滤器唯一地对应于在通过所述数据通信网络传送所述数据分组时要采取的多个动作之一;以及
通过生成服从用于减少对其中存储所述分组分类器的存储器的访问的预定约束的至少一个超节点trie来根据所述分组分类器规则将数据分组分类。
2.如权利要求1所述的方法,其特征在于,所述生成步骤包括生成1维节点、空间最优超节点,其中所述预定义约束使所述存储器访问最小化。
3.如权利要求1所述的方法,其特征在于,所述生成步骤包括生成多维节点、空间最优超节点,其中所述预定义约束使所述存储器访问最小化。
4.如权利要求1所述的方法,其特征在于,所述超节点和预定义约束可被配置成使用于存储所述至少一个分类器规则的存储器的量最小化。
5.一种包括用于将通过数据通信网络传送的数据分组分类的硬件和软件模块的组合的系统,所述系统包括:
存储器,用于存储由多个过滤器定义的至少一个分组分类器规则,每个过滤器唯一地对应于在通过所述数据通信网络传送所述数据分组时要采取的多个动作之一;以及
处理器,配置成访问所述存储器中的所述分组分类器规则以及基于所述分组分类器规则将所述数据分组分类,所述数据分组是通过所述处理器生成服从用于减少对所述存储器的访问的预定约束的至少一个超节点trie来分类的。
6.如权利要求5所述的系统,其特征在于,所述分类器规则包括1维节点、空间最优超节点,并且其中所述预定义约束使得所述处理器在将所述数据分组分类时所执行的存储器访问最小化。
7.如权利要求5所述的系统,其特征在于,所述分类器规则包括多维节点、空间最优超节点,并且其中所述预定义约束使得所述处理器在将所述数据分组分类时所执行的存储器访问最小化。
8.如权利要求5所述的系统,其特征在于,所述处理器被配置成生成使所述存储器内的所述至少一个分类器规则的存储最小化的预定义约束相对应的超节点。
9.一种用于存储计算机程序的计算机可读存储介质,所述计算机程序包括用于以下动作的计算机实现指令:
访问由多个过滤器定义的存储器可存储的分组分类器规则,每个过滤器唯一地对应于在通过数据通信网络传送所述数据分组时要采取的多个动作之一;以及
通过生成服从用于减少对其中存储所述分组分类器的存储器的访问的预定约束的至少一个超节点trie来根据所述分组分类器规则将数据分组分类。
10.如权利要求9所述的计算机可读存储介质,其特征在于,所述生成步骤包括生成1维节点、空间最优超节点,其中所述预定义约束使所述存储器访问最小化。
11.如权利要求9所述的计算机可读存储介质,其特征在于,所述生成步骤包括生成多维节点、空间最优超节点,其中所述预定义约束使所述存储器访问最小化。
12.如权利要求9所述的计算机可读存储介质,其特征在于,所述超节点和预定义约束被配置成使用于存储所述至少一个分类器规则的存储器的量最小化。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US82122006P | 2006-08-02 | 2006-08-02 | |
US60/821,220 | 2006-08-02 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101554021A true CN101554021A (zh) | 2009-10-07 |
Family
ID=38961257
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2007800284904A Pending CN101554021A (zh) | 2006-08-02 | 2007-08-02 | 静态分组分类器的简明表示 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7948980B2 (zh) |
EP (1) | EP2074767A2 (zh) |
CN (1) | CN101554021A (zh) |
WO (1) | WO2008017045A2 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107835175A (zh) * | 2017-11-09 | 2018-03-23 | 深圳市云盾科技有限公司 | 采用平衡二叉树算法的网络连接跟踪方法 |
CN113515495A (zh) * | 2021-04-14 | 2021-10-19 | 暨南大学 | 数据文件分配方法及装置、智能设备和计算机存储介质 |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100205135A1 (en) * | 2008-03-07 | 2010-08-12 | Barracuda Inc. | Determining best match among a plurality of pattern rules using wildcards with a text string |
JP5711237B2 (ja) * | 2009-09-15 | 2015-04-30 | ナパテック アクティーゼルスカブ | データパケットを分析するための装置、データパケット処理システム、及び処理方法 |
US8990526B2 (en) * | 2010-10-06 | 2015-03-24 | Quantum Corporation | Merging data volumes and derivative versions of the data volumes |
US9361578B2 (en) * | 2011-07-13 | 2016-06-07 | Palo Alto Research Center Incorporated | Memory efficient state-set representation for planning |
WO2013020002A1 (en) | 2011-08-02 | 2013-02-07 | Cavium, Inc. | Incremental update of rules for packet classification |
US9208438B2 (en) | 2011-08-02 | 2015-12-08 | Cavium, Inc. | Duplication in decision trees |
US9183244B2 (en) | 2011-08-02 | 2015-11-10 | Cavium, Inc. | Rule modification in decision trees |
US10229139B2 (en) | 2011-08-02 | 2019-03-12 | Cavium, Llc | Incremental update heuristics |
EP2813036A4 (en) * | 2012-02-07 | 2015-10-07 | Oricane Ab | CLASSIFICATION ENGINE FOR CLASSIFICATION OF DATA PACKETS |
US10021026B2 (en) * | 2013-01-31 | 2018-07-10 | Hewlett Packard Enterprise Development Lp | Incremental update of a shape graph |
US10083200B2 (en) * | 2013-03-14 | 2018-09-25 | Cavium, Inc. | Batch incremental update |
US9195939B1 (en) | 2013-03-15 | 2015-11-24 | Cavium, Inc. | Scope in decision trees |
US9430511B2 (en) | 2013-03-15 | 2016-08-30 | Cavium, Inc. | Merging independent writes, separating dependent and independent writes, and error roll back |
US9595003B1 (en) | 2013-03-15 | 2017-03-14 | Cavium, Inc. | Compiler with mask nodes |
US9544402B2 (en) | 2013-12-31 | 2017-01-10 | Cavium, Inc. | Multi-rule approach to encoding a group of rules |
US9275336B2 (en) | 2013-12-31 | 2016-03-01 | Cavium, Inc. | Method and system for skipping over group(s) of rules based on skip group rule |
US9667446B2 (en) | 2014-01-08 | 2017-05-30 | Cavium, Inc. | Condition code approach for comparing rule and packet data that are provided in portions |
US11023594B2 (en) * | 2017-05-22 | 2021-06-01 | Georgetown University | Locally private determination of heavy hitters |
US11240143B2 (en) * | 2019-05-02 | 2022-02-01 | Fungible, Inc. | Embedded network packet data for use of alternative paths within a group of network devices |
US11392569B2 (en) * | 2020-03-19 | 2022-07-19 | Alibaba Group Holding Limited | Tree partitioning of the succinct trie |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5995971A (en) * | 1997-09-18 | 1999-11-30 | Micdrosoft Corporation | Apparatus and accompanying methods, using a trie-indexed hierarchy forest, for storing wildcard-based patterns and, given an input key, retrieving, from the forest, a stored pattern that is identical to or more general than the key |
US6041053A (en) * | 1997-09-18 | 2000-03-21 | Microsfot Corporation | Technique for efficiently classifying packets using a trie-indexed hierarchy forest that accommodates wildcards |
US6341130B1 (en) * | 1998-02-09 | 2002-01-22 | Lucent Technologies, Inc. | Packet classification method and apparatus employing two fields |
US6975631B1 (en) * | 1998-06-19 | 2005-12-13 | Juniper Networks, Inc. | Network packet forwarding lookup with a reduced number of memory accesses |
FI982095A (fi) * | 1998-09-29 | 2000-03-30 | Nokia Networks Oy | Menetelmä muistin toteuttamiseksi ja muistijärjestely |
FR2789778B1 (fr) * | 1999-02-12 | 2001-09-14 | France Telecom | Procede pour associer des references d'acheminement a des paquets de donnees au moyen d'une memoire trie, et routeur de paquets appliquant ce procede |
US6765909B1 (en) | 1999-04-22 | 2004-07-20 | Nortel Networks Limited | Method and apparatus for providing support for multiple QoS levels within a third generation packet data session |
US6633860B1 (en) * | 1999-04-22 | 2003-10-14 | Ramot At Tel Aviv University Ltd. | Method for fast multi-dimensional packet classification |
GB9912129D0 (en) * | 1999-05-26 | 1999-07-28 | 3Com Corp | Communication device with forwarding database having having a trie search facility |
US6587466B1 (en) * | 1999-05-27 | 2003-07-01 | International Business Machines Corporation | Search tree for policy based packet classification in communication networks |
FI991261A (fi) * | 1999-06-02 | 2000-12-03 | Nokia Networks Oy | Trie-rakenteeseen perustuva funktionaalinen muisti |
US6850513B1 (en) * | 1999-12-30 | 2005-02-01 | Intel Corporation | Table-based packet classification |
EP1128608B1 (en) | 2000-01-27 | 2006-03-01 | International Business Machines Corporation | Method and means for classifying data packets |
TW498650B (en) * | 2000-03-22 | 2002-08-11 | Ind Tech Res Inst | Flexible and highly efficient packet classification method |
US6970462B1 (en) * | 2000-04-24 | 2005-11-29 | Cisco Technology, Inc. | Method for high speed packet classification |
US6925085B1 (en) * | 2000-06-07 | 2005-08-02 | Advanced Micro Devices, Inc. | Packet classification using hash key signatures generated from interrupted hash function |
US6697363B1 (en) * | 2000-06-28 | 2004-02-24 | Alcatel Canada Inc. | Method and apparatus for longest matching prefix determination in a communication network |
US7002965B1 (en) * | 2001-05-21 | 2006-02-21 | Cisco Technology, Inc. | Method and apparatus for using ternary and binary content-addressable memory stages to classify packets |
US6985483B2 (en) * | 2001-07-31 | 2006-01-10 | North Carolina State University | Methods and systems for fast packet forwarding |
US7054315B2 (en) * | 2001-09-17 | 2006-05-30 | Pmc-Sierra Ltd. | Efficiency masked matching |
US7007101B1 (en) * | 2001-11-09 | 2006-02-28 | Radisys Microware Communications Software Division, Inc. | Routing and forwarding table management for network processor architectures |
US6996225B1 (en) * | 2002-01-31 | 2006-02-07 | Cisco Technology, Inc. | Arrangement for controlling congestion in an SS7 signaling node based on packet classification |
US6691171B1 (en) | 2002-02-01 | 2004-02-10 | Micrel, Inc. | Method and system for address lookup in data communication |
US6694323B2 (en) * | 2002-04-25 | 2004-02-17 | Sybase, Inc. | System and methodology for providing compact B-Tree |
US7408932B2 (en) * | 2003-10-20 | 2008-08-05 | Intel Corporation | Method and apparatus for two-stage packet classification using most specific filter matching and transport level sharing |
US7633886B2 (en) * | 2003-12-31 | 2009-12-15 | University Of Florida Research Foundation, Inc. | System and methods for packet filtering |
US7480302B2 (en) * | 2004-05-11 | 2009-01-20 | Samsung Electronics Co., Ltd. | Packet classification method through hierarchical rulebase partitioning |
-
2007
- 2007-08-02 US US12/375,623 patent/US7948980B2/en not_active Expired - Fee Related
- 2007-08-02 WO PCT/US2007/075107 patent/WO2008017045A2/en active Application Filing
- 2007-08-02 EP EP07840670A patent/EP2074767A2/en not_active Withdrawn
- 2007-08-02 CN CNA2007800284904A patent/CN101554021A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107835175A (zh) * | 2017-11-09 | 2018-03-23 | 深圳市云盾科技有限公司 | 采用平衡二叉树算法的网络连接跟踪方法 |
CN107835175B (zh) * | 2017-11-09 | 2020-09-22 | 深圳市云盾科技有限公司 | 采用平衡二叉树算法的网络连接跟踪方法 |
CN113515495A (zh) * | 2021-04-14 | 2021-10-19 | 暨南大学 | 数据文件分配方法及装置、智能设备和计算机存储介质 |
CN113515495B (zh) * | 2021-04-14 | 2024-03-19 | 暨南大学 | 数据文件分配方法及装置、智能设备和计算机存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20100034202A1 (en) | 2010-02-11 |
WO2008017045A9 (en) | 2009-03-12 |
WO2008017045A2 (en) | 2008-02-07 |
EP2074767A2 (en) | 2009-07-01 |
US7948980B2 (en) | 2011-05-24 |
WO2008017045A3 (en) | 2009-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101554021A (zh) | 静态分组分类器的简明表示 | |
CN104718731B (zh) | 三重内容可寻址内存协助的包分类的方法、装置以及网络路由器 | |
US7990979B2 (en) | Recursively partitioned static IP router tables | |
US7509300B2 (en) | Dynamic IP router tables using highest-priority matching | |
Cheung et al. | Optimal routing table design for IP address lookups under memory constraints | |
KR100441317B1 (ko) | 데이터 패킷 분류 방법 및 장치 | |
CN101388030A (zh) | 数据库和数据库处理方法 | |
Chepoi et al. | Additive spanners and distance and routing labeling schemes for hyperbolic graphs | |
CN104579941A (zh) | 一种OpenFlow交换机中的报文分类方法 | |
CN100413285C (zh) | 基于网络处理器的高速多维报文分类算法的设计和实现 | |
CN100385880C (zh) | 分组分类装置和使用字段级特里结构的方法 | |
Rastogi et al. | Optimal configuration of OSPF aggregates | |
US7162481B2 (en) | Method for increasing storage capacity in a multi-bit trie-based hardware storage engine by compressing the representation of single-length prefixes | |
CN106416158B (zh) | 用于大规模数据中心网络的业务工程 | |
CN102405623A (zh) | 路由表项的存储方法和装置 | |
Meiners et al. | Hardware based packet classification for high speed internet routers | |
Kosowski et al. | k-chordal graphs: From cops and robber to compact routing via treewidth | |
CN113535732B (zh) | 面向信誉-行为关联双区块链的可验证查询优化方法 | |
Hsieh et al. | Multiprefix trie: A new data structure for designing dynamic router-tables | |
Konjevod et al. | Optimal scale-free compact routing schemes in doubling networks | |
Lu et al. | Succinct representation of static packet classifiers | |
Lu | Improved compact routing tables for planar networks via orderly spanning trees | |
Erdem | Pipelined hierarchical architecture for high performance packet classification | |
CN103294735A (zh) | 基于tcam的确定性有穷状态自动机dfa的匹配方法和装置 | |
Kumar et al. | Design and Analysis of Algorithms |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20091007 |