使用硬件辅助散列表的ccn路由的制作方法_3

文档序号:9923777阅读:来源:国知局
待处理,则系统前进到下一名称组成(操作226),返回操作204以开始下一名称组成的插入过程。
[0041]如果长度小于或等于预定大小(例如41字节)(判断206),系统通过例如对名称组成求散列压缩名称组成,获得压缩密钥K。(操作212)。系统在散列表中使用压缩密钥K。创建表项(操作214)。如果系统在插入表项时基于压缩密钥没有检测到冲突(判断216),则系统插入原始的未压缩字符串到特定索引的字符串表,并在转发表中在表项的结果中包括值设置为特定的索引值的字符串标识符(SID)(操作222)。SID是存储未压缩密钥值的表的指针。如果在插入表项时基于压缩密钥确实检测到冲突(判断216),系统在表项中设置指示冲突的结果标志(操作218)。系统然后生成新查询密钥,在冲突表中使用新查询密钥创建表项(操作220)。系统如上文描述的执行操作222。随后,系统确定是否还有任何名称组成仍待处理(判断224),并且如果有任何名称组成待处理,则前进到下一名称组成(操作226)以开始下一名称组成的插入过程(操作204)。
[0042]使用硬件辅助散列表查询表项
[0043]图3A呈现根据本发明的实施例对基于硬件辅助散列表在转发表中查询表项的方法300进行图解说明的流程图。操作中,系统接收具有HSVLI的包(操作302)。系统按顺序(例如从最概括级到最具体级处理每个名称组成)解析HSVLI,获得每个名称组成的查询表项结果,并存储每个匹配的结果。最具体级名称组成的匹配结果是最长前缀匹配,包含包的转发信息。根据名称组成的数目最长匹配因为是最具体的因此被认为是最好的。系统确定当前名称组成的长度(操作304)。如果长度小于或等于预定大小(例如41字节)(判断306),则系统在转发表中使用密钥基于直接作为字符串的PEID和名称组成查询值(操作308)。如果没有找到匹配项,则系统返回当前存储于暂时存储R中的匹配项(操作330)。如果找到匹配项,则系统在暂时存储R中存储匹配项(操作312)。如上文描述的,匹配结果包含用来链接散列表查询的唯一 EID。系统确定是否有任何名称组成待处理(判断314)。如果没有任何名称组成待处理,则系统返回当前存储于暂时存储R中的匹配项(操作330)。如果有更多的名称组成待处理(判断314),则系统来到下一名称组成,将下一名称组成的PEID设置成当前结果的EID (操作316)。随后,系统返回操作304,开始下一名称组成的查询过程。
[0044]如果长度大于预定大小(例如41字节)(判断306),系统通过例如对名称组成求散列压缩名称组成,获得压缩密钥(K。)(操作318)。系统在转发表中使用密钥基于PEID和压缩密钥K。查询值(操作320)。如果没有找到匹配项,则系统返回当前存储于暂时存储R中的匹配项(操作330)。如果找到匹配项,则系统确定结果的字符串标识符(例如索引值),并从字符串中检索与字符串标识符(SID)的索引值对应的表项(操作324)。如上文描述的,SID是存储未压缩值的表的指针。系统在暂时存储R中存储匹配结果(操作326)。如上文描述的,匹配结果包含用来链接散列表查询的唯一EID。系统基于压缩密钥确定查询中是否存在冲突(判断328)。如果基于压缩密钥在查询中检测到冲突,则操作如图3B描述的继续。如果没有检测到任何冲突,则系统确定是否有任何名称组成待处理(判断314)。如果没有任何名称组成要处理,则系统返回当前存储于暂时存储R中的匹配项(操作330)。如果有更多的名称组成待处理,则系统来到下一名称组成,将下一名称组成的PEID设置成当前结果的EID (操作316)。随后,系统返回操作304,开始下一名称组成的查询过程。
[0045]使用硬件辅助散列表解决冲突
[0046]图3B呈现根据本发明的实施例对基于硬件辅助散列表解决转发表中遇到的查询冲突的方法350的流程图。操作中,系统确定暂时存储结果Rpending(操作352),其包含来自关于图3A描绘和描述过程的最近的查询表项。系统可以确定表项来源于字符串表(操作354)。系统将来自兴趣的包存储器的名称组成字符串与来自字符串表的表项比较(操作356) ο如上文讨论的,字符串表表项基于结果中包括的SID定位,其中,SID是存储未压缩密钥值的表的指针。如果字符串不匹配(指示散列表项不匹配)(判断358),则系统返回R中存储的匹配项(包含由图3A中的操作确定的前一名称组成的转发信息)。如果字符串匹配(判断358),则系统存储来自R中Rpending的结果(操作360),返回R,继续处理HSVLI (操作362),继续图3A的操作314。
[0047]系统还可以基于结果中指示冲突的标志确定Rlrending中的表项指示冲突(操作366)。系统通过应用散列函数生成新查询密钥(操作368),该散列函数不同于获得压缩密钥施加的散列函数(图3A中的操作318),与插入时生成新查询密钥施加的散列函数相同(如图2的操作220)。系统在冲突表中使用新查询密钥查询结果(操作370),在暂时存储R中存储冲突表结果(操作376)。随后,系统将R返回图3A的操作314以继续处理HSVLI (操作 362)ο
[0048]硬件辅助散列表的示例性格式
[0049]图4A呈现根据本发明的实施例描绘具有密钥的散列表数据结构400的格式的表,其中密钥包括大小为9字节的值。数据结构400代表转发散列表中的表项,包括散列密钥420和表项的结果422。散列密钥420可以包括3字节父表项标识符(PEID)字段402、2字节类型字段404、2字节长度字段406和9字节值字段408。PEID 402包含标识符,该标识符设置成初始值(例如O)随后在查询过程中用来自父名称组成的唯一表项标识符更新。结果422可以包括2字节标志字段410、3字节表项标识符(EID)字段412和转发表项,转发表项可以包括2字节槽位图字段414和3字节路由标识符(RID)字段416。标志410可以包括专用于网络处理器的一组标志(例如EZChip NP4网络处理器,后面称作“NP4”),并且可以指示转发散列表中的冲突。EID 412是由控制面分配的唯一标识符。操作中,系统可以在初始查询之后用前一查询的EID值更新查询的PEID,链接转发散列表中的查询,如关于图2和图3A描述的。转发表(槽位图414和RID 416)允许多播转发兴趣。例如,槽位图414可以指示出口 NP4身份。每个线路接口卡(line card)可以具有两个NP4网络处理器。结果,槽位图414指示出口 NP4而不是线路接口卡。RID 416是由控制软件创建的指示每个线路接口卡上的出口端的唯一标识符。控制软件可以在每个出口 NP4上创建阵列表项,该阵列表项由RID索引,指示发送兴趣通过的准确端口。在一些实施例中,多个路由可以共用相同的出口组,并使用相同的RID,而在其它实施例中,给每个路由分配一个RID。数据结构400具有行长度26,其包括16字节的散列密钥420和10字节的结果422。
[0050]图4B呈现根据本发明的实施例描绘具有密钥的散列表数据结构420的格式的表,其中密钥包括大小为21字节的值。数据结构420代表转发散列表中的表项,包括散列密钥430和表项的结果432。数据结构420包含与数据结构400类似的字段(例如散列密钥430包括PEID 402、类型404、长度408和值字段428 ;结果432包括标志410、EID 412、位图414和RID 416)。由数据结构420表示的表项包含值字段428,例如具有长度在10和21字节之间的字符串。数据结构420具有38字节的行长度,包括28字节的散列密钥430和10字节的结果432。
[0051]图4C呈现根据本发明的实施例描绘具有密钥的散列表数据结构430的格式的表,其中密钥包括大小为41字节的值。数据结构430包括与数据结构400类似的字段(例如散列密钥440包括PEID 402、类型404、长度408和值字段438 ;结果432包括标志410、EID412、位图414和RID 416)。由数据结构430表示的表项包含值428,例如长度在22和41字节之间的字符串。数据结构430具有58字节的行长度,包括48字节的散列密
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1