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

路由器中的硬件IP路由表查找技術.docVIP

  1. 1、本文档共13页,可阅读全部内容。
  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文档。上传文档
查看更多
路由器中的硬件IP路由表查找技術

路由器中的硬件IP路由表查找技术Internet的迅速发展给我们的生活带来了巨大的变化。随之而来的是网络流量的迅速增长。网络流量的增长对于Internet上的路由器来说是一个很大的挑战,特别是核心路由器。它需要高速有效的包调度.转发和路由策略。本文针对路由器的路由查找,提出了一种高效的.便于用硬件实现的技术。      1. 路由器的体系结构       图1给出了一般路由器的逻辑体系结构。它主要由下面几部分组成 :路由引擎、转发引擎、 路由表、网络适配器和相关的逻辑电路等。转发引擎负责把从一个网络适配器来的数据包转发到另一个网络适配器出去。IP协议,包括对路由表的查找,构成了转发引擎中最主要的部分。由于每个通过路由器并需要其转发的数据包都要对路由表进行查找,所以路由表的查找效率如何往往决定了整个路由器的性能。路由引擎则包括了高层协议,特别是路由协议,它负责对路由表的更新。由于路由引擎不涉及通过路由器的数据通路,故它可用通用的CPU代替。      2.硬件路由表的数据结构设计     一般路由器中路由表的每一项至少有这样的信息:目标地址、网络隐码、下一跳地址。如果对每一个IP地址都要一个表项,那么需要占用很大的2323*4字节的存储器,而且其中必定有很多的表项没有被使用,这就会造成极大的资源浪费。     为了用硬件实现路由表的查找,查找算法需要满足如下的条件:     1) 实时的实现路由表的查找;     2) 有效的实现路由表的插入和删除;     3) 提供有效的最长前缀匹配;     4) 具有良好的可扩展性;     5) 支持广播和组播;     6) 有效的对Memory进行利用;     7) 硬件上容易实现,并具有良好的性能 。     我们考虑,如果在对路由表的查找中,把子网隐码和IP地址结合起来,对IP地址进行相应的分段,并把它们相连。这样在路由表的表项中,只有IP地址的一部分及其相应的隐码部分,可以实现良好的可扩展性,只要对Memory进行有效的管理,可以灵活的动态的实现对路由的插入和删除。鉴于此,我们设计该表的结构(如下面的表一所示 ):           它的思想是:把32位IPv4地址主要分成4部分,每部分8位。在该结构中,Address-part[0-4]是IP地址中的一部分,Mask-part[0-4]是相应的掩码部分。Hit-next[0-4]是需要查找的目标IP地址与掩码部分相与后,与Address-part一致时所要查找的下一路由项所在地址的指针。,Miss-hit[0-4]则是相互不一致时,下一路由项所在地址的指针。Shift位则用于判断是否需要对IP地址中的下8位进行查找和判断。它只有在当前的8位IP地址与目标地址中相应的8位一致时,才会被置位。Stop位用于判断是否还需进行查找。它在IP地址查找结束时被置位,或没有比当前项所对应的IP地址更长的路由表项时被置位。     图2就是一个表1的例子 :     在该例子中,每一方框中上面一行表示相应的IP地址部分和隐码部分。下面一行表示相关的隐码部分的二进制表示。 相应的查找算法如下:   /* 查找算法开始 */   search = TRUE ;   WHILE ( search ) {   masked_key = key ( entry -mask_part ) ;   result = ( entry -address_part ) = = masked_key   IF ( result = = TRUE ) {   best_match = entry ;   entry = entry -hit_next;   }ELSE{   entry = entry -miss_next;   IF ( entry -stop = = TRUE ) search = FALSE;   }   }   RETURN best_match ;   /* 查找算法结束 */        为了实现有效的插入和删除,我们还要在路由表的数据结构中再另外添加几个域 :parent指针(指向本结点的父结点),路由信息(routeinfo)等。它们的用途是在路由表的查找过程中,特别是在指针的回溯(pointer reversal)中,可以大大的节省查找时间。由于IP路由的插入和删除比较复杂。我们只是粗略得说明一下。   IP路由的插入:   /* 插入算法开始 */   /* 先用上面提到的查找算法找出best-match */   best_match = search ( new_entry );   /* 确定需要加入的路由中没有被best-match包括的那几位 */   for ( count = first_unm

文档评论(0)

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

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

1亿VIP精品文档

相关文档