网站大量收购独家精品文档,联系QQ:2885784924

路由器原理与设计-2010-lesson4-高速IP查表算法.pptVIP

路由器原理与设计-2010-lesson4-高速IP查表算法.ppt

  1. 1、本文档共60页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
路由器查找引擎的设计要求 面向低成本的优化技术十分重要 各种转发表的查找能够共享存储器,对可变长度查找支持灵活,可与其他应用(统计计数器、报文深度检查等)共享存储器 对查找各种不同的表项可以有不同的性能要求,每个表的大小可灵活伸缩 增量修改和in-place修改(不能采用standby修改) RIB表和FIB表采用相同的组织方式和查表方法 具有确定的最坏情况的性能 相关研究(1) Unibit Tries 扩展Tries Lulea方法 相关研究(2) Unibit Trie 每次查找1bit 具有最好的存储和更新性能 相关研究(3) 扩展Tries 每次使用n bit进行查找,n为步长 前缀扩展 以n=3为例,1*可扩展为100、101、110和111 相关研究(4) 扩展Tries示意图 每一项都包含前缀和指针 相关研究(5) Leaf pushing 示意图 每一项包含前缀或指针 相关研究(6) Lulea方法(1) 节点采用位向量(bitmap)压缩存储开销 0代表本项与前一项相同 Leaf pushing方法 相关研究(7) Lulea方法(2) 缺点是前缀的插入速度慢,主要由于leaf pushing造成 在根部插入前缀P0,该前缀信息可能需要推到数千个叶结点,需要上千次更新 Tree Bitmap算法基于的观察(1) Multibit节点(代表多层unibit节点)有2个功能:指向其孩子multibit节点以及保存下一跳指针(对于最长前缀匹配落在本节点内部的情况),而这两个功能是相对独立的。 存储器采用burst的访问技术,每次访问存储器的数据大小,例如SDRAM每次可burst32字节,因此multibit节点的大小可针对存储器的burst大小进行优化 Tree Bitmap算法基于的观察(2) 硬件可在一个时钟周期内处理复杂的bitmap。由于处理器处理速度与访存速度相差很大,软件处理复杂bitmap的时间相对访存来说也不算大 要提高更新的性能,trie节点的大小不能太大,最好处理每个trie节点只使用一次访存 节点的大小最好是2的次幂,最好是8字节的整数倍 Tree Bitmap算法思想(1) 节点所有子节点连续存储(节约指针数目) Tree Bitmap算法思想(2) 节点采用2个bitmap分别保存前缀信息和子节点信息 Tree Bitmap算法思想(3) 减小节点大小,一次burst访问即得到节点信息 外部子节点信息bitmap 子节点指针 内部前缀信息bitmap 指向前缀信息块(result block)的指针 Result block使查找每级节点的访存次数增加到2次(读节点信息和读相应的result block信息) 采用lazy的result block访问方式,查找过程保存当前result block,只有全部查找结束才访问result block Tree Bitmap算法思想(4) Result block的组织 result block大小是节点大小的偶数倍 每个节点可能使用多个result block 多个result block连续存放 根据result指针和前缀bitmap可迅速定位到相应的result block Tree Bitmap算法工作过程(1) 第一步:查找内部bitmap 以下过程可由硬件并行执行,最后选择最长匹配 用111查找内部bitmap,命中0,说明FIB中无111*前缀 用11*查找内部bitmap,命中1,说明FIB中有11*前缀 根据命中1的位置,计算result block中下一跳指针的位置(前面有多少个1),并记录 输入地址1110111 Tree Bitmap算法工作过程(2) 第二步:查找外部bitmap 用111查找命中1,表示有子节点 bitmap中在其之前有2个1,因此子节点地址为子节点基地址+2 根据计算出的子节点地址读出子节点数据 输入地址1110111 Tree Bitmap算法工作过程(3) 重复叠代前两步,直到处理的节点不再有子节点 处理中若有新的result指针记录,覆盖前面记录 本例中P7的结果记录会覆盖P2的结果记录 最后从记录的result block中读出下一跳信息的指针 输入地址1110111 Tree Bitmap算法的优化(1) 主要优化技术 初始阵列优化 端节点优化 Bitmap分离 节点分割 CAM节点 Tree Bitmap算法的优化(2) 初始阵列优化 用索引的前8项直接查表,找到后续节点的入口 减小树搜索的级数 初始阵列可存放在片内RAM中 初始阵列过大虽然可提高性能,但会增加更新复杂度 0 1 255 Tree Bitmap算法的优化(3) 端节点优化 只含一个前缀信息的节点

文档评论(0)

jdy261842 + 关注
实名认证
文档贡献者

分享好文档!

1亿VIP精品文档

相关文档