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。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OSPF(Open Shortest Path First)是一种用于路由选择的动态路由协议。在OSPF中,邻居邻接关系是非常重要的概念。 邻居是指在同一个OSPF区域内,通过OSPF协议相互通信的路由器邻居之间通过交换Hello消息来建立和维护邻居关系。Hello消息包含了路由器的ID、优先级、Hello间隔等信息,用于发现和识别邻居邻接关系是指在OSPF邻居之间建立的连接关系。通过建立邻接关系路由器可以交换链路状态信息(LSA)来了解网络拓扑,并计算最短路径。邻接关系的建立需要满足一定的条件,如Hello消息的匹配、区域ID的匹配等。 在OSPF中,邻居邻接关系的建立是基于以下几个步骤: 1. Hello消息交换:路由器发送Hello消息广播,其他路由器收到后进行匹配和回复。 2. 邻居状态机:根据Hello消息的匹配结果,路由器进入相应的邻居状态,如Down、Init、Two-Way、Exstart、Exchange和Full等。 3. DD(Database Description)交换:在Exstart和Exchange状态下,路由器交换数据库描述信息,用于同步链路状态数据库(LSDB)。 4. LSR(Link State Request)和LSU(Link State Update)交换:在Exchange状态下,路由器通过LSR和LSU消息交换链路状态信息。 5. LSACK(Link State Acknowledgment)交换:在Full状态下,路由器通过LSACK消息确认收到的LSU消息。 通过建立邻接关系OSPF路由器可以共享网络拓扑信息,并计算出最短路径,从而实现路由选择。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值