搜档网
当前位置:搜档网 › 用迪杰斯特拉算法生成路由表

用迪杰斯特拉算法生成路由表

用迪杰斯特拉算法生成路由表
用迪杰斯特拉算法生成路由表

#include

#define INFINITY 100 //赋值最大值

void main()

{

int tu[11][11], i, j,v0, v, w, min, r=22, a, b,temp=0, s1=5;

int final[11],s[6][11], p[11][11], q[11], d[11]; //final[11]是用来记录节点v是否在S集中,s[6][11]用来记录路由到各个网络节点

//最短路径上的正序路径;d[11]是各到开始路由的最短路径上的权值

char

str[22]={'R','1','R','2','R','3','R','4','R','5','R','6','N','1','N','2','N','3','N','4','N','5' };

int str1[66]={0,3,8,0,6,5,

1,4,4,1,6,7,

2,6,3,2,7,2,

3,0,8,3,8,2,

4,1,4,4,8,5,

4,9,2,5,8,9,

5,10,5,6,0,0,

6,1,0,6,2,0,

7,2,0,8,3,0,

8,4,0,8,5,0,

9,4,0,10,5,0};

//把记录最短路径上各节点的正序顺序值初始化

for(i=0;i<6;i++)

for(j=0;j<11;j++)

s[i][j]=100;

//初步把所有两点之间都初始化为最大值

for(i=0; i<11; i++)

for(j=0; j<11; j++)

{

if(j==i)

tu[i][j]=0;

else

tu[i][j]=INFINITY;

}

//按照题目给出的数据重新初始化列表

for(i=0; i<22; i++)

{

a=str1[3*i]; //列表中的行数

b=str1[3*i+1]; //列表中的列数

tu[a][b]=str1[3*i+2]; //列表中对应的数值

}

//打印出网络和路由间对应的列表关系

printf("\n R1 R2 R3 R4 R5 R6 N1 N2 N3 N4 N5\n"); printf(" ----------------------------------------------------------------------------\n");

for(i=0;i<11;i++)

{

printf("%c",str[2*i]);

printf("%c",str[2*i+1]);

for(j=0;j<11;j++)

printf(" %3d ",tu[i][j]);

printf("\n");

}

printf("--------------------------------------------------------------------------------\n"); /*用Dijkstra算法求有向网G的v0顶点到其余顶点v的最短路径P[v]及其带权长度D[v] */

/*若p[v][w]为,则w是从v0到v当前求得最短路径上的顶点 */

/*final[v]为,当且仅当v∈S,即已经求得从v0到v的最短路径 */

printf("请输入开始路由(R<=5) v0=R"); //提示输入

scanf ("%d", &v0); //输入起点对应的数值

printf("\n");

v0=v0-1; //因为C语言中数组的计数是从开始的,所以这里v0实际值为输入值减去

//打印表头

printf ("开始路由器\t目的网络\t最短路径经过的路由器或网络序列\t最短路径值\n");

printf("\n"); //回车换行

for(v=0; v<11; ++v)

{

final[v]=0;

d[v]=tu[v0][v]; // v0到v的带权长度

for(w=0; w<11; ++w)

p[v][w]=0; //设空路径

if(d[v]

{

p[v][v0]=1; //表示v和v0相邻

p[v][v]=1;

}

}//for

d[v0]=0; final[v0]=1; //初始化,v0顶点属于S集

for(i=0;i<11;i++) //初始化,各个节点的前驱节点都默认为v0

q[i]=v0;

while (s1--) //因为有六个路由节点,所以开始六次循环

{

//开始主循环,每次求得v0到某个v顶点的最短路径,并加v到S集

for(i=1; i<11; ++i)

{ //其余个顶点

min=INFINITY; //当前所知离v0顶点的最近距离

for(w=0; w<11; ++w)

if(!final[w]) //w顶点在V-S中

if(d[w]

{

v=w;

min=d[w]; //w顶点离v0顶点更近

}

final[v]=1; //离v0顶点最近的v加入S集

for(w=0; w<11; ++w) //更新当前最短路径及距离

if(!final[w])

if(min+tu[v][w]

{ //修改d[w]和q[w],w∈V-S

d[w]=min+tu[v][w];

q[w]=v; //v是v0到w最短路径上的前驱节点

p[w][v]=1; //v是w到v0上最短路径的顶点

p[w][w]=1;

}//if

}//while

//ShortestPath_DIJ

//把在上面Dijkstra算法中记录的逆序路径正序化,好进行下一步输出

for(i=6;i<11;i++)

{

a=q[i];

s[i-6][10]=i;

for(j=9;j>0;j--)

{

if(a!=v0)

{

s[i-6][j]=a;

a=q[a];

}

if(s[i-6][j]==v0) //找到了v0节点则退出循环

break;

}

}

//输出路径

for(i=6;i<11;i++)

{

printf(" %c%c\t\t %c%c\t\t%c%c", str[v0*2], str[v0*2+1], str[2*i], str[2*i+1], str[v0*2], str[v0*2+1]);

for(j=0;j<11;j++)

{

if(s[i-6][j]!=100&&s[i-6][j]!=v0)

{

a=2*s[i-6][j];

b=2*s[i-6][j]+1;

printf("一%c%c",str[a],str[b]);

}

}

printf("\t\t\t%d\n",d[i]); //输出最短路径的权值

}//for

printf("--------------------------------------------------------------------------------");

//输出路由表

printf(" 目的网络下一跳(路由器)\n");

for(i=6;i<11;i++)

{

printf("\t%c%c ",str[2*i],str[2*i+1]);

for(j=0;j<11;j++)

{

if(s[i-6][j]!=100&&s[i-6][j]!=v0&&s[i-6][j]<6)

{

a=2*s[i-6][j];

b=2*s[i-6][j]+1;

printf("\t%c%c\n",str[a],str[b]);

temp=1;

break;

}

}

if(!temp)

printf("\t--\n");

}//for

printf("print any key exit!\n"); }

顺序查找路由表

青岛农业大学理学与信息科学学院 计算机网络综合实习报告 题目 专业 学号 姓名 指导教师 日期

目录 一、课程设计任务和目的 (1) 二、设计要求 (1) 三、设计内容 (1) 3.1顺序查找路由表的工作原理 (1) 3.2课程设计程序运行结果与分析 (2) 四、改进和建议 (5) 五、总结 (5) 六、主要参考文献 (5) 附录: (6)

一、课程设计任务和目的 1.了解路由器更新的原理。 2.了解表示路由器的结构。 3.掌握路由器转发分组的算法。 二、设计要求 编写计算机程序,用(目的网络,掩码,下一跳)的结构表示路由表,以一个目的地址作为输入,顺序查找路由表,找出正确的下一跳,并输出。 三、设计内容 3.1顺序查找路由表的工作原理 使用子网划分后,路由表必须包含:目的地址,子网掩码,下一跳地址。路由器分组转发的算法如下: (1)从收到的数据包的首部提取目的IP地址D; (2)对路由器直接相连的网络逐个进行检查:用个网络的掩码和D逐位相“与”,看结果是否和相应的网络地址匹配。若匹配,则把分组直接交付,转发任务结束,否则就是间接交付执行(3)。 (3)若路由表中有目的地址为D特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器否则执行(4)。 (4)对路由表的每一行,用其中的子网掩码和D逐位相“与”,其结果为N。若N 与该行的目的网络相匹配,则把数据报送给该行指明的下一跳路由器;否则执行(5)。 (5)若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则执行(6)。 (6)报告转发分组出错,没有查找到路由。 简单来说,就是当来一个数据报时,抓

添加路由表

添加路由,这里按照自己的网络情况设置,下面是我的路由设置:Persistent Routes: Network Address Netmask Gateway Address Metric 135.190.35.0 255.255.255.0 135.190.35.254 135.190.0.0 255.255.0.0 135.190.35.254 132.0.0.0 255.0.0.0 135.190.35.254 我的内网是135.190.35.0段的IP,网关是135.190.35.254,外网是135.175.35.0段的IP,网关是135.175.35.254,因为我们设置的网络是外网的(可以正常使用的,用IE上个百度或者别的网站试试),所以不用增加外网路由,只需要增加内网的路由,我增加如下有路由就可以: Route add 135.190.0.0 mask 255.255.0.0 135.190.35.254 -p Route add 132.0.0.0 mask 255.0.0.0 135.190.35.254 –p route add 135.190.35.0 mask 255.255.255.0 135.190.35.254 -p 如果网络不稳定,再增加一条外网的路由: route add 135.175.35.0 mask 255.255.255.0 135.175.35.254 上面的命令直接粘贴在cmd下运行就可以:

三、即指向0.0.0.0的有两个网关,这样就会出现路由冲突,两个网络都不能访问。如何实现同时问两个网络?那要用到route命令第一步:route delete 0.0.0.0 "删除所有0.0.0.0的路由" 第二步:route add 0.0.0.0 mask 0.0.0.0 172.23.1.1 "添加0.0.0.0网络路由"这个是主要的,意思就是你可以上外网。第三步:route add 10.0.0.0 mask 255.0.0.0 192.168.0.2 "添加以10开头的网段指向内网路由",注意mask为255.0.0.0 ,而不是255.255.255.0 ,这样内部的多网段才可用。到这儿如果能正常访问内外网了的话,那么我么就要永久写入了(因为刚刚设置的路由表会在重启后丢失),用到以下命令:route add -p 添加静态路由,即重启后,路由不会丢失。注意使用前要在tcp/ip设置里去掉接在企业内部网的网卡的网关。以下是 WinArpAttacker 这是一个arp攻击软件。你可以用它来查看网络上所有的ip和MAC地址! 我用它追查过ARP攻击者。还可以用~~~

PT 实验(八) 路由器静态路由配置

PT 实验(八) 路由器静态路由配置 一、实验目标 ●掌握静态路由的配置方法和技巧; ●掌握通过静态路由方式实现网络的连通性; ●熟悉广域网线缆的连接方式; 二、实验背景 学校有新旧两个校区,每个校区是一个独立的局域网,为了使新旧校区能够正常相互通讯,共享资源,每个校区出口利用一台路由器进行连接,两台路由器间学校申请了一条2M的DDN专线进行相连,要求你做适当配置实现两个校区间的正常相互访问。 三、技术原理 路由器属于网络层设备,能够根据IP包头的信息,选择一条最佳路径将数据包转发出去,实现不同网段的主机之间的互相访问。路由器是根据路由表进行选路和转发的,而路由表就是由一条条路由信息组成。 生成路由表主要有两种方法:手工配置和动态配置,即静态路由协议配置和动态路由协议配置。 静态路由是指由网络管理员手工配置的路由信息。静态路由除了具有简单、高效、可靠的优点外,它的另一个好处是网络安全保密性高。 缺省路由可以看作是静态路由的一种特殊情况。当数据在查找路由表时,没有找到和目标相匹配的路由表项时,为数据指定的路由。 四、实验步骤 实验拓扑 1、在路由器R1、R2上配置接口的IP地址和R1串口上的时钟频率; 2、查看路由器生成的直连路由;

3、在路由器R1、R2上配置静态路由; 4、验证R1、R2上的静态路由配置; 5、将PC1、PC2主机默认网关分别设置为与路由器接口f1/0 IP地址; 6、PC1、PC2主机之间可以互相通信; R1: Router>en Router#conf t Enter configuration commands, one per line. End with CNTL/Z. Router(config)#hostname R1 R1(config)#interface fa1/0 R1(config-if)#ip address 192.168.1.1 255.255.255.0 R1(config-if)#no shutdown %LINK-5-CHANGED: Interface FastEthernet1/0, changed state to up %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet1/0, changed state to up R1(config-if)#exit R1#show ip route Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area * - candidate default, U - per-user static route, o - ODR P - periodic downloaded static route Gateway of last resort is not set C 192.168.1.0/24 is directly connected, FastEthernet1/0 R1# R1(config)#interface serial 0/0 R1(config-if)#ip address 192.168.5.2 255.255.255.0 R1(config-if)#no shutdown %LINK-5-CHANGED: Interface Serial0/0, changed state to up %SYS-5-CONFIG_I: Configured from console by console %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/0, changed state to up R1(config-if)#clock rate 64000 R1(config-if)#end R1#show ip route Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area * - candidate default, U - per-user static route, o - ODR P - periodic downloaded static route

路由器选型重要参数

路由器选型重要参数 全双工线速转发能力 路由器最基本且最重要的功能是数据包转发。在同样端口速率下转发小包是对路由器包转发能力最大的考验。全双工线速转发能力是指以最小包长(以太网64字节、POS口40字节)和最小包间隔(20字节)在路由器端口上双向传输同时不引起丢包。该指标是路由器性能重要指标。125,000,000/(64+20)=1,488,095 设备吞吐量 指设备整机包转发能力,是设备性能的重要指标。路由器的工作在于根据IP包头或者MPLS标记选路,所以性能指标是转发包数量每秒。设备吞吐量通常小于路由器所有端口吞吐量之和。 端口吞吐量 端口吞吐量是指端口包转发能力,通常使用pps:包每秒来衡量,它是路由器在某端口上的包转发能力。通常采用两个相同速率接口测试。但是测试接口可能与接口位置及关系相关。例如同一插卡上端口间测试的吞吐量可能与不同插卡上端口间吞吐量值不同。 路由表能力 路由器通常依靠所建立及维护的路由表来决定如何转发。路由表能力是指路由表内所容纳路由表项数量的极限。由于Internet上执行BGP协议的路由器通常拥有数十万条路由表项,所以该项目也是路由器能力的重要体现。 背板能力 背板能力是路由器的内部实现。背板能力能够体现在路由器吞吐量上:背板能力通常大于依据吞吐量和测试包场所计算的值。但是背板能力只能在设计中体现,一般无法测试。QoS分类方式 指路由器可以区分QoS所依据的信息。最简单的QoS分类可以基于端口。同样路由器也可以依据链路层优先级(802.1Q中规定)、上层内容(TOS字段、源地址、目的地址、源端口、目的端口等信息)来区分包优先级。 分组语音支持方式 在企业中,路由器分组语音承载能力非常重要。在远程办公室与总部间,支持分组语音的路由器可以使电话通信和数据通信一体化,有效地节省长途话费。当前技术环境下,分组语音可以分为3种:使用IP承载分组语音、使用A TM承载语音以及使用帧中继承载语音。使用ATM承载语音时可以分AAL1和AAL2两种。AAL1即电路仿真,技术非常成熟但是相对成本较高,AAL2技术较先进,但是当前ATM接口通常不支持。帧中继承载语音也比较成熟,相对成本较低。IP承载语音当前较流行。在上述技术中成本最低,但是当前IP网络QoS保证困难,通话质量较难保证。 语音压缩能力 语音压缩是IP电话节约成本的关键之一。通常可以使用G.723和G.729。G.723在ITU -T建议G.723.1(1996),语音编码器在5.3和6.3Kbps多媒体通信传输双率语音编码器中规定。相对压缩比较高,压缩时延较大。G.729在ITU-T 建议G.729 (1996),8Kbps共扼结构代数码激励线形预测(CS-ACELP)语音编码中规定。压缩比较低,通话质量较好。 信令支持 路由器E1端口上可能支持多种信令:ISUP、TUP、中国1号信令以及DSS1。支持ISUP、TUP或者DSS1信令的路由器可以有效地减少接续时间。在电信级的IP电话网络设备中通常要求支持7号信令。但是作为中低端路由器,通常只支持DSS1和中国1号信令。

计算机网络:路由表的生成

7.2 路由表的生成 我们看到,就向交换机的工作全依靠其内部的交换表一样,路由器的工作也完全仰仗其内存中的路由 表。 图7.5列出了路由表的构造。 图 7.5 路由表的构造 路由表主要由六个字段组成,能够前往的网络和如何前往那些网络。路由表的每一行,表示路由器了解的某个网络的信息。网络地址字段列出本路由器了解的网络的网络地址。端口字段标明前往某网络的数据报该从哪个端口转发。下一跳字段是在本路由器无法直接到达的网络,下一跳的中继路由器的IP地址。距离字段表明到达某网络有多远。在RIP路由协议中需要穿越的路由器数量。协议字段表示本行路由记录是如何得到的。本例中,C表示是手工配置,RIP表示本行信息是通过RIP协议从其它路由器学习得到的。定时字段表示动态学习的路由项在路由表中已经多久没有刷新了。如果一个路由项长时间没有被刷新,该 路由项就被认为是失效的,需要从路由表中删除。 我们注意到,前往160.4.1.64、200.12.105.0、178.33.0.0网络,下一跳都指向160.4.1.34路由器。其中178.33.0.0网络最远,需要12跳。路由表不关心下一跳路由器将沿什么路径把数据报转发到目标网络,它只要把数据报转发给下一跳路由器就完成任务了。 路由表是路由器工作的基础。路由表中的表项有两种方法获得: 静态配置 动态学习 路由表中的表项可以用手工静态配置生成。将电脑与路由器的console端口连接,使用电脑上的超级终端软件或路由器提供的配置软件就可以对路由器进行配置。 手工配置路由表需要大量的工作。动态学习路由表是最为行之有效的方法。一般情况下,我们都是手工配置路由表中直接连接的网段的表项,而间接连接的网络的表项使用路由器的动态学习功能来获得。

IP路由表管理

IP路由表管理 1、路由表的显示和维护 通过查看路由表,有助于了解网络拓扑结构和定位路由问题。 查看路由表的信息是定位路由问题的基本手段,下面列举了通用的路由表信息显示及维护命令。 display命令可以在所有视图下使用。reset命令在用户视图下使用。 交换机引入较多的路由会占用较多的系统资源,在系统业务繁忙时,这就有可能影响设备的正常运行。为提高系统的安全性和可靠性,可以配置公网路由前缀限制,这样当路由前缀数超过预先设定的值时,系统会输出告警信息,从而提醒用户检查公网路由前缀的有效性。 操作步骤 1、查看IPv4路由表中当前激活路由的摘要信息。 display ip routing-table 2、查看IPv4路由表详细信息 display ip routing-table verbose 3、查看指定目的IPv4地址的路由信息。 display ip routing-table ip-address [ mask | mask-length ] [ longer-match ] [ verbose ] 4、查看指定目的IPv4地址范围内的路由信息。 display ip routing-table ip-address1 { mask1 | mask-length1 } ip-address2 { mask2 | mask-length2 } [ verbose ] 5、查看通过指定基本访问控制列表过滤的IPv4路由信息。 display ip routing-table acl { acl-number | acl-name } [ verbose ] 6、查看通过指定前缀列表过滤的IPv4路由信息。 display ip routing-table ip-prefix ip-prefix-name [ verbose ] 7、查看指定协议发现的IPv4路由信息。 display ip routing-table protocol protocol [ inactive | verbose ] 8、查看IPv4路由表的综合路由统计信息。 display ip routing-table statistics 9、查看IPv6路由表中当前激活路由的摘要信息 display ipv6 routing-table 10、查看IPv6路由表详细信息。 display ipv6 routing-table verbose 11、查看指定协议发现的IPv6路由信息。 display ipv6 routing-table protocol [ inactive | verbose ] 12、查看指定协议发现的IPv6路由信息。 13、查看IPv6路由表的综合信息。

路由表

路由表 在计算机网络中,路由表(routing table)或称路由择域信息库(RIB, Routing Information Base),是一个存储在路由器或者联网计算机中的电子表格(文件)或类数据库。路由表存储着指向特定网络地址的路径(在有些情况下,还记录有路径的路由度量值)。路由表中含有网络周边的拓扑信息。路由表建立的主要目标是为了实现路由协议和静态路由选择。 主要工作 路由器的主要工作就是为经过路由器的每个数据包寻找一条最佳的传输路径,并将该数据有效地传送到目的站点。由此可见,选择最佳路径的策略即路由算法是路由器的关键所在。为了完成这项工作,在路由器中保存着各种传输路径的相关数据——路由表(Routing Table),供路由选择时使用,表中包含的信息决定了数据转发的策略。打个比方,路由表就像我们平时使用的地图一样,标识着各种路线,路由表中保存着子网的标志信息、网上路由器的个数和下一个路由器的名字等内容。路由表可以是由系统管理员固定设置好的,也可以由系统动态修改,可以由路由器自动调整,也可以由主机控制。 路由表项 路由表中的表项内容包括:

destination:目的地址,用来标识IP包的目的地址或者目的网络。mask:网络掩码,与目的地址一起标识目的主机或者路由器所在的网段的地址。 pre:标识路由加入IP路由表的优先级。可能到达一个目的地有多条路由,但是优先级的存在让他们先选择优先级高的路由进行利用。cost:路由开销,当到达一个目的地的多个路由优先级相同时,路由开销最小的将成为最优路由。 interface:输出接口,说明IP包将从该路由器哪个接口转发。nexthop:下一跳IP地址,说明IP包所经过的下一个路由器。 分类

中国移动路由表

移动路由表 1.51.64.0/18 1.88.0.0/14 36.128.0.0/10 36.192.0.0/21 36.193.40.0/21 36.193.48.0/20 39.128.0.0/10 58.30.0.0/17 58.31.0.0/16 58.253.94.0/24 61.232.0.0/20 61.233.0.0/19 61.234.96.0/19 61.234.160.0/20 61.235.64.0/18 61.237.224.0/20 101.240.0.0/14 103.29.132.0/22 103.37.72.0/22 106.3.32.0/21 106.3.40.0/22 110.96.0.0/16 110.120.0.0/16 110.208.0.0/14 111.0.0.0/10 111.1.59.0/24 111.11.31.0/24 111.26.136.0/24 111.132.0.0/16 111.148.0.0/14 112.0.0.0/10 114.213.128.0/17 114.214.128.0/17 115.106.0.0/15 117.128.0.0/10 118.187.40.0/21 118.191.248.0/21 118.192.8.0/21 118.192.16.0/20 118.192.32.0/21 118.192.48.0/20 118.192.64.0/18

118.192.240.0/20 119.90.32.0/21 119.90.48.0/20 119.161.248.0/21 120.192.0.0/10 120.192.88.0/24 120.198.244.0/24 121.52.208.0/21 121.251.0.0/17 121.255.0.0/16 122.70.0.0/15 122.72.3.0/24 122.72.12.0/23 122.72.16.0/24 122.72.38.0/24 122.72.90.0/24 122.72.92.0/23 122.72.112.0/24 122.72.124.0/23 123.64.0.0/15 123.66.128.0/17 123.88.0.0/15 124.164.8.0/24 124.192.128.0/18 124.196.0.0/18 124.196.192.0/18 161.207.17.0/24 161.207.18.0/23 180.77.0.0/18 180.77.128.0/17 180.78.0.0/15 180.186.38.0/23 180.186.40.0/22 180.186.44.0/24 182.50.112.0/20 183.192.0.0/10 202.38.64.0/19 202.141.176.0/20 202.165.191.0/24 210.45.0.0/16 211.70.40.0/21 211.70.48.0/20 211.70.128.0/18

路由器中的路由表是怎样得出的

路由器中的路由表是怎样得出的? 路由器中的路由表有直连路由,是本机算出来的,有手工指定的静态路由,同时还有起的ergip、ospf、bgp等用户起的动态路由进程学习到的,相邻路由能够起邻居,相互之间学习到发布的路由指令。? 所谓路由表,指的是路由器或者其他互联网网络设备上存储的表,该表中存有到达特定网络终端的路径,在某些情况下,还有一些与这些路径相关的度量。 在计算机网络中,路由表或称路由择域信息库(RIB)是一个存储在路由器或者联网计算机中的电子表格(文件)或类数据库。路由表存储着指向特定网络地址的路径(在有些情况下,还记录有路径的路由度量值)。路由表中含有网络周边的拓扑信息。路由表建立的主要目标是为了实现路由协议和静态路由选择。 在现代路由器构造中,路由表不直接参与数据包的传输,而是用于生成一个小型指向表,这个指向表仅仅包含由路由算法选择的数据包传输优先路径,这个表格通常为了优化硬件存储和查找而被压缩或提前编译。 路由器的主要工作就是为经过路由器的每个数据包寻找一条最佳的传输路径,并将该数据有效地传送到目的站点。由此可见,选择最佳路径的策略即路由算法是路由器的关键所

在。为了完成这项工作,在路由器中保存着各种传输路径的相关数据——路由表(Routing Table),供路由选择时使用,表中包含的信息决定了数据转发的策略。打个比方,路由表就像我们平时使用的地图一样,标识着各种路线,路由表中保存着子网的标志信息、网上路由器的个数和下一个路由器的名字等内容。路由表可以是由系统管理员固定设置好的,也可以由系统动态修改,可以由路由器自动调整,也可以由主机控制。 1.静态路由表 由系统管理员事先设置好固定的路由表称之为静态(static)路由表,一般是在系统安装时就根据网络的配置情况预先设定的,它不会随未来网络结构的改变而改变。2.动态路由表 动态(Dynamic)路由表是路由器根据网络系统的运行情况而自动调整的路由表。路由器根据路由选择协议(Routing Protocol)提供的功能,自动学习和记忆网络运行情况,在需要时自动计算数据传输的最佳路径。 路由器通常依靠所建立及维护的路由表来决定如何转发。路由表能力是指路由表内所容纳路由表项数量的极限。由于Internet上执行BGP协议的路由器通常拥有数十万条路由表项,所以该项目也是路由器能力的重要体现。

路由基本概念及静态路由配置实验报告

路由基本概念及静态路由配置实验报告 一、实验原理 1.路由器的定义和作用 路由器——用于网络互连的计算机设备 路由器的核心作用是实现网络互连,数据转发 路由(寻径):路由表建立、刷新 交换:在网络之间转发分组数据 隔离广播,指定访问规则 异种网络互连 2.基本概念 路由表: 路由器为执行数据转发路径选择所需要的信息被包含在路由器的一个表项中,称为“路由表” 。当路由器检查到包的目的IP地址时,它就可以根据路由表的内容决定包应该转发到哪个下一跳地址上去。路由表被存放在路由器的RAM上。 路由表的构成: 目的网络地址(Dest),掩码(Mask),下一跳地址(Gw),发送的物理端口(interface) 路由信息的来源(Owner),路由优先级(pri),度量值(metric) 路由信息根据产生的方式和特点可以分为以下几种: 直连路由,缺省路由,静态路由,动态路由;其中缺省路由可以由静态路由配

置,也可以由动态路由产生。 直连路由: 当接口配置了网络协议地址并状态正常时,既物理连接正常,并且可以正常检测到数据链路层协议的keepalive信息时,接口上配置的网段地址自动出现在路由表中并与接口关联。其中产生方式(onwer)为直连(direct),路由优先级为0,拥有最高路由优先级。其metric值为0,表示拥有最小metric值。 直连路由会随接口的状态变化在路由表中自动变化,当接口的物理层与数据链路层状态正常时,此直连路由会自动出现在路由表中,当路由器检测到此接口down掉后此条路 由会自动消失。 系统管理员手工设置的路由称之为静态(static)路由,一般是在系统安装时就根据网络的配置情况预先设定的,它不会随未来网络拓扑结构的改变自动改变。 优点:不占用网络、系统资源、安全; 缺点:需网络管理员手工逐条配置,不能自动对网络状态变化做出调整。 在无冗余连接网络中,静态路由可能是最佳选择。 静态路由是否出现在路由表中取决于下一跳是否可达。 静态路由在路由表中中产生方式(onwer)为静态(static),路由优先级为1,其metric值为0。 缺省路由: 缺省路由是一个路由表条目,用来指明一些在下一跳没有明确地列于路由表中的数据单元应如何转发。对于在路由表中找不到明确路由条目的所有的数据包都将按照缺省路由条目指定的接口和下一跳地址进行转发。 缺省路由可以是管理员设定的静态路由,也可能是某些动态路由协议自动产生的结果。 优点:极大减少路由表条目 缺点:不正确配置可能导致路由环路;可能导致非最佳路由 在stub 网络出口路由器上,缺省路由是最佳选择。 动态路由: 动态路由协议通过路由信息的交换生成并维护转发引擎需要的路由表。 网络拓扑结构改变时自动更新路由表,并负责决定数据传输最佳路径。 动态路由协议的优点是可以自动适应网络状态的变化,自动维护路由信息而不用网络

rip路由算法

思东张宏科 Rip协议的工作原理及仿真分析--中国空间技术研究院西安分院李园利王宇二 三距离向量路由算法(Bellman-Ford Routing Algorithm),也叫做最大流量演算法(Ford-Fulkerson Algorithm),其被距离向量协议作为一个算法,如RIP, BGP, ISO IDRP, NOVELL IPX。使用这个算法的路由器必须掌握这个距离表(它是一个一维排列-“一个向量”),它告诉在网络中每个节点的最远和最近距离。在距离表中的这个信息是根据临近接点信息的改变而时时更新的。表中数据的量和在网络中的所有的接点(除了它自己本身)是等同的。这个表中的列代表直接和它相连的邻居,行代表在网络中的所有目的地。每个数据包括传送数据包到每个在网上的目的地的路径和距离/或时间在那个路径上来传输(我们叫这个为“成本”)。这个在那个算法中的度量公式是跳跃的次数,等待时间,流出数据包的数量,等等。 在距离向量路由算法中,相邻路由器之间周期性地相互交换各自的路由表备份。当网络拓扑结构发生变化时,路由器之间也将及时地相互通知有关变更信息。

相邻路由器B发送请求报文,路由器B的RIP收到请求报文后,响应请求,回发包含本地路由表信息的响应报文。路由器A的RIP收到响应报文后,修改本地路由表的信息,同时以触发修改的形式向相邻路由器B广播本地路由修改信息。路由器B收到触发修改报文后,又向其各自的相邻路由器发送触发修改报文。在一连串触发修改广播后,各路由器的路由都得到修改并保持最新信息。同时,RIP每30秒向相邻路由器广播本地路由表,各相邻路由器的RIP在收到路由报文后,对本地路由进行的维护,在众多路由中选择一条最佳路由并向各自的相邻网广播路由修改信息,使路由达到全局的有效。运行RIP协议的路由器并不是把每一条新的路由信息都添加到自己的路由表中。而是根据Bellman-ford算法的最佳度量的计算公式获得D(i,j),并根据D(i,j)的结果,更新路由条目: (1)如果路由条目是新的,则接受路由器将把该条目加入路由表中; (2)如果此路由已存在于路由表,但新的路由条目具有不同的来源,并且该条目具有更低的跳数,则路由表将用新的条目替换已存在的条目; (3)如果此路由已存在于路由表中,并且两个条目的来源相同,则路由表将用新的条目替换已存在的条目,尽管两者的度量值一样。 五稳定性---RIP 协议每30秒向相邻路由器发送一次路由更新信息,同时监听来自网络中的其它相邻路由器的路由信息,从而实现对本地路由表的动态维护,以确保IP层发送报文时选择正确的路由。 在实际系统中,我们可以将无穷大设置为网络的最大跳数加1。但是当采用时延作为距离的长度时,将很难定义一个合适的时延上界。该时延的上界应足够大,以避免将长时延的路径认为是故障的链路 六公平性---它对好消息的反应迅速,但对坏消息却反应迟钝 1)、协议中规定,一条有效的路由信息的度量(metric)不能超过15,这就使得该协议不能应用于很大型的网络,应该说正是由于设计者考虑到该协议只适合于小型网络所以才进行了这一限制。对于metric为16的目标网络来说,即认为其不可到达。 2)、该路由协议应用到实际中时,很容易出现“计数到无穷大”的现象,这使得路由收敛很慢,在网络拓扑结构变化以后需要很长时间路由信息才能稳定下来。 3)、该协议以跳数,即报文经过的路由器个数为衡量标准,并以此来选择路由,这一措施欠合理性,因为没有考虑网络延时、可靠性、线路负荷等因素对传输质量和速度的影响。

路由表插入流程分析

路由表 在内核中存在路由表fib_table_hash和路由缓存表rt_hash_table。路由缓存表主要是为了加速路由的查找,每次路由查询都会先查找路由缓存,再查找路由表。这和cache是一个道理,缓存存储最近使用过的路由项,容量小,查找快速;路由表存储所有路由项,容量大,查找慢。首先,应该先了解路由表的意义,下面是route命令查看到的路由表: Destination Netmask Gateway Flags Interface Metric 169.254.0.0255.255.0.0*U eth01 192.168.123.0255.255.255.0*U eth01 default0.0.0.0192.168.123.254UG eth01一条路由其实就是告知主机要到达一个目的地址,下一跳应该走哪里。比如发往 192.168.22.3报文通过查路由表,会得到下一跳为192.168.123.254,再将其发送出去。在路由表项中,还有一个很重要的属性-scope,它代表了到目的网络的距离。 路由scope可取值:RT_SCOPE_UNIVERSE, RT_SCOPE_LINK, RT_SCOPE_HOST 在报文的转发过程中,显然是每次转发都要使到达目的网络的距离要越来越小或不变,否则根本到达不了目的网络。上面提到的scope很好的实现这个功能,在查找路由表中,表项的scope一定是更小或相等的scope(比如RT_SCOPE_LINK,则表项scope只能为RT_SCOPE_LINK或RT_SCOPE_HOST)。 路由缓存 路由缓存用于加速路由的查找,当收到报文或发送报文时,首先会查询路由缓存,在内核中被组织成hash表,就是rt_hash_table。 static struct rt_hash_bucket *rt_hash_table __read_mostly; [net\ipv4\route.c] 通过ip_route_input()进行查询,首先是缓存操作时,通过[src_ip, dst_ip, iif,rt_genid]计算出hash 值 hash = rt_hash(daddr, saddr, iif, rt_genid(net)); 此时rt_hash_table[hash].chain就是要操作的缓存表项的链表,比如遍历该链表for (rth = rt_hash_table[hash].chain; rth; rth = rth->u.dst.rt_next) 因此,在缓存中查找一个表项,首先计算出hash值,取出这组表项,然后遍历链表,找出指定的表项,这里需要完全匹配[src_ip, dst_ip, iif, tos, mark, net],实际上struct rtable中有专门的属性用于缓存的查找键值– struct flowi。 /* Cache lookup keys */ struct flowi fl; 当找到表项后会更新表项的最后访问时间,并取出dst dst_use(&rth->u.dst, jiffies); skb_dst_set(skb, &rth->u.dst); 路由缓存的创建 inet_init() -> ip_init() -> ip_rt_init() rt_hash_table = (struct rt_hash_bucket *) alloc_large_system_hash("IP route cache", sizeof(struct rt_hash_bucket), rhash_entries, (totalram_pages >= 128 * 1024) ? 15 : 17,

静态路由与动态路由

静态路由与动态路由 (一)静态路由 1. 静态路由简介 静态路由(Static Routing )是一种特殊的路由,由网络管理员采用手工方法在路由器中配置而成。静态路由优点: ●手工配置,可以精确控制路由选择,改进网络的性能。 ●不需要动态路由协议参与,这将会减少路由器的开销,为重要的应用保证带宽。 2. 静态路由的配置 在路由器上增加静态路由命令为IP ROUTE。下面,我们将介绍如何用IP ROUTE命令来添加路由,以及IP ROUTE的各项参数。 [Quidway] ip route-static ip-address{ mask| masklen} { interface-type interfacce-name | nexthop-address } [ preference value ] [ reject | blackhole ] 如果在配置过程需要删除一条静态路由,可以在系统视图直接使用undo ip route-static 命令,完整语法格式如下: [Quidway] undo ip route-static {all | ip-address { mask | masklen }[ interface-type interfacce-name | nexthop-address ] [ preference value ] } 3. 缺省路由 缺省路由是一种特殊的路由。当数据在查找路由表时,没有找到和目标相匹配的路由表项时,为数据指定的路由。考虑某公司使用一台路由器连接到互连网情况。路由器有一端连接公司内部,另一端和互连网络连接。由于路由表不可能描述互连网上的所有网络的路由,因此这种情形将是使用缺省路由的最好情形。路由器收到数据包以后,如果在路由表中无法找到与目的地址相匹配的路由表项,则数据包将通过缺省路由从接口发出。缺省路由可以减少路由器中的路由记录的数目,降低路由器配置的复杂程度,放宽对路由器性能的要求。缺省路由可以通过静态路由手工配置,某些动态路由协议也可以自动生成缺省路由。 缺省路由的配置 缺省路由配置命令格式: [Quidway] ip route-static 0.0.0.0 0.0.0.0 next-hop-address (二)动态路由协议 在动态路由中,管理员不再需要与静态配置一样——手工的对路由器上的路由表进行维护,而是在每台路由器上运行一个路由表的管理程序。这个路由表的管理程序会根据路由器上的接口的配置(如IP地址的配置)及所连接的链路的状态,生成路由表中的路由表项。 1. 动态路由协议分类 动态路由协议有很多种,分类标准也很多。主要的分类标准是根据算法的不同来划分,不同的算法能适应的网络规模也不尽相同。目前使用的两种常见的动态路由协议算法是距离矢量算法和链路状态算法,它们各有各的特点。 (1) 距离矢量算法

家用路由器静态路由表设置

随着宽带接入的普及,很多家庭和小企业都组建了局域网来共享宽带接入。而且随着局域网规模的扩大,很多地方都涉及到2台或以上路由器的应用。当一个局域网内存在2台以上的路由器时,由于其下主机互访的需求,往往需要设置路由。由于网络规模较小且不经常变动,所以静态路由是最合适的选择。 本文作为一篇初级入门类文章,会以几个简单实例讲解静态路由,并在最后讲解一点关于路由汇总(归纳)的知识。由于这类家庭和小型办公局域网所采用的一般都是中低档宽带路由器,所以这篇文章就以最简单的宽带路由器为例。(其实无论在什么档次的路由器上,除了配置方式和命令不同,其配置静态路由的原理是不会有差别的。)常见的1WAN口、4LAN口宽带路由器可以看作是一个最简单的双以太口路由器+一个4口小交换机,其WAN口接外网,LAN口接内网以做区分。 路由就是把信息从源传输到目的地的行为。形象一点来说,信息包好比是一个要去某地点的人,路由就是这个人选择路径的过程。而路由表就像一张地图,标记着各种路线,信息包就依靠路由表中的路线指引来到达目的地,路由条目就好像是路标。在大多数宽带路由器中,未配置静态路由的情况下,内部就存在一条默认路由,这条路由将LAN口下所有目的地不在自己局域网之内的信息包转发到WAN口的网关去。宽带路由器只需要进行简单的WAN口参数的配置,内网的主机就能访问外网,就是这条路由在起作用。本文将分两个部分,第一部分讲解静态路由的设置应用,第二部分讲解关于路由归纳的方法和作用。 下面就以地瓜这个网络初学者遇到的几个典型应用为例,让高手大虾来说明一下什么情况需要设置静态路由,静态路由条目的组成,以及静态路由的具体作用。 例一:最简单的串连式双路由器型环境 这种情况多出现于中小企业在原有的路由器共享Internet的网络中,由于扩展的需要,再接入一台路由器以连接另一个新加入的网段。而家庭中也很可能出现这种情况,如用一台宽带路由器共享宽带后,又加入了一台无线路由器满足无线客户端的接入。 地瓜:公司里原有一个局域网LAN 1,靠一台路由器共享Internet,现在又在其中添加了一台路由器,下挂另一个网段LAN 2的主机。经过简单设置后,发现所有主机共享Internet没有问题,但是LAN 1的主机无法与LAN 2的主机通信,而LAN 2的主机却能Ping通LAN 1下的主机。这是怎么回事? 大虾:这是因为路由器隔绝广播,划分了广播域,此时LAN 1和LAN 2的主机位于两个不同的网段中,中间被新加入的路由器隔离了。所以此时LAN 1下的主机不能“看”到LAN 1里的主机,只能将信息包先发送到默认网关,而此时的网关没有设置到LAN 2的路由,无法做有效的转发。这种情况下,必须要设置静态路由条目。此种网络环境的拓扑示意如下: (注:图中省略了可能存在的交换层设备) 如图一所示,LAN 1为192.168.0.0这个标准C类网段,路由器R1为原有路由器,它的WAN口接入宽带,LAN口(IP为192.168.0.1)挂着192.168.0.0网段(子网掩码255.255.255.0的C类网)主机和路由器R2(新添加)的WAN口(IP为192.168.0.100)。R2的LAN口(IP为192.168.1.1)下挂着新加入的LAN 2这个192.168.1.0的C类不同网段的主机。

路由表的相关参数解释

路由表的相关参数解释 以下给出了一个查看路由表实例,并通过该实例来说明路由表中各参数的涵义。 如图所示路由表中,每一行代表一条静态路由,各参数项涵义如下: IpAddr/Mask:目的地址/掩码长度; 该值为“0.0.0.0/0”对应的路由为缺省路由。 GwIpAddr:网关地址(下一跳地址) 如果是直接路由,即目的地址为与对应端口直接相连的网络,则显示为“-”。 特别地,对于PPPoE拨号上网线路来说,拨号成功后,对应的缺省路由以及绑定在该PPPoE 连接上的静态路由的网关地址均将显示为PPPoE拨号获得的IP地址。 IfId:转发接口 部分转发接口的涵义如下: ie0:物理接口LAN; ie1:物理接口W AN; ie2:物理接口DMZ/WAN2; ptpdial0:待拨的虚端口; ptpx:虚端口x,x为对应的虚端口号,取值为0、1、2、…; bhole0:内部接口,转发到该端口的所有包都被HiPER丢弃; local:内部软路由接口,转发到HiPER本身; reject:内部接口,转发到该端口的所有数据包都被HiPER拒绝,并回应一个ICMP不可达;

loopback:回环地址,代表127.0.0.0/8网段,不被转发; mcast:多播; Flag:标志 该参数用来显示路由的状态。该参数显示字的母对应的全称如下。 *-Hidden,o-OSPF,i-ICMP,l-Local,r-RIP,n-SNMP,c-Connected,s-Static,R-Remote,g-Gateway,h-Host,p-Private,u-Up,t-Temp,M -Multiple,F-Float,a-Append,N-NA T,x-rtNAT,y-NATrt,B-BIND,E-IPSec,?-Unknown。 部分标志项的涵义如下: *-Hidden:此条路由目前不生效,一般是此条路由处于备份状态或是线路失效导致路由中断;g–Gateway:此条路由为间接路由; h–Host:此条路由为主机路由; N-NA T:此条路由上启用了NAT,局域网用户正通过此条路由共享上网; F-Float:此条路由配置了路由优先级等信息,目前处于浮动状态,会因为线路的生效或者失效而决定该条路由是否启用; M-Multiple:到同一个目的地,当前至少有两条可使用的路由; a-Append:到同一目的地,允许存在多条路由; E-IPSec:当前路由的转发端口上启用了IPSec策略。 Cost:优先级。系统自动生成的静态路由的优先级均为20。 Met:跳数。系统自动生成的静态路由的跳数均为0,即全部都是直接路由。 Use:使用次数。系统使用该静态路由转发数据包的次数。 Age:使用时间。该静态路由生成的年龄。单位:秒。

相关主题