OSPF工作原理

AireveryDatacom / 2023-07-31 / 原文

邻居建立过程

 过程概述

  1. 当两台路由器接口启用ospf功能
  2. 接口开始相互发送Hello报文(组播方式,目的地址224.0.0.5)
  3. 当Hello包相互发现邻居之后
  4. 开始协商主从关系(通过DD报文协商主从,用与交互数据的可靠性,此时的DD报文不是完整的)
  5. 当主从关系协商完成,开始相互发送DD报文(真正的摘要信息)
  6. 相互请求LSA,更新LSA,确认LSA,同步LSDB
  7. 计算路由,加入路由表

建立邻居关系

 

 ospf使用hello报文发现邻居和维护邻居关系,在以太网链路上,采用组播方式发送hello包,目的地址为224.0.0.5,ospf hello报文包括路由器的Router id、邻居列表等信息

Hello报文概述

字段解释

  • Netword Mask :发送Hello报文的接口网络掩码
  • Hello Interval:超时时间(4倍Hello Time时间未收到对端发送来的Hello报文,则认为对端出现故障,邻居状态超时)
  • Options:可选字段(协商),E置位表示支持外部路由,MC置位表示支持转发组播数据
  • Router Priority:路由优先级,用于DR选举(默认1,最大255,最小0则不参与选举)
  • Designated Router:DR的接口地址
  • Backup Designated Router:BDR的接口地址
  • Neighbor:表示邻居信息,使用Router-id标识

OSPF状态

  •  Down:邻居初始化阶段
  • Init:已经发送Hello报,或收到邻居的Hello报,单不包含自己的Router-id(可以理解为还不认识对方)
  • Attempt:在帧中继网络中才会出现,表示的是网络是测试、唤醒状态尝试阶段
  • 2-way:路由器发现自己的Router-id存在于收到的Hello报文在邻居列表中(双方互相认识)
  • Exstart:邻居状态变为此状态以后,开始发送DD报文,但是DD报文中不包含链路状态描述信息
  • Exchange:路由器与邻居之间相互发送带有链路状态描述信息的DD报文
  • Loading:路由器与邻居之间相互发送LSR、LSU、LSA报文
  • Full:完成邻接关系,完成LSDB数据库同步

设备角色

  • 在广播网络中:N*(N-1)/2个邻接关系,管理复杂,重复的LSA泛洪,造成资源浪费
  • DR指定路由器:负责在广播网络中网络建立和维护邻接关系并负责LSA同步,DR与其他路由器之间建立邻接关系并交互链路状态通告信息,其他路由器之间不直接交换链路状态通告信息(可以通俗理解为村长)
  • BDR备份指定路由器:当DR出现故障时,快速接管DR的工作(副村长)
  • DRother:OSPF成员设备(村民)

设备角色关系

  • DR--BDR(Full状态)
  • DR--DRother(Full状态)
  • BDR--DRother(Full状态)
  • DRother--DRother(2-way状态

DR选举

  • 选举规则(分先后顺序)
    • 设备启动时间(60秒未收到Hello报文,则认为自己为DR)
    • 接口优先级越大越优(0-255,0表示不参与选举)
    • Router-id越大越优

加速收敛

  • 通过更改链路类型(将网络类型配置为P2P类型,让设备认为对端只有一台设备,不选举DR角色,MA网络环境禁用