路由算法分类.docx
《路由算法分类.docx》由会员分享,可在线阅读,更多相关《路由算法分类.docx(15页珍藏版)》请在冰点文库上搜索。
路由算法分类
路由算法及分类
路由算法及分类:
1、非自适应算法,静态路由算法
不能根据网络流量和拓扑结构的变化更新路由表,使用静态路由表,也称为固定式路由选择算法。
特点:
简单,开销少;灵活性差。
2、自适应算法,动态路由算法
可根据网络流量和拓扑结构的变化更新路由表。
特点:
开销大;健壮性和灵活性好。
3、最优化原则(optimalityprinciple)
如果路由器J在路由器I到K的最优路由上,那么从J到K的最优路由会落在同一路由上。
4、汇集树(sinktree)
从所有的源结点到一个给定的目的结点的最优路由的集合形成了一个以目的结点为根的树,称为汇集树;
路由算法的目的是找出并使用汇集树。
几种典型的路由选择算法:
1、最短路径路由算法(ShortestPathRouting)
1)基本思想
构建子网的拓扑图,图中的每个结点代表一个路由器,每条弧代表一条通信线路。
为了选择两个路由器间的路由,算法在图中找出最短路径。
2)测量路径长度的方法
结点数量
地理距离
传输延迟
距离、信道带宽等参数的加权函数
3)Dijkstra算法
每个结点用从源结点沿已知最佳路径到本结点的距离来标注,标注分为临时性标注和永久性标注;
初始时,所有结点都为临时性标注,标注为无穷大;
将源结点标注为0,且为永久性标注,并令其为工作结点;
检查与工作结点相邻的临时性结点,若该结点到工作结点的距离与工作结点的标注之和小于该结点的标注,则用新计算得到的和重新标注该结点;
在整个图中查找具有最小值的临时性标注结点,将其变为永久性结点,并成为下一轮检查的工作结点;
重复第四、五步,直到目的结点成为工作结点;
2、洪泛及选择洪泛算法
1)洪泛算法(Flooding)
属于静态路由算法
a)基本思想
把收到的每一个包,向除了该包到来的线路外的所有输出线路发送。
b)主要问题
洪泛要产生大量重复包。
c)解决措施
每个包头包含站点计数器,每经过一站计数器减1,为0时则丢弃该包;
记录包经过的路径
2)选择性洪泛算法(selectiveflooding)
洪泛法的一种改进。
将进来的每个包仅发送到与正确方向接近的线路上。
3)应用情况
路由器和线路的资源过于浪费,实际很少直接采用;
具有极好的健壮性,可用于军事应用;
作为衡量标准评价其它路由算法。
3、基于流量的路由算法(Flow-BasedRouting)
属于静态路由算法
1)基本思想
既考虑拓扑结构,又兼顾网络负荷;
前提:
每对结点间平均数据流是相对稳定和可预测的;
根据网络带宽和平均流量,可得出平均包延迟,因此路由选择问题归结为找产生网络最小延迟的路由选择算法。
提前离线(off-line)计算
2)需要预知的信息
网络拓扑结构;
通信量矩阵Fij;
线路带宽矩阵Cij;
3)路由算法(可能是临时的)
1/m=800bits
根据排队论,平均延迟T=1/(mC-l)
4、距离向量路由算法(DistanceVectorRouting)
属于动态路由算法,也称Bellman-Ford路由算法和Ford-Fulkerson算法,最初用于ARPANET,被RIP协议采用。
1)基本思想
每个路由器维护一张表,表中给出了到每个目的地的已知最佳距离和线路,并通过与相邻路由器交换距离信息来更新表;
以子网中其它路由器为表的索引,表项包括两部分:
到达目的结点的最佳输出线路,和到达目的结点所需时间或距离;
每隔一段时间,路由器向所有邻居结点发送它到每个目的结点的距离表,同时它也接收每个邻居结点发来的距离表;
邻居结点X发来的表中,X到路由器i的距离为Xi,本路由器到X的距离为m,则路由器经过X到i的距离为Xi+m。
根据不同邻居发来的信息,计算Xi+m,并取最小值,更新本路由器的路由表;
注意:
本路由器中的老路由表在计算中不被使用
2)无限计算问题
算法的缺陷:
对好消息反应迅速,对坏消息反应迟钝;
3)水平分裂算法
工作过程与距离向量算法相同,区别在于到X的距离不向真正通向X的邻居结点报告,使得坏消息传播的也快。
虽然广泛使用,但有时候会失败。
5、链路状态路由算法(LinkStateRouting)
1)距离向量路由算法的主要问题
选择路由时,没有考虑线路带宽;
路由收敛速度慢。
2)链路状态路由算法
发现邻居结点,并学习它们的网络地址;
路由器启动后,通过发送HELLO包发现邻居结点;
两个或多个路由器连在一个LAN时,引入人工结点;
测量到每个邻居结点的延迟或开销;
一种直接的方法是:
发送一个要对方立即响应的ECHO包,来回时间除以2即为延迟。
将所有学习到的内容封装成一个包;
包以发送方的标识符开头,后面是序号、年龄和一个邻居结点列表;
列表中对应每个邻居结点,都有发送方到它们的延迟或开销;Fig.5-15
链路状态包定期创建或发生重大事件时创建。
将这个包发送给所有其它路由器;
3)基本思想
洪泛链路状态包,为控制洪泛,每个包包含一个序号,每次发送新包时加1。
路由器记录信息对(源路由器,序号),当一个链路状态包到达时,若是新的,则分发;若是重复的,则丢弃;若序号比路由器记录中的最大序号小,则认为过时而丢弃;
4)改进
序号循环使用会混淆,解决办法:
使用32位序号;
路由器崩溃后,序号重置;
链路状态包到达后,延迟一段时间,并与其它已到达的来自同一路由器的链路状态包比较序号,丢弃重复包,保留新包;
链路状态包需要应答;
计算到每个其它路由器的最短路径。
根据Dijkstra算法计算最短路径;
5)实用协议
OSPF
IS-IS
从E发来的链路状态包有两个,一个经过EAB,另一个经过EFB;
从D发来的链路状态包有两个,一个经过DCB,另一个经过DFB;
6、分层路由(HierarchicalRouting)
1)网络规模增长带来的问题
路由器中的路由表增大;
路由器为选择路由而占用的内存、CPU时间和网络带宽增大。
2)分层路由
分而治之的思想;
根据需要,将路由器分成区域(regions)、聚类(clusters)、区(zones)和组(groups)…
Fig.5-17,路由表由17项减为7项。
3)分层路由带来的问题
路由表中的路由不一定是最优路由。
7、移动主机的路由
1)需要解决的问题
为了能够将数据包转发给移动主机,网络必须首先要找到移动的主机。
2)网络结构示意图
3)一些基本概念
移动用户(mobileusers):
包括位置发生变化,通过固定方式或移动方式与网络连接的两类用户;
家乡位置(homelocation):
所有用户都有一个永久的家乡位置,用一个地址来标识;
外部代理(foreignagent):
每个区域(一个LAN或一个wirelesscell)有一个或多个外部代理,它们记录正在访问该区域的移动用户;
家乡代理(homeagent):
每个区域有一个家乡代理,负责记录家乡在该区域,但是目前正在访问其它区域的用户。
移动用户进入一个新区域时,必须首先向外部代理注册
外部代理定期广播声明自己的存在和地址的包,新到达的移动主机接收该信息;若移动用户未能收到该信息,则移动主机广播包,询问外部代理的地址;
移动主机向外部代理注册,告知其家乡地址、目前的数据链路层地址和一些安全信息;
外部代理与移动主机的家乡代理联系,告知移动主机的目前位置、自己的网络地址和一些安全信息;
家乡代理检查安全信息,通过,则给外部代理确认;
外部代理收到确认后,在登记表中加入一项,并通知移动主机注册成功
4)移动用户的路由转发过程
当一个包发给移动用户时,首先被转发到用户的家乡局域网;
该包到达用户的家乡局域网后,被家乡代理接收,家乡代理查询移动用户的新位置和与其对应的外部代理的地址;
家乡代理采用隧道技术,将收到的包作为净荷封装到一个新包中,发给外部代理;
家乡代理告诉发送方,发给移动用户的后续包作为净荷封装成包直接发给外部代理;
外部代理收到包后,将净荷作为数据链路帧发给移动用户;
8、广播路由(BroadcastRouting)
广播(broadcasting):
同时发送一个包给所有目的地。
1)实现广播路由的方法
通过多个点到点通信实现,缺点:
浪费带宽,源主机需要知道所有目的地;
洪泛(flooding)方式,缺点:
浪费带宽
多目的地路由(multidestinationrouting)
每个包包括一个目的地列表或一个目的地位图;
路由器根据目的地做路由选择,在相应输出线路上复制一个包,并将该线路对应的目的地填入包中。
利用汇集树(sinktree)或生成树(spanningtree)
生成树是通信子网的一个子集,将所有路由器连接起来,并且没有回路;
如果每个路由器知道它的哪些线路属于生成树,则将收到的广播包拷贝到输入线路以外的所有其它生成树线路上;
2)算法评价
优点:
最优利用带宽,产生最小数目的包
缺点:
每个路由器都需要构造生成树