【技术实现步骤摘要】
一种名字查找方法和网络设备
本申请涉及通信
,尤其涉及一种名字查找方法和网络设备。
技术介绍
与当前互联网以主机为中心的网络服务器模式不同,命名数据网络(Named-DataNetwork,NDN)采用以内容为中心的网络服务模式,更符合网络用户对内容的分发与获取的主流需求,不仅可以提升互联网的可伸缩性和安全性,而且还可以增加移动性支持和容错能力。NDN采用基于层次化名字的数据包转发算法,即通过依次查找内容缓存表(ContentStore,CS)、兴趣记录表(PendingInterestTable,PIT)、转发表(ForwardingInformationBase,FIB)等进行数据包的路由转发。NDN名字查找算法是NDN数据包转发的关键,其面临查找和更新吞吐量等性能的挑战。其主要原因是,NDN名字查找算法中待查找的名字长度不固定且无限制大小,采用基于层次化名字的最长前缀匹配,会导致NDN名字查找复杂且低效。例如命名数据网络转发程序(NamedDataNetworkingForwardingDaemon,NFD)算法是当前NDN项目研究提出的NDN转发程序中所使用的名字查找算法。其设计实现基于哈希表。图1为NFD算法的数据结构设计。该算法使用单个哈希表存储各层次名字前缀,查找名字时从最长层次开始,首先对要查询的名字前缀进行相应长度的截取,然后在哈希表中查找截取后的名字前缀。若无匹配结果,则将截取长度逐步递减,继续进行查找,直至完成匹配,由此实现最长前缀匹配。再例如线性搜索(LinearSearch,LS)算法的设计也是基于链式哈希表,如图2所示,该 ...
【技术保护点】
1.一种名字查找方法,其特征在于,应用于二叉树类型的数据结构,所述二叉树中的每个结点对应一个哈希表,不同的哈希表对应不同层次长度的字段,每个所述哈希表中包括至少一个哈希桶,每个所述哈希桶中包括至少一个存储位置,每个存储位置包括字段的指纹、计数器以及指针,该字段的层次长度等于该存储位置所在的当前结点的层次总数;所述计数器的计数用于指示第一字段集合中与所述计数器所在的存储位置的指针指向的字段相同的字段数量,所述第一字段集合包括将所述计数器所在的当前结点的第一子树中的结点对应的第二字段集合按照所述当前结点的层次总数截取后的字段,所述第一子树中每个结点的层次总数大于所述当前结点的层次总数;所述指针指向当前存储位置对应的字段和下一跳端口信息,所述方法包括:网络设备从所述二叉树的根结点开始查找第一名字前缀,确定当前结点的哈希表中是否存在第一存储位置,所述第一存储位置的指针指向的字段与将所述第一名字前缀按照所述当前结点的层次总数截取后的字段匹配;若确定存在所述第一存储位置,则所述网络设备确定所述第一存储位置对应的计数器的计数;若所述计数器的计数在第一范围内,则所述网络设备确定所述第一存储位置的指针指 ...
【技术特征摘要】
1.一种名字查找方法,其特征在于,应用于二叉树类型的数据结构,所述二叉树中的每个结点对应一个哈希表,不同的哈希表对应不同层次长度的字段,每个所述哈希表中包括至少一个哈希桶,每个所述哈希桶中包括至少一个存储位置,每个存储位置包括字段的指纹、计数器以及指针,该字段的层次长度等于该存储位置所在的当前结点的层次总数;所述计数器的计数用于指示第一字段集合中与所述计数器所在的存储位置的指针指向的字段相同的字段数量,所述第一字段集合包括将所述计数器所在的当前结点的第一子树中的结点对应的第二字段集合按照所述当前结点的层次总数截取后的字段,所述第一子树中每个结点的层次总数大于所述当前结点的层次总数;所述指针指向当前存储位置对应的字段和下一跳端口信息,所述方法包括:网络设备从所述二叉树的根结点开始查找第一名字前缀,确定当前结点的哈希表中是否存在第一存储位置,所述第一存储位置的指针指向的字段与将所述第一名字前缀按照所述当前结点的层次总数截取后的字段匹配;若确定存在所述第一存储位置,则所述网络设备确定所述第一存储位置对应的计数器的计数;若所述计数器的计数在第一范围内,则所述网络设备确定所述第一存储位置的指针指向的字段为待查找的所述第一名字前缀;若所述计数器的计数在第二范围内,则所述网络设备向所述当前结点的第一子树继续查找所述第一名字前缀,所述第一范围与所述第二范围不存在交集。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:若确定不存在所述第一存储位置,则所述网络设备向所述当前结点的第二子树继续查找所述第一名字前缀,所述第二子树中每个结点的层次总数小于所述当前结点的层次总数。3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:若所述计数器的计数在所述第二范围内,所述第一存储位置的指针中的下一跳端口信息为空,则所述网络设备在所述当前结点的第一子树中未查找到所述第一名字前缀时,向所述当前结点的第二子树继续查找所述第一名字前缀。4.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:若所述计数器的计数在第二范围内,所述第一存储位置的指针中的下一跳端口信息不为空,则所述网络设备在所述当前结点的第一子树中未查找到与所述第一名字前缀时,确定所述第一存储位置的指针指向的字段为待查找的所述第一名字前缀。5.根据权利要求1-4任一项所述的方法,其特征在于,所述第一范围的计数为0,所述第二范围的计数大于0。6.根据权利要求5所述的方法,其特征在于,所述方法还包括:所述网络设备需在所述二叉树中插入第二名字前缀时,从所述二叉树的根结点开始尝试插入所述第二名字前缀;其中,若所述当前结点的层次总数大于所述第二名字前缀的层次长度,则所述网络设备向所述当前结点的第二子树的结点尝试插入所述第二名字前缀;若所述当前结点的层次总数等于所述第二名字前缀的层次长度,则所述网络设备确定所述当前结点的哈希表中是否存在第二存储位置,所述第二存储位置的指针指向的字段与所述第二名字前缀匹配;若存在,且所述第二存储位置的计数器的计数大于0,所述第二存储位置的指针指向的下一跳端口信息为空,则所述网络设备建立所述第二存储位置的指针与所述下一跳端口信息的对应关系;若不存在,则所述网络设备在所述当前结点的哈希表中确定第三存储位置,建立所述第三存储位置的指针与所述第二名字前缀以及下一跳端口信息的对应关系,所述第三存储位置的指针指向的下一跳端口信息不为空,并将所述第三存储位置对应的计数器置为0;若所述当前结点的层次总数小于所述第二名字前缀的层次长度,则所述网络设备按照所述当前结点的层次总数截取所述第二名字前缀,并在所述当前结点的哈希表中查找是否存在第四存储位置,所述第四存储位置的指针指向的字段与截取后的所述第二名字前缀匹配,若存在,则所述网络设备将所述第四存储位置对应的计数器的计数加1;若不存在,则所述网络设备在所述当前结点的哈希表中确定第五存储位置,建立所述第五存储位置的指针与截取后的所述第二名字前缀以及下一跳端口信息的对应关系,所述第五存储位置的指针指向的下一跳端口信息为空,并将所述第五存储位置对应的计数器置为1;所述网络设备继续向所述当前结点的第一子树的结点尝试插入所述第二名字前缀。7.根据权利要求5所述的方法,其特征在于,所述方法还包括:所述网络设备需在所述二叉树中删除第三名字前缀时,从所述二叉树的根结点开始尝试删除所述第三名字前缀;其中,若所述当前结点的层次总数大于所述第三名字前缀的层次长度,则所述网络设备向所述当前结点的第二子树的结点尝试删除所述第三名字前缀;若所述当前结点的层次总数等于所述第三名字前缀的层次长度,则所述网络设备确定所述当前结点中是否存在第六存储位置,所述第六存储位置的指针指向的字段与所述第三名字前缀匹配;若存在,且所述第六存储位置的计数器的计数为0,则所述网络设备删除所述第六存储位置,或,若存在,且所述第六存储位置的计数器的计数大于0,且所述第六存储位置的指针指向的下一跳端口信息不为空,则所述网络设备将所述第六存储位置的指针指向的下一跳端口信息置为空;若所述当前结点的层次总数小于所述第三名字前缀的层次长度,则所述网络设备按照所述当前结点的层次总数截取所述第三名字前缀,并在所述当前结点的哈希表中查找是否存在第七存储位置,所述第七存储位置的指针指向的字段与截取后的所述第三名字前缀匹配,若存在,且所述第七存储位置的计数器的计数大于0,所述第七存储位置的指针指向的下一跳端口信息为空,则所述网络设备将所述第七存储位置对应的计数器的计数减1,并在减至0时删除所述第七存储位置,或,若存在,且所述第七存储位置的计数器的计数大于0,所述第七存储位置的指针指向的下一跳端口信息不为空,则所述网络设备将所述第七存储位置对应的计数器的计数减1;所述网络设...
【专利技术属性】
技术研发人员:黄昆,王兆华,谢高岗,
申请(专利权)人:华为技术有限公司,
类型:发明
国别省市:广东,44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。