路由路由器中的硬件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;

CloudCone:洛杉矶MC机房KVM月付1.99美元起,支持支付宝/PayPal

CloudCone是一家成立于2017年的国外VPS主机商,提供独立服务器租用和VPS主机,其中VPS基于KVM架构,多个不同系列,譬如常规VPS、大硬盘VPS等等,数据中心在洛杉矶MC机房。商家2021年Flash Sale活动继续,最低每月1.99美元,支持7天退款到账户,支持使用PayPal或者支付宝付款,先充值后下单的方式。下面列出几款VPS主机配置信息。CPU:1core内存:768MB...

提速啦(24元/月)河南BGP云服务器活动 买一年送一年4核 4G 5M

提速啦的来历提速啦是 网站 本着“良心 便宜 稳定”的初衷 为小白用户避免被坑 由赣州王成璟网络科技有限公司旗下赣州提速啦网络科技有限公司运营 投资1000万人民币 在美国Cera 香港CTG 香港Cera 国内 杭州 宿迁 浙江 赣州 南昌 大连 辽宁 扬州 等地区建立数据中心 正规持有IDC ISP CDN 云牌照 公司。公司购买产品支持3天内退款 超过3天步退款政策。提速啦的市场定位提速啦主...

乐凝网络支持24小时无理由退款,香港HKBN/美国CERA云服务器,低至9.88元/月起

乐凝网络怎么样?乐凝网络是一家新兴的云服务器商家,目前主要提供香港CN2 GIA、美国CUVIP、美国CERA、日本东京CN2等云服务器及云挂机宝等服务。乐凝网络提供比同行更多的售后服务,让您在使用过程中更加省心,使用零云服务器,可免费享受超过50项运维服务,1分钟内极速响应,平均20分钟内解决运维问题,助您无忧上云。目前,香港HKBN/美国cera云服务器,低至9.88元/月起,支持24小时无理...

查找ip为你推荐
外网和内网什么是内网,和外网有什么区别天府热线劲舞团(四川天府热线)为什么越来越卡了??手游运营手册剑三的方士使开启阴阳之力凝聚而成的魂匣怎么做啊 有详细说明吗手游运营手册游戏发展国主机开发怎么做 怎么开发主机网站运营一般网站如何运营ps抠图技巧photoshop最基本的抠图方法和技巧!安卓应用平台安卓手机下软件哪个网站好网店推广网站怎么免费推广淘宝店铺?如何建立一个网站如何建立一个网站?怎么点亮qq空间图标QQ空间图标怎么点亮?
apache虚拟主机 jsp虚拟主机 justhost 42u标准机柜尺寸 好玩的桌面 服务器cpu性能排行 发包服务器 韩国网名大全 e蜗 免空 静态空间 中国电信宽带测速网 安徽双线服务器 网购分享 贵阳电信 防cc攻击 阿里dns 云服务是什么意思 服务器硬件配置 阿里云邮箱个人版 更多