TCAM在高速路由查找中的应用及其FPGA实现.docVIP

TCAM在高速路由查找中的应用及其FPGA实现.doc

  1. 1、本文档共6页,可阅读全部内容。
  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文档。上传文档
查看更多
TCAM在高速路由查找中的应用及其FPGA实现.doc

TCAM 在高速路由查找中的应用及其FPGA实现 2010-09-14 18:46:34   摘要:当前随着网络带宽的不断增加,对路由器转发速度的要求也越来越高。如何进行路由的快速查找目前成为限制报文快速转发的瓶颈,为了解决这一问题比较流行的方式是采用TCAM器件进行路由的快速查找。本文详细介绍了TCAM器件在高速路由查找中的应用及其管理算法,同时重点给出了TCAM器件的FPGA实现。   1 引言   路由器转发IP分组时,转发引擎需要在路由表中查找该IP报文中目的地址所对应的路由 信息,从而决定IP报文的转发方式。目前设计快速的路由查找方法已经成为提高路由器整体 性能的关键之一[1]。随着网络速率的提高,传统的基于软件的路由查找机制已经不能满足 要求,目前工业界中使用最多的硬件路由查找方法是使用内容寻址存储器(CAM)。但由于 路由查找具有最长前缀匹配的特点[2],人们又提出了另一种CAM实现机制—ternary CAM (TCAM),TCAM器件相对于CAM的优点是它所保存的表项在长度要求上非常灵活,可以在同 一个TCAM芯片中保存任意长度的关键字表项。但是它也有不足之处:第一、TCAM更为昂贵, 而且容量相对较小;第二、TCAM使用并行匹配比较方式,功耗较大。第三、TCAM需要保证前 缀较长的关键字保存在前缀较短的关键字之前,这种顺序关系使得TCAM关键字更新更为复 杂。本文介绍了TCAM在路由快速查找中的应用及其管理算法,同时利用FPGA设计实现了TCAM, 使得路由查找更为灵活,系统设计更加简单。   2 利用TCAM进行路由查找   图1是使用TCAM进行路由查找的示意图。表项长度是按路由前缀的长度降序排列。假设 为目的地址101.11.3.10的ip报文查找转发路径。TCAM同时将它保存的所有表项与关键字101.11.3.10进行匹配查找,表项A1,A2都与关键字匹配,但是TCAM返回地址最小的表项, 即A1。   路由表是动态的,也就是说路由表项会随着网络拓扑结构的不断变化而相应的增加或者 删除。一般来说,在路由更新的同时,路由查找是不能够进行的,在这段时间内报文需要缓 存在报文缓冲区内等待路由更新的完成,因此慢的路由更新对系统报文缓冲区的容量有很大 的要求,同时也会延长报文转发的时间。所以要尽可能的减小路由更新的时间。   由于TCAM需要维持所有的路由表项按照前缀长度有序,所以对于路由的动态更新来说, 效率就会比较低。以图1为例,假设现在需要在转发表中增加新的表项101.11.128/18,按照 表项组织的方式,新的表项应该保存在表项101.11.3/24(A1)和表项101.11/16(A2)之间, 但是目前在这两个表项之间没有空闲的表项空间,所以需要通过移动其它表项为新表项腾出 空间。下一小节我们给出一种较好的表项管理算法,可以有效降低表项更新的开销。   3 Prefix-length ordering constraint algorithm(PLO_OPT) 表项管理算法   TCAM要求所有的路由按照前缀长度降序排列,令Pj代表的是前缀长度为j的所有路由集 合,如果jk,那么所有Pj中的路由表项都应该保存在Pk中的路由表项之前。TCAM只要求前缀 长度集合块之间的顺序关系,对于每个前缀长度集合块内部各个路由前缀之间的顺序关系没 有严格规定。利用这一思想,文献[3]提出了PLO_OPT算法,算法实现如图2所示。当需要在 TCAM中加入长度为k(20≤k≤32)的路由前缀时,首先从长度21的前缀块开始,将前缀块的 第一项移动到最后一项(即TCAM的空闲表项区域),这样在长度为22的前缀块处就有了一个 空闲表项;然后将长度为22前缀块中的第一项移动到这一个空闲表项处,使得长度为23前缀 块中出现了空闲表项;以此类推,直到新加入表项所在的前缀块为止,那时就只需要将该新 表项加入到分配处的空闲表项处就可以了(8 ≤ k ≤ 20时情况类似)。显然,这种算法的复杂 度为W/2(其中W是路由前缀的长度)。   在图2的例子中,只需要移动A5、A4、A2三个表项就可以在P1与P2之间腾出空间并且仍 然保持TCAM前缀长度有序。为了进一步提高性能,可以为每一个前缀长度集合块预留一部分 空间,当然空间的分配最好要根据路由前缀的分布进行,因为一般情况下前缀长度大于24 的情况非常少[4],所以比较简单通用的方法是假定前缀服从正态分布。   4 TCAM功能介绍及其FPGA实现   TCAM基本框图如图3所示。与RAM相似,TCAM是将表项存储在一个阵列中。每个表项的宽 度称为字宽,TCAM中表项的个数称为TCAM

文档评论(0)

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

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档