CN101945139B - IPv6地址存储和查找方法及相关设备 - Google Patents
IPv6地址存储和查找方法及相关设备 Download PDFInfo
- Publication number
- CN101945139B CN101945139B CN 201010212943 CN201010212943A CN101945139B CN 101945139 B CN101945139 B CN 101945139B CN 201010212943 CN201010212943 CN 201010212943 CN 201010212943 A CN201010212943 A CN 201010212943A CN 101945139 B CN101945139 B CN 101945139B
- Authority
- CN
- China
- Prior art keywords
- storage area
- ipv6 address
- bits
- length
- address
- 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.)
- Active
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提出了一种IPv6地址存储和查找方法,通过对IPv6地址网络前缀长度的判断来进行分区存储。此外,本发明还提出了一种IPv6接入控制网关,使用上述IPv6地址存储方法,在IPv6网络通信系统中实现对用户的接入权限控制。本发明在有效减少存储容量的同时提高了查找效率。
Description
技术领域
本发明涉及下一代互联网领域,更具体地,涉及一种IPv6地址存储和查找方法及相关设备。
背景技术
众所周知,IPv6地址长度是128比特,而IPv4地址长度是32比特。就地址长度而言,IPv6比IPv4扩大了4倍;就容量而言,则扩大了296倍。由于IPv6地址容量的急剧增长,因此需要一种高效可行的IPv6地址存储和查找方式。
发明内容
本发明提出了一种IPv6地址存储和查找方法及相关设备,可以在使用有限内存的情况下实现IPv6地址的高速查找。
根据本发明的一个方面,提供了一种IPv6地址存储方法,包括:判断IPv6地址的网络前缀的长度是否为128比特;如果是,则将IPv6地址存储在第一存储区域中;否则,将IPv6地址存储在第二存储区域中。
优选地,将IPv6地址存储在第一存储区域中的步骤包括:对IPv6地址进行散列运算并存储到第一存储区域中,第一存储区域具有由散列结构和红黑树rbtree结构形成的混合结构。
优选地,将IPv6地址存储在第二存储区域中的步骤包括:将IPv6地址分为第一部分和第二部分,并分别存储到第二存储区域的第一部分和第二部分中,第二存储区域具有变步长多分支trie树结构。
优选地,第二存储区域的第一部分和第二部分分别存储IPv6地址的前64比特和后64比特,第二存储区域的第一部分的步长为16比特,第二存储区域的第二部分的步长为8比特。
优选地,该方法还包括:在配置128比特的IPv6地址访问权限属性时,如果IPv6地址的访问权限属性与所属网段的访问权限属性相同,则对IPv6地址进行散列运算,在对应的红黑树rbtree结构中查找对应节点,并且如果找到该对应节点,则将其删除。
根据本发明的另一方面,提供了一种IPv6地址查找方法,包括:判断IPv6地址的网络前缀的长度是否为128比特;如果是,则在第一存储区域中查找该IPv6地址;否则,在第二存储区域中查找该IPv6地址。
优选地,第一存储区域具有由散列结构和红黑树rbtree结构形成的混合结构,第二存储区域具有变步长多分支trie树结构。
更优选地,第二存储区域包括具有第一步长的第一部分和具有第二步长的第二部分,第二存储区域的第一部分和第二部分分别存储IPv6地址的前64比特和后64比特,第二存储区域的第一部分的步长为16比特,第二存储区域的第二部分的步长为8比特。
根据本发明的又一方面,提供了一种IPv6接入控制网关,包括:存储单元,用于存储IPv6地址,所述存储单元具有第一存储区域和第二存储区域;以及地址处理单元,判断IPv6地址的网络前缀的长度是否为128比特,如果是,则在存储单元的第一存储区域中对IPv6地址进行存储或查找;否则,在存储单元的第二存储区域中对IPv6地址进行存储或查找。
优选地,第一存储区域具有由散列结构和红黑树rbtree结构形成的混合结构,第二存储区域具有变步长多分支trie树结构,第二存储区域包括具有第一步长的第一部分和具有第二步长的第二部分,第二存储区域的第一部分和第二部分分别存储IPv6地址的前64比特和后64比特,第二存储区域的第一部分的步长为16比特,第二存储区域的第二部分的步长为8比特。
与现有技术相比,本发明的优点主要在于:可以在使用有限内存下实现地址的高速查找。通过对IPv6地址网络前缀长度的不同进行分级存储,采用hash+rbtree以及变步长多分支trie树存储结构,可以在有效减少存储容量的同时提高查找效率。
附图说明
通过下面结合附图说明本发明的实施例,将使本发明的上述及其它目的、特征和优点更加清楚,其中:
图1示出了本发明中的IPv6地址存储方法中的A存储区域的示意图;
图2示出了本发明中的IPv6地址存储方法中的B存储区域的示意图;
图3示出了根据本发明的IPv6地址存储方法的流程图;
图4示出了图3中所示的IPv6地址存储方法中在A存储区域中进行存储的方法的详细流程图;以及
图5示出了根据本发明一个实施例的IPv6接入控制网关的框图。
具体实施方式
为了清楚详细的阐述本发明的实现过程,下面给出了一些本发明的具体实施例。参照附图对本发明的实施例进行详细说明,在描述过程中省略了对于本发明来说是不必要的细节和功能,以防止对本发明的理解造成混淆。
本说明书中所涉及的技术术语的定义:
A存储区域----
存储区域代号,指采用散列(hash)和红黑树rbtree存储方式的存储区。主要存储用户IPv6地址及访问权限属性等信息。如图1所示,IPv6地址网络前缀长度为128比特的IPv6地址经过hash运算(桶深为65536)后存储在rbtree中的相应位置。
B存储区域----
存储区域代号,指采用变步长多分支trie树存储方式的存储区。主要存储IPv6地址段访问权限属性。例如,在本发明的一个实施例中,IPv6地址的网络前缀的前64比特以步长为16存储,后64比特以步长为8存储。(如图2所示)。
访问权限属性----
对地址访问权限进行控制的属性。参见专利号为200910089531.1、发明名称为“IPv6/IPv4地址分级访问权限控制方法和访问控制网关”的在先中国专利申请,其全体内容在此一并引入作为参考。
在本发明中,IPv6地址存储方法优先保证查找的速度,这是因为插入、删除的操作频率和查找的操作频率大概相差了5个数量级。
在本发明中,综合考虑查找效率和内存使用两者,以获得总体上最优的效率。下面的表1以网络地址前缀为32和72两种情况为例,列举了在不同存储方式下所实现的内存占用和查找次数之间的关系。
表1
从表1可以看出,将网络前缀的前64比特以步长为16存储,而将网络前缀的后64比特以步长为8存储,可以获得在内存占用和查找速度两方面整体上最优的性能。因此,在本发明的一个具体实施例中,将网络前缀的前64比特以步长为16存储,而将网络前缀的后64比特以步长为8存储,从而既提高了查找速度又节省了内存使用。例如,IPv6地址网络前缀长度为32时,其存储在步长为16的B存储区域中,只需查找2次;IPv6地址网络前缀长度为72时,其存储在步长为8的B存储区域中,则需查找5次。即,先以步长16查找前64比特,再以步长8查找剩余的8比特。
图1示出了本发明中的IPv6地址存储方法中的A存储区域的示意图。A存储区域主要存储用户的IPv6地址及访问权限属性等信息。这是因为,用户的IPv6地址数量较多(尽可能不预申请空间),分散的空间较大(可以通过hash有效散列)。具体地,如图1所示,对于网络前缀长度为128的地址,通过hash,将其散列在hash桶区域101的65536个桶中,再将其插入到对应的红黑树rbtree区域102中,并调整红黑树rbtree的节点及颜色。需要注意的是,图1中的白色节点实际上对应于红黑树中的红色节点。
举例说来,假定某个IPv6地址为2001:da8:21a:1000:233::188,经过hash方法得出其应该存在下标为187的hash桶对应的红黑树rbtree中。该红黑树rbtree中已经存有IPv6地址节点2001:da8:21a:1000:200::188,则通过两个IPv6地址比较,得出2001:da8:21a:1000:233::188应为节点2001:da8:21a:1000:200::188节点的右孩子。因此将其插入,并将其置成黑色。
图2示出了本发明中的IPv6地址存储方法中的B存储区域的示意图。B存储区域主要存储IPv6地址段访问权限属性。由于IPv6地址段需要按照最长匹配原则来查找,且数量不大,所以变步长多分支trie树结构可以有效提高查找效率,而一个节点下的子节点存储在连续的地址空间,通过地址偏移查找而提高查找效率(但也预申请了较多内存,不过因为其数量不大,所以使用内存总量不会过多)。如图2所示,B存储区域分为步长为16的多分支trie树结构201和步长为8的多分支trie树结构202。在本发明的一个实施例中,IPv6地址网络前缀前64比特以步长为16存储在多分支trie树结构201中,而后64比特以步长为8存储在多分支trie树结构202中。
图3示出了根据本发明的IPv6地址存储方法30的流程图。具体地,方法30在步骤300处开始。
在步骤301,获取IPv6地址网络前缀长度。
在步骤302,判断IPv6地址的网络前缀长度是否为128。如果是,则执行步骤303;否则,执行步骤304。
在步骤303,根据IPv6地址进行hash,计算对应的hash位置。将IPv6地址及对应权限属性存储在对应的红黑树rbtree中,并调整红黑树rbtree。
在步骤304,判断IPv6地址网络前缀长度是否大于64。如果是,则执行步骤305;否则,执行步骤306。
在步骤305,以步长为16查找前64比特,然后以步长为8在多分支trie树结构中设置存储对应节点。最后,方法30在步骤309处结束。
在步骤306,以步长为16在多分支trie树结构中设置存储对应节点。最后,方法30在步骤309处结束。
此外,本发明还提供了一种相应的IPv6地址查找方法,其操作流程与图3所示的流程类似。具体说来,该方法例如可以包括:获取IPv6地址网络前缀长度;判断IPv6地址的网络前缀的长度是否为128比特。如果是,则根据IPv6地址进行hash,计算对应的hash位置,以便在红黑树rbtree中相应的节点处查找该IPv6地址。否则,在变步长多分支trie树结构中进行查找。在本发明的一个具体实施例中,变步长多分支trie树结构包括第一部分和第二部分,第一部分的长度和第二部分的长度均为64比特,并且第一部分的步长为16比特,第二部分的步长为8比特。
图4示出了图3中所示的IPv6地址存储方法中在hash+rbtree结构的A存储区域中进行存储的方法40的详细流程图。具体地,方法40在步骤400处开始。
在步骤401,获取IPv6地址在B存储区域存储的所属网段的访问权限属性。
在步骤402,判断所属网段的访问权限属性和IPv6地址访问权限属性是否相同。如果是,则执行步骤403;否则,执行步骤404。
在步骤403,在配置128比特的IPv6地址访问权限属性时,如果IPv6地址的访问权限属性与所属网段的访问权限属性相同,则对IPv6地址进行散列运算,在对应的红黑树rbtree结构中查找对应节点,并且如果找到该对应节点,则将其删除。
在步骤404,判断该IPv6地址节点是否存在于A存储区域中。如果不存在,则执行步骤405;否则,执行步骤406。
在步骤405,根据IPv6地址进行hash,计算对应的hash位置。将IPv6地址及对应属性存储在对应的红黑树rbtree中,并调整红黑树rbtree。
在步骤406,判断是否允许覆盖先前存储的节点。如果不允许,则执行步骤407;否则,执行步骤408。
在步骤407,返回错误,并且方法40在步骤409处结束。
在步骤408,更改该节点的属性,并且方法40在步骤409处结束。
以下给出本发明的一个具体应用场景。
假定某个单位申请地址块为/48(即网络前缀为48比特),其中的两个/56地址块为必须认证地址,每个地址块用户数量均为10000人左右,每个用户最多有6个IPv6地址。平时会有10%左右的用户同时在线。这样,在线用户IPv6地址信息存储在A存储区域中,大概为12000条(10000×2×10%×6)。hash桶桶深为65536,则平均冲突链长度为1。即在A存储区域每个IPv6地址平均查找为1次。使用内存约为1.2M字节(即,其中hash桶占用65536*4=256K字节,红黑树rbtree占用12000*84=1008000字节,两者合计约为1.2M字节)。IPv6地址块信息存储在B存储区域,IPv6地址网络前缀长度为56的存储在步长为16的区域201,则每次查找需要访问存储区域4次。使用内存为2M字节(即,65536*8*4=2M字节)。
以该单位的某用户上线为例,结合图3和图4来说明存储和查找过程。在步骤301,获知其IPv6地址网络前缀长度为128。在步骤302,判断其IPv6地址网络前缀长度等于128,执行步骤303(即转到图4的流程)。在步骤401,获取该IPv6地址所属网段的访问权限属性,例如为0x80000101,而该IPv6地址的访问权限属性例如是0x80000E01。在步骤402,判断得知两个访问权限属性不相同,因而执行步骤404。在步骤404,通过查找没有找到该IPv6地址对应节点,从而执行步骤405。在步骤405,通过将IPv6地址进行Hash,然后插入到红黑树rbtree中。至此,针对该用户上线的整个流程结束。
图5示出了根据本发明一个实施例的IPv6接入控制网关500的框图,该IPv6接入控制网关500包括地址处理单元510和存储单元520。
存储单元520包括用于存储IPv6地址的两个不同的存储区域,其中一个存储区域(第一存储区域)存储网络前缀长度为128比特的IPv6地址,而另一个存储区域(第二存储区域)存储网络前缀长度不为128比特的IPv6地址。在本发明的一个实施例中,第一存储区域可以是具有红黑树rbtree结构的存储区域,而第二存储区域是具有变步长多分支trie树结构的存储区域。特别地,在本发明的一个优选实施例中,第二存储区域可以分为步长为16的第一部分和步长为8的第二部分,IPv6地址网络前缀的前64比特以步长为16存储在第一部分中,后64比特以步长为8存储在第二部分中。
地址处理单元510在其输入501上获取IPv6地址,并对网络前缀的长度进行判断。如果网络前缀的长度为128比特,则在存储单元520的第一存储区域中对IPv6地址进行存储或查找;否则,在存储单元520的第二存储区域中对IPv6地址进行存储或查找。如上文所述,该第二存储区域包括第一部分和第二部分,其中第一部分具有第一步长,第二部分具有第二步长。在本发明的一个优选实施例中,第一部分的长度和第二部分的长度均为64比特,并且第一步长为16比特,第二步长为8比特。
IPv6接入控制网关500可以在有效减少存储容量的同时提高查找效率。
至此已经结合优选实施例对本发明进行了描述。应该理解,本领域技术人员在不脱离本发明的精神和范围的情况下,可以进行各种其它的改变、替换和添加。因此,本发明的范围不局限于上述特定实施例,而应由所附权利要求所限定。
Claims (5)
1.一种IPv6地址存储方法,包括:
判断IPv6地址的网络前缀的长度是否为128比特;
如果是,则将IPv6地址存储在第一存储区域中;
否则,将IPv6地址存储在第二存储区域中,
其中,将IPv6地址存储在第一存储区域中的步骤包括:对IPv6地址进行散列运算并存储到第一存储区域中,第一存储区域具有由散列结构和红黑树rbtree结构形成的混合结构,
将IPv6地址存储在第二存储区域中的步骤包括:将IPv6地址分为第一部分和第二部分,并分别存储到第二存储区域的第一部分和第二部分中,第二存储区域具有变步长多分支trie树结构。
2.如权利要求1所述的IPv6地址存储方法,其中,第二存储区域的第一部分和第二部分分别存储IPv6地址的前64比特和后64比特,第二存储区域的第一部分的步长为16比特,第二存储区域的第二部分的步长为8比特。
3.如权利要求1所述的IPv6地址存储方法,还包括:在配置128比特的IPv6地址访问权限属性时,如果IPv6地址的访问权限属性与所属网段的访问权限属性相同,则对IPv6地址进行散列运算,在对应的红黑树rbtree结构中查找对应节点,并且如果找到该对应节点,则将其删除。
4.一种IPv6地址查找方法,包括:
判断IPv6地址的网络前缀的长度是否为128比特;
如果是,则在第一存储区域中查找该IPv6地址;
否则,在第二存储区域中查找该IPv6地址,
其中,第一存储区域具有由散列结构和红黑树rbtree结构形成的混合结构,第二存储区域具有变步长多分支trie树结构,
第二存储区域包括具有第一步长的第一部分和具有第二步长的第二部分,第二存储区域的第一部分和第二部分分别存储IPv6地址的前64比特和后64比特,第二存储区域的第一部分的步长为16比特,第二存储区域的第二部分的步长为8比特。
5.一种IPv6接入控制网关,包括:
存储单元,用于存储IPv6地址,所述存储单元具有第一存储区域和第二存储区域;以及
地址处理单元,判断IPv6地址的网络前缀的长度是否为128比特,如果是,则在存储单元的第一存储区域中对IPv6地址进行存储或查找;否则,在存储单元的第二存储区域中对IPv6地址进行存储或查找,
其中,第一存储区域具有由散列结构和红黑树rbtree结构形成的混合结构,第二存储区域具有变步长多分支trie树结构,第二存储区域包括具有第一步长的第一部分和具有第二步长的第二部分,第二存储区域的第一部分和第二部分分别存储IPv6地址的前64比特和后64比特,第二存储区域的第一部分的步长为16比特,第二存储区域的第二部分的步长为8比特。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010212943 CN101945139B (zh) | 2010-06-30 | 2010-06-30 | IPv6地址存储和查找方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010212943 CN101945139B (zh) | 2010-06-30 | 2010-06-30 | IPv6地址存储和查找方法及相关设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101945139A CN101945139A (zh) | 2011-01-12 |
CN101945139B true CN101945139B (zh) | 2013-01-09 |
Family
ID=43436907
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010212943 Active CN101945139B (zh) | 2010-06-30 | 2010-06-30 | IPv6地址存储和查找方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101945139B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105516393A (zh) * | 2015-12-31 | 2016-04-20 | 赛尔网络有限公司 | 一种多阶段多维ip地址分类方法及装置 |
CN112019652B (zh) * | 2020-08-27 | 2023-01-24 | 北京亚鸿世纪科技发展有限公司 | 一种ipv6地址段判断的方法及装置 |
CN114710467B (zh) * | 2022-03-25 | 2024-03-12 | 阿里巴巴(中国)有限公司 | Ip地址存储方法、装置和硬件网关 |
CN115460168B (zh) * | 2022-08-22 | 2024-05-14 | 浪潮通信信息系统有限公司 | 一种基于资源管理的IPv6容量分析方法及系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101268669A (zh) * | 2005-09-20 | 2008-09-17 | 艾利森电话股份有限公司 | 用于认证来自移动节点的更新的方法和移动锚点 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9654303B2 (en) * | 2008-09-11 | 2017-05-16 | Spirent Communications, Inc. | Method and apparatus for emulating network devices |
-
2010
- 2010-06-30 CN CN 201010212943 patent/CN101945139B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101268669A (zh) * | 2005-09-20 | 2008-09-17 | 艾利森电话股份有限公司 | 用于认证来自移动节点的更新的方法和移动锚点 |
Also Published As
Publication number | Publication date |
---|---|
CN101945139A (zh) | 2011-01-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101692651B (zh) | 一种哈希查找表的方法和装置 | |
Song et al. | Scalable name-based packet forwarding: From millions to billions | |
Quan et al. | Scalable name lookup with adaptive prefix bloom filter for named data networking | |
Liu | Efficient mapping of range classifier into ternary-CAM | |
Yuan et al. | Reliably scalable name prefix lookup | |
CN103874157B (zh) | 路由转发、建立路由表、和获取内容的方法及其装置 | |
US6985483B2 (en) | Methods and systems for fast packet forwarding | |
US7139747B1 (en) | System and method for distributed web crawling | |
CN101834802B (zh) | 转发数据包的方法及装置 | |
CN100445999C (zh) | 一种数据存储及搜索方法 | |
CN101945139B (zh) | IPv6地址存储和查找方法及相关设备 | |
CN100488174C (zh) | 流分类中基于硬件的差异化组织方法 | |
CN102420771B (zh) | 高速网络环境中提高tcp并发连接速度的方法 | |
CN103873602A (zh) | 一种网络资源命名方法与生成装置 | |
CN102487374A (zh) | 一种访问控制列表实现方法及装置 | |
CN109921995A (zh) | 一种配置地址表的方法、fpga和应用该fpga的网络设备 | |
CN106657439B (zh) | 网络地址转换映射表的操作方法及装置 | |
CN100397816C (zh) | 在网络设备中对接收数据包进行分类的方法 | |
CN101436965A (zh) | 一种共享接入客户端数量的检测方法、装置以及系统 | |
CN103457855B (zh) | 无类域间路由表建立、以及报文转发的方法和装置 | |
CN110519173A (zh) | 一种ip五元组表项的查找方法及查找系统 | |
CN104253754A (zh) | 一种acl快速匹配的方法和设备 | |
CN104657383A (zh) | 一种基于关联特性的重复视频检测方法与系统 | |
CN1210919C (zh) | 一种数据接入设备中的数据流量控制方法 | |
CN105871726A (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 |