CN103428093A - 一种基于名字路由前缀存储、匹配及更新方法与装置 - Google Patents
一种基于名字路由前缀存储、匹配及更新方法与装置 Download PDFInfo
- Publication number
- CN103428093A CN103428093A CN2013102771080A CN201310277108A CN103428093A CN 103428093 A CN103428093 A CN 103428093A CN 2013102771080 A CN2013102771080 A CN 2013102771080A CN 201310277108 A CN201310277108 A CN 201310277108A CN 103428093 A CN103428093 A CN 103428093A
- Authority
- CN
- China
- Prior art keywords
- prefix
- name
- cloth
- trie
- layer
- 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.)
- Granted
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Abstract
本发明公开了一种基于名字路由前缀存储,匹配以及路由更新方法及装置,包括布隆滤波器单元,Trie单元和流行度计数单元。其中,布隆滤波器单元,根据名字名字前缀的统计特性,存储名字前缀的前m层,对到达路由器的请求名字做快速前缀匹配;Trie单元,用于存储名字前缀的后n层,对请求名字做快速后缀查询;流行度计数单元,用于统计请求名字的流行度并相应地改变布隆滤波器和Trie的存储结构。本发明利用布隆滤波器低概率的冲突与低内存特性、Trie查找的快速性、并行查找、真实名字前缀的统计规律以及基于流行度统计的路由更新,能够解决新型网络体系中基于名字的路由寻址问题,能够满足未来网络消耗内存小、匹配速度快、吞吐量大的要求。
Description
技术领域
本发明涉及计算机网络技术领域,特别涉及一种路由前缀匹配方法与装置。
背景技术
随着互联网的发展,人们对数据内容本身的需求越来越强烈。在这种背景下,传统的以主机为中心的网络体系结构已经难以满足现在互联网的发展,这导致下一代网络体系CCN(Content-Centric Networking)应运而生。与传统基于IP的网络体系不同,CCN是一种全新的以内容和信息为中心的网络体系,它使用网络用户所需内容的名字来定位数据资源,而不是使用定向IP地址。CCN中每个数据包报头中携带请求内容的名字,路由器中的转发表由若干内容名字前缀构成,转发时,需将请求内容的名字进行最长前缀匹配(LPM),与现有基于IPV4/IPV6网络转发路由表不同的地方在于:CCN每个名字前缀由几十甚至上百个字符组成,较IPV4/IPV6固定长度地址有可变的长度,这使名字前缀匹配变得复杂;另外,CCN的转发表可能远远大于当今IP的转发表,IP转发表具有400万IP前缀,而CCN可能高达10亿。转发表条目的剧增,使得网络的吞吐量受到一定的影响,为了保证网络的性能,急需一种内存占用小,匹配时间少,路由表更新速度快,能很好的适应CCN的前缀匹配算法。
传统的IPV4/IPV6路由查找使用的方法包括:线性查找法,哈希查找法,二进制Trie树法,路径压缩Trie树法,多分支Trie树法,地址前缀长度的二分查找法,地址区间的二分查找法等。
哈希查找是一种经典的路由查找方法,由于简单可行,被用在Linux操作系统作为默认的路由查找方法。在IPV4中,哈希查找首先需要根据不同的掩码长度分别构建与每个掩码对应的哈希表,使得每一个掩码域都有一个哈希表。每个哈希表又由N个哈希桶组成,而每个哈希桶中存有多个冲突链表。在查找过程中,为了实现最长前缀匹配,从最长的掩码域开始当前掩码的匹配操作,计算键值(key)使得目的IP地址哈希到这些哈希表的特定的桶中,然后遍历其冲突链表,如果不匹配则进入少一位的掩码域,直到得到最终结果。哈希查找是基于掩码的从长到短遍历来实现严格的最长前缀匹配的,也就是说如果一条最终将要通过默认端口发出的数据报,它起码要匹配32次才能得到结果。然而,对于拥有近10亿长而不定的名字前缀的CCN,用哈希来实现前缀匹配,冲突的条目会突然增多,导致匹配时间延长;而且需将所有前缀存入冲突链表,会消耗较多的内存。
为了减少哈希最长前缀匹配的时间,一种Bloom filter与Hash相结合的方法被提出。Bloom filter是由Howard Bloom在1970年提出的二进制向量数据结构,它具有很好的空间和时间效率,被用来检测一个元素是不是集合中的一个成员,这种检测只会对在集合内的数据错判,而不会对不是集合内的数据进行错判,这样每个检测请求 返回有“在集合内(可能错误)”和“不在集合内(绝对不在集合内)”两种情况。
它采用的是哈希函数的方法,将一个元素通过哈希函数映射到一个m长度的阵列上的一个点,当这个点是1时,那么这个元素在集合内,反之则不在集合内。这个方法的缺点就是当检测的元素很多的时候可能有冲突,解决方法就是使用k个哈希函数对应k个位置,如果所有位置都是1的话,则认为元素在集合内,如果有0的话,则元素不在集合内。Bloom filter优点就是它的插入和查询时间都是常数,另外它查询元素却不保存元素本身,具有良好的安全性。它的缺点也是显而易见的,当插入的元素越多,错判“在集合内”的概率就越大了,另外Bloom filter也不能删除一个元素,因为多个元素的哈希值可能在Bloom filter结构中占用的是同一个位,如果删除了一个比特位,可能会影响多个元素的检测。可见Bloom filter是牺牲了正确率换取时间和空间。
Bloom filter+Hash算法将不同长度的IP地址前缀插入到不同的布隆滤波器中,比如:128.8,转化为二进制前缀是:11111111/00001。这个IP前缀长度为13,它将被插入到第13号布隆滤波器中,并且把前缀插入到哈希表中。当一个数据包到达路由器时,将目的IP地址分成长度为1,2,3,……,32的前缀,比如:128.8.1.2,将会被分成:1、11、111、1111、11111、111111、1111111、11111111、11111111/0、1111111/00、11111111/000、11111111/0000、11111111/00001、 11111111/000010、……、11111111/00001000/00000001/00000010,共32个前缀,并行的在相应的布隆滤波器中查找存在与否,如果在第13号与第24号布隆滤波器中查找得出128.8与128.8.1是存在的,那么首先在哈希表中查找128.8.1是否存在,如果存在,则认为128.8.1是128.8.1.2的最长前缀匹配,然后转发;如果不在(因为布隆滤波器存在假阳性),则将128.8按上述步骤执行。如果128.8也不在哈希表中,则将这个请求从默认端口转发。这个算法的优点:利用若干Bloom filter并行处理,找出最长匹配的长度,利用布隆滤波器的假阳性概率很低,大大减少哈希查找的次数,快速找出转发端口。对于IP网络,IP地址是固定的(32位),只需32个布隆滤波器。但是,对于CCN中名字长度不能确定的情况,Bloom filter的个数是不能确定的,并且CCN中名字前缀较多,Bloom filter假阳性会增大,性能会急剧降低。
现有技术中常用的另一种方法是Trie,又称单词查询树、前缀树,是一种哈希树的变种。Trie树查找典型应用于字符串前缀匹配,统计和排序大量的字符串(但不仅限于字符串),经常被搜索引擎系统用于文本词频统计。Trie所具有的性质:(1)每个节点有N个子节点(如果是单词树,N为26);(2)从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串;(3)每个节点的所有子节点包含的字符都不相同。它的优点是:(1)查询快,通过最大限度地减少无谓的字符串比较,查询效率比哈希表高;(2)采用了基于Trie的查 找使得其查找的时间复杂度限制在一个范围,具有一定的可扩展性。Trie很适用于IPV4网络地址最长前缀匹配,因为IPV4地址长度固定为32比特位,能将Trie的内存控制在232×sizeof(node)字节,其中node为Trie的一个节点;而对于CCN,有着将近10亿长而不定的名字前缀(30字节~40字节居多),如果用Trie实现它的前缀匹配,Trie的长度得不到控制,将会耗去很大的内存。目前IPV4路由器的基于trie树的最长前缀匹配方法有一些变种:包括二进制Trie树,路径压缩Trie树,多分支Trie树。
由于未来的网络体系结构中,路由寻址不再仅仅是基于定长的、数字化的IP地址,而可能是基于具有实际意义的命名标识,而这些命名标识又包含了许多元属性。所以,现有的路由寻址策略匹配方案已经不能适应未来网络中路由寻址的高效率和高准确性的需求。现有的IP网络的前缀匹配方法无论在内存上,还是在匹配时间上都不能很好的适应未来以内容为中心的网络。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种基于名字路由前缀存储、匹配及路由更新方法与装置。所述技术方案如下:
一种基于内容路由前缀匹配布隆滤波器单元和Trie单元初始化方法,所述方法包括:
步骤A、计算前缀名字的层数n,如果n少于等于m,则将此前 缀名字插入第n号布隆滤波器;否则,执行步骤B;
步骤B、将前缀名字分解成B-prefix与T-suffix,其中B-prefix是前缀名字的前m层,suffix是名字前缀的后几层。将B-prefix插入第m号布隆滤波器。
步骤C、将T-suffix插入到相应B-prefix的Trie中。其中,T-suffix的最后一个component所在的Trie节点中存放着路由器转发端口号。
所述步骤A中,前缀名字的层数,是指名字中‘/’,‘\’或者其他起分隔作用字符的个数。比如“com/baidu/movie/a.mp4/”,此名字前缀的层数n=4;
所述步骤B中,不同层数的名字前缀拥有一个布隆滤波器,布隆滤波器的个数为m;B-prefix和T-suffix为任意字符串。
所述步骤C中,B-prefix对应的Trie,是指每个不同的B-prefix都对应一个Trie,用来存储有相同B-prefix的T-suffix。比如,“com/baidu/movie/a.mp4/”与“com/baidu/picture/b.jpeg/”拥有共同的B-prefix,就是“com/baidu/”,那么它们各自的T-suffix:“movie/a.mp4/”与“picture/b.jpeg/”都将存储在“com/baidu/”所对应的Trie中。
所述步骤C中,component是指两个分隔符之间的字符串,比如“com/baidu/movie/a.mp4/”,此前缀名字有4个component,分别为“com”,“baidu”,“movie”,“a.mp4”。
一种基于名字路由的请求名字前缀匹配方法,所述方法包括:
步骤A、计算请求名字name的层数n,如果n小于等于m,则 将name的前1层,前2层,……,前m层,并行地在对应的布隆滤波器中查找,输出匹配结果栈s;否则,执行步骤B;
步骤B、将name的前1层,前2层,前3层,……,前m层并行地在对应的布隆滤波器中查找,输出匹配结果栈s;
步骤C、栈s如果为空,执行步骤E;如果不空,则取栈顶元素m,随即pop栈顶元素,取name的前m层作为B-prefix,取name的m层以后的字符串作为T-suffix,在B-prefix对应的Trie中查找suffix是否存在,如果存在,取得转发端口号ethx,执行步骤D;如果不存在,执行步骤C;
步骤D、将请求包从路由器的ethx口转发;
步骤E、将请求包从路由器的默认端口转发;
所述步骤A中匹配结果栈s,是指栈s中从小到大存储着查询结果为真的布隆滤波器的号码。比如,“com/baidu/movie/a.mp4/”,如果“com/”存在于1号布隆滤波器,“com/baidu/”不存在于2号布隆滤波器,“com/baidu/movie/”存在于3号布隆滤波器,“com/baidu/movie/a.mp4/”存在于4号布隆滤波器,则栈S中按从小到大顺序存储的是:1、3、4,其中4为栈顶元素,这表明有着一个1层前缀名字,一个2层前缀名字,一个4层前缀名字,分别与“com/baidu/movie/a.mp4/”前缀匹配,但布隆滤波器存在假阳性,还不能断定与此请求名字最长前缀匹配的前缀名字层数。
所述步骤B中的并行查找,是指同时查找,可用硬件实现,时间 复杂度为第m号布隆滤波器查找时间复杂度。
所述步骤E中的路由器默认端口,是指没有任何名字前缀与请求名字匹配,则该请求包会被从特殊端口转发。
一种基于请求名字流行度更新布隆滤波器的方法,所述方法包括:
步骤A、将前缀匹配成功的前缀名字保存在列表L中;
步骤B、当列表L中条目数量等于X时,取出所有前缀名字的前1层作为B-prefix,统计不同的B-prefix的个数,将每个B-prefix及其个数sum保存到映射表s<B-prefix,sum>中;然后,取出所有前缀名字的前两层作为B-prefix,重复以上步骤,一直取到前n层为止,n为层数最多的前缀名字的层数;
步骤C、将个数超过Y的B-prefix定义为流行度比较高的前缀名字的B-prefix,并删除它们在对应的布隆滤波器和Trie中的记录,重新组建新的布隆滤波器和Trie,将流行度较高的前缀名字插入到新的布隆滤波器和Trie中。
本发明实施例提供的技术方案带来的有益效果是:1、将所有名字前缀分割成二元组B-prefix与T-suffix。利用名字前缀的统计特性,即在37482913个的真实名字前缀中,前一层不相同的个数只有15527;在10913095个大于等于5层的真实名字前缀中,前五层不相同的只有329890个。随着名字前缀的变化,可以动态找出效果好的k,使得将所有名字前缀的前k层插入到布隆滤波器中。该技术方案较不分割名字前缀直接插入布隆滤波器,降低了布隆滤波器的插入条目个数, 大大降低了布隆滤波器发生冲突的可能性,节省了查找时间;较不分割名称前缀直接插入Trie,可以很好地解决名称前缀长而不定而引起的问题,不但提高了查找速度,而且还大大降低了内存的消耗;较适用于精确匹配的哈希函数法,它能高效率的解决哈希函数不能做到的前缀匹配。2、利用请求名称的流行度重构布隆滤波器和Trie。根据网络中大量的请求名称,可以完全自适应地统计出现频率较高的前缀名字,把这些名字存储在新的布隆滤波器和Trie中,这样使得原始布隆滤波器的成员变少,可以减少冲突发生概率;而且,新来的请求名称可以首先从流行度较高的前缀名字所在的布隆滤波器和Trie中进行前缀匹配,这样可以大大加快查找速度。3.此发明的扩展性很高。布隆滤波器的插入删除操作复杂度都是常数级别,只需将滤波器的几个位置的值做相应的改动;Trie的插入与删除则更为适应扩展,只需花费Ο(length)复杂度遍历Trie中的某一条枝干即可,其中length为T-suffix的长度。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的Bloom filter与Trie初始化流程图;
图2是本发明实施例一提供的Bloom filter结构示意图;
图3是本发明实施例一提供的Trie结构示意图;
图4是本发明实施例二提供的请求名字前缀匹配流程图;
图5是本发明实施例二提供的Bloom filter查询示意图;
图6是本发明实施例二提供的Trie查询示意图;
图7是本发明实施例二提供的流行度统计单元示意图;
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例一
如图1所示,为本发明实施例一提供的Bloom filter与Trie初始化流程图,具体如下:
步骤11、建立4个布隆滤波器,为本发明提供的Bloom filter结构示意图。每个布隆滤波器是长度为m的bitset,将bitset初始化为0。计算前缀名字的层数L,如果L小于等于m,则直接将前缀名字作为B-prefix,否则截取前m层作为B-prefix,后几层作为T-suffix。假设有k个哈希函数,用k个哈希函数把B-prefix计算成k个值v1=hash1(B-prefix),v2=hash2(B-prefix),……,vk=hashk(B-prefix),最后将布隆滤波器对应v1,v2,……,vk这k个位置的值置为1,完成插入。
如上所述,布隆滤波器会出现冲突,即计算一个前缀名字的 B-prefix的哈希值后,发现对应布隆滤波器的k个位置不全为零,即和其他前缀名字共用了一些位置。解决这种冲突的方法为:为布隆滤波器配备一个计数器count[m],将bloom转化成count_bloom。假设在布隆滤波器的第n个位置对应c个名字前缀,则count[n]=c;当删除布隆滤波器中一个条目时,如果对应count中的计数大于1,只需将count减1;如果count等于1的话,将count和布隆滤波器都置为0。这样可以解决布隆滤波器插入和删除引起的冲突。
步骤12、将T-suffix插入B-prefix对应的Trie中。用哈希函数计算得出B-prefix的哈希值,v=hash(B-prefix),把T-suffix插入Trie[v]中,并且将转发端口号存储在最后一个节点中。
如步骤11、步骤12所述,有如下4个前缀名字插入到布隆滤波器和Trie中,“www/baidu/com/entertainment/movie/a.avi/”,“www/baidu/com/entertainment/movie/b.mkv/”,“www/baidu/com/entertainment/pic/c.bmp/”,“www/baidu/com/entertainment/pic/d.jpg/”,分别将“www/baidu/com/entertainment/movie/”,“www/baidu/com/entertainment/pic/”插入布隆滤波器中,将“a.avi”、“b.mkv”、“c.bmp”、“d.jpg”,分别插入对应的Trie中,初始化结果示意图如图2,图3所示。
实施例二
本发明实施例二提供了一种基于名字路由请求名字前缀匹配方法,流程如图4所示,方法具体如下:
步骤13、计算请求名字的层数L,截取请求名字的前1层,前2层,……,前min(L,m)层,分别作为B-prefix_1,B-prefix_2,……,B-prefix_min(L,m),对应的剩余部分作为T-suffix_1,T-suffix_2,……,T-suffix_min(L,m),将B-prefix_1,B-prefix_2,……,B-prefix_min(L,m)并行的在对应的布隆滤波器中查找,查找结果从大到小存储在栈s中。
如图5所示,为本实施例提供的一个已经完成初始化的布隆滤波器示意图。在查找请求名字“www/baidu/cn/news/china/jiangsu/”的过程中,为了方便表述,取m=5,包括如下步骤:
取请求名字的前1层“www/”、前2层“www/baidu/”、前3层“www/baidu/cn/”、前4层“www/baidu/cn/news/”、前5层“www/baidu/cn/news/china/”,并行地在5个布隆滤波器里查询它们的存在性,在1号滤波器中查得“www/”存在;在2号滤波器中查得“www/baidu/”存在;在3号滤波器中查得“www/baidu/cn/”不存在;在4号滤波器中查得“www/baidu/cn/news/”存在;在5号滤波器中查得“www/baidu/cn/news/china/”。但是,实际上,“www/baidu/cn/news/china/”不存在于5号滤波器中,这个误差正是由布隆滤波器特性引起的,但是这样的误差发生的概率为:p=(1-e-kn/l)k,其中k为哈希函数的个数;n为布隆滤波器中插入元素的个数;l为布隆滤波器的长度,即bitset长度,由上式可以知道,只要保证较大的l, 发生这样误差的可能性就会很低。最后,则布隆滤波器查询结果存储在栈中,在此例中s存放的结果是:“1,2,4,5”。
步骤14、判断s是否为空。如果为空,则从默认端口转发;如果不为空,取出栈顶元素level,并对s做pop操作,执行步骤15;
步骤15、截取请求名字前level层作为B-prefix,level层以后的作为T-suffix,如果T-suffix不为空,则查询B-prefix对应的Trie是否包含T-suffix,包含则转发,不包含则执行步骤14;如果T-suffix为空,则查询B-prefix对应的Trie的root节点是否有转发端口,有则转发,无则执行步骤14。
第一个出栈的是“5”,则取请求名字
“www/baidu/cn/news/china/jiangsu/”的前5层,即
“www/baidu/cn/news/china/”,用哈希函数将
“www/baidu/cn/news/china/”计算成哈希值v1,在Trie[v1]中,root节点没有转发端口,则继续取栈顶元素“4”,截取请求名字的前4层,即
“www/baidu/cn/news/”,然后重复以上步骤,最后查得
“www/baidu/cn/news/”对应的Trie中有转发端口信息,则完成匹配。匹配示意图如图5,图6所示。
实施例三
本发明实施例提供了一种根据名字前缀流行度更新路由表的方法,具体如下:
步骤16、将前缀匹配成功的前缀名字保存在列表L中;
步骤17、当列表L中条目数量等于X时,取出所有前缀名字的前1层作为B-prefix,统计不同的B-prefix的个数,将每个B-prefix及其个数sum保存到映射表s<prefix,sum>中;然后,取出所有前缀名字的前2层作为B-prefix,重复以上步骤,一直取到前n层为止,n为层数最多的前缀名字的层数;
步骤18、将个数超过Y的B-prefix定义为流行度比较高的前缀名字的B-prefix,并删除它们在对应的布隆滤波器和Trie中的记录,重新组建新的布隆滤波器和Trie,将流行度较高的前缀名字插入到新的布隆滤波器和Trie中。
如图7所示,为本实施例提供的一个请求名字B-prefix流行度列表。在本例中,取X=200000,取Y=80000。则只有“www/baidu/com/movie/”可以被定义为流行度较高的前缀名字的B-prefix,所以,需将包含“www/baidu/com/movie/”的所有名字前缀从已建立好的Bloom filter和Trie中删除,建立新的Bloom filter和Trie,用来存放包含“www/baidu/com/movie/”的名字前缀。
需要说明的是:上述实施例提供的装置在前缀匹配时,仅以上述各功能进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里 不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
综上所述,本发明实施例存在以下特点:
1、本发明是以未来网络体系结构,内容为中心的网络为研究背景,解决名字路由的高效前缀匹配问题。
2、根据名字前缀的统计特性,自适应地调整k,将所有名字前缀分割成二元组B-prefix与T-suffix,其中B-prefix是名字前缀的前k层。
3、利用布隆滤波器与Trie相对应的原则存储B-prefix和T-suffix。可以满足匹配速度快,消耗内存低的未来网络体系的要求。
4、利用请求名字的流行度,对装置进行自适应调整,可以自适应的提高路由性能。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于名字路由前缀存储及匹配方法,其特征在于,路由前缀分解成二元组,分别进行存储和匹配。
2.如权利要求1所述方法,路由前缀二元组分别存储于Bloom filter单元和Trie单元,其特征包括:
A、将前缀名字分解B-prefix与T-suffix。其中,B-prefix为前缀名字的前m层,T-suffix为前缀名字后几层;
B、将B-prefix插入第m号布隆滤波器;将T-suffix插入B-prefix对应的Trie中;
C、如果前缀名字的层数n少于等于m,则将此前缀名字插入第n号布隆滤波器。
3.如权利要求2所述的方法,其特征在于,B-prefix为前缀名字的前m层,m由所有名字前缀的统计特性自适应地调整。
4.如权利要求2所述的方法,其特征在于,拥有相同层数的B-prefix对应一个布隆滤波器,例如,编号为4的布隆滤波器存储的前缀名字层数为4。
5.如权利要求2所述的方法,其特征在于,B-prefix对应的Trie,是指每个不同的B-prefix都对应一个Trie,用来存储T-suffix,T-suffix中的最后一个component所在的Trie节点中,存放着前缀名字的路由器转发端口号。
6.如权利要求1所述的方法,路由前缀匹配其特征在于:
步骤A、计算请求名字name的层数n,如果n小于等于m,则将name的前1层,前2层,……,前n层并行地在对应的布隆滤波器中查找,输出查找结果栈s;否则,执行步骤B;
步骤B、将name的前1层,前2层,前3层…前m层并行地在对应的布隆滤波器中查找,输出查找结果栈s;
步骤C、栈s如果为空,执行步骤E;如果不为空,则取栈A顶元素level,并且pop栈顶元素,取name前level层的component作为B-prefix,取name的level层之后的component作为T-suffix,在B-prefix对应的Trie中查找T-suffix是否存在,如果存在,取得转发端口号ethx,执行步骤D;如果不存在,执行步骤C;
步骤D、将请求包从路由器的ethx口转发;
步骤E、将请求包从路由器的默认端口转发。
7.如权利要求5所述的方法,其特征在于,步骤A中输出查找结果栈s,是指将查询结果为真的布隆滤波器的号码按从小到大的顺序存入空栈s中,比如,“www/baidu/movie/”,如果“www/”存在于1号布隆滤波器中,“www/baidu/”不存在于2号布隆滤波器中,“www/baidu/com/”存在于3号布隆滤波器中,则栈s中按从小到大存储的是:1和3,其中3为栈顶元素。
8.如权利要求5所述的方法,其特征在于,所述步骤B中的并行查找,是指同时查找,可用硬件实现,时间复杂度为第m号布隆滤波器的时间复杂度。
9.如权利要求5所述的方法,其特征在于,所述步骤E中的路 由器默认端口,是指没有任何前缀名字与请求名字匹配,则该请求包会被从某个固定端口转发。
10.如权利要求1所述的方法,其支持基于请求名字流行度的更新Bloom filter与Trie的方法,所述方法包括:
步骤A、将前缀匹配成功的前缀名字保存在列表L中;
步骤B、当列表L中条目数量等于X时,取出X个前缀名字的前1层作为B-prefix,统计B-prefix的个数,将每个B-prefix及其个数保存到s中;然后,取出X个前缀名字的前两层作为B-prefix,重复以上步骤,一直取到前n层为止,n为层数最多的前缀名字的层数;
步骤C、将个数超过Y的B-prefix定义为流行度比较高的前缀名字的B-prefix,并删除它们在对应的布隆滤波器和Trie中的记录,重新组建新的布隆滤波器和Trie,用于单独存放流行度较高的前缀名字。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310277108.0A CN103428093B (zh) | 2013-07-03 | 2013-07-03 | 一种基于名字路由前缀存储、匹配及更新方法与装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310277108.0A CN103428093B (zh) | 2013-07-03 | 2013-07-03 | 一种基于名字路由前缀存储、匹配及更新方法与装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103428093A true CN103428093A (zh) | 2013-12-04 |
CN103428093B CN103428093B (zh) | 2017-02-08 |
Family
ID=49652283
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310277108.0A Active CN103428093B (zh) | 2013-07-03 | 2013-07-03 | 一种基于名字路由前缀存储、匹配及更新方法与装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103428093B (zh) |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104579974A (zh) * | 2014-12-22 | 2015-04-29 | 湖南大学 | 面向ndn中名字查找的哈希布鲁姆过滤器及数据转发方法 |
CN104794158A (zh) * | 2015-02-09 | 2015-07-22 | 国家计算机网络与信息安全管理中心 | 一种界标窗口下域名数据重复检测快速索引方法 |
CN105721311A (zh) * | 2014-12-22 | 2016-06-29 | 帕洛阿尔托研究中心公司 | 用于使用信息中心网络中的链路状态信息进行有效的基于名称的内容路由的系统和方法 |
CN106209645A (zh) * | 2016-07-29 | 2016-12-07 | 北京邮电大学 | 一种数据包的起始查找节点确定方法及装置 |
WO2017184551A1 (en) * | 2016-04-19 | 2017-10-26 | Cisco Technology, Inc. | Just in time transcoding and packaging in ipv6 networks |
CN103873371B (zh) * | 2014-02-21 | 2017-11-28 | 北京邮电大学 | 一种名字路由快速匹配查找方法与装置 |
CN107454142A (zh) * | 2017-06-29 | 2017-12-08 | 北京邮电大学 | 一种内容路由器的非阻塞内容缓存方法及装置 |
CN107870925A (zh) * | 2016-09-26 | 2018-04-03 | 华为技术有限公司 | 一种字符串过滤方法和相关装置 |
CN108449387A (zh) * | 2018-02-24 | 2018-08-24 | 中国科学院信息工程研究所 | 内容分发网络中的内容节点以及内容分发方法 |
CN108667754A (zh) * | 2018-03-30 | 2018-10-16 | 中国科学院信息工程研究所 | 支持网络控制的内容分发网络中的交换机 |
CN109194574A (zh) * | 2018-09-20 | 2019-01-11 | 南通科技职业学院 | 一种IPv6路由查找方法 |
CN109495525A (zh) * | 2017-09-12 | 2019-03-19 | 华为技术有限公司 | 网络组件、解析内容标识的方法和计算机可读存储介质 |
CN109889449A (zh) * | 2019-02-03 | 2019-06-14 | 清华大学 | 低存储开销的分组转发方法及系统 |
CN111291058A (zh) * | 2020-03-17 | 2020-06-16 | 芯启源(南京)半导体科技有限公司 | 一种优化基于分层pc-trie结构存储LPM规则的方法 |
WO2021051431A1 (zh) * | 2019-09-18 | 2021-03-25 | 北京大学深圳研究生院 | 一种用于命名数据网络中网络节点的转发方法、装置、系统及存储介质 |
CN113328947A (zh) * | 2021-04-26 | 2021-08-31 | 中国科学院计算机网络信息中心 | 基于应用可控前缀扩展布隆过滤器的可变长路由查找方法及装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101005461A (zh) * | 2007-01-16 | 2007-07-25 | 中兴通讯股份有限公司 | 一种IPv6路由表查找、转发的方法 |
-
2013
- 2013-07-03 CN CN201310277108.0A patent/CN103428093B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101005461A (zh) * | 2007-01-16 | 2007-07-25 | 中兴通讯股份有限公司 | 一种IPv6路由表查找、转发的方法 |
Non-Patent Citations (1)
Title |
---|
YI WANG 等: ""Scalable Name Lookup in NDN Using Effective Name Component Encoding"", 《DISTRIBUTED COMPUTING SYSTEMS (ICDCS), 2012 IEEE 32ND INTERNATIONAL CONFERENCE ON》, 21 June 2012 (2012-06-21), pages 688 - 697, XP 032217911, DOI: doi:10.1109/ICDCS.2012.35 * |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103873371B (zh) * | 2014-02-21 | 2017-11-28 | 北京邮电大学 | 一种名字路由快速匹配查找方法与装置 |
CN104579974A (zh) * | 2014-12-22 | 2015-04-29 | 湖南大学 | 面向ndn中名字查找的哈希布鲁姆过滤器及数据转发方法 |
CN105721311A (zh) * | 2014-12-22 | 2016-06-29 | 帕洛阿尔托研究中心公司 | 用于使用信息中心网络中的链路状态信息进行有效的基于名称的内容路由的系统和方法 |
CN105721311B (zh) * | 2014-12-22 | 2020-09-11 | 思科技术公司 | 一种用于更新链路状态信息的方法及系统 |
CN104579974B (zh) * | 2014-12-22 | 2017-10-31 | 湖南大学 | 面向ndn中名字查找的哈希布鲁姆过滤器及数据转发方法 |
CN104794158A (zh) * | 2015-02-09 | 2015-07-22 | 国家计算机网络与信息安全管理中心 | 一种界标窗口下域名数据重复检测快速索引方法 |
CN104794158B (zh) * | 2015-02-09 | 2018-11-13 | 国家计算机网络与信息安全管理中心 | 一种界标窗口下域名数据重复检测快速索引方法 |
WO2017184551A1 (en) * | 2016-04-19 | 2017-10-26 | Cisco Technology, Inc. | Just in time transcoding and packaging in ipv6 networks |
CN106209645A (zh) * | 2016-07-29 | 2016-12-07 | 北京邮电大学 | 一种数据包的起始查找节点确定方法及装置 |
CN107870925A (zh) * | 2016-09-26 | 2018-04-03 | 华为技术有限公司 | 一种字符串过滤方法和相关装置 |
CN107454142A (zh) * | 2017-06-29 | 2017-12-08 | 北京邮电大学 | 一种内容路由器的非阻塞内容缓存方法及装置 |
CN107454142B (zh) * | 2017-06-29 | 2019-06-07 | 北京邮电大学 | 一种内容路由器的非阻塞内容缓存方法及装置 |
CN109495525A (zh) * | 2017-09-12 | 2019-03-19 | 华为技术有限公司 | 网络组件、解析内容标识的方法和计算机可读存储介质 |
CN108449387A (zh) * | 2018-02-24 | 2018-08-24 | 中国科学院信息工程研究所 | 内容分发网络中的内容节点以及内容分发方法 |
CN108667754A (zh) * | 2018-03-30 | 2018-10-16 | 中国科学院信息工程研究所 | 支持网络控制的内容分发网络中的交换机 |
CN109194574A (zh) * | 2018-09-20 | 2019-01-11 | 南通科技职业学院 | 一种IPv6路由查找方法 |
CN109889449A (zh) * | 2019-02-03 | 2019-06-14 | 清华大学 | 低存储开销的分组转发方法及系统 |
WO2021051431A1 (zh) * | 2019-09-18 | 2021-03-25 | 北京大学深圳研究生院 | 一种用于命名数据网络中网络节点的转发方法、装置、系统及存储介质 |
CN111291058A (zh) * | 2020-03-17 | 2020-06-16 | 芯启源(南京)半导体科技有限公司 | 一种优化基于分层pc-trie结构存储LPM规则的方法 |
CN111291058B (zh) * | 2020-03-17 | 2023-06-16 | 芯启源(南京)半导体科技有限公司 | 一种基于分层pc-trie结构的LPM规则存储方法 |
CN113328947A (zh) * | 2021-04-26 | 2021-08-31 | 中国科学院计算机网络信息中心 | 基于应用可控前缀扩展布隆过滤器的可变长路由查找方法及装置 |
CN113328947B (zh) * | 2021-04-26 | 2022-08-23 | 中国科学院计算机网络信息中心 | 基于应用可控前缀扩展布隆过滤器的可变长路由查找方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103428093B (zh) | 2017-02-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103428093A (zh) | 一种基于名字路由前缀存储、匹配及更新方法与装置 | |
Quan et al. | TB2F: Tree-bitmap and bloom-filter for a scalable and efficient name lookup in content-centric networking | |
US10445380B2 (en) | System and method for direct storage access in a content-centric network | |
CN103873371A (zh) | 一种名字路由快速匹配查找方法与装置 | |
JP5518135B2 (ja) | データセンター向けの拡張可能なマルチキャスト転送方法および装置 | |
EP2793436B1 (en) | Content router forwarding plane architecture | |
US10230639B1 (en) | Enhanced prefix matching | |
US8335780B2 (en) | Scalable high speed relational processor for databases and networks | |
US20070171911A1 (en) | Routing system and method for managing rule entry thereof | |
US20080192754A1 (en) | Routing system and method for managing rule entries of ternary content addressable memory in the same | |
WO2014127605A1 (zh) | 基于哈希表和tcam表的mac地址硬件学习方法及系统 | |
JP2004517519A (ja) | 高速インターネットプロトコルルートルックアップ遂行及びルーティング/フォワーディングテーブル管理のための装置及び方法 | |
US11652744B1 (en) | Multi-stage prefix matching enhancements | |
US20140114995A1 (en) | Scalable high speed relational processor for databases and networks | |
CN107248939B (zh) | 基于hash存储器的网络流高速关联方法 | |
CN107729053A (zh) | 一种实现高速缓存表的方法 | |
US20170012874A1 (en) | Software router and methods for looking up routing table and for updating routing entry of the software router | |
US11888743B1 (en) | Network device storage of incremental prefix trees | |
CN115086221B (zh) | 一种报文处理方法、装置、转发设备和存储介质 | |
CN102739550B (zh) | 基于随机副本分配的多存储器流水路由体系结构 | |
CN110851658B (zh) | 树形索引数据结构、内容存储池、路由器及树形索引方法 | |
CN104301227A (zh) | 基于tcam的高速低功耗ip路由表查找方法 | |
CN111611348A (zh) | 一种基于学习布隆过滤器的icn网络信息名字查找方法 | |
KR100493099B1 (ko) | 고속 인터넷프로토콜 라우터의 라우팅/포워딩 룩업 및라우팅 테이블 관리 | |
CN109495525B (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 |