OSPF的建立过程

OSPF的建立过程
1、三张表

1)邻居表:存放邻居的相关信息

当发送的hello报文被对方发现并确认之后,则将其加入到邻居表中

条件:地址以及掩码要一致、hello time、dead time要一致、区域要一样、认证类型要一样、特殊区域要一样

这个时候邻居关系为two-way状态

设备通过了hello报文的交互,但可能并未开始交互LSA信息,只有当邻居之间交换LSA信息之后,邻居关系才为full状态

2)拓扑表:存放每台设备对整个拓扑的认知(称为链路状态数据库--LSDB)

3)路由表:存放从拓扑表中通过SPF计算出来的最优路径

2、OSPF的状态机,OSPF状态机有哪些稳定状态

down:没有收到其他的hello报文 稳定

init:初始化状态(单向通信)

接口刚启用OSPF,往组播224.0.0.5发送hello报文,接收到邻居发送的hello报文,但邻居并未收到自己发送的hello报文

two-way:邻居状态(双向通信)稳定

在组播地址中收到邻居发送的hello报文并且对方已经添加了自己网段RID的hello报文(即邻居之间均收到对方发送的hello报文),这时候进行DR/BDR的选举

exstart:预启动状态

选举主从关系为了确定在exchange状态有序发送DBD报文

(若两端的MTU不一致会卡在这个状态)

exchange:交换状态

互相交换机DBD(数据库摘要信息),建立各自的拓扑表

loading:加载状态

请求对方的LSA全部信息,交互LSR、LSU、LSAck

full:邻接状态 稳定

建立邻居关系,达到LSDB同步

attempt(特殊):尝试状态

只有可能出现非广播多路访问环境中,想要建立OSPF的邻居关系,但不知道发数据包发给谁

### OSPF 协议建立过程 OSPF(开放最短路径优先)协议是一种内部网关协议,用于在单一自治系统内决策路由。该协议采用链路状态路由算法来决定最佳路径。 #### Hello 报文交互阶段 在网络接口启动后,路由器会周期性发送Hello报文给同一网络上的其他设备。这些报文中包含了关于发送者的信息以及它所知道的邻居。当两台或多台路由器互相接收到了彼此发出的Hello消息,并发现它们之间有共同点时,则认为双方成为了邻居[^1]。 #### 数据库描述 (DBD) 报文交换 一旦建立了初步的邻居关系之后,接下来就是数据库描述(DBD)报文的交流。在此期间,每一对新形成的邻居都会相互传递自己的链接状态数据库(LSDB)摘要信息——即所谓的DD报文。此步骤旨在让各方了解到对方当前掌握了多少最新的拓扑数据。值得注意的是,在这一过程中还存在着一种隐含的确收机制,用来确保所有必要的更新都能被正确传达并记录下来[^4]。 #### LSA 同步与邻接形成 随着DBD报文的成功传输,如果两个节点之间的LSDB完全一致或者可以达成一致,那么这两个节点就会进一步发展成为“全双工”(FULL)状态下的相邻体。此时意味着两者已经共享了一个完整的、同步后的本地视图,从而能够独立地计算最优转发路径[^3]。 为了维持这种高效运作的状态,特别是在较大规模且复杂的环境中,合理规划IP地址空间和实施有效的区域分割显得尤为重要。这不仅有助于减少不必要的广播流量,还能提高整个系统的稳定性和响应速度[^2]。 ```python # Python伪代码OSPF基本流程 def ospf_establishment(): hello_exchange() dbd_packet_transfer() lsa_synchronization() def hello_exchange(): send_hello_message() receive_and_process_hello_messages() def dbd_packet_transfer(): exchange_db_descriptions_with_neighbors() def lsa_synchronization(): synchronize_link_state_advertisements() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值