在OSPF(Open Shortest Path First)协议中,邻居状态机是用来描述两个OSPF路由器之间建立邻接关系的状态的一种模型。这个状态机定义了路由器在与其他路由器建立和维护邻居关系时可能处于的不同状态,从而实现路由信息的交换和路由表的更新。OSPF邻居状态机总共包括了8种状态,分别是:Down、Attempt、Init、2-way、Exstart、Exchange、Loading、Full。
OSPF 两大状态类型
稳定状态
在OSPF邻居状态机中,Down、2-way和Full状态是稳定的状态。这些状态表示路由器之间的邻接关系已经建立并且可以进行稳定的路由信息交换。
Down状态:Down状态是邻居状态机中的起始状态。当两个路由器之间还没有建立邻接关系时,它们的状态就是Down状态。
2-way状态:2-way状态表示两个路由器之间已经确认了双向通信的能力,可以进行Hello消息的交换,但尚未开始LSA(链路状态通告)的交换。
Full状态:Full状态是邻居状态机中的最终状态,表示两个路由器之间的邻接关系已经完全建立,可以进行LSA的交换,路由表已经完全同步。
不稳定状态
Attempt、Init、Exstart、Exchange和Loading状态是不稳定的状态,它们表示邻接关系在转换过程中的瞬时状态,一般不会持续很长时间。
Attempt状态:Attempt状态表示路由器正在尝试与潜在的邻居建立连接,但尚未确认是否能够建立有效的邻接关系。
Init状态:Init状态表示路由器已经发送了Hello消息并收到了潜在邻居的响应,但尚未确认邻接关系的有效性。
Exstart状态:Exstart状态表示在LSA数据库同步的过程中,已经确定了一个将作为Master的路由器,并且开始了数据库同步的过程。
Exchange状态:Exchange状态表示Master路由器已经向邻居路由器发送了LSA摘要列表,开始了LSA的交换过程。
Loading状态:Loading状态表示邻居路由器已经接收到Master路由器发送的LSA摘要列表,并请求缺失的LSA,开始了数据库的加载过程。
下面瑞哥详细的介绍一下这8种类型:
Down状态
Down状态表示在OSPF邻居状态机中的初始阶段,当两个路由器之间还没有建立邻接关系时,它们的状态就是Down状态。在这个阶段,路由器之间没有进行任何的路由信息交换,也没有确认彼此的存在。
Down状态的特征
Hello消息未收到:Down状态表明在邻居失效时间间隔内,没有收到来自邻居设备的Hello报文。Hello消息是OSPF协议中用于发现邻居并维护邻居关系的基本消息。
邻居关系未建立:在Down状态下,路由器之间尚未建立邻接关系。这意味着它们不认识彼此,也不了解对方的网络拓扑信息。
无路由信息交换:由于邻居关系尚未建立,因此在Down状态下,路由器之间不会进行任何的路由信息交换。这意味着它们无法共享网络拓扑信息,也无法更新路由表。
Down状态的转换
Down状态通常会在以下情况下转换到其他状态:
收到Hello消息:当一个路由器收到了来自潜在邻居的Hello消息时,它会从Down状态转换到其他状态,以响应这一消息并开始建立邻接关系的过程。
邻居失效:如果在邻居失效时间间隔内未收到来自邻居的Hello消息,则认为邻居已经失效,那么路由器之间的邻接关系将从其他状态转换回Down状态,重新开始邻居发现的过程。
💡记忆小技巧:Down状态是OSPF邻居状态机中的初始状态,表明在邻居失效时间间隔内没有收到来自邻居设备的Hello报文。在这个阶段,路由器之间尚未建立邻接关系,无法进行路由信息交换。
Attempt状态
Attempt状态是邻居状态机中的一个阶段,用于描述路由器与手工配置的邻居建立邻接关系的过程。
Attempt状态的特征
定期发送Hello报文:在Attempt状态下,路由器会定期向手工配置的邻居发送Hello报文。这些Hello报文是用于发现邻居并建立邻接关系的重要消息。
适用于NBMA类型接口:Attempt状态通常只适用于NBMA(Non-Broadcast Multi-Access)类型的接口。NBMA是一种网络类型,它允许多个设备连接到同一个网络,但通信是通过直接的点对点连接进行的,而不是广播。
Attempt状态的作用
Attempt状态的主要作用是启动与手工配置的邻居的邻接关系建立过程。当路由器的接口配置为NBMA类型时,由于该类型接口通常不支持自动邻居发现,因此需要手动配置邻居信息。Attempt状态的路由器会定期发送Hello消息,尝试与手工配置的邻居建立邻接关系。
在启用Attempt状态之前,需要手动配置邻居信息,包括邻居的IP地址等必要信息。Attempt状态的路由器会定期发送Hello消息,但如果手工配置的邻居没有正确响应,那么邻接关系可能无法建立。
💡记忆小技巧:Attempt状态是OSPF邻居状态机中的一个重要阶段,用于在NBMA类型的接口上建立与手工配置的邻居的邻接关系。
Init状态
Init状态用于描述路由器在已经收到邻居的Hello报文,但对端并没有收到本端发送的Hello报文的情况下的状态。
Init状态的特征
收到邻居的Hello报文:在Init状态下,路由器已经收到了来自邻居的Hello报文。Hello报文是用于发现邻居并维护邻接关系的基本消息。
本端未收到对端的Hello报文:与此同时,对端并没有收到本端发送的Hello报文。这可能是由于网络问题或配置错误等原因造成的。
Init状态的出现表明了一种不对称的邻居关系情况,即本端已经认识到了邻居的存在,但对端并没有意识到本端的存在。这种不对称的情况可能会导致邻接关系的建立失败,进而影响到路由信息的交换和路由表的更新。
Init状态的处理
检查网络配置:首先,路由器应当检查网络配置,确保本端和对端的OSPF配置正确并且一致。
检查网络连通性:其次,路由器需要检查本端和对端之间的网络连通性,确保可以正常地互相通信。
重新发送Hello报文:如果发现本端的Hello报文没有被对端正确接收,可以尝试重新发送Hello报文,以尝试建立邻接关系。
💡记忆小技巧:Init状态是OSPF邻居状态机中的一个关键阶段,它表示路由器在已经收到邻居的Hello报文的情况下,但对端并没有收到本端发送的Hello报文。这种状态的出现可能会导致邻接关系的建立失败,需要进行相应的排查和处理。
2-way状态
2-way状态的出现意味着两个路由器之间已经建立了双向通信的能力,彼此之间可以互相收到对端发送的Hello报文。这意味着路由器已经意识到了彼此的存在,并且开始了邻居关系的建立过程。
2-way状态的特征
双向通信能力:路由器之间已经确认了双向通信的能力,可以互相收到对端发送的Hello报文。
建立邻居关系:由于已经确认了双向通信能力,因此路由器之间已经建立了邻居关系,开始了邻居关系的协商和同步过程。
2-way状态的状态转换
保持状态:如果两个路由器之间不能形成邻接关系,则可能会停留在2-way状态,继续尝试与对端建立邻接关系。
进入Exstart状态:如果双方成功建立了邻接关系,则会进入下一个阶段的状态,即Exstart状态,开始更深层次的邻居关系建立过程。
💡记忆小技巧:2-way状态是OSPF邻居状态机中的一个关键状态,表示两个路由器之间建立了双向通信的能力,已经确认了彼此的存在,并开始了邻居关系的建立过程。
Exstart状态
Exstart状态表示两个路由器之间已经建立了邻居关系,并且正在进行主从关系的协商过程。在Exstart阶段,将确定一个路由器作为Master,另一个作为Slave,以便在后续的LSA交换过程中有序地发送数据。
Exstart状态的主要作用在于协商主从关系,确保在LSA交换过程中能够有序地发送数据。在Exstart阶段,路由器会交换一些信息,如路由器ID、LSA序列号等,以便确定Master和Slave,并准备好进行后续的LSA交换。
建立主从关系的主要目的是为了保证在LSA交换过程中能够有序地发送数据。Master负责发送LSA请求(LS Request)和LSA更新(LS Update),而Slave负责接收和处理这些消息。通过建立主从关系,可以避免在LSA交换过程中出现数据丢失或重复发送的情况,从而保证了OSPF协议的稳定性和可靠性。
💡记忆小技巧:Exstart状态是OSPF邻居状态机中的一个关键阶段,用于协商主从关系,以便在后续的LSA交换过程中能够有序地发送数据。通过建立主从关系,可以保证OSPF协议的稳定性和可靠性,从而提高了网络的性能和可靠性。
Exchange状态
Exchange状态表示路由器之间已经建立了邻居关系,并且正在进行DD报文的交换过程。在这个阶段,本端设备会将本地的LSDB(链路状态数据库)用DD报文来描述,并发送给邻居设备,以便进行LSA(链路状态通告)的交换。
Exchange状态的主要作用在于进行LSA的交换前的准备工作,即通过交换DD报文来描述本地的LSDB。在Exchange阶段,路由器之间会交换一系列的DD报文,其中包含了LSDB的摘要信息,以便双方能够比较彼此的LSDB,并确定需要交换的具体LSA。
DD报文交换过程
初始化DD序列号:在Exchange状态的开始,路由器会初始化一个DD序列号,并将其包含在DD报文中。
描述本地LSDB:本端设备将本地的LSDB用DD报文来描述,并发送给邻居设备。
比较LSDB:邻居设备收到DD报文后,会比较本地LSDB和接收到的LSDB,确定需要交换的LSA。
请求LSA:如果发现本地缺少某些LSA,邻居设备会向本端设备发送LSA请求,请求相应的LSA。
发送LSA:本端设备收到LSA请求后,会向邻居设备发送相应的LSA,完成LSA的交换过程。
💡记忆小技巧:Exchange状态是OSPF邻居状态机中的一个重要阶段,用于交换DD报文,描述本地的LSDB并与邻居设备进行LSA的交换。通过Exchange状态,路由器之间可以协商并同步彼此的LSDB,从而保证了路由表的一致性和网络的稳定性。
Loading状态
Loading状态表示路由器之间正在进行LSDB的同步过程。在这个阶段,两端设备会相互发送LSR(Link State Request)报文,向邻居请求对方的LSA,以便进行LSDB的同步。
Loading状态的主要作用在于完成LSDB的同步,确保两端设备的LSDB保持一致。在Loading阶段,两端设备会相互交换LSR报文,并根据对方的请求发送相应的LSA,从而完成LSDB的同步过程。
LSR报文交换过程
发送LSR报文:一端设备在Loading状态下向邻居发送LSR报文,请求对方的LSA。
接收LSR报文:另一端设备收到LSR报文后,会根据请求发送相应的LSA给请求方,以完成LSDB的同步。
处理LSA:接收方收到LSA后,会更新本地的LSDB,并根据需要发送LSA给请求方。
💡记忆小技巧:Loading状态是OSPF邻居状态机中的一个关键阶段,用于完成LSDB的同步过程。通过相互发送LSR报文,并根据对方的请求发送相应的LSA,路由器可以确保彼此的LSDB保持一致,从而保证了路由表的准确性和网络的稳定性。
Full状态
Full状态表示路由器之间的LSDB已经同步,并且成功建立了邻接关系。在Full阶段,本端设备和邻居设备已经彼此认可,并开始进行正常的路由信息交换和更新。
Full状态的主要作用在于标志着邻接关系的建立完成,路由器之间可以开始进行正常的路由信息交换和更新。在Full阶段,本端设备和邻居设备已经完全了解彼此的网络拓扑,并且可以相互转发数据包。
Full状态的出现意味着邻接关系已经成功建立。在Full阶段,路由器之间会相互确认彼此的存在,并进行一系列的协商和同步过程,确保路由表的一致性和网络的稳定性。
💡记忆小技巧:Full状态是OSPF邻居状态机中的最终阶段,表示两端设备的LSDB已经同步,并且成功建立了邻接关系。通过Full状态,路由器可以开始进行正常的路由信息交换和更新,从而确保了网络的稳定性和可靠性。
总结
文章的最后,瑞哥来做个总结,精要部分提出来,方便大家记忆!
Down状态:
- 含义:表示邻居关系的初始阶段,路由器之间尚未建立邻接关系。
- 特征:在邻居失效时间间隔内未收到来自邻居设备的Hello报文。
- 转换:收到Hello消息或邻居失效。
Attempt状态:
- 含义:表示路由器正在尝试与手工配置的邻居建立连接。
- 特征:定期向手工配置的邻居发送Hello报文,通常适用于NBMA类型接口。
- 转换:建立邻接关系或邻居失效。
Init状态:
- 含义:表示路由器已收到邻居的Hello报文,但对端未收到本端发送的Hello报文。
- 特征:发现邻居存在,但对端未发现本端。
- 转换:建立邻接关系或邻居失效。
2-way状态:
- 含义:表示双方路由器互相收到了对端发送的Hello报文,建立了邻居关系。
- 特征:双向通信能力已确认,但尚未开始LSA交换。
- 转换:进入Exstart状态或邻居失效。
Exstart状态:
- 含义:表示路由器正在协商主从关系,为后续的LSA交换做准备。
- 特征:协商主从关系以有序发送LSA。
- 转换:进入Exchange状态或邻居失效。
Exchange状态:
- 含义:表示路由器正在交换DD(Database Description)报文,准备进行LSA的交换。
- 特征:描述本地LSDB,请求对方LSA。
- 转换:进入Loading状态或邻居失效。
Loading状态:
- 含义:表示路由器正在同步LSDB,通过LSR(Link State Request)报文请求对方的LSA。
- 特征:LSDB同步过程中。
- 转换:进入Full状态或邻居失效。
Full状态:
- 含义:表示路由器已建立邻接关系,LSDB已同步,可以进行正常的路由信息交换。
- 特征:邻接关系建立,LSDB同步完成。
- 转换:维持状态,直到邻居失效。
这些状态之间的转换是动态的,并且受到网络拓扑变化、配置更改以及通信故障等因素的影响。因此,网络管理员需要密切关注邻居状态的变化,并及时采取适当的措施来确保网络的稳定性和可靠性。