当前位置:   article > 正文

OSPF邻居与邻接_ospf邻居关系

ospf邻居关系

OSPF邻居与邻接

运行OSPF的路由器之间需要交换链路状态信息和路由信息,在交换这些信息之前路由器之间首先需要建立邻接关系

(1)邻居路由器(Neighbor)

当OSPF路由器启动后,便会通过OSPF接口向外发送Hello数据包用于发现邻居。收到Hello数据包的OSPF路由器会检查该数据包中所定义的一些参数,如果双方一致就会形成邻居关系。

(2)邻接(Adjacency)

形成邻居关系的双方不一定都能形成邻接关系,这要根据网络类型而定。只有当双方成功交换DD数据包并能交换LSA之后,才形成真正意义上的邻接关系。

注:路由器在发送LSA之前必须先发现邻居并建立邻居关系。

展示了OSPF邻居及邻接关系。

image-20230906094832244

上图中,RTA通过以太网连接了3台路由器,所以RTA有3个邻居,但不能说RTA有3个邻接关系。

OSPF邻居状态机变迁

OSPF是一种链路状态路由协议,邻居设备间交换的是链路状态信息,OSPF路由也是依据由链路状态路由信息构成的链路状态数据库(LSDB)计算得到的。在OSPF中,建立设备间的邻居关系,交换彼此的LSDB非常重要。而邻居关系建立的过程体现在OSPF接口的状态转换过程中。在OSPF中,共有Down、Attempt、Init、2-Way、Exstart、Exchange、Loading和Full八种状态机,图9-12展示了OSPF邻居关系的建立过程

1.建立邻居状态

image-20230906095056204

① Down:这是邻居的初始状态,表示没有从邻居收到任何信息。

② Init:在此状态下,路由器已经从邻居收到了Hello数据包,但是自己不在所收到的Hello数据包的邻居列表中,表示尚未与邻居建立双向通信关系。在此状态下,邻居要被包含在自己所发送的Hello数据包的邻居列表中。

③ 2-Way:在此状态下,双向通信已经建立,但是没有与邻居建立邻接关系。这是建立邻接关系以前的最高级状态。如果网络为广播网络或者NBMA网络则选举DR/BDR。

在形成邻居关系过程中,需要对Hello数据包携带的参数进行协商:

  • 如果接收接口的网络类型是广播型网络、点到多点网络或者 NBMA网络,所接收的 Hello数据包中 Network Mask字段必须和接收接口的网络掩码一致;如果接收接口的网络类型为点到点类网络或者是虚连接,则不检查 Network Mask字段。

  • 所接收的 Hello数据包中的 Hello Interval和 Dead Interval字段必须和接收接口的配置保持一致。

  • 所接收的 Hello数据包中的认证字段需要一致。

  • 所接收的 Hello数据包中的 Options字段中的 E-bit(表示是否接收外部路由信息)必须和相关区域的配置保持一致。

  • 所接收的 Hello数据包中的区域字段必须一致。

2.邻接状态建立

① Exstart:准备开始交换阶段。路由器之间用Hello数据包来协商它们之间的主从关系,有最高Router ID的路由器被称为主路由器。当邻居路由器之间建立了主从关系后,它们就进入了Exchange状态并开始发送路由选择信息。

当邻居状态机变为Exstart以后,R1向R2发送第一个DD数据包,在该数据包中,DD序列号被设置为552A(假设);I比特为1表示这是第一个DD数据包;M比特为1表示后续还有DD数据包要发送;MS比特为1表示R1宣告自己为主路由器。

邻居状态机变为Exstart以后,R2向R1发送第一个DD数据包,在该数据包中,DD序列号被设置为5528(假设)。由于R2的Router ID比R1的大,所以R2应当为主路由器。当Router ID比较结束后,R1会产生一个NegotiationDone事件,R1的状态机将从Exstart改变为Exchange。

② Exchange:开始交换阶段。路由器将本地的LSDB用DD数据包来描述并发给邻居。如果任何一台路由器收到不在其数据库中的有关链路的信息,则该路由器就向其邻居请求有关该链路的完整信息。完整的路由状态信息在Loading状态下交换。

当邻居状态机变为Exchange以后,R1发送一个新DD数据包,在该新数据包中包含LSDB的摘要信息,序列号被设置为5528(在第二步里使用的序列号),M比特为0表示不需要另外的DD数据包描述LSDB,MS比特为0表示R1宣告自己为从路由器。收到这样一个数据包以后,R2会产生一个NegotiationDone事件,因此R2将邻居状态改变为Exchange。

即使R1不需要新DD数据包描述自己的LSDB,但是作为从路由器,R1需要对主路由器R2发送的每一个DD数据包进行确认。所以,R1向R2发送一个新DD数据包,序列号为5529,该数据包内容为空。

即使R1不需要新DD数据包描述自己的LSDB,但是作为从路由器,R1需要对主路由器R2发送的每一个DD数据包进行确认。所以,R1向R2发送一个新DD数据包,序列号为5529,该数据包内容为空。

③ Loading:加载阶段。路由器发送LSR数据包向邻居请求对方的路由条目的详细信息,当路由器收到一个LSR数据包时,它会用LSU数据包进行回应。LSU数据包中含有确切的LSA,收到LSU数据包的路由器需要使用LSACK数据包对发送LSU数据包的路由器进行确认。

当邻居状态变为Loading后,R1开始向R2发送LSR数据包,请求那些在Exchange状态下通过DD数据包发现的、在本地LSDB中没有的链路状态信息。

R2收到LSR数据包后,向R1发送LSU数据包,在LSU数据包中,包含了那些被请求的链路状态的详细信息。R1收到LSU数据包后,将邻居状态从Loading改变成Full。R1向R2发送LSACK数据包,确保信息传输的可靠性。LSACK数据包用于泛洪对已接收LSA的确认。

④ FULL:完全邻接状态。Loading状态结束后,路由器就变成Full Adjacency。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/754928
推荐阅读
相关标签
  

闽ICP备14008679号