OSPF 报文结构
公共头部:包含版本(8bit)、类型(8bit)、报文长度(16bit)、路由器 ID(32bit)、区域 ID(32bit)、校验和(16bit)、验证类型(16bit)以及认证数据(32bit,可能出现两次)等字段 ,这些字段是 OSPF 报文的基本标识和验证信息。
- Hello 报文格式:除公共头部外,还包括网络掩码(在以太网中校验,P2P 网络不验证)、Hello 间隔(16bit)、可选项(8bit,特殊区域标记)、路由器优先级(8bit)、路由器失效时间(32bit)、指定路由器(32bit)、备份指定路由器(32bit)以及邻居(32bit,可能出现多次)等字段。Hello 报文用于发现和维护邻居关系,字段信息影响邻居建立及网络拓扑发现。
- 其他报文格式
- DBD 报文:版本为 2,类型为 2。先利用无摘要信息的 DBD 报文进行主从关系选举(I 标志用于选举,M 标志保证对端接收所有摘要信息,MS 仅主设备发送的 DBD 报文置为 1),之后交换携带摘要信息的 DBD 报文比对数据库,再通过序列号隐性确认,确保 DBD 报文可靠传输,主设备控制确认顺序。
- LSR 报文(链路状态请求报文):版本为 2,类型为 3。通过 LSA 三元组(链路状态类型、链路状态 ID、通告路由器,共同唯一标识一条 LSA),逐条请求 LSA,用于获取特定链路状态信息。
- LSU 报文(链路状态更新报文):版本为 2,类型为 4。携带 LSA 个数及具体 LSA 信息,用于回复对端请求的 LSA,实现链路状态信息更新。
- LSACK 报文:版本为 2,类型为 5。通过 LSA 头部信息确认 LSU 报文,保障 LSU 报文可靠传输。
- DBD 报文:版本为 2,类型为 2。先利用无摘要信息的 DBD 报文进行主从关系选举(I 标志用于选举,M 标志保证对端接收所有摘要信息,MS 仅主设备发送的 DBD 报文置为 1),之后交换携带摘要信息的 DBD 报文比对数据库,再通过序列号隐性确认,确保 DBD 报文可靠传输,主设备控制确认顺序。
- OSPF 邻居关系建立失败因素:涉及 RID(路由器 ID)、Area ID(区域 ID)、认证、网络掩码(以太网中校验,不一致会导致邻居建立失败,P2P 网络不验证)、hello 时间和 dead 时间、可选项(特殊区域标记)、DR(指定路由器)和 BDR(备份指定路由器)等因素。其中,DR 和 BDR 所有设备认知必须一致,否则影响邻居关系建立。
- OSPF 的接口网络类型
- BMA(广播多路访问,如以太网环境):工作方式为 Broadcast,需条件匹配,MTU 默认 1500 字节,hello 时间为 10S,dead 时间为 40S,可建立多个邻居。通过
display ospf interface GigabitEthernet 0/0/0
可查看接口信息,如开销值(Cost),其计算公式为参考带宽 / 真实带宽(参考带宽默认 100Mbps ,计算值小于 1 取整为 1,大于 1 舍去小数部分),用于 OSPF 选路。还可通过bandwidth-reference
命令修改参考带宽。此外,DR 与 BDR 在接口上选举,因为不同接口可能处于不同广播域。[r2]display ospf interface GigabitEthernet 0/0/0 OSPF Process 1 with Router ID 2.2.2.2 Interfaces Interface: 23.0.0.1 (GigabitEthernet0/0/0) Cost: 1 State: BDR Type: Broadcast MTU: 1500 Priority: 1 Designated Router: 23.0.0.2 Backup Designated Router: 23.0.0.1 Timers: Hello 10 , Dead 40 , Poll 120 , Retransmit 5 , Transmit Delay 1 DR与BDR的选举,实质上是接口进行选举,因为路由器不同的接口工作在不同的广播域中
- P2P(点到点网络):无需条件匹配,不能建立多个邻居,Hello 时间 10S,Dead 时间 40S,MTU 默认 1500 字节。相比 MA 网络,没有 two - way 状态,收敛速度更快,如串口链路。环回接口开销为定义值,默认视为 P2P 类型。
P2P状态变化 [r1] Apr 17 2025 20:21:34-08:00 r1 %%01IFNET/4/LINK STATE (1) [8] : The line protocol PPP IPCP on the interface Serial4/0/0 has entered the UP state. [r1] Apr 17 2025 20:21:34-08:00 r1 %%01OSPF/4/NBR CHANGE_E (1) [9] : Neighbor changes eve nt: neighbor status changed. (ProcessId=256, NeighborAddress=2. 0.0.12, NeighborE vent=HelloReceived, NeighborPreviousState=Down, NeighborCurrentState=Init) [r1] Apr 17 2025 20:21:44-08:00 r1 %%01OSPF/4/NBR CHANGE E (1) [10] : Neighbor changes ev ent: neighbor status changed. (ProcessId=256, NeighborAddress=2. 0. 0.12, Neighbor Event=2WayReceived, NeighborPreviousState=Init, NeighborCurrentState=ExStart) [r1] Apr 17 2025 20:21:44-08:00 r1 %%01OSPF/4/NBR CHANGE E (1) [11] : Neighbor changes ev ent: neighbor status changed. (ProcessId=256, NeighborAddress=2.0.0.12, Neighbor Event=NegotiationDone, NeighborPreviousState=ExStart, NeighborCurrentState=Excha nge) [r1] Apr 17 2025 20:21:44-08:00 r1 %%01OSPF/4/NBR CHANGE E (1) [12] : Neighbor changes ev ent: neighbor status changed. (ProcessId=256, NeighborAddress=2.0.0.12, Neighbor Event=ExchangeDone, NeighborPreviousState=Exchange, NeighborCurrentState=Loading ) [r1] Br 17 2025 20:21:44-08:00 r1 %%01OSPF/4/NBR_CHANGE_E (1) [13] : Neighbor changes ev ent: neighbor status changed. (ProcessId 256, NeighborAddress-2. 0.0.12, Neighbor Event=LoadingDone, NeighborPreviousState=Loading, NeighborCurrentState=Full)
[r1]display ospf interface Serial 4/0/0 OSPF Process 1 with Router ID 1.1.1.1 Interfaces Interface: 12.0.0.1 (Serial4/0/0) -- > 12.0.0.2 Cost: 4882 State: P-2-P Type: P2P MTU: 1500 Timers: Hello 10 , Dead 40 , Poll 120 , Retransmit 5 , Transmit Delay 1 串口E1标准2.048此时参考带宽=10000,参考/真实=4882.XXX舍去小数部分
环回接口--主要环回接口开销是定义值 <r3>display ospf interface LoopBack 0 OSPF Process 1 with Router ID 3.3.3.3 Interfaces Interface: 192.168.3.1 (LoopBack0) Cost: 0 State: P-2-P Type: P2P MTU: 1500 Timers: Hello 10 , Dead 40 , Poll 120 , Retransmit 5 , Transmit Delay 1
- P2MP(点到多点网络):无需条件匹配,hello 时间 30S,死亡时间 120S,允许同时建立多个邻居。可通过命令
ospf network - type p2p
修改接口网络类型为 P2MP ,以适应特定网络环境。[r3-GigabitEthernet0/0/0]display ospf interface GigabitEthernet 0/0/0 OSPF Process 1 with Router ID 3.3.3.3 Interfaces Interface: 23.0.0.2 (GigabitEthernet0/0/0) Cost: 10 State: P-2-P Type: P2MP MTU: 1500 Timers: Hello 30 , Dead 120 , Poll 120 , Retransmit 5 , Transmit Delay 1
- NBMA(非广播多路访问,如帧中继,逐渐被淘汰):需要进行 DR 和 BDR 选举,hello 时间 30S,dead 时间 120S,Poll 时间 120S(用于轮询,防止因对端未及时配置导致邻居状态误判为 down)。设备需指定单播邻居(如
[r3 - ospf - 1]peer 23.0.0.1
),存在 Attempt(等待)状态,等待对端设备指定单播邻居,状态变化过程与其他网络类型不同。[r3-GigabitEthernet0/0/0]display ospf interface GigabitEthernet 0/0/0 OSPF Process 1 with Router ID 3.3.3.3 Interfaces Interface: 23.0.0.2 (GigabitEthernet0/0/0) Cost: 10 State: Waiting Type: NBMA MTU: 1500 Priority: 1 Designated Router: 0.0.0.0 Backup Designated Router: 0.0.0.0 Timers: Hello 30 , Dead 120 , Poll 120 , Retransmit 5 , Transmit Delay 1
需要进行DR和BDR选举 Interface: 23.0.0.2 (GigabitEthernet0/0/0) Cost: 10 State:Waiting Type: NBMA MTU: 1500 Priority: 1 Designated Router: 0.0.0.0 Backup Designated Router: 0.0.0.0 Timers: Hello 30 ,Dead 120 , Poll 120 , Retransmit 5 , Transmit Delay 1 [r3-GigabitEthernet0/0/0] [r3-GigabitEthernet0/0/0] [r3-GigabitEthernet0/0/0] [r3-GigabitEthernet0/0/0] [r3-GigabitEthernet0/0/0]display ospf interface GigabitEthernet 0/0/0 OSPF Process 1 with Router ID 3.3.3.3 Interfaces Interface: 23.0.0.2 (GigabitEthernet0/0/0) Cost: 10 State: DR Type: NBMA MTU: 1500 Priority: 1 Designated Router: 23.0.0.2 Backup Designated Router: 0.0.0.0 Timers: Hello 30 , Dead 120 , Poll 120 ,Retransmit 5 , Transmit Delay 1
[r3-ospf-1]peer 23.0.0.1---指定建立邻居的设备IP地址(作为目标IP) Apr 17 2025 20:54:44-08:00 r2 %%01OSPF/4/NBR CHANGE E (1) [0] : Neighbor changes eve nt: neighbor status changed. (ProcessId=256, NeighborAddress=2.0.0.23, NeighborE vent=Start, NeighborPreviousState=Down, NeighborCurrentState=Attempt) [r2-ospf-1]
NBMA状态变化 [r3-ospf-1]peer 23.0.0.1 Apr 17 2025 20:58:45-08:00 r3 %%01OSPF/4/NBR_CHANGE_E (1) [9] : Neighbor changes eve nt: neighbor status changed. (ProcessId=256, NeighborAddress=1.0.0.23, NeighborE vent=Start, NeighborPreviousState=Down, NeighborCurrentState=Attempt) [r3-ospf-1] [r3-ospf-1] Apr 17 2025 20: 58: 45-08:00 r3 %%01OSPF/4/NBR_CHANGE_E (1) [10] : Neighbor changes ev ent: neighbor status changed. (ProcessId=256, NeighborAddress=1.0.0.23, Neighbor Event=HelloReceived, NeighborPreviousState=Attempt, NeighborCurrentState=Init) [r3-ospf-1] Apr 17 2025 20:58:45-08:00 r3 %%01OSPF/4/NBR CHANGE_E (1) [11] : Neighbor changes ev ent: neighbor status changed. (ProcessId=256, NeighborAddress=1.0.0.23, Neighbor Event=2WayReceived, NeighborPreviousState=Init, NeighborCurrentState=ExStart) [r3-ospf-1] Apr 17 2025 20:58: 45-08:00 r3 %%01OSPF/4/NBR_CHANGE_E (1) [12] : Neighbor changes ev ent: neighbor status changed. (ProcessId=256, NeighborAddress=1.0.0.23, Neighbor Event=NegotiationDone, NeighborPreviousState=ExStart, NeighborCurrentState=Excha nge) [r3-ospf-1] Apr 17 2025 20:58:45-08:00 r3 %%01OSPF/4/NBR CHANGE_E (1) [13] : Neighbor changes ev ent: neighbor status changed. (ProcessId=256, NeighborAddress=1.0.0.23, Neighbor Event=ExchangeDone, NeighborPreviousState=Exchange, NeighborCurrentState=Loading ) [r3-ospf-1] Apr 17 2025 20:58:45-08:00 r3 %%01OSPF/4/NBR_CHANGE_E (1) [14] : Neighbor changes ev ent: neighbor status changed. (ProcessId=256, NeighborAddress=1.0.0.23, Neighbor Event=LoadingDone, NeighborPreviousState=Loading, NeighborCurrentState=Full)
- BMA(广播多路访问,如以太网环境):工作方式为 Broadcast,需条件匹配,MTU 默认 1500 字节,hello 时间为 10S,dead 时间为 40S,可建立多个邻居。通过