OSPF知识点整理
一、OSPF 基本概念
1.1 协议定位与特点
OSPF 是一种链路状态路由协议,属于 IGP(内部网关协议),主要用于自治系统(AS)内部的路由计算。其核心特点包括:
- 无类别路由协议:支持 VLSM 和 CIDR,能更高效地利用 IP 地址空间;
- 链路状态驱动:每个路由器会收集网络中所有链路的状态信息(如带宽、开销),并同步到整个区域;
- 基于 SPF 算法:使用 Dijkstra 算法(最短路径优先算法)计算最短路径,生成无环路的路由表;
- 分层设计:通过划分区域(Area)减少路由信息传递量,提高协议扩展性;
- 触发更新:链路状态变化时立即发送更新,收敛速度快;
- 支持认证:可通过明文或 MD5 认证防止路由欺骗。
1.2 核心术语
- 链路(Link):路由器接口及其连接的网络(如以太网段、串口链路);
- 链路状态(Link State):链路的属性,包括接口 IP 地址、子网掩码、开销(Cost)、连接的邻居等;
- LSA(Link State Advertisement,链路状态通告):路由器发送的携带链路状态信息的报文;
- LSDB(Link State Database,链路状态数据库):每个路由器维护的、包含本区域所有 LSA 的数据库,同一区域内所有路由器的 LSDB 完全一致;
- 区域(Area):OSPF 网络的逻辑划分,用于减小 LSDB 规模、限制 LSA 传播范围;
- RID(Router ID):路由器在 OSPF 网络中的唯一标识(通常为路由器的一个环回接口 IP 或物理接口 IP)。
二、OSPF 区域划分
OSPF 通过区域划分实现分层设计,核心目的是减少路由信息传递量、降低设备计算压力。
2.1 区域类型与作用
- 骨干区域(Area 0):所有非骨干区域必须直接或间接与骨干区域相连,负责区域间路由信息的传递,是 OSPF 网络的核心;
- 非骨干区域:除 Area 0 外的其他区域,按功能可分为:
- 标准区域:可接收所有类型的 LSA;
- Stub 区域:不接收 Type 5 LSA(外部路由信息),由 ABR(区域边界路由器)发布默认路由替代;
- Totally Stub 区域:不接收 Type 3、4、5 LSA,仅保留 Type 1、2 LSA 和 ABR 发布的默认路由;
- NSSA(Not-So-Stubby Area):允许引入外部路由(通过 Type 7 LSA),但不接收其他区域的 Type 5 LSA;
- Totally NSSA:不接收 Type 3、4、5 LSA,仅保留 Type 1、2、7 LSA 和 ABR 发布的默认路由。
2.2 区域边界设备
- IR(Internal Router,内部路由器):所有接口均属于同一区域的路由器;
- ABR(Area Border Router,区域边界路由器):连接多个区域(至少包含一个骨干区域)的路由器,负责区域间 LSA 的转换与传递;
- ASBR(Autonomous System Boundary Router,自治系统边界路由器):连接 OSPF 区域与其他 AS(如 RIP、BGP 网络)的路由器,负责引入外部路由(生成 Type 5 LSA)。
三、LSA 类型及作用
LSA 是 OSPF 传递链路状态信息的核心载体,不同类型的 LSA 负责传递不同场景的路由信息,其传播范围和内容各不相同。
LSA 类型 | 名称 | 产生者 | 传播范围 | 核心内容 |
---|---|---|---|---|
Type 1 | 路由器 LSA | 所有路由器 | 本区域内 | 路由器接口的链路状态、邻居信息 |
Type 2 | 网络 LSA | DR(指定路由器) | 本区域内 | 广播 / NBMA 网络中所有路由器的 RID |
Type 3 | 网络汇总 LSA | ABR | 跨区域(除源区域) | 区域间的汇总路由信息 |
Type 4 | ASBR 汇总 LSA | ABR | 跨区域(除源区域) | ASBR 的位置信息(用于定位 ASBR) |
Type 5 | AS 外部 LSA | ASBR | 整个 OSPF 域(除 NSSA) | 外部路由信息(如引入的 RIP 路由) |
Type 7 | NSSA 外部 LSA | NSSA 区域的 ASBR | 仅在 NSSA 区域内 | NSSA 区域引入的外部路由,由 ABR 转换为 Type 5 LSA |
四、邻居与邻接关系建立
OSPF 路由器需先建立邻居关系,再根据网络类型(如广播、点对点)决定是否升级为邻接关系(Adjacency),只有邻接关系才会交换 LSA。
4.1 邻居关系建立过程(状态机)
- Down:初始状态,未收到任何 Hello 报文;
- Init:收到邻居的 Hello 报文(包含自身 RID),但未在对方 Hello 报文中发现自己的 RID;
- 2-Way:在邻居的 Hello 报文中发现自己的 RID,双方确认 “互相发现”,此时为邻居关系;
- 广播 / NBMA 网络中,会通过选举 DR/BDR(备份指定路由器)决定是否建立邻接关系(仅 DR/BDR 与所有路由器建立邻接,非 DR/BDR 之间仅维持邻居关系);
- ExStart:邻接关系建立的准备阶段,交换 DD(数据库描述)报文,协商主从关系;
- Exchange:主从路由器交换 DD 报文(携带 LSDB 摘要信息);
- Loading:根据 DD 报文对比 LSDB,请求缺失的 LSA(通过 LSR 报文),接收并确认 LSA(通过 LSU、LSAck 报文);
- Full:双方 LSDB 完全同步,邻接关系稳定。
4.2 Hello 报文与 DR/BDR 选举
- Hello 报文:周期发送(广播网络默认 10s,点对点网络默认 30s),用于发现邻居、维持邻居关系,包含 Hello 时间、死亡时间(默认 4 倍 Hello 时间)、区域 ID、认证信息等;
- DR/BDR 选举:在广播 / NBMA 网络中,为减少邻接关系数量(避免 n*(n-1)/2 的连接),选举 DR 和 BDR:
- 优先级(0-255,默认 1)高者优先,优先级为 0 的路由器不参与选举;
- 优先级相同则 RID 大的路由器获胜;
- 选举后 DR/BDR 身份固定(除非故障),非 DR/BDR 仅与 DR/BDR 交换 LSA。
五、SPF 算法与路由计算
OSPF 通过 SPF 算法(Dijkstra 算法)计算最短路径,核心步骤如下:
- 构建拓扑图:基于 LSDB 中的 Type 1/2 LSA,生成以本地路由器为根的网络拓扑图;
- 计算最短路径:以 “开销(Cost)” 为度量值(Cost=100Mbps / 接口带宽,如 100Mbps 以太网 Cost=1,10Mbps 以太网 Cost=10),计算到每个目标网络的最短路径;
- 生成路由表:将最短路径对应的网络地址、出接口、下一跳等信息加入路由表;
- 区域间路由:ABR 通过 Type 3 LSA 传递区域间路由,本地路由器将其作为 “外部路由”(优先级低于区域内路由);
- 外部路由:ASBR 通过 Type 5/7 LSA 传递外部路由,分为两类:
- E1:外部路由开销 + 内部路径开销;
- E2(默认):仅外部路由开销,适合外部路由开销远大于内部路径的场景。
六、基本配置示例
6.1 单区域配置
Router> enable
Router# configure terminal
Router(config)# router ospf 100 # 启动OSPF进程,进程号100(本地有效)
Router(config-router)# router-id 1.1.1.1 # 指定RID(建议配置环回接口IP)
Router(config-router)# network 192.168.1.0 0.0.0.255 area 0 # 宣告网络到Area 0(反掩码表示网络范围)
Router(config-router)# network 10.0.0.0 0.255.255.255 area 0 # 宣告环回接口所在网络
6.2 多区域配置(ABR 配置)
Router(config)# router ospf 100
Router(config-router)# router-id 2.2.2.2
Router(config-router)# network 192.168.1.0 0.0.0.255 area 0 # 连接骨干区域
Router(config-router)# network 192.168.2.0 0.0.0.255 area 1 # 连接非骨干区域Area 1
6.3 验证命令
show ip ospf neighbor # 查看邻居状态
show ip ospf database # 查看LSDB
show ip route ospf # 查看OSPF路由
show ip ospf interface # 查看接口OSPF配置(如Hello时间、DR/BDR)
七、常见问题与排错
7.1 邻居无法建立的原因
- Hello 时间或死亡时间不一致;
- 区域 ID 不匹配;
- 接口认证配置错误(如密码不一致);
- 网络类型不匹配(如一端配置为广播,另一端为点对点);
- DR/BDR 选举失败(如优先级均为 0)。
7.2 路由缺失的排查步骤
- 检查邻居状态是否为 Full(
show ip ospf neighbor
); - 检查 LSDB 是否包含目标 LSA(
show ip ospf database
); - 检查区域类型是否限制了 LSA 传播(如 Stub 区域过滤 Type 5 LSA);
- 检查 ACL 或路由过滤配置是否误删路由。
八、总结
OSPF 作为链路状态路由协议的代表,其分层设计、快速收敛、无环路特性使其成为中大型网络的首选 IGP。掌握区域划分、LSA 类型、邻居建立过程及 SPF 算法是理解 OSPF 的核心,而实际配置中需重点关注 RID、区域宣告、DR/BDR 选举及认证等细节。