ospf工作原理

作者:王虹 www.yuediqu.com    2025-05-21
~ IERS-OSPF基本工作原理
一、邻居建立建立过程
1、Router ID
用于在自治系统中唯一标识一台运行OSPF的路由器,每台运行OSPF的路由器都有一个ROUTER ID
Route ID 是一个32位的无符号的整数,其格式和IP地址是一样的,Route iD 的选举规则如下:
1)、手动配置OSPF路由器的Router ID通常建议手配置
2)、如果没有手动配置Router ID,则路由器使用LoopBack接口中最大的IP地址作为Router ID;
3)、如果没有配置loopback 接口,则路由器使用物理接口中最大的ip地址作为route id
OSPF的路由器Router ID重新配置后,可以通过重置OSPF进程来更新router id;
2、发现并建立邻居-hello报文
2.1、hello报文的作用
邻居发现:自动发现邻居路由器
邻居建立:完成Hello报文中的参数协商,建立邻居关系
邻居保持:通过keepalive机制,检测邻居运行状态
2.2、OSPF邻居建立过程
邻居建立过程:

1)、现在RTA和RTB的router id 分别为1.1.1.1 和2.2.2.2 ,当RTA启动OSPF后,RTA会发送第一个hello报文,此报文中邻居列表为空,此时状态为down,RTB收到RTA的这个hello报文,状态置为init.
2)、RTB发送发送hellor报文,此报文中邻居列表为空,RTA收到RTB的hello报文,状态置为init.
3)、RTB向RTA发送邻居列表为1.1.1.1的hello报文,RTA在收到的hello报文邻居列表中发现自己的router id ,状态置为2-way。
4)、RTA向RTB发送邻居列表为2.2.2.2的hello报文,RTB在收到的hello报文邻居列表中发现自己的router id ,状态置为2-way;
因为邻居都是未知的,所以hello报文的目的IP地址不是某个特定的单播地址,ospf采用组播的形式发送hello报文(目的地址为224.0.0.5)。
5)、对于不支持组播的网络,ospf路由如何发现邻居呢?
ospf支持通过单播的方式建立邻居关系,对于不支持网络可以通过手动配置实现邻居的发现与维护,
ospf路由器之间建立邻居关系是为了同步链路状态信息,接下来学习OSPF如何实现链路状态数据库同步。
二、链路状态信息
1、OSPF链路状态信息主要包括
链路的类型、接口ip地址及掩码、链路上所连接的邻居路由器、链路的带宽(开销)
OSPF有丰富的数据链路层能力,数据链路层协议类型多种多样,工作机制也各不相同,为适配多种数据链路层协议必须考虑各类链路层协议在组网时的应用场景
2、OSPF是如何定义多种网络的?
p2p网络:仅两台路由互连,支持广播、组播,
广播型网络:两台或两台以上的路由器通过共享介质互连,支持广播,组播,广播型网络的例子:通过以太网链路相连的路由器网络。是OSPF最常见的网络类型
NBMA网络:两台或两台以下路由器通过VC互连,不支持广播、组播,在NBMA网络上OSPF模拟在广播网络上的操作,但是每个路由器的邻居需要手动配置;NBMA型网络的例子,通过全互连的帧中继链路相连的路由器网络
P2MP网络:多个点到点网络的集合,支持广播、组播,没有一种链路层协议默认属于P2MP类型网络,也就是说必须是由其他的网络类型强制更改为P2MP,常见的做法是将非完全连接的帧中继或ATM必为P2MP网络。
3、OSPF链路状态信息中的开销值是如何度量的呢?
某接口COST=参考带宽/实际带宽,默认参考带宽为100M,当计算有小数位时,只取整数位,结果小于1时,COST取1
标记: 优先级 1
更改COST的两种方式:1、直接在接口下配置;2、修改参考带宽(所有路由器都需要修改,确保选中一致性)
三、报文类型及作用
1、OSPF协议报文头部
OSPF使用IP承载其报文,协议号为89
在OSPF packet部分,所有的OSPF报文均使用相同的OSPF报文头部
version:对于当前所使用的OSPFV2,该字段的值为2.
type:OSPF报文类型
packet length:表示整个OSPF报文的长度,单位是字节。
router ID:表示生成此报文的路由器的router ID。
area ID:表示此报文需要被通告的到的区域。
checksum :校验字段,其校验的范围是整个OSPF报文包括OSPF报文头部
auth type:为0时表示不认证,为1时表示简单的明文密码认证;为2时表示加密MD5认证
authentication:认证所需的信息,该字段的内容随autype的值不同而不同。
OSPF的报文头部定义了OSPF路由器之间的通信标准与规则
2、OSPF报文类型
type=1为hello报文,用来建立和维护邻居关系,邻居关系建立之前,路由器之间需要进行参数协商
type=2为数据库描述报文(DD),用来向邻居路由器描述本地链路状态数据库。使得邻居路由器识别出数据库中的LSA是否完整。
type=3为链路状态请求报文(LSR),路由器根据邻居的DD报文,判断本地数据库是否完整,如不完整,路由器把这些LSA记录进链路状态请求列表中,然后发送一个LSR给邻居路由器
type=4为链路状态更新报文LSU,用于响应邻居路由器发来的LSR,根据LSR中的请求列表,发送对应LSA给邻居路由器,真正实现LSA的泛洪与同步
type=5为链路状态确认报文(LSACK),用来对收到的LSA进行确认,保证同步过程的可靠性。
3、DD报文和LSACK中包含LSA头部信息:包括 LS type ls id advertising router ls sequence ls checksum; LSU报文中包含完整的LSA信息, LSR 包含LS type ls id advertising router
四、LSDB同步过程
五种报文可以高效地完成LSA的同步 ,那么实际的报文交互过程是什么样的呢?
同步状态图

各个状态含义:
exstart:邻居状态变成此状态后,路由器开始向邻居发送DD报文。master和slave关系是在此状态形成的,初始DD序列号也是在此状态下确定的,在此状态下发送的DD报文不包含链路状态描述。
exchange:在此状态下,路由器与邻居之间相互发送包含链路状态信息摘要的DD报文。
loading:在此状态下,路由器与邻居之间相互发送LSR报文,LSU报文,LSAck报文
full:lsdb同步过程完成。路由器与邻居之间形成了完全的邻接关系。
LSDB同步过程:
1、RTA和RTB的router ID 分别为1.1.1.1 和2.2.2.2并且二者已经建立 了邻居关系,当RTA的邻居状态变为exstart后,RTA会发送第一个DD报文,此报文中,DD序列号被随机设置为X,I-bit设置为1,表示这是第一个DD报文,M-bit设置为1,表示后续还有DD报文要发送,MS-bit设置为1,表示RYA宣告自己为master。
2、当RTB的邻居状态变为exstart后,rtb会发送第一个dd报文,此报文中,dd序列号被随机的设置为Y(i-bit=1,m-bit=1,ms-bit=1,含义同上)。由于rtb的router ID较大,所在rtb将成为真正的master,收到此报文后,rta会产生一个negotiation-done事件,并将邻居状态从exstart变为exchange。
3、当RTA的邻居状态变为exchange后rta会发送一个新的dd报文,此报文中包含了LSDB的摘要信息,序列号设置为RTB在步骤2中使用的序列号Y, I-bit=0,表示这不是第一个DD报文,M-bit=0,表示这是最后一个包含LSDB摘要信息的DD报文,MS-bit=0,表示RTA宣告自己为SLAVE,收到此报文后,RTB会产生一个negotiation-done事件,并将邻居状态从exstart变为exchange。
4、当RTB的邻居状态变为exchange后RTB会发送一个新的DD报文,此报文包含了LSDB的摘要信息,DD序列号设置为Y+1,MS-bit=1,表示RTB宣告自己为master
5、虽然RTA不需要发送新的包含LSDB摘要信息的DD报文,但是作为slave,RTA需要对master发送的第一个DD报文进行确认,所以RTA向RTB发送一个新的DD报文,序列号为Y+1,该报文内容为空,发送完此报文后,RTA产生一个exchange-Done事件,将邻居状态变为loading。RTB收到此报文后,会将邻居状态变为full。(假设RTB的LSDB是最新最全的,不需要向RTB请求更新)


相关问答:

#15753687926#:OSPF 一文详解
邹甄艺: 一、基本概念 OSPF定义:OSPF是一种基于链路状态的动态路由协议,具备开放标准、路径最短优先等特性。 核心功能:自动学习和维护路由信息,实现高效、可靠的网络数据传输。二、工作原理 链路状态更新:通过周期性探测和链路状态更新,保证网络拓扑信息的实时同步。 全网泛洪:每台路由器泛洪自己的链路状态通告...

#15753687926#:ospf工作原理
邹甄艺: 5)、对于不支持组播的网络,ospf路由如何发现邻居呢?ospf支持通过单播的方式建立邻居关系,对于不支持网络可以通过手动配置实现邻居的发现与维护,ospf路由器之间建立邻居关系是为了同步链路状态信息,接下来学习OSPF如何实现链路状态数据库同步。二、链路状态信息 1、OSPF链路状态信息主要包括 链路的类型、接口ip...

#15753687926#:OSPF具体工作原理是什么?
邹甄艺: OSPF协议基于链路状态的路由原则,其核心在于路由器之间互相发送HELLO报文,以此构建邻居表,随后发送LSA(链路状态通告)来共享网络中的链路状态信息。LSA的交换使路由器能够形成LSDB(链路状态数据库),即网络的拓扑结构表。之后,通过SPF算法计算出最短路径,最终形成路由表。这种机制允许路由器依据路由表转...

#15753687926#:ospf是什么(ospf是什么协议)
邹甄艺: 工作原理:OSPF是一种链路状态路由协议。所有OSPF路由器共同维护一个描述AS结构的数据库,该数据库中存储了路由域中各链路的状态信息。路由器根据这些链路状态信息,使用迪克斯加算法计算最短路径树,从而生成OSPF路由表。路由决策:OSPF通过维护的数据库和迪克斯加算法,实现高效、灵活的路由决策。它能够支持...

#15753687926#:OSPF具体工作原理是什么?
邹甄艺: OSPF协议的基本原理:首先,当路由器开启OSPF后,路由器之间就会相互发送HELLO报文,HELLO报文中包含一些路由器和链路的相关信息,发送HELLO报文的目的是为了形成邻居表,然后,路由器之间就会发送LSA(LINK STATE ADVERTISEMENT,链路状态通告),LSA告诉自己的邻居路由器和自己相连的链路的状态,最后,形成网络的...

#15753687926#:简述静态路由、RIP和OSPF动态路由的原理以及各自的优缺点。
邹甄艺: OSPF原理:1、初始化形成端口初始信息:在路由器初始化或网络结构发生变化(如链路发生变化,路由器新增或损坏)时,相关路由器会产生链路状态广播数据包LSA,该数据包里包含路由器上所有相连链路,也即为所有端口的状态信息。2、路由器间通过泛洪(Floodingl机制交换链路状态信息:各路由器一方面将其LSA数据包...

#15753687926#:路由器如何配置OSPF?工作原理是什么?
邹甄艺: OSPF邻居建立过程较为复杂,在最终将完成加载路由表的过程。OSPF需要运行在路由器上时,路由器必须有一个活动的物理接口或逻辑接口。或直接指派OSPF的RID。OSPF是一个典型的分层网络设计的网络。其核心区域或骨干区域为区域0,其他区域为一般区域。还可设置末节、绝对末节区域、NSSA区域等。OSPF是链路状态...

#15753687926#:RIP和OSPF有什么区别
邹甄艺: 工作原理 RIP是一种基于距离向量的路由协议,它使用跳数作为路径选择的度量标准。当一个路由器收到来自邻居路由器的路由更新信息时,它会将该信息添加到自己的路由表中,并将新的路由表信息传播到其他邻居路由器。OSPF是一种基于链路状态的路由协议,它使用链路状态数据库(Link State Database)来维护...

#15753687926#:ospf是什么
邹甄艺: 1. 基本工作原理:OSPF通过交换网络链路状态信息来构建网络拓扑图,并计算到达目的地的最短路径。这种协议不受网络规模的限制,可以很好地适应大型网络环境。相较于其他路由协议,OSPF收敛速度更快,且更为稳定可靠。2. 特点与优势:OSPF采用层次化的网络拓扑结构,使用区域划分来优化网络性能。这使得路由...

#15753687926#:OSPF到底是什么?一文了解OSPF基本概念和工作原理
邹甄艺: 2、如果没有手动配置Router ID,路由器会自动选择使用本地回环口中最大的IP地址作为Router ID 3、如果没有配置本地回环口,路由器使用物理接口中最大的IP地址作为Router ID 一句话总结:ROUTER-ID越大越优先 2、Area:OSPF Area用于标识一个OSPF的区域。区域是人为我们人为地将设备划分为不同的组,并...