计网 - Ep6 - 路由算法丨学习记录

196 阅读6分钟

个人博客:conqueror712.github.io/

知乎:www.zhihu.com/people/soeu…

Bilibili:space.bilibili.com/57089326

掘金:juejin.cn/user/129787…

注:本文图片的水印均是笔者自己的。

参考资料:《自顶向下的计算机网络》《王道计算机网络考研复习指导》

本节概述:

网络层的路由算法主要解决数据包从源地址到达目的地址的路径选择问题。主要的路由算法有:

  1. 距离 - 向量路由算法:每个路由器维护到各个网络的距离和方向信息,并周期性交换这个信息来更新自己的路由表,如RIP协议。
  2. 链路状态路由算法:每个路由器发布自己与相邻路由器相连的链路信息,所有路由器据此构建整个网络拓扑结构图,并计算最短路径,如OSPF协议。
  3. 层级路由算法:网络划分为多个层级,每个层级内部采用某种路由算法,层级之间采用另一种路由算法,如IS-IS协议。 以上几种常见的路由算法根据网络规模和结构的不同,在网络层有着不同的应用,用以确定最优的数据传输路径。

静态路由与动态路由:

前面我们只知道,路由器转发分组这一过程,是通过路由表来转发的,但是并没有具体说路由表是怎么来的。

事实上,路由表是通过各种算法得到的。

能否随网络的通信量拓扑结构,来自适应地进行调整变化来划分,路由算法可以分为静态动态两类。

静态路由算法:

非自适应的

需要网络管理员手工配置的路由信息。

不能及时适应网络状态的变化,适用于简单的、变化少的小型网络。

特点:

  • 简便
  • 开销小

动态路由算法:

自适应的

路由器上的路由表项是通过相互连接的路由器之间彼此交换信息,然后按照一定的算法优化而来的。

这些路由信息会在一定时间间隔里不断更新,以,适应不断变化的网络,从而随时获得最优的效果。

特点:

  • 可以改善网络性能
  • 有助于流量控制
  • 会增加网络负担
  • 有可能因为反应太快而引起振荡
  • 有可能因为反应太慢而影响网络路由的一致性

接下来我们介绍两种常用的动态路由算法。


距离 - 向量路由算法:

算法描述:

所有节点都定期地将它们的整个路由选择表传送给所有与之直接相邻的节点(保证路由的有效性和一致性)。

这种路由选择表的组成:

  • 每条路径的目的地
  • 路径的 "代价" (通常采用RIP算法,即采用"跳数"作为距离的度量)

更新路由表的两种情况:

  • 有一条新的路由
  • 某一条路由有更小的代价

算法实质:

迭代计算一条路由中的站段数或延迟时间,从而得到到达一个目标的最小代价通路。

更新报文的大小与通信子网的节点数成正比

该算法更有可能遇到路由环路的问题。


链路状态路由算法:

每个参与该算法的节点具有完全的网络拓扑信息,它们执行以下两项任务:

  1. 主动测试所有邻接节点的状态
  2. 定期地将链路状态传播给所有其他节点

典型的链路状态算法:OSPF算法。

算法描述:

对于一个节点,先检查所有直接链路的状态,并将所得的状态信息发送给网上的所有其他节点

每当链路状态报文到达的时候,路由节点就会使用这些状态信息去试图更新自己的网络拓扑状态视野图

顺带一提,更新路由使用的是Dijkstra算法,因为是计算单源最短路。

算法特征:

向所有的节点发送状态信息时,使用的是泛洪算法

发送的信息是什么?事实上是链路状态,而且是与当前路由器相邻的所有路由器的链路状态,那么链路状态包括什么呢?

  • 代价
  • 距离
  • 时延
  • 带宽

只有当链路状态发生变化的时候,路由器才会泛洪。

算法优势:

因为每个路由节点都使用干同样的原始状态数据,独立地计算路径,并且链路状态报文不加改变地传播,所以易于查找故障

因为链路状态报文仅运载来自单个节点关于直接链路的信息,其大小与节点个数无关,所以有着比距离 - 向量算法更好的规模可扩展性


层次路由:

层次路由的必要性:

为什么需要层次路由呢?

我们以一张图来解释:

avatar

两大类路由选择协议:

自治系统来源于被因特网划分的互联网

两个自治系统之间需要通信,就需要一种协议来屏蔽两个自治系统之间的差异,所以有了路由选择协议的两大划分:

  • IGP内部网关协议:一个自治系统内部使用的,具体的协议有RIP和OSPF等。
  • EGP外部网关协议:自治系统之间所使用的,也可以为分组在不同自治系统之间选择最优的路径,具体的协议有BGP。

关于OSPF的更多:

使用层次路由时,OSPF将一个自治系统再划分为若干个区域,每个路由器都知道在本区域内如何把分组路由到目的地的细节,但是不用知道其他区域的内部结构

采用分层次划分区域的方法,虽然会让交换信息的种类增多,也会使OSPF协议更复杂,但是!这样做却能使每个区域内部交换路由信息的通信量大大减小,所以说,OSPF协议能够用于规模很大的自治系统中。


[附加] 本节易错知识点习题:

慢收敛,是导致发生路由回路的根本原因。

慢收敛:在距离 - 向量路由协议中,好消息传得快,坏消息传得慢,这就导致了路由信息发生变化时,各路由器接收信息是异步的。