路由生产算法调研

                                                路由生产算法调研 
路由算法及分类:
1、非自适应算法,静态路由算法
不能根据网络流量和拓扑结构的变化更新路由表,使用静态路由表,也称为固定式路由选择算法。
特点:简单,开销少;灵活性差。
2、自适应算法,动态路由算法
可根据网络流量和拓扑结构的变化更新路由表。
特点:开销大;健壮性和灵活性好。
3、最优化原则(optimality principle
如果路由器 J 在路由器 I K 的最优路由上,那么从 J K 的最优路由会落在同一路由上。
4、汇集树(sink tree
从所有的源结点到一个给定的目的结点的最优路由的集合形成了一个以目的结点为根的树,称为汇集树;
路由算法的目的是找出并使用汇集树。

几种典型的路由选择算法:
1、最短路径路由算法(Shortest Path Routing
1)基本思想:构建子网的拓扑图,图中的每个结点代表一个路由器,每条弧代表一条通信线路。为了选择两个路由器间的路由,算法在图中找出最短路径。
2)测量路径长度的方法:结点数量、地理距离、传输延迟、距离或信道带宽等参数的加权函数。
3Dijkstra算法
a:每个结点用从源结点沿已知最佳路径到本结点的距离来标注,标注分为临时性标注和永久性标注;
b:初始时,所有结点都为临时性标注,标注为无穷大;
c:将源结点标注0为永久性标注,并令其为工作结点;
d:检查与工作结点相邻的临时性结点,若该结点到工作结点的距离与工作结点的标注之和小于该结点的标注,则用新计算得到的和重新标注该结点;
e:在整个图中查找具有最小值的临时性标注结点,将其变为永久性结点,并成为下一轮检查的工作结点;
f:重复d,e,直到目的结点成为工作结点;
具体工作方式如下:

2、洪泛及选择洪泛算法
1 洪泛算法(Flooding):属于静态路由算法
a)基本思想:把收到的每一个包,向除了该包到来的线路外的所有输出线路发送。
b)主要问题:洪泛要产生大量重复包。
c)解决措施:每个包头包含站点计数器,每经过一站计数器减1,为0时则丢弃该包;(记录包经过的路径)
2)选择性洪泛算法(selective flooding
洪泛法的一种改进。将进来的每个包仅发送到与正确方向接近的线路上。
3)应用情况
路由器和线路的资源过于浪费,实际很少直接采用;具有极好的健壮性,可用于军事应用;作为衡量标准评价其它路由算法。
3、基于流量的路由算法(Flow-Based Routing):属于静态路由算法
1)基本思想:既考虑拓扑结构,又兼顾网络负荷;
前提:
a:每对结点间平均数据流是相对稳定和可预测的;
b:根据网络带宽和平均流量,可得出平均包延迟,因此路由选择问题归结为找产生网络最小延迟的路由选择算法。
c:提前离线(off-line)计算
2)需要预知的信息
a:网络拓扑结构;
b:通信量矩阵Fij
c:线路带宽矩阵Cij
3)路由算法(可能是临时的)




1/m = 800 bits
根据排队论,平均延迟 T = 1/ (mC - l) 

4、距离向量路由算法(Distance Vector Routing
属于动态路由算法,也称Bellman-Ford路由算法和Ford-Fulkerson算法,最初用于ARPANET,被RIP协议采用。
1)基本思想
每个路由器维护一张表,表中给出了到每个目的地的已知最佳距离和线路,并通过与相邻路由器交换距离信息来更新表;
以子网中其它路由器为表的索引,表项包括两部分:到达目的结点的最佳输出线路,和到达目的结点所需时间或距离;
每隔一段时间,路由器向所有邻居结点发送它到每个目的结点的距离表,同时它也接收每个邻居结点发来的距离表;
邻居结点X发来的表中,X到路由器i的距离为Xi,本路由器到X的距离为m,则路由器经过Xi的距离为Xi + m。根据不同邻居发来的信息,计算Xi + m,并取最小值,更新本路由器的路由表;
注意:本路由器中的老路由表在计算中不被使用


2)无限计算问题
算法的缺陷:对好消息反应迅速,对坏消息反应迟钝;


3)水平分裂算法
工作过程与距离向量算法相同,区别在于到X的距离不向真正通向X的邻居结点报告,使得坏消息传播的也快。
虽然广泛使用,但有时候会失败。

5、链路状态路由算法 Link State Routing
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、分层路由(Hierarchical Routing
1)网络规模增长带来的问题
路由器中的路由表增大;
路由器为选择路由而占用的内存、CPU时间和网络带宽增大。
2)分层路由
分而治之的思想;
根据需要,将路由器分成区域(regions)、聚类(clusters)、区(zones)和组(groups)…
Fig. 5-17,路由表由17项减为7项。
3)分层路由带来的问题
路由表中的路由不一定是最优路由。


7、移动主机的路由
1)需要解决的问题
为了能够将数据包转发给移动主机,网络必须首先要找到移动的主机。
2)网络结构示意图


3)一些基本概念
移动用户(mobile users):包括位置发生变化,通过固定方式或移动方式与网络连接的两类用户;
家乡位置(home location):所有用户都有一个永久的家乡位置,用一个地址来标识;
外部代理(foreign agent):每个区域(一个LAN或一个wireless cell)有一个或多个外部代理,它们记录正在访问该区域的移动用户;
家乡代理(home agent):每个区域有一个家乡代理,负责记录家乡在该区域,但是目前正在访问其它区域的用户。
移动用户进入一个新区域时,必须首先向外部代理注册
外部代理定期广播声明自己的存在和地址的包,新到达的移动主机接收该信息;若移动用户未能收到该信息,则移动主机广播包,询问外部代理的地址;
移动主机向外部代理注册,告知其家乡地址、目前的数据链路层地址和一些安全信息;
外部代理与移动主机的家乡代理联系,告知移动主机的目前位置、自己的网络地址和一些安全信息;
家乡代理检查安全信息,通过,则给外部代理确认;
外部代理收到确认后,在登记表中加入一项,并通知移动主机注册成功
4)移动用户的路由转发过程
当一个包发给移动用户时,首先被转发到用户的家乡局域网;
该包到达用户的家乡局域网后,被家乡代理接收,家乡代理查询移动用户的新位置和与其对应的外部代理的地址;
家乡代理采用隧道技术,将收到的包作为净荷封装到一个新包中,发给外部代理;
家乡代理告诉发送方,发给移动用户的后续包作为净荷封装成包直接发给外部代理;
外部代理收到包后,将净荷作为数据链路帧发给移动用户;


8、广播路由(Broadcast Routing
广播(broadcasting):同时发送一个包给所有目的地。
1)实现广播路由的方法:
通过多个点到点通信实现,缺点:浪费带宽,源主机需要知道所有目的地;
洪泛(flooding)方式,缺点:浪费带宽
多目的地路由(multidestination routing
a:每个包包括一个目的地列表或一个目的地位图;
b:路由器根据目的地做路由选择,在相应输出线路上复制一个包,并将该线路对应的目的地填入包中。
c:利用汇集树(sink tree)或生成树(spanning tree
d:生成树是通信子网的一个子集,将所有路由器连接起来,并且没有回路;
e:如果每个路由器知道它的哪些线路属于生成树,则将收到的广播包拷贝到输入线路以外的所有其它生成树线路上;
2)算法评价
优点:最优利用带宽,产生最小数目的包
缺点:每个路由器都需要构造生成树 
路由算法在路由协议中起着至关重要的作用,采用何种算法往往决定了最终的寻径结果,因此选择路由算法一定要仔细。通常需要综合考虑以下几个设计目标: 
(1)最优化:指路由算法选择最佳路径的能力。 
(2)简洁性:算法设计简洁,利用最少的软件和开销,提供最有效的功能。 
(3)坚固性:路由算法处于非正常或不可预料的环境时,如硬件故障、负载过高或操作失误时,都能正确运行。由于路由器分布在网络联接点上,所以在它们出故障时会产生严重后果。最好的路由器算法通常能经受时间的考验,并在各种网络环境下被证实是可靠的。 
(4)快速收敛:收敛是在最佳路径的判断上所有路由器达到一致的过程。当某个网络事件引起路由可用或不可用时,路由器就发出更新信息。路由更新信息遍及整个网络,引发重新计算最佳路径,最终达到所有路由器一致公认的最佳路径。收敛慢的路由算法会造成路径循环或网络中断。 
(5)灵活性:路由算法可以快速、准确地适应各种网络环境。例如,某个网段发生故障,路由算法要能很快发现故障,并为使用该网段的所有路由选择另一条最佳路径。 
路由算法按照种类可分为以下几种:静态和动态、单路和多路、平等和分级、源路由和透明路由、域内和域间、链路状态和距离向量。前面几种的特点与字面意思基本一致,下面着重介绍链路状态和距离向量算法。 


  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
路由修复算法是一种用于解决网络中故障路由算法。下面是一个简单的基于Matlab的路由修复算法示例: ```matlab % 定义邻接矩阵 adj_matrix adj_matrix = [0 1 0 1 1; 1 0 1 0 1; 0 1 0 1 0; 1 0 1 0 1; 1 1 0 1 0]; % 定义故障节点 faulty_node = 3; % 计算最短路径 d = dijkstra(adj_matrix); fprintf('Initial shortest path:\n'); disp(d); % 将故障节点的邻接矩阵设置为0,表示该节点失效 adj_matrix(faulty_node,:) = 0; adj_matrix(:,faulty_node) = 0; % 重新计算最短路径 d_new = dijkstra(adj_matrix); fprintf('New shortest path:\n'); disp(d_new); % 定义修复节点 repair_node = 3; % 将修复节点的邻接矩阵恢复为原来的值 adj_matrix(repair_node,:) = [0 1 0 1 0]; adj_matrix(:,repair_node) = [0 1 0 1 0]; % 重新计算最短路径 d_repaired = dijkstra(adj_matrix); fprintf('Repaired shortest path:\n'); disp(d_repaired); ``` 在上面的示例中,我们首先定义了一个邻接矩阵,然后指定了一个故障节点。接下来,我们使用Dijkstra算法计算了最短路径。然后,我们将故障节点的邻接矩阵设置为0,表示该节点失效,并重新计算了最短路径。接着,我们将修复节点的邻接矩阵恢复为原来的值,并再次计算最短路径。最后,我们输出了最短路径的结果。 需要注意的是,该示例仅适用于基于邻接矩阵的路由修复算法,并且还有很大的改进空间。如果您需要更高效和精确的路由修复算法,请考虑使用其他算法或库。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值