路由路由器中的硬件IP路由表查找技术

查找ip  时间:2021-03-01  阅读:()

路由器中的硬件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位。在该结构中Addre s s-part[0-4]是IP地址中的一部分Mask-part[0-4]是相应的掩码部分。Hit-next[0-4]是需要查找的目标IP地址与掩码部分相与后与Address-part一致时所要查找的下一路由项所在地址的指针。 ,Mis s-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->addres s_part )==mas ked_key

IF(result==TRUE) {

bes t_matc h=entry;entry=entry->hit_next;

}ELS E{entry=entry->mis s_next;

IF(entry->stop==TRUE) s earch=FALSE;

}

}

RETURN best_match 

 查找算法结束*/

为了实现有效的插入和删除我们还要在路由表的数据结构中再另外添加几个域parent指针指向本结点的父结点路由信息routeinfo等。它们的用途是在路由表的查找过程中特别是在指针的回溯pointer rever sal中可以大大的节省查找时间。 由于IP路由的插入和删除比较复杂。我们只是粗略得说明一下。

IP路由的插入

/* 插入算法开始*/

/*先用上面提到的查找算法找出best-match*/best_match=s earch(new_entry);

/*确定需要加入的路由中没有被best-match包括的那几位*/for (c ount=firs t_unmatched_bit ; c ount<=s izeo f(new_entry) ;c ount+=s izeof(addres s_part) {

/*创建新的结点*/create new node;

/*将该结点连入best_match的hit_next */link node into hit branc h of best_match;

}

/* 插入算法结束*/

IP路由的删除要分几种情况讨论。如best_match是叶子结点 best_match的hit_next指针为空,best_match的mis s_next指针为空和hit_next指针和mis s_next指针都不为空等四种情况。这里就不再讨论。

3路由表查找的硬件实现

图3就是对应与上面提及的路由表结构的IP路由表查找的硬件实现简称为路由卡的系统框图。

在路由卡中主要有IP地址状态机路由信息Memory译码器掩码器 比较器地址寄存器组成。 IP地址用于保存所要查找的目标地址。状态器用于控制IP路由表的查找。路由信息就是我们所要查找的信息。它的工作原理是这样的

当路由器从某一个网络适配器中接受到一个需要转发的数据包后在需要进行IP路由表的查找时把IP包的目的地址送到IP地址寄存器中 同时给状态机发一个指令。状态接到这一指令后从Memo ry中读出路由表的相应的表项并和IP地址寄存器中的相应几位经译码器掩码器后进行比较把比较的结果反馈给状态机。再由状态机来控制下一轮的比较。当比较结束后把比较的结果放在路由信息寄存器中供路由器如转发引擎读取。 同时状态机在特定的某一端口设置标志来通知CPU查找是否已经结束或还在进行当中。下面对其性能进行分析。

4性能分析

由于路由表项中地址掩码的引入使得路由结构变得非常灵活。但相应的 由此产生的内存的开销也相当的大。这是性能和硬件开销一对矛盾的必然体现。

该路由卡原型的实现是利用微机上的ISA总线采用存取时间为70ns的SRAM存储器所需容量为6*123k*8bit。除了使用ISA总线上提供的总线外本身还带了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芯片不可避免。由于VHD L语言固有的灵活性和可编程性可以更为灵活和高效的实现路由查找。所以使用FPGA芯片来实现路由查找是未来的趋势。因特网最短路径优先(O S PF)路由算法的实现

因特网中路由器中路由表的生成是非常关键的技术问题。 目前在因特网中的路由器中都支持开放最短路径优先OSPF路由生成算法。 OSPF算法生成速度快而且收敛快、性能稳定是目前已知的因特网中路由表生成的最好算法之一。

OSPF最重要的内容是路由器如何根据已接收到的本路由器所在的自治系统AS的路由器拓扑结构以及各路由器之间的传输费用代价、权 生成一条从本路由器到AS中各路由器的最短路径进而生成路由表。

本实验的目的是根据一个给定的网络拓扑结构及路由器之间的传输费用生成指定路由器到其它路由器的最短路径的实现方法并且根据求得的最短路径生成路由表。

最短路径算法是因特网 Internet路由算法中最重要的算法关系到因特网的网络交换性能以及网络的稳定性因此解决最短路径算法的实现问题具有非常重要的应用价值。本设计型实验紧密结合最短路径在因特网中的实际应用通过最短路径算法的程序实现过程和路由表的生成过程更深地领会最短路径在因特网中实现快速路由以及路由表生成的原理培养学生解决实际问题的能力。

二、实验要求

熟悉C语言编程,熟练使用C语言实现图形结构的说明、创建以及图的存储表示要求学生熟练应用图形数据结构编程实现最短路径的算法了解AS中路由器与网络、网络与路由器代价计算方法 了解根据OSPF生成路由表的原理。

三、实验内容

根据给定的网络拓扑图求某路由器到其它路由器的最短路径并生成路由表

下图为因特网中某自治系统AS路由器及网络连接拓扑图。

按照因特网的规定从网络到路由器的费用为0,因此上图无向图可表示为下图有向图形式。

求从某路由器如R1至其它路由器的最短路径。即从始点如R1开始逐步求始点如R1到其它可达的各路由器的最短路径直到所有路由器计算完成为止。

根据最短路径的求解结果可以生成路由表。

路由表主要由两个表项组成即目的网络目的路由器所在网络及下一路由器或下一跳即所求路由器相邻的某一路由器 如N5,R4表示到达N 5的最短路径通过R4

N3 R6 因此相对于路由器R1而言到达目的网络N5的下一跳为R4。

下表是R1到其它网络的最短路径

根据R1到其它网络的最短路径很容易得到R1的路由表下一跳是R1到达网络所经过的第一个路由器 详见下表

四、实验步骤

以下是最短路径算法的具体实现步骤。但是由于本实验为设计型实验且为解决实验问题而做因此以下的最短路径算法只能作参考还有若干步骤需要学生们自己独立完成如生成路由表而且除求R1路由器到其它路由器的最短路径外还可以求其它路由器如

R2 R3 …最短路径和生成路由表。

1输入e条弧生成AOE-网的存储结构。

2初始化 S←{v0 };dist[j]←Edge[0][j], j=1, 2,…, n-1; //n为图中顶点个数

3.求出最短路径的长度dist[k]←min { dist[i] }, i V-S ;

S←SU{ k};

4.修改从v0到V-S集合中各顶点的最短路径dist[i]←min{ dist[i], dist[k]+Edge[k][i] },

对于每一个i属于V-S;

5.判断若S=V,则算法结束否则转2。

OSPF路由协议中的核心算法实现

//Dijks tra算法.cpp:定义控制台应用程序的入口点。

//

#inc lude"stdafx.h"using namespace std;void Dijks tra(int n,int v,int dist[],int prev[],int**c)

{int maxint=//你认为不太可能取到的值;bool*s=new bool[n];//用于区分节点处于那个集合中for(int i=1; i<=n; i++)//这里是初始化

{dis t[i]=c[v][i];

s[i]=fals e;if(dis t[i]==maxint)

{prev[i]=0;

}els e

{prev[i]=v;

}

}dis t[v]=0;s[v]=true;for(int i=1; i<n; i++)//主要部分开始

{int temp=maxint;int u=v;for(int j=1;j<=n; j++)//找出集合2中的最小COST的枝和点{if((!s[j])&&(dis t[j]<temp))

{u=j;temp=dis t[j];

}

}s[u]=true;

BuyVM商家4个机房的官方测试IP地址和测速文件

BuyVM 商家算是有一些年头,从早年提供低价便宜VPS主机深受广大网友抢购且也遭到吐槽的是因为审核账户太过于严格。毕竟我们国内的个人注册账户喜欢账户资料乱写,毕竟我们看英文信息有些还是比较难以识别的,于是就注册信息的时候随便打一些字符,这些是不能通过的。前几天,我们可以看到BUYVM商家有新增加迈阿密机房,而且商家有提供大硬盘且不限制流量的VPS主机,深受有一些网友的喜欢。目前,BUYVM商家有...

sharktech:洛杉矶/丹佛/荷兰高防服务器;1G独享$70/10G共享$240/10G独享$800

sharktech怎么样?sharktech (鲨鱼机房)是一家成立于 2003 年的知名美国老牌主机商,又称鲨鱼机房或者SK 机房,一直主打高防系列产品,提供独立服务器租用业务和 VPS 主机,自营机房在美国洛杉矶、丹佛、芝加哥和荷兰阿姆斯特丹,所有产品均提供 DDoS 防护。不知道大家是否注意到sharktech的所有服务器的带宽价格全部跳楼跳水,降幅简直不忍直视了,还没有见过这么便宜的独立服...

注册做什么96%可以干啥,常用的7个常用的国内国外域名注册服务商_云服务器可以干什么

日前,国内知名主机服务商阿里云与国外资深服务器面板Plesk强强联合,推出 阿里云域名注册与备案、服务器ECS购买与登录使用 前言云服务器(Elastic  只需要确定cpu内存与带宽基本上就可以了,对于新手用户来说,我们在购买阿里云服务申请服务器与域名许多云服务商的云服务器配置是弹性的 三周学会小程序第三讲:服务 不过这个国外服务器有点慢,可以考虑国内的ngrokcc。 ngrokcc...

查找ip为你推荐
伪装微信地理位置如何用伪装微信地理位置?如何建立自己的网站怎么创建自己的网站vbscript教程请教一下高手们,这个VBS脚本难不难啊,我想学学这个,但是又不知道该从哪入手,希望高手指点指点??xv播放器下载迅雷看看下载的XV格式的电影用什么播放器可以播放?(没有互联网的情况下)怎么升级ios6苹果IOS5怎么升级IOS6版本二层交换机什么是三层交换机?什么是二层叫交换机?有什么区别?电子商务网站模板电子商务网站策划书宽带接入服务器宽带接入服务器的五大功能是什么?网站推广外链如何做网站推广 ,外链推广的方向在哪里?网站排名靠前怎样才能做好一个网站?让网站排名靠前?新手求解
万网域名查询 域名反查 ipage 罗马假日广场 hostmaster enzu rak机房 谷歌香港 火车票抢票攻略 eq2 ibox官网 qq数据库下载 架设服务器 最好的免费空间 傲盾官网 360云服务 台湾google lamp的音标 深圳域名 广东主机托管 更多