路由器中的硬件IP路由表应用解析.doc

上传人:cn****1 文档编号:542664709 上传时间:2023-04-25 格式:DOC 页数:6 大小:58KB
返回 下载 相关 举报
路由器中的硬件IP路由表应用解析.doc_第1页
第1页 / 共6页
路由器中的硬件IP路由表应用解析.doc_第2页
第2页 / 共6页
路由器中的硬件IP路由表应用解析.doc_第3页
第3页 / 共6页
路由器中的硬件IP路由表应用解析.doc_第4页
第4页 / 共6页
路由器中的硬件IP路由表应用解析.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《路由器中的硬件IP路由表应用解析.doc》由会员分享,可在线阅读,更多相关《路由器中的硬件IP路由表应用解析.doc(6页珍藏版)》请在金锄头文库上搜索。

1、路由器中的硬件IP路由表应用解析1. 路由器的体系结构图1给出了一般路由器的逻辑体系结构。它主要由下面几部分组成 :路由引擎、转发引擎、路由表、网络适配器和相关的逻辑电路等。转发引擎负责把从一个网络适配器来的数据包转发到另一个网络适配器出去。IP协议,包括对路由表的查找,构成了转发引擎中最主要的部分。由于每个通过路由器并需要其转发的数据包都要对路由表进行查找,所以路由表的查找效率如何往往决定了整个路由器的性能。路由引擎则包括了高层协议,特别是路由协议,它负责对路由表的更新。由于路由引擎不涉及通过路由器的数据通路,故它可用通用的CPU代替。2硬件路由表的数据结构设计一般路由器中路由表的每一项至少

2、有这样的信息:目标地址、网络隐码、下一跳地址。如果对每一个IP地址都要一个表项,那么需要占用很大的2323*4字节的存储器,而且其中必定有很多的表项没有被使用,这就会造成极大的资源浪费。为了用硬件实现路由表的查找,查找算法需要满足如下的条件:1) 实时的实现路由表的查找;2) 有效的实现路由表的插入和删除;3) 提供有效的最长前缀匹配;4) 具有良好的可扩展性;5) 支持广播和组播;6) 有效的对Memory进行利用;7) 硬件上容易实现,并具有良好的性能 。我们考虑,如果在对路由表的查找中,把子网隐码和IP地址结合起来,对IP地址进行相应的分段,并把它们相连。这样在路由表的表项中,只有IP地

3、址的一部分及其相应的隐码部分,可以实现良好的可扩展性,只要对Memory进行有效的管理,可以灵活的动态的实现对路由的插入和删除。鉴于此,我们设计该表的结构(如下面的表一所示 ):点击查看大图它的思想是:把32位IPv4地址主要分成4部分,每部分8位。在该结构中,Address-part0-4是IP地址中的一部分,Mask-part0-4是相应的掩码部分。Hit-next0-4是需要查找的目标IP地址与掩码部分相与后,与Address-part一致时所要查找的下一路由项所在地址的指针。,Miss-hit0-4则是相互不一致时,下一路由项所在地址的指针。Shift位则用于判断是否需要对IP地址中的

4、下8位进行查找和判断。它只有在当前的8位IP地址与目标地址中相应的8位一致时,才会被置位。Stop位用于判断是否还需进行查找。它在IP地址查找结束时被置位,或没有比当前项所对应的IP地址更长的路由表项时被置位。图2就是一个表1的例子 :在该例子中,每一方框中上面一行表示相应的IP地址部分和隐码部分。下面一行表示相关的隐码部分的二进制表示。 相应的查找算法如下:1 查找算法开始 */ 2 3 search = TRUE ; 4 5 WHILE ( search ) 6 7 masked_key = key & ( entry -mask_part ) ; 8 9 result = ( entry

5、 -address_part ) = = masked_key 10 11 IF ( result = = TRUE ) 12 13 best_match = entry ; 14 15 entryentry = entry -hit_next; 16 17 ELSE 18 19 entryentry = entry -miss_next; 20 21 IF ( entry -stop = = TRUE ) search = FALSE; 22 23 24 25 26 27 RETURN best_match ; 28 29 查找算法结束 */ 为了实现有效的插入和删除,我们还要在路由表的数据

6、结构中再另外添加几个域 :parent指针(指向本结点的父结点),路由信息(routeinfo)等。它们的用途是在路由表的查找过程中,特别是在指针的回溯(pointer reversal)中,可以大大的节省查找时间。由于IP路由的插入和删除比较复杂。我们只是粗略得说明一下。IP路由的插入:30 /*插入算法开始 */ 31 32 /* 先用上面提到的查找算法找出best-match */ 33 34 best_match = search ( new_entry ); 35 36 /* 确定需要加入的路由中没有被best-match包括的那几位 */ 37 38 for ( count = f

7、irst_unmatched_bit ; count = sizeof ( new_entry) ; 39 40 count+= sizeof ( address_part ) 41 42 /* 创建新的结点 */ 43 44 create new node ; 45 46 /* 将该结点连入best_match的hit_next */ 47 48 link node into hit branch of best_match ; 49 50 51 52 /*插入算法结束 */ IP路由的删除要分几种情况讨论 。如 best_match 是叶子结点 ,best_match的hit_next指针

8、为空, best_match的miss_next指针为空 和hit_next指针和miss_next指针都不为空等四种情况。这里就不再讨论。3路由表查找的硬件实现:图3就是对应与上面提及的路由表结构的IP路由表查找的硬件实现(简称为路由卡)的系统框图。在路由卡中,主要有IP地址,状态机,路由信息,Memory,译码器,掩码器,比较器,地址寄存器组成。IP地址用于保存所要查找的目标地址。状态器用于控制IP路由表的查找。路由信息就是我们所要查找的信息。它的工作原理是这样的:当路由器从某一个网络适配器中接受http:/ 的SRAM存储器(所需容量为6*123k*8bit)。除了使用ISA总线上提供的

9、总线外,本身还带了33M的晶振。对某一路由表项的查找,最多只需32步查找。在最坏情况下,共需32次查找,查找时间为:32* 1 /(33*106) 9.7 * 10 -7秒此时每秒可查找 1/(9.7 * 10 -7) 1.03 * 106次虽然该路由卡是基于ISA总线,但平均来说,该路由卡的查找速率为每秒8百万次。这也从另一方面说明该路由卡的设计是可行的。针对网络流量的增加,及对路由器性能要求的提高,本文从硬件的角度对IP路由查找算法用硬件实现做了一系列的分析,并提出了相应的便于用硬件实现的IP路由表的数据结构。同时对该路由卡的性能进行了分析。同时也该看到:为了更快的提高路由表的查找速率,基于ISA总线是不可能满足要求的。由此,使用FPGA芯片不可避免。由于VHDL语言固有的灵活性和可编程性,可以更为灵活和高效的实现路由查找。所以,使用FPGA芯片来实现路由查找,是未来的趋势。路由器中的硬件IP路由表应用的全部内容就呈现给了大家,文章内容较多,但是叙述比较详细,方便读者理解和阅读,希望你能从中学习到你想要的知识。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号