OSPF邻接关系的建立步骤

OSPF邻接关系建立过程剖析

在OSPF网络中,为了交换路由信息,邻居设备之间首先要建立邻接关系,邻居(Neighbors)关系和邻接(Adjacencies)关系是两个不同的概念。

邻居关系:OSPF设备启动后,会通过OSPF接口向外发送Hello报文,收到Hello报文的OSPF设备会检查报文中所定义的参数,如果双方一致就会形成邻居关系,两端设备互为邻居。

邻接关系:形成邻居关系后,如果两端设备成功交换DD报文和LSA,才建立邻接关系。

OSPF状态机

OSPF共有8种状态机,分别是:Down、Attempt、Init、2-way、Exstart、Exchange、Loading、Full。

1、Down:邻居会话的初始阶段,表明没有在邻居失效时间间隔内收到来自邻居路由器的Hello数据包。

2、Attempt:该状态仅发生在NBMA网络中,表明对端在邻居失效时间间隔(dead interval)超时后仍然没有回复Hello报文。此时路由器依然每发送轮询Hello报文的时间间隔(poll interval)向对端发送Hello报文。

3、Init:收到Hello报文后状态为Init。

4、2-way:收到的Hello报文中包含有自己的Router ID,则状态为2-way;如果不需要形成邻接关系则邻居状态机就停留在此状态,否则进入Exstart状态。

5、Exstart:开始协商主从关系,并确定DD的序列号,此时状态为Exstart。

6、Exchange:主从关系协商完毕后开始交换DD报文,此时状态为Exchange。

7、Loading:DD报文交换完成即Exchange done,此时状态为Loading。

8、Full:LSR重传列表为空,此时状态为Full。

OSPF邻接关系建立过程图解:

在这里插入图片描述
注:此图为网图,谅解博主懒病犯了。哈哈。。

邻接关系建立过程详解(Broadcast类型):【对比着图更容易理解哦】

1、在Down状态下路由器发出第一个hello包。当R2收到一个Hello包,并且在这个hello包中看不到自已的ID,则将自已和邻居的关系转到Init状态。Init是一个one way 状态,当R1和R2都认识对方后就会进入2-Way状态。

2、当收到包含自己router-id的hello包时,将自己和邻居的状态置为2-way。在Two Way时,将选举DB/BDR(MA网络)。进入Two way状态后(即从Exstart开始),表示这两个路由器已经建立了邻居关系了。但最终能不能邻接关系要看最后是不是FULL。

3、Exstart:Exstart交互的是firstDBD,主要是用于选举主从关系(router-id大的为主),确定接下来DD报文的序列号(用主的序列号),为lsdb同步做准备。

进入Exstart状态后,R1和R2分别向对方发送firstDBD报文,并将I位置为1,代表是第一个DBD报文;M位置为1,代表不是最后一个DBD报文;MS位置为1,最初会自己认为自己是主。当收到对方的first DBD报文后,通过router-id选举出主从,由主来决定seq的值。

根据上图中能看到第二个DBD报文中包含seq值,第一个报文的seq值为n+1,以此类推。当主发送以此DBD报文,从必须给予一次回复,这是由于OSPF是基于IP的,没有确认机制,需要seq做隐式确认,保证了可靠性。

4、Exchange: Exchange是通过DBD交换LSA的头部信息。

5、Loading:等待收到M位为0的DD报文时,才进入loading。

进入Loading之后,R1开始向R2发送LS request报文,请求那些在Exchange状态下通过DD报文发现的,而且在本地LSDB中没有的链路状态信息。R2收到LS Request报文之后,向R1发送LS Update报文,在LS Update报文中,包含了那些被请求的链路状态的详细信息。R1收到LS Update报文之后,R1向R2发送LS Ack报文,确保信息传输的可靠性。

6、FULL:lsdb同步完成,邻接关系的完整建立。

转载来源:https://blog.51cto.com/xiaojiejt/1939388
©著作权归作者所有:来自51CTO博客作者SupermanNet的原创作品,如需转载,请注明出处,否则将追究法律责任

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
建立OSPF邻接关系过程如下: 1. Hello报文交换:当两个OSPF路由器在相同的网络上启动时,它们会开始发送Hello报文来识别和建立邻接关系。Hello报文包含了路由器的标识和其他必要的参数。这些参数包括:OSPF区域ID、Hello和Dead Interval、路由器优先级等。 2. 确认相邻路由器:在收到对方的Hello报文后,路由器会检查对方是否满足建立邻接关系的条件。这些条件包括:OSPF区域ID、Hello和Dead Interval、路由器优先级等。如果满足条件,则确认对方为相邻路由器。 3. 数据库描述(DBD)报文交换:一旦确认对方为相邻路由器,路由器会开始交换数据库描述(DBD)报文。DBD报文中包含了自己的链路状态数据库(LSDB)摘要信息,用于比较和同步LSDB。 4. 链路状态请求(LSR)和链路状态更新(LSU)报文交换:在DBD报文交换完成后,如果有需要同步的LSDB信息,路由器会发送链路状态请求(LSR)报文请求对方发送缺失的链路状态广告(LSA),对方则回复链路状态更新(LSU)报文发送相应的LSA。 5. 链路状态确认(LSAck)报文交换:LSR和LSU报文的交换完成后,对方会发送链路状态确认(LSAck)报文进行确认。 通过以上步骤OSPF邻接关系建立完成,路由器之间可以开始交换链路状态信息,并计算出最短路径来更新自己的路由表。这样就实现了OSPF协议的运行和路由信息的传递。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值