当前位置: 首页 > article >正文

计算机网络——网络层—路由算法和路由协议

一、因特网的路由选择协议

• 不存在一种绝对的最佳路由算法。
• 所谓“最佳”只能是相对于某一种特定要求下得出的较为合理的选择而已。
• 实际的路由选择算法,应尽可能接近于理想的算法。
• 路由选择是个非常复杂的问题
    • 它是网络中的所有结点共同协调工作的结果。
    • 路由选择的环境往往是不断变化的,而这种变化有时无法事先知道。

二、路由算法

 • 路由选择是路由器用来将数据分组转发到目的地网络的过程,这个过程是通过路由表实现的,而路由表是通过各种路由算法得到的。
• 路由协议根据路由算法生成路由表并以此选择最佳路径进行分组转发。
• 路由算法是网络层软件的一部分,完成路由功能。

三、静态路由与动态路由

 • 根据路由算法能否随网络的通信量或网络拓扑自适应地进行调整来划分路由策略可分为两类,即
静态路由选择策略(也称为非自适应路由选择)和动态路由选择策略(也称为自适应路由选择)。
• 静态路由选择策略——即非自适应路由选择,其特点是简单和开销较小,但不能及时适应网络状
态的变化。
• 动态路由选择策略——即自适应路由选择,其特点是能较好地适应网络状态的变化,但实现起来
较为复杂,开销也比较大。

•距离-向量路由算法
距离-向量路由算法是-种分布式路由算法,也是最早实现的--个分布式动态路由算法。该算法中,每
个路由器维护一张矢量-距离表(通常称为V-D表),只有与它直接相连的路由器的信息,而没有网络中
每个路由器的信息。
距离-向量路由算法的基本思想是,当一个路由器启动时,先对其V-D路由表进行初始化,然后各路由器
周期性地向外广播其V_D路由表的内容,与之相连的路由器收到后,检查各相邻路由器的V-D报文,并作相应修改(若有一条新的路由,则在路由表中添加该路由;若有一个距离或路径代价更小的路由,则更新)。当网络中某一故障发生时,网络中的所有结点都必须采用相同方法重新计算路由表。

•链路状态路由算法
链路状态路由算法采用“最短路径优先(SPF)"算法来计算网络中每一个源结点与其他所有结点之间
的最短路径,是一种总体式路由算法。
它的思想是要求网络中所有参与链路状态路由协议的路由器都掌握网络的全部拓扑结构信息,并记录在路由数据库中。注意,链路状态算法中路由数据库实质上是一个网络结构的拓扑图。根据SPF的要求,路由器中路由表依赖于--张能表示整个网络拓扑结构的无向图G(V,E)。其中,结点V表示路由器,E表示连接路由器的链路。一般把G称链路状态(L-S)图。

•链路状态路由算法有三个特征:
(1)向本自治系统中的所有路由器发送信息。这里使用的方法是洪泛法(Flooding)
(2)发送的信息就是本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。
(3)只有当链路状态发生改变时,路由器才用洪泛法向所有路由器发送此信息。
   •优点:
         每个结点独立计算路径,易于查找故障;
         可扩展性好,适用于网络规模较大、拓扑结构变化频繁的网络环境。
   •缺点:
         对路由器CPU的处理能力要求较高。

四、层次路由

     分层路由采取分而治之的方法,把互联网划分为许多较小的自治系统。每个自治系统自己决定本
自治系统内部运行哪一个内部路由选择协议。
互联网把路由选择协议划分为两大类,即:
(1)内部网关协议IGP (Interior Gateway Protocol) 即在一个自治系统内部使用的路由选择协议,
使用最多的这类协议是RIP和OSPF协议。
(2)外部网关协议EGP (External Gateway Protocol)即在使用不同内部网关协议的自治系统之间通
信时使用的路由选择协议。目前使用最多的外部网关协议是BGP--4(BGP的版本4)。

五、自治系统 AS

• 自治系统 AS 的定义:在单一的技术管理下的一组路由器,而这些路由器使用一种 AS 内部的路由选择协议和共同的度量以确定分组在该 AS 内的路由,同时还使用一种 AS 之间的路由选择协议用以确定分组在 AS之间的路由。
• 现在对自治系统 AS 的定义是强调下面的事实:尽管一个 AS 使用了多种内部路由选择协议和度量,但重要的是一个 AS 对其他 AS 表现出的是一个单一的和一致的路由选择策略。

自治系统和内部网关协议、外部网关协议

自治系统之间的路由选择也叫做,域间路由选择(interdomain routing),
在自治系统内部的路由选择叫做,域内路由选择(intradomain routing) 

六、内部网关协议 RIP

 工作原理
• 路由信息协议 RIP 是内部网关协议 IGP中最先得到广泛使用的协议。
• RIP 是一种分布式的基于距离向量的路由选择协议。
• RIP 协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录。

"距离”的定义
• 从一路由器到直接连接的网络的距离定义为 1。
• 从一个路由器到非直接连接的网络的距离定义为所经过的路由器数加 1。
• RIP 协议中的“距离”也称为“跳数”(hop count),因为每经过一个路由器,跳数就加 1。
• 这里的“距离”实际上指的是“最短距离”
• RIP 认为一个好的路由就是它通过的路由器的数目少,即“距离短”。
• RIP 允许一条路径最多只能包含 15 个路由器。
• “距离”的最大值为16 时即相当于不可达。可见 RIP 只适用于小型互联网。
• RIP 不能在两个网络之间同时使用多条路由。RIP 选择一个具有最少路由器的路由(即最短路由),哪怕还存在另一条高速(低时延)但路由器较多的路由。

RIP 协议的三个要点:

• 仅和相邻路由器交换信息。
• 交换的信息是当前本路由器所知道的全部信息,即自己的路由表。
• 按固定的时间间隔交换路由信息,例如,每隔 30 秒。

路由表的建立:

 • 路由器在刚刚开始工作时,只知道到直接连接的网络的距离(此距离定义为1)。
• 以后,每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。
• 经过若干次更新后,所有的路由器最终都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器的地址。
• RIP 协议的最终是收敛(convergence)的,即在自治系统中所有的结点都得到正确的路由选择信息的过程。

路由器之间交换信息:

  • RIP协议让互联网中的所有路由器都和自己的相邻路由器不断交换路由信息,并不断更新其路由
表,使得从每一个路由器到每一个目的网络的路由都是最短的(即跳数最少)。
• 虽然所有的路由器最终都拥有了整个自治系统的全局路由信息,但由于每一个路由器的位置不
同,它们的路由表当然也应当是不同的。

RIP2 协议的报文格式:

 

RIP 协议的优缺点

• RIP是应用层协议,使用UDP协议。
• RIP协议首部开销是20B。
• RIP 协议最大的优点就是实现简单,开销较小。
• RIP 限制了网络的规模,它能使用的最大距离为 15(16 表示不可达)。
• 路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就加。
• 这就是好消息传播得快,而坏消息传播得慢。网络出故障的传播时间往往需要较长的时间(例如
数分钟)。这是 RIP 的一个主要缺点。

七、内部网关协议 OSPF

 OSPF 协议的基本特点:
     • “最短路径优先”是因为使用了 Dijkstra 提出的最短路径算法SPF
     • OSPF 只是一个协议的名字,它并不表示其他的路由选择协议不是“最短路径优先”。
     • 是分布式的链路状态协议。

三个要点

• 向本自治系统中所有路由器发送信息,这里使用的方法是洪泛法。
• 发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。
      • “链路状态”就是说明本路由器都和哪些路由器相邻,以及该链路的“度量”(metric)。
• 只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息。
• OSPF是网络层协议,它不适用UDP 或TCP而是直接IP数据报发送。

链路状态数据库

• 由于各路由器之间频繁地交换链路状态信息,因此所有的路由器最终都能建立一个链路状态数
据库。
• 这个数据库实际上就是全网的拓扑结构图,它在全网范围内是一致的(这称为链路状态数据库
的同步)。
• OSPF 的链路状态数据库能较快地进行更新,使各个路由器能及时更新其路由表。OSPF 的更新
过程收敛得快是其重要优点。
 

• 由于各路由器之间频繁地交换链路状态信息,因此所有的路由器最终都能建立一个链路状态数
据库。
• 这个数据库实际上就是全网的拓扑结构图,它在全网范围内是一致的(这称为链路状态数据库
的同步)。
• OSPF 的链路状态数据库能较快地进行更新,使各个路由器能及时更新其路由表。OSPF 的更新
过程收敛得快是其重要优点。
链路状态数据库

OSPF 的区域(area)

• 为了使 OSPF 能够用于规模很大的网络,OSPF 将一个自治系统再划分为若干个更小的范围,叫作区域。
• 每一个区域都有一个区域标识符(用点分十进制表示)。
    主干区域(backbone area)。主干区域的标识符规定为0.0.0.0。
    主干区域的作用是用来连通其他在下层的区域。


 

OSPF 的五种组类型

• 类型1,问候(Hello)分组。
• 类型2,数据库描述(Database Description)分组。
• 类型3,链路状态请求(Link State Request)分组。
• 类型4,链路状态更新(Link State Update)分组,用洪泛法对全网更新链路状态。
• 类型5,链路状态确认(Link State Acknowledgment)分组。

OSPF的基本操作

 

 

 

OSPF 的其他特点

 • OSPF 用 IP 数据报传送。
• OSPF 对不同的链路可根据 IP 分组的不同服务类型 TOS 而设置成不同的代价。因此,OSPF 对于不同类型的业务可计算出不同的路由。
• 如果到同一个目的网络有多条相同代价的路径,那么可以将通信量分配给这几条路径。这叫作多路径间的负载平衡。
• 所有在 OSPF 路由器之间交换的分组都具有鉴别的功能。 

• 支持可变长度的子网划分和无分类编址 CIDR。
• OSPF 还规定每隔一段时间,如 30 分钟,要刷新一次数据库中的链路状态。
• 由于一个路由器的链路状态只涉及到与相邻路由器的连通状态,因而与整个互联网的规模并无直接关系。
• OSPF 没有“坏消息传播得慢”的问题,据统计,其响应网络变化的时间小于 100 ms。

八、因特网有两大类路由选择协议

 • 内部网关协议 IGP (Interior Gateway Protocol) 即在一个自治系统内部使用的路由选择协
议。目前这类路由选择协议使用得最多,如 RIP 和 OSPF 协议。
• 外部网关协议EGP (External Gateway Protocol) 若源站和目的站处在不同的自治系统中,当
数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统
中。这样的协议就是外部网关协议 EGP。在外部网关协议中目前使用最多的是 BGP-4。

外部网关协议BGP

• BGP 是不同自治系统的路由器之间交换路由信息的协议
• 边界网关协议 BGP 只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由。
• 每一个自治系统的管理员要选择至少一个路由器作为该自治系统的“ BGP 发言人” 。
• 一般说来,两个 BGP 发言人都是通过一个共享网络连接在一起的,而 BGP 发言人往往就是 BGP 边界路由器
• 一个 BGP 发言人与其他自治系统中的 BGP 发言人要交换路由信息,就要先建立 TCP 连接,然后在此连接上交换 BGP 报文以建立 BGP 会话(session),利用 BGP 会话交换路由信息。


BGP-4 共使用四种报文:

 (1) 打开(OPEN)报文,用来与相邻的另一个BGP发言人建立关系。
(2) 更新(UPDATE)报文,用来发送某一路由的信息,以及列出要撤消的多条路由。
(3) 保活(KEEPALIVE)报文,用来确认打开报文和周期性地证实邻站关系。
(4) 通知(NOTIFICATION)报文,用来发送检测到的差错。

BGP 协议的特点:

 • BGP 协议交换路由信息的结点数量级是自治系统数的量级,这要比这些自治系统中的网络数少很多。
• 每一个自治系统中 BGP 发言人(或边界路由器)的数目是很少
• BGP 支持 CIDR,因此 BGP 的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列。
• 在BGP 刚刚运行时,BGP 的邻站是交换整个的 BGP 路由表。但以后只需要在发生变化时更新有变化的部分。
• BGP协议采用的是路径向量路由选择协议。
• BGP协议是应用层的协议,它是基于TCP的。

三种路由协议的比较


http://www.kler.cn/a/470897.html

相关文章:

  • 基于MATLAB的汽车热管理模型构建
  • 【STM32+CubeMX】 新建一个工程(STM32F407)
  • 定时器PWM模拟DAC计算方法
  • Freemarker模板进行判空
  • Linux驱动开发 gpio_get_value读取输出io的电平返回值一直为0的问题
  • Backend - C# 操作数据库 DB(ADO.NET、LINQ to SQL、EF)
  • 感知器的那些事
  • springboot适配mybatis+guassdb与Mysql兼容性问题处理
  • 升级 Spring Boot 3 配置讲解 —— Spring Boot 3 核心源码专讲
  • 如何在 Ubuntu 22.04 上安装 Nagios 服务器教程
  • Flutter:打包apk,安卓版本更新(二)
  • 使用Python构建远程医疗平台:从零开始的实现指南
  • 【错误记录】HarmonyOS 编译报错 ( DevEco Studio 开发环境 与 API 版本 与 HarmonyOS 版本 的配套关系 )
  • 君正T41交叉编译ffmpeg、opencv并做h264软解,利用君正SDK做h264硬件编码
  • Angular由一个bug说起之十三:Cross Origin
  • C++二十三种设计模式之外观模式
  • Nginx不使用域名如何配置证书
  • 谷歌浏览器的高级开发者工具使用指南
  • Ubuntu下安装Android Sdk
  • HarmonyOS NEXT 应用开发练习:AI智能语音播报
  • 云开发 Copilot:AI 赋能的低代码革命
  • leetcode(hot100)8、9
  • java设计模式 单例模式
  • 【python】json库处理JSON数据
  • 论文复现6:
  • 微服务框架,Http异步编程中,如何保证数据的最终一致性