动态路由---OSPF协议基础
一、动态路由
1.1、定义
动态路由是指在网络通信过程中,路由器根据当前网络的状态和拓扑结构等信息,动态计算出最优的数据传输路径。这一过程依赖于路由器之间的路由信息交换和路由表的维护。当网络拓扑结构发生变化时,如链路故障或节点增减,动态路由能够自动调整路由表,以确保数据包能够沿着最优的路径传输。
1.2、特点
- 自动适应网络变化:动态路由能够自动感知网络拓扑的变化,并据此调整路由表,无需人工干预。
- 提高网络可靠性:当网络中的链路或节点出现故障时,动态路由能够迅速选择替代路径,保证数据的正常传输。
- 优化网络性能:通过选择最优的传输路径,动态路由能够减少网络拥塞,提高数据传输的效率和速度。
- 减少管理负担:与静态路由相比,动态路由无需管理员手动配置和维护路由表,大大降低了管理成本和工作量。
1.3、工作流程
动态路由的工作流程通常包括以下几个阶段:
- 邻居发现:运行相同动态路由协议的路由器之间建立对等点关系,即邻居关系。
- 路由信息交换:邻居路由器之间定期或按需交换路由信息,包括网段信息、可达性信息和路径信息等。
- 路由表计算:路由器根据收集到的路由信息和自身的路由算法,计算出到达各个目的网络的最佳路径,并生成路由表。
- 路由表维护:路由器会不断监测网络状态的变化,并根据需要更新路由表,以确保路由信息的准确性和时效性。
1.4、分类
根据使用范围,动态路由可以分为两类
- 内部网关协议(IGP):
- 主要应用在自治系统(AS)内部的路由协议。
- 常见的IGP协议包括RIP(路由信息协议)、OSPF(开放式最短路径优先)、IS-IS(中间系统到中间系统)、EIGRP(增强型内部网关路由协议)等。
- 外部网关协议(EGP):
- 主要应用在自治系统之间的路由协议。
- 目前广泛使用的EGP协议是BGP(边界网关协议),它用于在AS之间传递路由信息,确保跨AS的数据包能够正确传输。
根据工作机制及算法,动态路由可以分为两类
距离矢量路由协议
- 运行距离矢量路由协议的路由器周期性泛洪自己的路由表。通过路由的交互,每台路由器都从相邻的路由器学习到路由,并且加载进自己的路由表中,然后再通告给其他相邻路由器
- 但是对于网络中的路由器来说,路由器并不清楚网络的拓扑,只是简单的知道要去往某个网络的方向在哪里,开销有多大
链路状态路由协议
链路状态协议有四个步骤:
- 建立相邻路由器之间的邻居关系
- 邻居之间交互链路状态信息LSA(LSA泄洪),将LSA放进LSDB进行同步(LSDB维护)
- 进行优选路由计算(SPF计算),各自计算出以自己为根、无环、拥有最短路径的“树”
- 将计算出的优选路径加载进自己的路由表
这次主要了解的是OSPF协议。想了解RIP协议的,可以看看下面这篇博客
动态路由--RIP协议https://blog.csdn.net/ZZZCY2003/article/details/139625749
二、OSPF协议
2.1、概述
OSPF是IETF定义的一种基于链路状态的内部网关路由协议。目前针对IPv4协议使用的是OSPF Version 2(RFC2328);针对IPv6协议使用的是OSPF Version 3(RFC2740)
OSPF协议主要使用Dijkstra算法来计算最短路径树,从而选择最佳路由。
特点
- 无类别链路类型:OSPF是无类别链路类型的IGP协议,支持变长子网掩码(VLSM)和CIDR(无类别域间路由)
- 无跳数限制:与某些其他路由协议不同,OSPF没有路由跳数的限制,因此适用于更大规模的网络。比如企业用网等
- 组播通信:OSPF使用组播地址(如224.0.0.5和224.0.0.6)进行通信,可以减少对其他设备的干扰
- 收敛速度快:当你的网络拓扑发生变化时,OSPF能够更快地发送更新报文,使拓扑变化快速扩散到整个自治系统
- 避免环路:通过收集链路状态信息并使用SPF算法计算路由,OSPF从算法上保证了不会生成自环路由
- 支持负载分担:OSPF支持对等价路由进行负载分担
2.2、三大重要概念
2.2.1、router-id
定义:Router-ID是OSPF协议中用于唯一标识一个路由器的32位IP地址或数字。
# 进入OSPF进程视图,假设创建一个OSPF进程号为1
[Huawei]ospf 1
# 配置Router-ID为1.1.1.1
[Huawei-ospf-1]router-id 1.1.1.1
选举规则
- 手动配置OSPF路由器的Router ID(建议手动配置,命令如上述)
- 如果没有手动配置Router ID,则路由器使用Loopback接口中最大的IP地址作为Router ID
- 如果没有配置Loopback接口,则路由器使用物理接口中最大的IP地址作为Router ID
作用:
唯一标识:在一个OSPF域内,每个路由器都必须有一个唯一的Router-ID,以便于其他路由器识别和区分。
路由计算:Router-ID在OSPF的路由计算过程中扮演重要角色,帮助路由器确定网络拓扑结构,并计算出最短路径。
优先级判定:在OSPF区域内,Router-ID越小越优先。在某些情况下,如选举DR(Designated Router)或BDR(Backup Designated Router)时,Router-ID的优先级会起到决定性作用。
稳定性:Router-ID在路由器启动时就被分配,并且在路由器重新启动或网络拓扑发生变化时保持不变,确保路由器的稳定性。
2.2.2、Area
定义:在OSPF协议中,网络被划分为不同的逻辑区域(Area),每个区域都有一个唯一的标识符,称为Area ID。
# 进入接口视图,以GigabitEthernet0/0/1为例
[Huawei]interface GigabitEthernet0/0/1
# 配置接口加入OSPF区域0
[Huawei-GigabitEthernet0/0/1]ospf 1 area 0
作用:
管理路由信息:将网络划分为多个区域可以减少路由器之间的通信量,提高网络的可伸缩性。同时,通过合理划分区域,可以更好地控制路由信息的传输范围,避免整个网络范围内的路由信息洪泛。
提高网络性能:每个区域都有一个Area Border Router(ABR),负责连接不同区域的路由信息传递。通过ABR的存在,可以实现不同区域之间的信息隔离,降低网络的拓扑变化对整个网络的影响,提高网络的传输效率。
增强网络安全性:通过区域划分,可以实现对不同区域之间的访问控制和策略控制,提高网络的安全性。
2.2.3、Cost
定义:在OSPF协议中,Cost被称为路径成本,是衡量路由器到目的网络的一个度量值。
# 进入接口视图,以GigabitEthernet0/0/1为例
[Huawei]interface GigabitEthernet0/0/1
# 配置接口上运行OSPF协议的开销为65
[Huawei-GigabitEthernet0/0/1]ospf cost 65
作用:
计算最短路径:OSPF根据路径的Cost值来选择最短的路径,并将优选路径存储在路由表中。当数据包需要转发时,路由器将根据目标地址的最佳路径进行转发。
负载均衡:当网络中存在多条到达目标地址的路径时,OSPF将根据路径的Cost值将负载均衡分布到各个路径上,提高网络的利用率。
性能优化:Cost的计算与带宽相关,表示数据包通过路径所需的传输时间和开销。通过合理设置Cost值,可以实现网络性能的优化。
2.3、OSPF路由器类型
在OSPF协议中,路由器根据其功能和在网络中的位置被划分为多种类型,如:IR、BR、ABR、ASBR。
内部路由器(Internal Router, IR)
定义:IR是仅连接到单个OSPF区域(Area)的路由器。
功能:IR主要负责在同一区域内转发数据包,并通过链路状态通告(LSA)与其他内部路由器交换拓扑信息,以构建和维护整个区域的拓扑数据库。它们只处理来自本区域内的路由信息,不与其他区域的路由器直接通信。
区域边界路由器(Area Border Router, ABR)
定义:ABR是连接两个或多个不同OSPF区域的路由器。
功能:ABR在OSPF网络中扮演着桥梁的角色,负责将数据包从一个区域传输到另一个区域,并在区域之间传播路由信息。它们通过LSA将来自一个区域的路由信息汇总后,再传递给其他区域,确保不同区域之间的路由可达性。
自治系统边界路由器(Autonomous System Boundary Router, ASBR)
定义:ASBR是连接OSPF域与其他自治系统(AS)的路由器。
功能:ASBR负责将来自其他路由协议(如BGP)的路由信息导入OSPF域中,同时也将OSPF域内的路由信息导出到其他路由协议中。它在不同自治系统之间传递路由信息,实现跨自治系统的路由通信。
虚拟链路路由器(Virtual Link Router):
定义:虚拟链路路由器是一种特殊的路由器类型,用于在特定情况下连接分布在不同OSPF区域中的两个OSPF区域。
功能:虚拟链路路由器允许在OSPF区域之间建立逻辑连接,绕过非OSPF区域的物理连接限制,从而确保数据包能够正确路由到目的地。这在复杂的网络拓扑结构中尤为重要,特别是在物理连接不可行或成本过高时。
2.4、OSPF的5种报文
OSPF是IP报文直接封装协议报文,协议号为89。OSPF分为5种报文:Hello报文、DBD报文、LSR报文、LSU报文和LSAck报文。
通用头部字段(OSPF Packet Headers)
- Version:描述OSPF协议版本,通常被设置为2(支持IPv4)或3(支持IPv6)。
- Type:描述OSPF报文类型,值1:Hello、值2:DBD、值3:LSR、值4:LSU、值5:LSAck。
- Packet Length:OSPF报文总长度,包括报文头部,单位是字节。
- Router ID:生成此报文的路由器的唯一标识符。
- Area ID:此报文需要被通告到的OSPF区域的标识符。
- Checksum:对整个数据包(包括包头)的标准IP校验和。
- Auth Type/Authentication Type:验证此报文所应当使用的验证方法,如空(0)、明文(1)或MD5(2)等。
- Authentication Data:验证此报文时所需要的密码等信息。
Hello报文:
主要用于发现和维持OSPF邻居关系。周期性以组播的形式发送Hello报文,以维护OSPF的邻居关系。使用的组播地址为224.0.0.5(所有OSPF路由器)或224.0.0.6(所有OSPF DR路由器)。报文内容包括一些定时器的数值、DR、BDR以及自己已知的邻居信息。
Hello报文特有字段
- Network Mask:发送Hello报文的接口的网络掩码
- Hello Interval:发送Hello报文的时间间隔,单位为秒。默认情况下,对于广播和组播类型接口,该值为10秒;对于非广播、多点接入和点对点类型接口,该值为30秒
- Options:标识发送此报文的OSPF路由器所支持的可选功能。E:是否支持外部路由;MC:是否支持转发组播数据包;N/P:是否为NSSA区域
- Router Priority:DR的优先级,默认值为1,取值范围为0-255。若为0.则路由器不能参与DR或BDR的选举
- Designated Router (DR):DR的IP地址。如果未选举DR,则该字段为0.0.0.0
- Backup Designated Router (BDR):BDR的IP地址。如果未选举BDR,则该字段为0.0.0.0
DD报文:
描述本地LSDB摘要信息,用于两台设备进行数据库同步。在邻接关系初始化时,路由器会发送DD报文来告知对方自己的LSDB摘要信息。报文内容包括LSDB中每一条LSA(链路状态通告)的头部信息,以便对方判断哪些LSA是本地所缺少的或已经失效的。
LSR报文:
LSR报文用于向对方请求所需要的LSA完整拷贝。当路由器发现本地LSDB中缺少某些LSA时,会发送LSR报文来请求这些LSA。LSR报文中包含所需LSA的摘要信息,以便对方能够识别并返回相应的LSA。
LSU报文:
LSU报文用于向对方发送其所需要的LSA或者泛洪自己更新的LSA。当路由器收到LSR报文或自己的LSDB发生更新时,会发送LSU报文来通知邻居路由器。LSU报文中包含多条LSA的完整内容,以便邻居路由器能够更新自己的LSDB。
LSack报文:
LSAck报文用于对收到的LSA进行确认。当邻居路由器收到LSU报文后,会发送LSAck报文作为确认。这样,源路由器可以确认链路状态已被通知到邻居,从而实现Flooding的可靠性传输。
2.5、OSPF的3个步骤,生成3个表
步骤一、发现并建立邻居关系
路由器要先发现邻接的路由器,才能建立邻居关系。通过周期性发送Hello包并接收来自其他路由器的Hello包,进行建立并维护邻居关系。报文内容包括一些定时器的数值、DR、BDR以及自己已知的邻居信息。
查看邻居表信息
[huawei]display ospf peer
步骤二、描述本地LSDB信息,并形成邻接关系
一旦建立了邻居关系,路由器会开始交换链路状态信息(LSI),将自己所知道的网络拓扑信息(如连接的网络、链路的状态、链路的成本等)发送给邻居。这个过程通过发送DBD报文、LSR报文和LSU报文来实现,最终所有路由器都会拥有一个同步的链路状态数据库LSDB
请求缺少的LSDB信息
查看链路状态数据库LSDB
[huawei]display opsf lsdb
步骤三、计算路由,并形成OSPF路由表
每个路由器都会根据LSDB中的信息,使用Dijkstra算法计算最短路径树(SPT),以找到到达网络中每个目的地的最短路径。计算出的最短路径信息会保留到OPSF路由表上。
[huawei]display ospf routing
2.6、DR和BDR
DR
DR是在OSPF网络中被选举出来的一个路由器,它负责收集和维护本地区域内的链路状态信息,并将这些信息传播给其他路由器。
DR充当了整个多点链路网络中的“代表”,负责收集来自其他路由器的链路状态更新(LSU)消息,并将其汇总为一条链路状态数据库(Link State Database)。然后,DR将这个数据库发送给其他路由器,以减少链路状态更新的频率。
选举过程
在选举过程中,每个路由器都会发送Hello消息,其中包含自己的优先级值。优先级越高,被选举为DR的可能性就越大。
如果没有路由器明确声明其优先级,则路由器会基于其Router ID(通常是一个IP地址)来选择DR,Router ID最小的路由器将成为DR。
主要作用
减少链路状态更新的频率,帮助优化网络性能。
维护链路状态数据库并将其分发给其他路由器,确保所有路由器都拥有最新的网络拓扑信息。
根据链路状态数据库及时更新路由表,确保数据正确地转发到目标地址。
BDR
BDR是DR的备份,当DR发生故障或失效时,BDR会立即接替DR的角色,并继续执行相同的任务,确保在DR失效时能够无缝接替其工作
不同网络类型中DR和BDR的选举操作
选DR是需要时间的,大概是40秒延迟
还有一个要注意的就是(现实也会经常遇到):在以太网中有两台设备进行连接,他们会选举出DR和BDR,但是只有两台设备就跟PPP点对点一样,这时候我们就不需要选举出DR和BDR了(不浪费那40秒的延迟)
[Huawei-GigabitEthernet0/0/1]ospf network-type p2p
在接口上增加上面的那条命令之后,就不会选取DR和BDR了(注意:两边设备都需要配置这条命令)
2.7、OSPF相关命令
命令 | 作用 |
display ospf brief | 查看OSPF的概要信息 |
display ospf interface | 显示OSPF的接口 |
display ospf lsdb | 显示OSPF的LSDB |
display ospf peer | 显示OSPF中各区域的信息 |
display ospf routing | 显示OSPF的路由表 |
ospf | 启动OSPF |
rouer-id | 配置路由id |
default-route-advertise | 下发默认路由 |