CN102195853B - 一种保存位图的方法和装置 - Google Patents

一种保存位图的方法和装置 Download PDF

Info

Publication number
CN102195853B
CN102195853B CN2010101221145A CN201010122114A CN102195853B CN 102195853 B CN102195853 B CN 102195853B CN 2010101221145 A CN2010101221145 A CN 2010101221145A CN 201010122114 A CN201010122114 A CN 201010122114A CN 102195853 B CN102195853 B CN 102195853B
Authority
CN
China
Prior art keywords
address
trie tree
tree node
length
level
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.)
Expired - Fee Related
Application number
CN2010101221145A
Other languages
English (en)
Other versions
CN102195853A (zh
Inventor
罗彬�
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
New H3C Semiconductor Technology Co Ltd
Original Assignee
Hangzhou H3C Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hangzhou H3C Technologies Co Ltd filed Critical Hangzhou H3C Technologies Co Ltd
Priority to CN2010101221145A priority Critical patent/CN102195853B/zh
Publication of CN102195853A publication Critical patent/CN102195853A/zh
Application granted granted Critical
Publication of CN102195853B publication Critical patent/CN102195853B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明提出一种保存位图的方法和设备,其中方法包括:设置字典树(Trie树)节点对应的关键码长度;将位图对应规则中IP地址的掩码长度与所述关键码长度进行比较,根据比较结果将IP地址放入各级Trie树节点对应的队列;按照关键码长度由小到大的顺序,依次提取所述Trie树节点对应的各个队列中的IP地址,创建Trie树并进行哈希(Hash)计算,将Hash值与位图的存储地址之间建立对应关系。本发明能够降低保存位图过程中的设备开销。

Description

一种保存位图的方法和装置
技术领域
本发明涉及ACL位图算法技术领域,特别涉及一种保存位图的方法和装置。
背景技术
访问控制列表(ACL,Access Control List)是一种流识别技术。网络设备为了过滤报文,需要配置一系列的ACL对报文进行分类。ACL包括一系列的匹配规则,其中匹配规则包括多个关键字。当收到报文后,网络设备按照ACL匹配规则优先级由高到低的顺序,依次对报文进行匹配,当匹配成功后,根据预先设定的策略对报文进行处理。
为了实现报文的快速匹配,出现了一种ACL位图算法。其主要思想是,预先在网络设备中保存位图对应规则中所有关键字分别与业务类型所对应的ACL进行匹配的匹配结果,将该匹配结果称为位图;后续收到报文时,根据该报文关键字的实际取值及业务类型,查找对应的位图,最终得到与该报文匹配成功的ACL规则。
例如,在网络设备中配置针对策略路由(PBR)业务的ACL,如表1所示:
 规则标识(ruleid)   源IP(sip)   目的IP(dip)  源端口(sport)   目的端口(dport)   协议  服务条款(TOS)   结果(Result)
 0   1.1.0.0/16   any  any   2000-3000   6  any   outif serial2/0
 1   1.1.0.0/24   any  any   any   any  10   set    prioutif s 2/1
 2   1.1.16.0/20   any  5000   any   any  any   nexthop
  2.1.1.1
  3   any   any   any   any   any   any   deny
                    表1
在网络设备中配置针对网络地址翻译(NAT)业务的ACL,如表2所示:
 规则标识(ruleid)   源IP(sip)   目的IP(dip)  源端口(sport)   目的端口(dport)   协议  服务条款(TOS)   结果(Result)
 0   2.1.0.0/16   any  any   80   6  any   pool id 1
 1   1.1.0.0/16   any  any   80   17  any   pool id 1
 2   any   any  any   any   any  any   deny
                                   表2
那么,以源IP为例,对于PBR业务,取值为1.1.0.0/16的源IP对应的位图为1001;而对于NAT业务,取值为1.1.0.0/16的源IP对应的位图为011。
目前,保存位图的方法为:首先,为位图对应规则中关键字的可能取值配置关键标识(KID,Key Identifier),为业务类型配置组标识(GID,GroupIdentifier);之后,将该关键字可能取值对应的KID与所属业务类型对应的GID进行组合,并对该组合进行Hash计算,将计算的到的Hash值与所述关键字与业务类型的组合所对应位图的存储地址之间建立对应关系。如图1为现有技术中保存位图的方法逻辑示意图。假设关键字为源IP地址,为取值1.1.0.0/16分配对应的KID=00;业务类型有PBR和NAT,为PBR分配对应的GID=10,为NAT分配对应的GID=11;当关键字取值为1.1.0.0/16、并且业务类型为PBR时,依据前面表一可知,其对应的位图为1001(满足规则为1,不满足规则为0);当关键字取值为1.1.0.0/16、并且业务类型为NAT时,依据前面表二可知,其对应的位图为011。那么,保存位图的方式为:第一步,计算Hash(00+10),将计算得到的Hash值与对应位图1001的存储地址之间建立对应关系;计算Hash(00+11),将计算得到的Hash值与对应位图011的存储地址之间建立对应关系。第二步,将位图保存在对应存储地址指示的位置。
当关键字为IP地址时,上述保存位图的方法有两种具体方式。
第一种:分为两个阶段:第一阶段,为各个IP地址分配对应的KID,将KID采用字典树(Trie树)中的Trie树节点进行保存。第二阶段,遍历Trie树,对Trie树节点保存的KID及所属业务的GID的组合进行Hash计算,从而得到Hash表,Hash表的各个Hash值对应相应位图的存储地址;在第二阶段中,为了避免由于最长匹配原则引起的匹配错误,Trie树中的子节点还需要继承各级父节点所属业务的GID,并对本节点保存的KID及父节点所属业务的GID的组合进行Hash计算,将计算得到的Hash值对应父节点位图的存储地址。可见,对于子节点,需要依据所有父节点计算出Hash值,用于对应本节点位图的存储地址及父节点位图的存储地址。
这种方式的缺点是:由于第二阶段需要遍历Trie树,而遍历Trie树的开销较大,时间复杂度较高,这就导致整个保存位图的过程开销较大。
第二种:将上述方式的两个阶段穿插进行,即,在创建Trie树的同时进行Hash计算。具体来说,当为一个IP地址分配相应的Trie树节点后,采用该Trie树节点保存对应的KID;之后,将该KID及所属业务的GID的组合进行Hash计算,从而得到Hash表,Hash表的各个Hash值对应相应位图的存储地址。针对每个IP地址均进行上述相同的处理。
这种方式仍然不能完全避免对Trie树的遍历,其原因是:由于IP地址的随机性,导致Trie树创建过程随机,这就使得创建一个新的Trie树节点时,该Trie树节点的子节点个数、位置均无法确定;然而,由于Trie树中的子节点需要继承各级父节点所属业务的GID,这就要求创建一个新的Trie树节点之后,遍历该Trie树节点的子Trie树,找到所有不为空的Trie树节点,使这些不为空的Trie树节点继承新创建的Trie树节点所属业务的GID。
可见,现有的保存位图的方法均需要对Trie树进行遍历,导致保存位图的过程开销较大。
发明内容
本发明提出一种保存位图的方法,能够降低保存位图过程中的设备开销。
本发明还提出一种保存位图的装置,能够减低保存位图过程中的设备开销。
本发明还提出一种路由器和交换机,能够减低保存位图过程中的设备开销。
本发明的技术方案是这样实现的:
一种保存位图的方法,所述方法用于当关键字为IP地址时,对IP地址与业务类型的组合所对应的位图进行保存;所述方法包括:
设置各级字典树Trie树节点对应的关键码长度;
将位图对应规则中IP地址的掩码长度与所述关键码长度进行比较,根据比较结果将IP地址放入各级Trie树节点对应的队列;
按照关键码长度由小到大的顺序,依次提取所述Trie树节点对应的各个队列中的IP地址,为该IP地址配置对应的关键标识,创建相应的Trie树节点并保存该关键标识;为该IP地址所属的业务类型配置对应的组标识,对所述关键标识和组标识的组合进行哈希Hash计算,将计算得到的Hash值与所述IP地址与业务类型的组合所对应位图的存储地址之间建立对应关系;当所述Trie树节点有父节点时,对所述关键标识和父节点对应的业务类型组标识的组合进行Hash计算,将计算得到的Hash值与所述父节点位图的存储地址之间建立对应关系。
一种保存位图的装置,包括:
设置模块,用于设置各级Trie树节点对应的关键码长度;
分类模块,用于将位图对应规则中IP地址的掩码长度与所述关键码长度进行比较,根据比较结果将IP地址放入各级Trie树节点对应的队列;
保存模块,用于按照关键码长度由小到大的顺序,依次提取所述Trie树节点对应的各个队列中的IP地址,为该IP地址配置对应的关键标识,创建相应的Trie树节点并保存该关键标识;为该IP地址所属的业务类型配置对应的组标识,对所述关键标识和组标识的组合进行Hash计算,将计算得到的Hash值与所述IP地址与业务类型的组合所对应位图的存储地址之间建立对应关系;当所述Trie树节点有父节点时,对所述关键标识和父节点对应的业务类型组标识的组合进行Hash计算,将计算得到的Hash值与所述父节点位图的存储地址之间建立对应关系。
一种路由器,该路由器包括上述保存位图的装置。
一种交换机,该路由器包括上述保存位图的装置。
综上可见,本发明提出的保存位图的方法和设备,在创建Trie树之前,首先按照IP地址的掩码长度对IP地址进行分类,将分类后的IP地址分别放入各级Trie树节点对应的队列中;之后逐级创建Trie树节点,用于保存为对应IP地址配置的关键标识,同时,对IP地址关键标识和所属业务组标识的组合进行Hash计算,将计算得到的Hash值与相应位图的存储地址之间建立对应关系;并对IP地址关键标识父节点所属业务组标识的组合进行Hash计算,将计算得到的Hash值与父节点位图的存储地址之间建立对应关系。可见,本发明提出的方法和设备不需要在保存位图的过程中对Trie树进行遍历,因而能够降低设备开销。
附图说明
图1为现有技术中保存位图的方法逻辑示意图;
图2为本发明提出的保存位图的方法流程图;
图3为本发明实施例第一步对IP地址进行分类保存的示意图;
图4为本发明实施例第二步至第五步创建的Trie树结构示意图;
图5为本发明实施例保存位图的装置结构示意图。
具体实施方式
为使本发明的目的、技术手段和优点更为清楚明白,以下结合附图对本发明进一步详细描述。
本发明提出一种保存位图的方法,用于当位图对应规则中的关键字为IP地址时,对IP地址的可能取值与业务类型的组合所对应的位图进行保存;参见图2,图2为本发明提出的保存位图的方法流程图,该方法包括:
步骤201:设置各级Trie树节点对应的关键码长度;
步骤202:将位图对应规则中IP地址的掩码长度与所述关键码长度进行比较,根据比较结果将IP地址放入各级Trie树节点对应的队列;
步骤203:按照关键码长度由小到大的顺序,依次提取所述Trie树节点对应的各个队列中的IP地址,为该IP地址配置对应的关键标识,创建相应的Trie树节点并保存该关键标识;为该IP地址所属的业务类型配置对应的组标识,对所述关键标识和组标识的组合进行Hash计算,将计算得到的Hash值与所述IP地址与业务类型的组合所对应位图的存储地址之间建立对应关系;当所述Trie树节点有父节点时,对所述关键标识和父节点对应的业务类型组标识的组合进行Hash计算,将计算得到的Hash值与所述父节点位图的存储地址之间建立对应关系。
上述步骤201中,各级关键码长度逐级增大,并且最高级别的关键码长度等于IP地址长度(即32位)。
上述步骤201中,Trie树包括N级节点,其中N为大于2的自然数;
上述步骤202具体包括:
当IP地址的掩码长度不大于一级Trie树节点的关键码长度时,将该IP地址放入一级Trie树节点对应的队列;
当IP地址的掩码长度大于n级Trie树节点的关键码长度、并且不大于n+1级Trie树节点的关键码长度时,将该IP地址放入n+1级Trie树节点对应的队列;其中,n为大于0且小于N的自然数。
以下以Trie树包括4级节点,且各级节点对应的关键码长度分别为16、24、28、32为例,举具体的实施例进行详细介绍。具体过程包括:
第一步:
按照IP地址的掩码长度,对IP地址进行分类,分别放入各级Trie树节点对应的队列。
具体分类方式为:
当掩码长度≤16时,将IP地址放入一级Trie树节点对应的队列(以下简称一级队列);
当16<掩码长度≤24时,将IP地址放入二级Trie树节点对应的队列(以下简称二级队列);
当24<掩码长度≤28时,将IP地址放入三级Trie树节点对应的队列(以下简称三级队列);
当28<掩码长度≤32时,将IP地址放入四级Trie树节点对应的队列(以下简称四级队列);
如图3为本发明实施例第一步对IP地址进行分类保存的示意图。
第二步:
依次提取一级队列中的各个IP地址,为该IP地址配置对应的KID,创建相应的Trie树节点并保存该KID。由于一级队列中IP地址的掩码均小于一级Trie树节点对应的关键码长度,因此,本步骤中创建的Trie树节点均为一级Trie树节点。
如图4为本发明实施例创建的Trie树结构示意图。其中,第一行示出了本步骤创建的3个一级Trie树节点,分别用于保存一级队列中的IP00、IP01、IP02所对应的KID,即kid00、kid01、kid02。
创建保存kid00的Trie树节点后,将IP00所属业务的GID配置为gid00,计算Hash(kid00+gid00),将计算得到的Hash值与相应位图的存储地址之间建立对应关系。
创建保存kid01的Trie树节点后,将IP01所属业务的GID配置为gid01,计算Hash(kid01+gid01),将计算得到的Hash值与相应位图的存储地址之间建立对应关系。
创建保存kid02的Trie树节点后,将IP02所属业务的GID配置为gid02,计算Hash(kid02+gid02),将计算得到的Hash值与相应位图的存储地址之间建立对应关系。
第三步:
依次提取二级队列中的各个IP地址,为该IP地址配置对应的KID,创建相应的Trie树节点并保存该KID。由于二级队列中IP地址的掩码均小于二级Trie树节点对应的关键码长度,因此,本步骤中创建的Trie树节点均为二级Trie树节点,并且在创建二级Trie树节点时,该Trie树中尚不存在低于二级的节点(例如,三级Trie树节点、四级Trie树节点等)。
图4的第二行示出了本步骤创建的2个二级Trie树节点,分别用于保存二级队列中的IP10、IP11所对应的KID,即kid10、kid11。在本步骤中,创建的2个Trie树节点为上述kid00对应节点的子节点。
创建保存kid10的Trie树节点后,将IP10所属业务的GID配置为gid10,计算Hash(kid10+gid10),将计算得到的Hash值与相应位图的存储地址之间建立对应关系;
另外,该Trie树节点继承其父节点的GID,即gid00,计算Hash(kid10+gid00),将计算得到的Hash值与该父节点相应位图的存储地址之间建立对应关系。
创建保存kid11的Trie树节点后,将IP11所属业务的GID配置为gid11,计算Hash(kid11+gid11),将计算得到的Hash值与相应位图的存储地址之间建立对应关系;
另外,该Trie树节点继承其父节点的GID,即gid00,计算Hash(kid11+gid00),将计算得到的Hash值与该父节点相应位图的存储地址之间建立对应关系。
第四步:
依次提取三级队列中的各个IP地址,为该IP地址配置对应的KID,创建相应的Trie树节点并保存该KID。由于三级队列中IP地址的掩码均小于三级Trie树节点对应的关键码长度,因此,本步骤中创建的Trie树节点均为三级Trie树节点,并且在创建三级Trie树节点时,该Trie树中尚不存在低于三级的节点。
图4的第三行示出了本步骤创建的2个三级Trie树节点,分别用于保存三级队列中的IP20、IP21所对应的KID,即kid20、kid21。在本步骤中,创建的2个Trie树节点为上述kid10对应节点的子节点。
创建保存kid20的Trie树节点后,将IP20所属业务的GID配置为gid20,计算Hash(kid20+gid20),将计算得到的Hash值与相应位图的存储地址之间建立对应关系;
另外,该Trie树节点继承其一级父节点的GID,即gid00,计算Hash(kid20+gid00),将计算得到的Hash值与该父节点相应位图的存储地址之间建立对应关系;
并且,该Trie树节点继承其二级父节点的GID,即gid10,计算Hash(kid20+gid10),将计算得到的Hash值与该父节点相应位图的存储地址之间建立对应关系。
创建保存kid21的Trie树节点后,将IP21所属业务的GID配置为gid21,计算Hash(kid21+gid21),将计算得到的Hash值与相应位图的存储地址之间建立对应关系;
另外,该Trie树节点继承其一级父节点的GID,即gid00,计算Hash(kid21+gid00),将计算得到的Hash值与该父节点相应位图的存储地址之间建立对应关系;
并且,该Trie树节点继承其二级父节点的GID,即gid10,计算Hash(kid21+gid10),将计算得到的Hash值与该父节点相应位图的存储地址之间建立对应关系。
第五步:
依次提取四级队列中的各个IP地址,为该IP地址配置对应的KID,创建相应的Trie树节点并保存该KID。由于四级队列中IP地址的掩码均小于四级Trie树节点对应的关键码长度,因此,本步骤中创建的Trie树节点均为四级Trie树节点。
图4的第四行示出了本步骤创建的2个四级Trie树节点,分别用于保存四级队列中的IP30、IP31所对应的KID,即kid30、kid31。在本步骤中,创建的2个Trie树节点为上述kid20对应节点的子节点。
创建保存kid30的Trie树节点后,将IP30所属业务的GID配置为gid30,计算Hash(kid30+gid30),将计算得到的Hash值与相应位图的存储地址之间建立对应关系;
另外,该Trie树节点继承其一级父节点的GID,即gid00,计算Hash(kid30+gid00),将计算得到的Hash值与该父节点相应位图的存储地址之间建立对应关系;
并且,该Trie树节点继承其二级父节点的GID,即gid10,计算Hash(kid30+gid10),将计算得到的Hash值与该父节点相应位图的存储地址之间建立对应关系;
并且,该Trie树节点继承其三级父节点的GID,即gid20,计算Hash(kid30+gid20),将计算得到的Hash值与该父节点相应位图的存储地址之间建立对应关系。
创建保存kid31的Trie树节点后,将IP31所属业务的GID配置为gid31,计算Hash(kid31+gid31),将计算得到的Hash值与相应位图的存储地址之间建立对应关系;
另外,该Trie树节点继承其一级父节点的GID,即gid00,计算Hash(kid31+gid00),将计算得到的Hash值与该父节点相应位图的存储地址之间建立对应关系;
并且,该Trie树节点继承其二级父节点的GID,即gid10,计算Hash(kid31+gid10),将计算得到的Hash值与该父节点相应位图的存储地址之间建立对应关系;
并且,该Trie树节点继承其三级父节点的GID,即gid20,计算Hash(kid31+gid20),将计算得到的Hash值与该父节点相应位图的存储地址之间建立对应关系。
上述实施例中,是以IP10、IP11、IP20、IP21、IP30和IP31对应的Trie树节点均为IP00对应Trie树节点的子节点为例进行说明的,容易想到的是,对于其他Trie树节点的子节点,也可以采用同样的方式创建Trie树节点并进行Hash计算,将计算得到的Hash值与位图的存储地址之间建立对应关系,将位图存入对应存储地址所指示的位置。
本发明还提出一种保存位图的装置,如图5为本发明实施例保存位图的装置结构示意图。该装置包括:
设置模块501,用于设置各级Trie树节点对应的关键码长度;
分类模块502,用于将位图对应规则中IP地址的掩码长度与所述关键码长度进行比较,根据比较结果将IP地址放入各级Trie树节点对应的队列;
保存模块503,用于按照关键码长度由小到大的顺序,依次提取所述Trie树节点对应的各个队列中的IP地址,为该IP地址配置对应的关键标识,创建相应的Trie树节点并保存该关键标识;为该IP地址所属的业务类型配置对应的组标识,对所述关键标识和组标识的组合进行Hash计算,将计算得到的Hash值与所述IP地址与业务类型的组合所对应位图的存储地址之间建立对应关系;当所述Trie树节点有父节点时,对所述关键标识和父节点对应的业务类型组标识的组合进行Hash计算,将计算得到的Hash值与所述父节点位图的存储地址之间建立对应关系。
在上述设备中,当Trie树包括N级节点,并且N为大于2的自然数时,
分类模块502可以用于,当IP地址的掩码长度不大于一级Trie树节点的关键码长度时,将该IP地址放入一级Trie树节点对应的队列;
当IP地址的掩码长度大于n级Trie树节点的关键码长度、并且不大于n+1级Trie树节点的关键码长度时,将该IP地址放入n+1级Trie树节点对应的队列;其中,所述n为大于0且小于N的自然数。
在上述装置中,当Trie树包括四级节点时,
分类模块502可以用于,当IP地址的掩码长度不大于一级Trie树节点的关键码长度时,将该IP地址放入一级Trie树节点对应的队列;
当IP地址的掩码长度大于一级Trie树节点的关键码长度、并且不大于二级Trie树节点的关键码长度时,将该IP地址放入二级Trie树节点对应的队列;
当IP地址的掩码长度大于二级Trie树节点的关键码长度、并且不大于三级Trie树节点的关键码长度时,将该IP地址放入三级Trie树节点对应的队列;
当IP地址的掩码长度大于三级Trie树节点的关键码长度、并且不大于四级Trie树节点的关键码长度时,将该IP地址放入四级Trie树节点对应的队列。
本发明还提出一种路由器,该路由器可以包括上述保存位图的装置。
本发明还提出一种交换机,该交换机可以包括上述保存位图的装置。
综上可见,本发明提出的保存位图的方法和装置适用于对IP地址与业务类型的组合所对应的位图进行保存,在创建Trie树之前,首先按照IP地址的掩码长度对IP地址进行分类,将分类后的IP地址分别放入各级Trie树节点对应的队列中;之后逐级创建Trie树节点,保存IP地址的关键标识,同时对IP地址关键标识和所属业务组标识的组合进行Hash计算,将计算得到的Hash值与相应位图的存储地址之间建立对应关系;并对IP地址关键标识父节点所属业务组标识的组合进行Hash计算,将计算得到的Hash值与相应父节点位图的存储地址之间建立对应关系。之后,就可以将相应位图存入存储地址所指示的位置。可见,本发明提出的方法和设备避免了保存位图过程中对Trie树的遍历,因而能够降低设备开销。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

Claims (8)

1.一种保存位图的方法,其特征在于,所述方法用于当关键字为IP地址时,对位图对应规则中的IP地址与业务类型的组合所对应的位图进行保存;所述方法包括:
设置各级字典树Trie树节点对应的关键码长度;
将位图对应规则中IP地址的掩码长度与所述关键码长度进行比较,根据比较结果将IP地址放入各级Trie树节点对应的队列;
按照关键码长度由小到大的顺序,依次提取所述Trie树节点对应的各个队列中的IP地址,为该IP地址配置对应的关键标识,创建相应的Trie树节点并保存该关键标识;为该IP地址所属的业务类型配置对应的组标识,对所述关键标识和组标识的组合进行哈希Hash计算,将计算得到的Hash值与所述IP地址与业务类型的组合所对应位图的存储地址之间建立对应关系;当所述Trie树节点有父节点时,对所述关键标识和父节点对应的业务类型组标识的组合进行Hash计算,将计算得到的Hash值与所述父节点位图的存储地址之间建立对应关系。
2.根据权利要求1所述的方法,其特征在于,所述Trie树包括N级节点,所述N为大于2的自然数;
所述将位图对应规则中IP地址的掩码长度与关键码长度进行比较并根据比较结果将IP地址放入各级Trie树节点对应的队列为:
当IP地址的掩码长度不大于一级Trie树节点的关键码长度时,将该IP地址放入一级Trie树节点对应的队列;
当IP地址的掩码长度大于n级Trie树节点的关键码长度、并且不大于n+1级Trie树节点的关键码长度时,将该IP地址放入n+1级Trie树节点对应的队列;其中,所述n为大于0且小于N的自然数。
3.根据权利要求2所述的方法,其特征在于,所述Trie树包括四级节点;
所述将位图对应规则中IP地址的掩码长度与关键码长度进行比较并根据比较结果将IP地址放入各级Trie树节点对应的队列为:
当IP地址的掩码长度不大于一级Trie树节点的关键码长度时,将该IP地址放入一级Trie树节点对应的队列;
当IP地址的掩码长度大于一级Trie树节点的关键码长度、并且不大于二级Trie树节点的关键码长度时,将该IP地址放入二级Trie树节点对应的队列;
当IP地址的掩码长度大于二级Trie树节点的关键码长度、并且不大于三级Trie树节点的关键码长度时,将该IP地址放入三级Trie树节点对应的队列;
当IP地址的掩码长度大于三级Trie树节点的关键码长度、并且不大于四级Trie树节点的关键码长度时,将该IP地址放入四级Trie树节点对应的队列。
4.一种保存位图的装置,其特征在于,所述装置包括:
设置模块,用于设置各级Trie树节点对应的关键码长度;
分类模块,用于将位图对应规则中IP地址的掩码长度与所述关键码长度进行比较,根据比较结果将IP地址放入各级Trie树节点对应的队列;
保存模块,用于按照关键码长度由小到大的顺序,依次提取所述Trie树节点对应的各个队列中的IP地址,为该IP地址配置对应的关键标识,创建相应的Trie树节点并保存该关键标识;为该IP地址所属的业务类型配置对应的组标识,对所述关键标识和组标识的组合进行Hash计算,将计算得到的Hash值与所述IP地址与业务类型的组合所对应位图的存储地址之间建立对应关系;当所述Trie树节点有父节点时,对所述关键标识和父节点对应的业务类型组标识的组合进行Hash计算,将计算得到的Hash值与所述父节点位图的存储地址之间建立对应关系。
5.根据权利要求4所述的装置,其特征在于,当所述Trie树包括N级节点,N为大于2的自然数时,所述分类模块用于:
当IP地址的掩码长度不大于一级Trie树节点的关键码长度时,将该IP地址放入一级Trie树节点对应的队列;
当IP地址的掩码长度大于n级Trie树节点的关键码长度、并且不大于n+1级Trie树节点的关键码长度时,将该IP地址放入n+1级Trie树节点对应的队列;其中,所述n为大于0且小于N的自然数。
6.根据权利要求5所述的装置,其特征在于,当所述Trie树包括四级节点时,所述分类模块用于:
当IP地址的掩码长度不大于一级Trie树节点的关键码长度时,将该IP地址放入一级Trie树节点对应的队列;
当IP地址的掩码长度大于一级Trie树节点的关键码长度、并且不大于二级Trie树节点的关键码长度时,将该IP地址放入二级Trie树节点对应的队列;
当IP地址的掩码长度大于二级Trie树节点的关键码长度、并且不大于三级Trie树节点的关键码长度时,将该IP地址放入三级Trie树节点对应的队列;
当IP地址的掩码长度大于三级Trie树节点的关键码长度、并且不大于四级Trie树节点的关键码长度时,将该IP地址放入四级Trie树节点对应的队列。
7.一种路由器,其特征在于,所述路由器包括权利要求4所述的装置。
8.一种交换机,其特征在于,所述交换机包括权利要求4所述的装置。
CN2010101221145A 2010-03-09 2010-03-09 一种保存位图的方法和装置 Expired - Fee Related CN102195853B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2010101221145A CN102195853B (zh) 2010-03-09 2010-03-09 一种保存位图的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2010101221145A CN102195853B (zh) 2010-03-09 2010-03-09 一种保存位图的方法和装置

Publications (2)

Publication Number Publication Date
CN102195853A CN102195853A (zh) 2011-09-21
CN102195853B true CN102195853B (zh) 2013-09-04

Family

ID=44603269

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2010101221145A Expired - Fee Related CN102195853B (zh) 2010-03-09 2010-03-09 一种保存位图的方法和装置

Country Status (1)

Country Link
CN (1) CN102195853B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103678553A (zh) * 2013-12-06 2014-03-26 上海寰创通信科技股份有限公司 基于共享内存设计的无线终端数据库构建方法
CN106302172A (zh) * 2015-05-18 2017-01-04 深圳市中兴微电子技术有限公司 同时支持哈希查找和路由查找的存储、查找方法和装置
CN105635343B (zh) * 2016-02-02 2019-06-04 中国互联网络信息中心 应用于dns查询的ip地址列表存储和查询方法
CN107682266B (zh) * 2017-09-12 2021-02-26 杭州迪普科技股份有限公司 流表项的匹配方法及装置、计算机可读存储介质
CN109617927B (zh) * 2019-01-30 2021-04-16 新华三信息安全技术有限公司 一种匹配安全策略的方法及装置
CN112910894A (zh) * 2021-02-01 2021-06-04 武汉思普崚技术有限公司 一种实现策略的快速匹配的方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101141389A (zh) * 2007-09-29 2008-03-12 华为技术有限公司 增强多位Trie树查找方法和装置
CN101277252A (zh) * 2007-03-30 2008-10-01 迈普(四川)通信技术有限公司 多分支Trie树的遍历方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101277252A (zh) * 2007-03-30 2008-10-01 迈普(四川)通信技术有限公司 多分支Trie树的遍历方法
CN101141389A (zh) * 2007-09-29 2008-03-12 华为技术有限公司 增强多位Trie树查找方法和装置

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
一种基于哈希表和Trie树的快速内容路由查找算法;汪志莉等;《计算机应用与软件》;20091015;第26卷(第10期);全文 *
多分枝trie树路由查找算法研究;陈蹊等;《电子设计工程》;20100305;第18卷(第3期);全文 *
汪志莉等.一种基于哈希表和Trie树的快速内容路由查找算法.《计算机应用与软件》.2009,第26卷(第10期),
陈蹊等.多分枝trie树路由查找算法研究.《电子设计工程》.2010,第18卷(第3期),

Also Published As

Publication number Publication date
CN102195853A (zh) 2011-09-21

Similar Documents

Publication Publication Date Title
CN102195853B (zh) 一种保存位图的方法和装置
EP1515501B1 (en) Data structure for range-specified algorithms
CN101146027B (zh) 基于访问控制列表分类的方法
CN104580027A (zh) 一种OpenFlow报文转发方法及设备
CN101605126B (zh) 一种多协议数据分类识别的方法和系统
US20040028046A1 (en) Logarithmic time range-based multifield-correlation packet classification
US7872993B2 (en) Method and system for classifying data packets
US10284472B2 (en) Dynamic and compressed trie for use in route lookup
CN102308533B (zh) 对报文进行分类的方法及装置
CN104579940B (zh) 查找访问控制列表的方法及装置
US20130060727A1 (en) Identifying Duplication in Decision Trees
CN104579941A (zh) 一种OpenFlow交换机中的报文分类方法
US9240959B2 (en) Method for packet classification and device therefor
CN104348716A (zh) 一种报文处理方法及设备
CN100488174C (zh) 流分类中基于硬件的差异化组织方法
CN102387082A (zh) 基于流分类的分组流量控制系统及控制方法
CN107707474A (zh) 一种路由分配方法及系统
CN111988231A (zh) 一种掩码五元组规则匹配的方法及装置
Pao et al. A multi-pipeline architecture for high-speed packet classification
CN101848248A (zh) 一种规则查找方法和装置
CN107276916A (zh) 基于协议无感知转发技术的交换机流表管理方法
CN113723548A (zh) 决策树规则集预处理的方法和装置
CN104125146B (zh) 一种业务处理方法及装置
CN100440859C (zh) 一种位图聚合的递推流分类方法及其系统
CN111163077A (zh) 一种基于网络处理器实现多维连续掩码的系统和方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No.

Patentee after: Xinhua three Technology Co., Ltd.

Address before: 310053 Hangzhou hi tech Industrial Development Zone, Zhejiang province science and Technology Industrial Park, No. 310 and No. six road, HUAWEI, Hangzhou production base

Patentee before: Huasan Communication Technology Co., Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20190903

Address after: 610041 Chengdu City, Sichuan Province, China (Sichuan) Free Trade Pilot Area

Patentee after: Xinhua San Semiconductor Technology Co., Ltd.

Address before: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No.

Patentee before: Xinhua three Technology Co., Ltd.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20130904

Termination date: 20200309