动态路由协议是一种网络协议,允许路由器自动交换路由信息并根据这些信息动态计算最佳路由路径。以下是关于动态路由协议的详细概述:
-
定义与原理:
- 动态路由协议通过路由器之间的信息交互来感知网络拓扑结构的变化,并自动更新路由表,确保数据传输的最佳路径。
- 与静态路由相比,动态路由协议减少了管理员的手工维护工作,因为路由表是根据网络状态自动生成的
-
主要特点:
- 自动更新:当网络拓扑结构发生变化时,如链路故障或新设备的加入,动态路由协议能够迅速察觉并更新路由表,确保数据的持续传输。
- 最佳路径选择:动态路由协议会根据当前的网络状态,如链路质量、跳数等,计算出到达目的地的最佳路径。
- 减少管理任务:由于路由表是自动生成的,管理员无需手动配置每条路由条目,特别是在大中型网络或拓扑经常改变的情况下,这大大减轻了管理负担。
-
分类:
- 距离矢量路由协议:这类协议基于距离矢量算法,路由器通过周期性地向邻居路由器广播自己的路由表来传递路由信息。常见的距离矢量路由协议有路由信息协议(RIP)24。
- 链路状态路由协议:链路状态路由协议基于链路状态算法,每个路由器首先收集自身周围链路的状态信息,然后通过这些信息来计算出最短路径。常见的链路状态路由协议包括开放式最短路径优先(OSPF)和IS-IS等。
- 路径矢量协议:这是一种扩展的距离矢量协议,用于在自治系统之间传递路由信息。它不仅考虑距离和开销,还考虑了AS路径。常见的路径矢量协议包括边界网关协议(BGP)等。
-
性能指标:
- 收敛时间:指当网络发生变化时,路由表完成更新并收敛到一个稳定的状态所需要的时间。较短的收敛时间意味着网络更快地适应变化。
- 网络开销:指动态路由协议在传播和更新路由信息时所消耗的带宽和计算资源。较低的网络开销可以提高网络的性能和资源利用率。
每一种动态路由协议都有自己的路由选择算法,算法是解决问题的一系列步骤。一个路由选择算法至少要具备一下几个必要步骤:
(1)向其他路由器传递路由信息
(2)接受其他路由器的路由信息
(3)根据收到的路由信息计算出到每个目的的网络的最优路径,并生成路由表
(4)根据网络拓扑的变化及时作出返应,调整路由生成新的路由表,同时把拓扑变化以路由信息的形式向其他路由器宣告
动态路由的度量值算法
(1)跳数(HopCount):(从路由器到下一个路由器算为一跳,OSPF没有跳数限制)
(2)带宽(Bandwidth):(带宽越高消耗越低,带宽越高消耗越高)
(3)负载(Load):(在OSPF(开放式最短路径优先)网络中,当两个网络节点之间存在多条路径时,流量可以在这些路径上平均分摊,以减轻每条路径的流量压力并增强网络的健壮性 )
(4)时延(Delay):(度量反应数据包经过一条路径所花费的时间)
(5)可靠性(Reliability):(度量用来度量链路在某种情况下发生故障的可能性。可靠性可以是变化的或固定的。链路发生故障的次数或特定时间间隔内收到错误的次数都是变化可靠性度量的例子。固定可靠性度量是基于管理员确定的一条链路的已知常量。可靠性最高的路径将被优先选择)
(6)成本(Cost):(是用来描述路由优劣的一个通用术语,最小成本(最高成本)或最短(最长)仅仅指的是路由协议基于自己特定的度量对路径的一种看法)
以上图为准动态路由会根据综合考量选择上面的路径,因为成本最低
静态路由和动态路由
公司A:适合用静态路由,因为网络架构为星形拓扑,且路由器较少,所以在路由器上配置静态可以简化配置,减少动态路由对设备资源和网络资源的消耗。
公司B:适合用动态路由,因为网络拓扑架构复杂配置静态路由可能会出现错误,如果使用静态路由网络拓扑发生变更时需要从新配置静态路由,动态路由可以自动检测并随着网络拓扑发生变更时自动更新路由表。
在华为设备中 :静态路由优先级要高于动态路由,不包括直连路由
动态路由协议分类
(1)距离矢量路由协议
距离矢量路由协议是一种基于距离向量算法的路由协议,具有实现与管理简单但收敛速度慢、报文量大且可能产生路由环路等特点。常见的距离矢量协议包括RIP等
(2)链路状态路由协议
链路状态路由协议通过交换路由器之间的链路状态信息来计算最短路径,具有收敛速度快、优化网络资源利用率等特点,并适用于大型网络。常见的链路状态路由协议包括OSPF和IS-IS等
RIP的不足:计算路由成本以跳数作为唯一度量值,不能根据带宽计算路径成本,跳数最大15跳,限制了网络规模
OSPF 的基本概念和工作过程
OSPF是基于开放标准的链路状态路由选择协议,它完成了各路由选择协议算法两大主要功能
路径选择和路径交换。
OSPF概述
OSPF 比较复杂,涉及较多的专业术语,其中“内部网关”和“链路状态”是最基础的
内部网关协议 (Interior Gateway Protocol,IGP)用于在单一AS 内决策路由
外部网关协议 (External Gateway Protocol,EGP)外部网关协议用于在多个AS 之间执行路由
IGP 用来解决 AS 内部通讯,而EGP用来解决AS之间的通信
通过与邻居路由器建立邻接关系,相互交流 链路信息然后各自绘制,自己所了解的网络信息
注意啦!!!:
(1)邻居路由器:位于同一条物理链路或物理网段上的路由器
(2)链路状态数据库:也被称为拓扑数据库,它包含所有路由器、路由器的链路及这些链路的状态,还包含所有网络及到达这些网络的所有路径。
(3)邻接关系:当两台运行 OSPF 的邻居路由器的链路状态数据库达到一致(同步)时,它们就是完全邻接的。
OSPF 的工作过程
(1)邻居列表:列出每台路由器已建立邻接关系的全部邻居路由器
(2)链路状态数据库:列出网络中其他路由器的信息,由此显示全网的网络拓扑
(3)路由表:列出通过Dijkstra 算法计算的到达每个相连网络的最佳路径
OSPF 的基本概念
ospf 包括 ospf区域,Router ID ,DR和BDR ,以及 ospf 度量值等
OSPF区域
OSPF 是一种链路状态型的路由协议,不会产生环路问题,因此不需要通过限制最大跳数等防止环路的产生。
OSPF 将 AS 分割成多个小的区域,OSPF的路由器只在区域内部学习完整的链路状态信息即可,而不必了解整个 AS 内部所有的链路状态。
,Area0为骨干区域(BackboneArea),它用来连接 AS 内部的所有其他区域。用来连接骨干区域和其他区域的路由器被称为区域边界路由器,它了解所连接的两个区域的完整的链路状态信息,并将链路状态信息汇总后发给区域内的其他路由器。这样,减小了路由器保存的链路状态数据库的大小,可以解决路由器内存容量有限的问题。
骨干区域也只能是0 其他区域代替不了
区域是通过一个 32位的区域 ID(AreaID)来标识的。
区域 ID 可以表示成一个十进制的数字,也可以表示成 IPv4 地址格式。
区域 0(或区域 0.0.0.0)是为骨干区域保留的区域ID号。OSPE 的骨干区域是一个特殊的 OSPF区域,它担负着区域间路由信息传播的重任。
Router ID
因为运行 OSPF 的路由器要了解每条链路是连接在哪个路由器上的,所以就需要有一个唯一的标识标记 OSPF 网络中的路由器,这个标识被称为 Router ID。
Router ID 是在 OSPF 区域内唯一标识路由器的 IP 地址。路由器通过下面的方法可以得到它们的Router I)
首先,路由器选取它所有 Loopback 接口上数值最高的 IP 地址。如果路由器没有配置 Loopback接口的IP地址,那么路由器就在所有活动物理端口中选取一个数值最高的I地址作为路由器的RouterID。用作 RouterID 的路由器接口不一定非要运行 OSPF。
使用 Loopback 接口作为 Router ID 的优点是,Loopback 接口比任何其他的物理端口都更稳定。一旦路由器启动成功,这个环回接口就会处于活动状态,只有整个路由器失效时它才会失效。
在 OSPF 中,可以通过 router-id 命令指定路由器的 Router ID,所以网络管理员可以配置便于识别和记忆的 Router ID 值。
在实际工程中配置 OSPF 时,需要手动指定路由器的 Router ID,这已经成了一种标准配置。
如图所示:该路由器会选择2.2.2.2 作为路由器的Router ID
DR和BDR
在ospf 的网络中,路由器数量较多,拓扑结构也会发生变化,DR和BDR 有助于建立精简实用的邻接关系
如果ospf 网络中不选举DR和BDR,就会形成每台路由器之间建立邻接关系,每台路由器都要与其他所有邻居路由器发送链路状态信息。这时会显得无比混乱,而且也会浪费许多不必要的网络资源。
选举DR ospf网络中的路由器只需要建立与DR路由器的连接就可以了,由DR路由器进行整理,整理完成后会将网段上的变化告知它们,节省了网络资源
如图
如果不选举DR就会建立 n(n-1)/2 个连接关系 n代表路由器数量
如果选举DR 就会建立n-1个连接关系
DR(指定路由器) BDR(备份指定路由器)
当DR失效时,BDR会直接 接替DR的位置实现了冗余
DR和BDR的选举方式
(1)自动选举
网段上 Router ID 最大的路由器将会被选举为 DR ,第二大的路由器将会被选举为BDR
(2)手动选举
每台路由器的接口都有一个路由器优先级(Router Priority) ,用一个8位二进制整数来表示,取值范围 0~255 ,数值越大优先级越高。路由器默认优先级为1 ,如果路由器优先级被设为0 将不参加DR与BDR的选举。 如果优先级相同则会比较Router ID。 手动选举需要人为干预
路由器的DR和BDR选举是非抢占性的,如果一个网络中已经有了DR和BDR,新加入的路由器将不会进行抢占就算优先级高于DR和BDr也不会抢占
OSPF 邻接关系
OSPF 数据包类型
OSPF邻接关系的建立
1)失效(Down)状态
这是 OSPF 建立交互关系的初始化状态,路由器没有与任何邻居交换信息
2)初始(Init)状态
路由器的各接口通过 224.0.0.5 发送 Hello 报文,这里以 R1 发送 Hello 报文为例。当邻居路由器R2 收到第一个 Hello 报文后,就进入 Init 状态。在该状态下,路由器 R2已经接收到 Helo 报文,但自身的 I 并没有出现在该 Hello 报文内。
3)双向(2-Way)状态
路由器 R2 向路由器 R1 发送一个 Hello 回应报文,该 Helo 回应报文含有路由器 R1的 DD。当路由器 R1 收到该 Hello 回应报文后,发现含有自身的 D,这时就进入 2-Way 状态,双向的通信已经建立。DR和 BDR的选举需要在这个状态或更高状态下完成。
4)准启动(ExStart)状态
在选举出 DR 和 BDR 之后,路由器就被认为是处于 ExStart状态。在该状态下,DR和BDR与网络中的其他各路由器建立邻接关系。在这个过程中,两个邻接路由器之间建立起一个主/从(Master/Slave)关系,路由器大的作为主路由器,用来发起通信。
5)交换(Exchange)状态
主/从路由器之间交换一个或多个数据库描述包(DD),路由器进入 Exchange 状态。DD 包含的是链路状态数据库中的 LSA 条目的摘要信息,主/从路由器之间交换 DD 时要确保双方都能接收到
6)加载(Loading)状态
如果收到的 DD有更新的 LSA 条目的摘要信息,路由器将向对方发送链路状态请求包(LSR)请求更详细的信息,对方路由器用链路状态更新包(LSU)回应该LSR,此过程被称为 Loading 状态链路状态更新包(LSU)需要对方确认收到。
7)完全邻接(Full)状态
当路由器之间完成了数据库同步后,它们的链路状态数据库已经完全一致,此时就达到了 Ful 状态到此,路由器中的链路状态数据库已经完全一致了,路由器可以根据这个一致的链路状态数据库通过最短路径优先算法(SPF)计算到目的网络的最佳路径,并形成路由表。
OSPF的网络类型
>点到点网络
如果网络采用PPP协议、HDL协议和 LAPB 协议,则 OSPF 默认的网络C类型是点到点网络点到点网络连接单独的一对路由器。在点到点网络上以组播形式发送所有类型的 OSPF 报文,目的地址为组播地址 224.0.0.5
>广播网络
如果链路层协议是以太网或光纤分布式数字网,则OSPF 默认的网络类型是广播网络。它们可以连接多于两台的设备。由于它们是广播型的,所以连接在这种网络上的所有设备都可以接收到传送的报文。在广播网络上通常以组播方式发送 He0 报文、LSU 报文和 LSAck 报文,而以单播形式发送DD 报文和 LSR 报文。
>非广播网络
如果网络采用 X.25 和帧中继,则OSPF默认的网络类型是NBMA!在 NBMA 中,虽然可以连接两台以上的路由器,但是它们没有广播数据包的能力,而是以单播方式发送所有类型的 OSPF 报文
>点到多点网络
点到多点网络是非广播多路访问网络的一个特殊配置,可以看作一群点到点链路的集合。在 P2MP网络上,以组播万式发送Hello 报文,而以单播方式发送其他 OSPF 报文。
opsf单区域配置
PC配置
路由器配置:
实验验证
命令解释:
ospf router-id 设置router id 并启用ospf
area 0 区域0
network 宣告网段信息
更改路由器优先级命令:ospf dr-priority [0~255] 需要在接口视图输入命令
查看命令
display ospf [process-id] routing 查看 ospf 路由表
display ospf [process-id] peer 查看 ospf 邻居列表及其状态
display ospf [process-id] lsdb 查看路由器的 LSDB
display ospf [process-id] interface 查看 ospf 的接口信息