目录
[1、Hello 包参数必须一致:](#1、Hello 包参数必须一致:)
[九、OSPF 不规则区域及解决方案](#九、OSPF 不规则区域及解决方案)
[十、OSPF 数据库(LSDB)与 LSA 类型](#十、OSPF 数据库(LSDB)与 LSA 类型)
[十一、LSA 更新量优化方法](#十一、LSA 更新量优化方法)
[华为eNSP OSPF排错四步口诀:](#华为eNSP OSPF排错四步口诀:)
一、静态路由VS动态路由
| 项目 | 静态路由 | 动态路由 |
| 定义 | 管理员手工添加路由表 | 路由器间自动通信、计算生成路由 |
| 使用场景 | 小型网络、拓扑稳定 | 中大型网路、拓扑复杂或常边 |
| 优点 | 简单、安全、不占宽带 | 自适应拓扑变化、配置量小 |
| 缺点 | 1、在中型大型网路中配置量大; 2、当拓扑结构发生变化时,不能实时的进行更新,容易出现不可达、无最佳路径,路由黑洞、环路等; 3、管理维护在中大型网络中较为麻烦。 | 1、路由器间需要共享信息,占用链路资源,同时需要计算,占用设备的运算资源; 2、存在被黑洞利用路由器之间需要沟通计算的特征,来攻击协议,导致安全隐患; 3、依赖算法进行选路,存在计算错误(特殊的环境),最终可能导致环路。 |
|---|
二、动态路由协议分类
1、基于AS(自治系统)分类:
IGP(内部网关协议):运行在一个AS内部,如 RIP、OSPF、EIGRP、ISIS
EGP(外部网关协议):运行在AS之间,如 EGP、BGP
2、基于更新时是否携带子网掩码(无类别、有类别):
有类别:不携带子网掩码,按主类掩码匹配
无类别:携带子网掩码,按实际掩码加载
3、基于工作方式进行分类:
距离矢量(DV):如 RIP、EIGRP,邻居间直接共享路由表
链路状态(LS):如 OSPF、ISIS,邻居间共享拓扑信息,本地计算路由
三、OSPF基础特性
- 属于无类别链路状态型IGP协议
- 基于LSA收敛,更新量大,需结构化部署(区域划分、IP规划)
- 组播更新:
224.0.0.5(All OSPF Routers)、224.0.0.6(All DR Routers) - 支持触发更新,30分钟周期更新
- 跨层封装,协议号 89
**四、**OSPF的数据包类型
| 包类型 | 英文全称 | 作用 |
|---|---|---|
| Hello | Hello Packet | 邻居发现、建立、保活 |
| DBD | Database Description | 本地LSDB目录共享 |
| LSR | Link State Request | 请求未知LSA |
| LSU | Link State Update | 发送LSA信息 |
| LSack | Link State Acknowledgment | 确认收到LSA |
| [OSPF数据包类型] |


注:1、LSA(链路状态通告)是OSPF中描述拓扑或路由信息的基本单位,通过LSU传递。
2、LSDB(链路状态数据库)是装载本地获取到的所有LSA信息
1.hello包(不携带数据)
作用:用于邻居和邻接关系的发现,建立,周期的保活
默认以十秒为周期发送一个包(ospf的失效判断时间位四倍的hello时间------40s),若40s未收到邻居的hello包,就认为邻居已经死亡,这个时间被称为死亡时间(dead-time)
2.DBD包
数据库描述包(本地数据库(LSDB存储收集到的LSA信息)):会携带数据库中收集到的LSA信息的摘要值
在发送正式的更新数据之前,先发送所拥有的链路信息目录,让对方自己选取没有的数据,避免直接发送全部链路信息,造成重复更新
3.LSR包
链路状态请求包,基于DBD包请求位置的LSA
4.LSU包(真正携带LSA信息的数据包)
LSU包:链路状态更新包
5.LSACK包
LSACK包:链路状态确认包
ospf每30min进行一次周期更新,为了保证收敛的可靠性
五、OSPF状态机(邻居建立过程)
1、Down → 收到Hello包 → Init
2、Init → 对方Hello包中有我方RID → 2Way(邻居建立)
3、2Way → 条件匹配(DR/BDR选举等)→Exstart(主从选举)
4、Exstart → Exchange(DBD目录交换)
5、Exchange → Loading(请求未知LSA)
6、Loading → Full(邻接建立,LSDB同步完成)



1.down状态
一旦接收到其他OSPF设备的hello包 ,进入下一状态
2.init状态(初始化)
接收到其他OSPF设备的hello包,且包中存在我方的RID,进入下一状态
3.Two-way状态(双向通信)
标志着邻居关系的建立
4.Exstart状态(预启动)
使用不携带目录信息的DBD包进行主从关系的选举,RID数值大为主,优先进入下一状态,其意义在于排序,避免双方同时大量数据的更新导致网络拥塞
5.exchange状态(准交换)
主先行发生携带数据库目标信息的DBD包,从再跟发,共享双方的目录
6.loading状态(加载)
查看其它设备的数据库目录后,针对本地未知的LSA信息,使用LSA请求查询,邻居使用LSU回复,需要ACK确认
7.full状态(邻接)
标志着邻接关系(用于区分邻居关系)的建立。邻接关系之间才会进行真正的链路状态数据(LSA)交换,二邻居之间仅使用hello包周期保活
OSPF工作过程
1、建立邻居:启动配置之后,ospf将向本地所有的运行了ospf协议的端口发送hello包(224.0.0.5),hello包中携带自己的RID用来区分不同路由器的身份(不携带路由信息),同时携带自己已知的邻居RID,之后会将这些RID存储在自己的邻居表中。
2、条件匹配:邻居表建立完成之后,会进行条件匹配,如匹配成功则开始进入下一个状态,如果匹配失败则会停留在邻居关系。---之后仅hello包进行保活。
3、如果匹配成功,则开始建立邻接关系-之后会使用未携带数据DBD包(并没有携带LSDB的摘要信息)进行主从关系的选举。主路由器会优先进入下一个状态,会优先发送摘要进行比对,比对之后,会请求自己本地没有的lsa信息。对端会发送真正携带lsa信息的LSU包,会利用LSACK进行确认。本地的链路状态数据库建立完成,生成本地链路数据库表。---Full
4、完成收敛----基于本地的链路状态数据库收集的lsa,根据自己的spf算法计算得出最短路径树。生成路由表。
5、收敛完成后,会使用hello包每10s发送一次,用来保活邻居关系。ospf会每30min进行一次周期更新。
六、OSPF的基础配置
bash
#启动OSPF进程,指定RID
[r1] ospf 1 router-id 1.1.1.1
#进入区域0,宣告网段
[r1-ospf-1] area 0
[r1-ospf-1-area-0.0.0.0] network 1.1.1.1 0.0.0.0
[r1-ospf-1-area-0.0.0.0] network 12.1.1.0 0.0.0.255
- 启动配置时,需要定义进程号(仅具有本地意义);可以在一台路由器上启动多个进程,但每个进程都是独立工作的。
- RID(router-id):每个OSPF进程均需要一个全网唯一的标识,用于区分拓扑中的每台设备;RID需要格式相同(IP地址)、全网唯一;故使用了ip地址来作为RID。
- 宣告的作用:1、划分区域 2、激活接口协议 3、定义可共享内容范围
- 区域划分规则:
1、多区域时必须存在骨干区域(Area0) ,必须为星型拓扑(中心到站点、轴辐状)
2、区域间必须存在ABR-区域边界路由器-- 同时工作在多个区域
七、邻居与邻接建立条件
1、Hello 包参数必须一致:
- Hello / Dead Time
- 区域 ID
- 认证密钥
- 末梢区域标记
- 接口掩码长度(华为要求)
2、DR/BDR选举(MA网络中):
- 选举原因:避免全互联邻接关系导致重复LSA泛洪
- 选举规则:①比较优先级(0-255,默认1,0表示不参选)②优先级相同则比较RID
- 非抢占性,修改优先级后需重启进程生效
- DR/BDR与所有非DR/BDR建立邻接关系
bash
# 修改接口优先级
[r2-GigabitEthernet0/0/1] ospf dr-priority 3
# 重启 OSPF 进程
<r2> reset ospf process
八、OSPF接口网络类型
| OSPF网络类型 | 默认对应链路/场景 | 是否选举DR/BDR | 邻居发现方式 | 邻接关系建立 | 关键特点与适用场景 |
| 广播 (Broadcast) | 以太网、FDDI、令牌环等支持广播的多路访问网络 | 是 | 自动(组播Hello) | 所有路由器与DR/BDR建立完全邻接 | 典型LAN环境,减少邻接关系数量,最常用类型 |
| 非广播多路访问 (NBMA) | 帧中继、X.25、ATM等不支持广播的多路访问网络 | 是 | 手动静态指定(单播) | 所有路由器与DR/BDR建立完全邻接 | 传统非广播网络,配置复杂,需保证全互联拓扑 |
| 点到点 (Point-to-Point) | PPP、HDLC、LAPB等串行链路,点对点子接口 | 否 | 自动(组播Hello) | 与直连邻居建立完全邻接 | 专线直连,简单高效,无DR选举开销 |
| 点到多点 (Point-to-Multipoint) | 无默认,需手动配置(常用于帧中继Hub-Spoke) | 否 | 通常自动(组播Hello) 非广播变种需手动 | 中心与每个分支建立独立邻接 | 解决NBMA非全互联拓扑,无需全互联PVC |
| Loopback接口 | 环回接口(逻辑接口) | 否 | 不发送Hello包 | 不建立邻接 | 路由以/32主机路由通告,无论掩码配置 |
| 虚链路 (Virtual Link) | 区域0与非骨干区域间的逻辑隧道 | 否 | 在虚拟接口上自动建立 | 在两个ABR间建立逻辑连接 | 修复不连续骨干区域或连接远离骨干的区域 |
|---|---|---|---|---|---|
| [OSPF接口网络类型] |
MGRE 环境建议:
1、使用 Broadcast 类型
2、注意 DR 位置(星型拓扑中中心为 DR)
3、也可使用 P2MP(不选 DR,Hello 30s)
修改默认工作方式:
bash
[r1]interface Tunnel 0/0/0
[r1-Tunnel0/0/0]ospf network-type ?
broadcast Specify OSPF broadcast network
nbma Specify OSPF NBMA network
p2mp Specify OSPF point-to-multipoint network
p2p Specify OSPF point-to-point network
九、OSPF 不规则区域及解决方案
1、正常OSPF协议要求的区域划分规则:
- 若全网仅一个区域,可以为任意区域编号
- 若多区域必须存在骨干区域(区域0)
- 多区域时必须为星型结构拓扑,所有非骨干区域必须连接到骨干区域;
- 区域间必须依赖ABR互联
2、两种不规则区域:
- 远离骨干的非骨干区域:ABR设备若未连接到骨干区域,视为非法ARB,虽然可以正常建立邻居关系,也可以正常学习到各个区域的LSA信息,但不能区域间共享LSA,导致全网无法全通。
- 不连续骨干区域:OSPF协议为避免环路,存在区域水平分割;及从A区域共享到B区域的LSA,不能回到A区域;故在不连续骨干环境下,A骨干不能学习到B骨干的路由,无法全网可达。
3、三种解决方案:
| 方案 | 原理 | 优点 | 缺点 |
| GRE 隧道 | 在 ABR 间建立隧道,宣告进 OSPF | 可实现路由共享 | 选路不佳(骨干区域优先) |
| 虚链路(Virtual Link) | 非法 ABR 与合法 ABR 间建立逻辑链路 | 无新增链路,选路正常 | 占用中间区域资源(华为)/可靠性低(思科) |
| 多进程双向重发布(推荐) | 在不同进程间重发布路由 | 无选路问题,可靠性高 | 配置稍复杂 |
|---|
GRE配置示例:
bash
R1
[R1]int t0/0/0
[R1-Tunnel0/0/0]ip ad 192.168.3.1 24
[R1-Tunnel0/0/0]tunnel-protocol gre
[R1-Tunnel0/0/0]source 12.1.1.1
[R1-Tunnel0/0/0]destination 23.1.1.1
[R1-Tunnel0/0/0]q
[R1]ip route-static 192.168.2.0 24 192.168.3.2
R3
[R3]int t0/0/0
[R3-Tunnel0/0/0]ip ad 192.168.3.2 24
[R3-Tunnel0/0/0]tunnel-protocol gre
[R3-Tunnel0/0/0]source 23.1.1.1
[R3-Tunnel0/0/0]destination 12.1.1.1
[R3-Tunnel0/0/0]q
[R3]ip route-static 192.168.1.0 24 192.168.3.1
虚拟链路配置示例:
bash
[r2-ospf-1] area 1
[r2-ospf-1-area-0.0.0.1] vlink-peer 4.4.4.4
多进程重发布配置示例:
bash
r2
[r2]ospf 1
[r2-ospf-1]import-route rip 1
[r2-ospf-1]q
[r2]rip 1
[r2-rip-1]import-route ospf 1
r3
[r3]ospf 1
[r3-ospf-1]import-route rip 1
[r3-ospf-1]q
[r3]rip 1
[r3-rip-1]import-route ospf 1
十、OSPF 数据库(LSDB)与 LSA 类型
1、LSA通用字段:
- Type:LSA 类型
- Ls id:Link-ID(类似页码)
- Adv rtr:通告者
- Ls age:老化时间(最大 1800s)
- Seq#:序列号(防环)
- Chksum:校验和
- Link count:包含几条内容
2、五种常见LSA对比:
| LSA类型 | 名称 | 传播范围 | 通告者 | 携带内容 | Link-ID |
| LSA1 | Router | 单区域 | 每台路由器 | 本地直连拓扑 | 通告者RID |
| LSA2 | Network | 单区域 | DR | MA 网段拓扑 | DR 接口 IP |
| LSA3 | Summary | 整个 OSPF 域 | ABR(会修改) | 区域间路由 | 目标网络号 |
| LSA4 | ASBR Summary | 除 ASBR 所在区域外 | ABR(会修改) | ASBR 位置 | ASBR 的 RID |
| LSA5 | External | 整个 OSPF 域 | ASBR | 域外路由(重发布) | 目标网络号 |
|---|---|---|---|---|---|
| [LSA对比] |
十一、LSA 更新量优化方法
1、手工汇总:
- 域间路由汇总(3类 LSA):在 ABR 上汇总区域路由
bash
[r1-ospf-1-area-0.0.0.2] abr-summary 5.5.4.0 255.255.252.0
- 域外路由汇总(5类 LSA):在 ASBR 上汇总外部路由
bash
[r4-ospf-1] asbr-summary 100.1.0.0 255.255.252.0
2、特殊区域:
| 区域类型 | 拒绝的LSA | 添加的缺省路由 | 使用场景 |
| 末梢区域(Stub) | 4、5类 | 3类缺省(来自 ABR) | 无 ASBR 的区域 |
| 完全末梢区域(Totally Stub) | 3、4、5类 | 仅一条 3类缺省(ABR 配置 no-summary) | 无 ASBR 的区域 |
| NSSA | 4、5类 | 7类缺省(来自 ASBR) | 有 ASBR 的区域,5类转7类 |
| 完全NSSA | 3、4、5类 | 3类缺省(ABR 配置 no-summary) | 有 ASBR 的区域 |
|---|
特殊区域不能是骨干区域,不能存在虚链路
配置示例:
bash
# 末梢区域
[r5-ospf-1-area-0.0.0.2] stub
# 完全末梢区域(仅在 ABR 上配置)
[r1-ospf-1-area-0.0.0.2] stub no-summary
# NSSA
[r4-ospf-1-area-0.0.0.1] nssa
# 完全 NSSA(仅在 ABR 上配置)
[r3-ospf-1-area-0.0.0.1] nssa no-summary
十二、OSPF排错
bash
display ospf peer [brief] # 查看邻居状态(最重要)
display ospf interface [interface-type interface-number] # 查看接口OSPF详细信息
display ospf lsdb # 查看链路状态数据库
display ospf routing # 查看OSPF路由表
display ip routing-table protocol ospf # 查看OSPF学到的路由(在全局路由表中)
display current-configuration configuration ospf # 查看OSPF配置(精简)
华为eNSP OSPF排错四步口诀:
一步:底层通不通?
- 命令:ping -a 本端IP 对端IP
- 目标:确保直连三层IP能通。不通则检查物理链路、接口IP、VLAN/串口时钟。
二步:邻居对不对? (最关键)
- 命令:display ospf peer brief
- 目标:查看邻居状态是否为 Full。
无邻居/状态异常:立即检查 display ospf interface,对比两端:
区域(Area) 是否一致?
认证(Authentication) 是否一致?
网络类型(Type) 是否一致?
Hello/Dead计时器 是否一致?
卡在ExStart/Exchange:检查 MTU 是否一致、Router ID 是否冲突。
三步:路由有没有?
- 命令:display ip routing-table protocol ospf
- 目标:查看OSPF路由是否装入全局路由表。
有邻居无路由:
查LSDB:display ospf lsdb,看是否有对应LSA。
查区域设计:非骨干区域必须直连 Area 0。
查路由过滤:是否有 filter-policy 等。
四步:终极抓包看
- 操作:在eNSP链路上右键开始抓包。
- 目标:直接观察OSPF协议报文(Hello, DD等),定位是发不出、收不到还是参数错。
最常犯的五个错误:
- 区域配错:直连接口不在同一个OSPF区域。
- 网段宣告错:network 命令或接口下的 ospf enable 没包含正确接口。
- 认证不配:一端配了认证,另一端没配或密码/模式不对。
- 网络类型混淆:默认以太网是Broadcast,串行链路有时需手动改为 P2P。
- eNSP"玄学":设备未启动、镜像Bug,重启设备/重开拓扑试试。
附:关键命令查看
bash
# 查看邻居表
display ospf peer
display ospf peer brief
# 查看 LSDB
display ospf lsdb
# 查看 OSPF 路由
display ip routing-table protocol ospf
# 查看接口 OSPF 信息
display ospf interface GigabitEthernet 0/0/1