华为eNSP模拟器综合实验之-OSPF动态路由协议 二

OSPF协议解析:三张表、五种报文与七种状态

一、OSPF链路状态协议

**OSPF(Open Shortest Path First)**是一种链路状态路由协议,其核心思想是"各自绘制地图,独立计算路由":

信息共享:每台路由器描述自己直连的网络和邻居

数据同步:将这些描述(LSA)泛洪给区域内所有路由器

地图构建:所有路由器构建完全相同的网络拓扑图(LSDB)

路径计算:每台路由器以自己为起点,运行SPF算法计算最佳路径

二、OSPF的三张核心表

OSPF路由器维护三张关键表,形成"发现邻居→同步信息→计算路由"的数据流:

  1. 邻居表(Neighbor Table)

本质:OSPF社交关系记录表

内容:

邻居Router ID

邻居接口地址

邻居当前状态(7种状态之一)

Dead计时器剩余时间

DR/BDR角色信息

所属区域ID

作用:跟踪哪些路由器已建立OSPF通信

查看命令:display ospf peer

通俗比喻:就像手机通讯录,记录了谁是你的联系人,以及你们的交情深浅

关键特性:

通过Hello报文建立和维护

广播网络中并非所有邻居都会成为"好友"(Full状态)

DROther路由器之间只停留在Two-way状态(普通联系人),只有与DR/BDR才会建立Full状态(密友关系)
2. 链路状态数据库(LSDB)

本质:网络拓扑地图库

内容:存储各类LSA(链路状态通告):

Type-1 Router LSA:路由器自身链路状态

Type-2 Network LSA:多路访问网络状态(由DR产生)

Type-3 Summary LSA:区域间路由汇总(由ABR产生)

Type-4 ASBR Summary LSA:到达ASBR的路由

Type-5 AS External LSA:OSPF自治系统外部路由

Type-7 NSSA External LSA:NSSA区域内的外部路由

作用:提供SPF算法的计算基础,确保无环路

查看命令:display ospf lsdb

通俗比喻:就像一个城市详尽的地图集,记录了所有道路、路口和地标

关键特性:

同一区域内的所有路由器LSDB必须完全一致

区域边界是LSDB的边界(不同区域LSDB不同)

通过DBD、LSR、LSU和LSAck报文同步

LSDB越大,内存和CPU消耗越高
3. 路由表(Routing Table)

本质:数据包转发决策表

内容:

目标网络地址/掩码

下一跳地址

出接口

路由开销(Cost)

路由类型(区域内O、区域间O IA、外部类型1 O E1、外部类型2 O E2)

生成过程:

以本路由器为根节点

应用Dijkstra SPF算法遍历LSDB

计算到达每个网络的最短路径

选择最佳路径安装到路由表

查看命令:display ip routing-table

通俗比喻:个人定制的导航路线,基于地图集(LSDB)计算出的从自己家到各目的地的最佳路线

关键特性:

每台路由器的路由表不同(从各自视角计算)

路由计算只在LSDB变化时触发(不是定期更新)

路由类型影响选路优先级:区域内 > 区域间 > 外部E1 > 外部E2

三、OSPF的5种报文类型

OSPF通过5种报文在IP层(协议号89)上传输,这5种报文是三张表的数据流动载体:

  1. Hello报文(Type 1):邻居发现与维护

核心功能:建立和维护邻居关系,选举DR/BDR

传输方式:组播224.0.0.5

对表的影响:填充和更新邻居表

关键字段:Router ID、Area ID、Hello/Dead定时器、路由器优先级、DR/BDR地址

状态触发:Down → Init → Two-Way

  1. DBD报文(Type 2):数据库摘要交换

核心功能:描述LSDB内容摘要,为详细同步做准备

传输方式:单播

对表的影响:确定LSDB差异

关键字段:LSA头部、I/M/MS位

状态触发:ExStart → Exchange

  1. LSR报文(Type 3):LSA请求

核心功能:请求需要的特定LSA详情

传输方式:单播

对表的影响:请求缺失的LSDB内容

关键字段:LSA类型、链路状态ID、通告路由器

状态触发:Exchange → Loading

  1. LSU报文(Type 4):LSA更新

核心功能:携带完整的LSA,响应请求或泛洪更新

传输方式:组播(泛洪)或单播(响应)

对表的影响:更新LSDB

关键字段:一个或多个完整的LSA

状态触发:Loading → Full

  1. LSAck报文(Type 5):LSA确认

核心功能:确认收到LSU,确保可靠传输

传输方式:组播或单播

对表的影响:确保LSDB同步可靠性

关键字段:确认的LSA头部

状态影响:维持Full状态

四、OSPF邻居关系的7种状态

OSPF邻居状态转换是建立邻接关系的必经过程,直接影响三张表的构建:

  1. Down

特征:初始状态,未收到来自邻居的任何Hello

表状态:邻居表中无此邻居条目

持续时间:直到收到第一个Hello

  1. Init

特征:收到邻居Hello,但邻居Hello中不包含自己的Router ID

表状态:邻居表创建条目,但标记为Init

关键事件:开始发送包含邻居Router ID的Hello

  1. Two-way

特征:双向通信建立,Hello中互相包含对方Router ID

表状态:邻居表状态更新为Two-way

关键事件:

广播网络中选举DR/BDR

DROther路由器之间关系止步于此

意义:邻居关系正式建立

  1. ExStart

特征:准备交换DBD,选举主从关系

表状态:邻居表状态更新,开始准备LSDB同步

关键事件:通过DBD中的MS位选举主路由器(Router ID大的为主)

意义:为主从有序交换做准备

  1. Exchange

特征:交换DBD报文,描述各自LSDB内容

表状态:LSDB开始比较差异

关键事件:确定哪些LSA需要请求

意义:了解对方有什么网络信息

  1. Loading

特征:请求并接收缺失的LSA

表状态:LSDB正在同步中

关键事件:发送LSR,接收LSU,确认LSAck

意义:填充自己的LSDB

  1. Full

特征:LSDB完全同步,邻接关系完全建立

表状态:LSDB与邻居完全一致,触发SPF计算

关键事件:路由表更新

意义:达到最高信任等级,完整共享路由信息

五、OSPF工作流程全景

发现邻居:

通过Hello报文发现邻居

填充邻居表,状态经历Down→Init→Two-way

广播网络选举DR/BDR

同步数据库:

通过ExStart状态选举DBD交换主从

通过Exchange状态交换DBD摘要

通过Loading状态请求并获取LSA

完成LSDB同步,状态达到Full

计算路由:

基于完整的LSDB,运行SPF算法

生成从自己到所有目的地的最短路径树

将最佳路径安装到路由表

维护网络:

定期Hello维持邻居关系

链路变化时触发LSA更新

泛洪更新确保LSDB一致性

重新运行SPF计算新的最佳路径

六、关键总结

三张表的关系:

邻居表是基础(认识谁)

LSDB是核心(知道什么)

路由表是结果(如何到达)

设计精髓:

"地图相同,路线不同":同一区域LSDB完全一致,但路由表各异

"变化驱动":只在拓扑变化时更新,而非定期更新

"可靠泛洪":通过确认机制确保LSA可靠传输

"分层设计":区域划分控制LSDB规模,提高扩展性

OSPF就像一个精密的社会网络:通过Hello建立社交关系(邻居表),通过信息共享构建共同认知(LSDB),最后各自规划个人出行路线(路由表)。五种报文是沟通工具,七种状态是关系发展阶段,三张表则是这个系统的骨架。这种设计使OSPF能高效适应网络变化,提供无环路、快速收敛的路由服务,成为企业网络中最可靠的IGP协议。

相关推荐
云飞云共享云桌面7 小时前
非标自动化工厂的设计云桌面为什么要选云飞云智能共享云桌面?
大数据·运维·服务器·网络·自动化·负载均衡
lowhot8 小时前
各种网络协议比较
网络·网络协议
运维有小邓@8 小时前
如何实现基于角色的访问控制?
运维·网络
EasyGBS8 小时前
EasyGBS打造变电站高效智能视频监控解决方案
网络·人工智能·音视频
东北小狐狸-Hellxz8 小时前
解决java客户端连接ssh失败问题
java·网络·ssh
可爱又迷人的反派角色“yang”8 小时前
k8s(一)
linux·运维·网络·云原生·容器·kubernetes
闲人不梦卿8 小时前
网络安全技术
网络·网络安全
可爱又迷人的反派角色“yang”9 小时前
CICD持续集成Ruo-Yi项目
linux·运维·网络·ci/cd·docker·容器
星环处相逢9 小时前
K8s 网络插件选型:Flannel vs Calico 深度对比
网络·容器·kubernetes
2501_941822759 小时前
在开罗智能公共交通场景中构建实时调度与高并发乘客数据处理平台的工程设计实践经验分享
网络·安全