路由算法的分类(自适应路由、非自适应路由)

路由,是一个寻找抵达各个目的地的路径的过程。该过程中会创建一个叫做"路由表"的东西,路由器会根据路由表来决定如何转发数据包。路由算法会决定将数据包通过哪个路由传输到目的地。

路由算法可以分为三大类:

  1. 自适应算法(adaptive algorithms)
  2. 非自适应算法(non-adaptive algorithms)
  3. 混合算法(hybrid algorithms)

自适应路由算法(Adaptive Algorithms)

自适应算法会在网络拓扑或流量负载发生变化时改变路由选择(routing decisions),因此也被称为动态路由。该路由方式会依赖当前拓扑、网络负载、延迟等动态信息来调整路由。优化参数包含距离、跳数、预计传输时间等。

自适应算法可以进一步细分为:

  • 孤立(Isolated):在该方法中,每个节点都只使用自己拥有的信息来调整路由,而不关心其他节点拥有的信息,发送数据的节点对其他链路一无所知。该方案的缺点是数据包可能会被发往一个正处于拥塞状态的网络,带来更大的延迟。算法有:Hot potato 路由和 backward learning。
  • 中心化(Centralized):该方法中,一个中央节点拥有网络的所有信息,并作出所有的路由决策。这么做的优点是只需要有一个节点保存网络的全部信息,坏处是该节点一旦挂了网络就挂了。链路状态算法就被称作是一个中心化算法,因为其需要考虑网络中每一条链路上的开销。
  • 分布式(Distributed):该方法中,每个节点都会从自己的邻居那里获取网络信息,根据这些信息来转发数据包。这么做的缺点是,如果网络状态在两次信息更新的间隔中发生了变化,那么在这个变化过程中发送的数据包就会有比较大的延迟。该类算法通常会计算源地址和目的地址之间的最小开销路径。

优点

  1. 动态:自适应算法能够根据网络状态动态调整路由,选择更好的路径,带来更好的性能、更大带宽和更低的延迟
  2. 负载均衡:自适应算法能够在多个路径上分摊网络流量,避免拥塞,高效利用多个链路;
  3. 失效容忍(Fault Tolerance):自适应路由算法可以让数据包绕开失效的网络部分完成路由,增强可用性和可靠性;
  4. 更高性能:通过选择更短、更低拥塞的路径来实现更好的网络性能

缺点

  1. 复杂:相较于非自适应算法更加复杂,实现和维护更困难;
  2. 额外开销:算法需要更强的算力和内存,增加资源开销;
  3. 路由环路:有时会产生路由环路,导致数据包永远无法抵达目的地;
  4. 延迟:为每个数据包计算最短路径需要消耗时间,可能导致更大的延迟

非自适应路由算法(Non-Adaptive Algorithms)

该类算法不会自己修改路由——路由器中的路由都是预先计算好并下载进路由器的,因此也被称作 "静态路由" 。

该类算法可进一步细分为:

  • 洪泛(Flooding):该技术会将入向数据包从所有接口发出(除了传入该数据包的接口)。这么做的问题是数据包可能会被环路路由,节点可能会多次收到相同的数据包,但该问题可以通过序列号、跳数和生成树解决。
  • 随机走动(Random walk):该方法中,每个节点都会将数据包随机发给自己的邻居。由于通常都会选排队最短的链路发送数据包,因此该方法的鲁棒性很强。

优点

  1. 简洁:更好实现也更好维护,能够降低网络基础设施的复杂度;
  2. 开销低:只需要很少的运算资源;
  3. 更少的路由环路;
  4. 低延迟

缺点

  1. 低效:可能会选择非最优路径发送数据。带来拥塞、延迟等;
  2. 不灵活:无法根据网络状态进行调整;

混合算法

该类算法混合了自适应和非自适应算法 —— 混合算法方案将网络划分为多个区域,在每个区域中使用适合的算法。混合算法可以进一步划分为:

  • 链路状态(link-state):该方法中,每个路由器会为网络创建一个详细而完整的地图,然后把该地图和其他所有的路由器共享。该方法可实现更精准高效的路由选择;
  • 距离向量(Distance vector):该方法中,每个路由器都会维护一个表,该表包含了到达网络中每个节点的距离和方向信息。该表会和网络中的所有路由器共享。该方法的弊端是可能导致路由环路。

链路状态路由

  • 每个路由器都会和网络中的所有其他路由器共享自己邻居的信息;
  • 通过洪泛向所有路由器共享自己拥有的关于邻居的信息;
  • 只在信息发生变化时再次共享信息;
  • 使用 Dijkstra 算法构造路由表;
  • 问题:洪泛会带来较大的流量。洪泛的无限环路问题可以通过 TTL 解决

距离向量路由

  • 路由器会计算自己和目的地之间的距离(跳数);
  • 路由器会向自己的邻居共享网络信息,同时根据邻居共享的信息更新自己的路由表;
  • 以相同的时间间隔和邻居共享信息;
  • 使用 Bellman-Ford 算法制作路由表;
  • 问题:
    • 无限计数问题(Count to infinity problem):可以通过分裂视野(Splitting horizon)的方法来解决。主要思路是路由器不将接收到的路由信息送回传入信息的接口;
    • 好消息传播的快,坏消息传得慢;

路由和洪泛的区别

路由洪泛
需要路由表无需路由表
可能得到最短路径总是得到最短路径
不那么可靠更可靠
流量少流量很大
没有重复包可能会出现重复包
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值