OSPF协议基础
一、OSPF 简介
OSPF(Open Shortest Path First,开放最短路径优先)是IETF(Internet Engineering Task Force,互联网工程任务组)组织开发的一个基于链路状态的 IGP(Interior Gateway Protocol,内部网关协议)。目前针对IPv4协议使用的是OSPF Version 2。
在一个自治系统AS(Autonomouse System)内,运行OSPF路由协议的路由器,将LSA(LinkState Advertisement,链路状态通告)传递给在某一区域内的所有设备,所有设备共同维护着LSDB(LinkState Database,链路状态数据库),链路状态数据库存放着自治系统AS中链路的拓扑信息,路由器基于LSDB使用SPF(Shortest Path First,最短路径算法),从而计算出OSPF路由表,OSPF路由与其他路由比较后优的加入全局路由表,OSPF基于IP,协议号为89,采用组播方式交换OSPF包,OSPF的组播地址为224.0.0.5(全部OSPF路由器)和224.0.0.6(指定路由器)。
二、Router ID
Router ID 用于在OSPF domain 中唯一地标识一台OSPF路由器,而且禁止在域内出现两台路由器拥有相同的Router ID,Router ID可以通过手工配置也可能通过协议自动选取的方式。
三、OSPF Cost
(1)OSPF使用 Cost “开销” 作为路由度量值,每一个激活OSPF的接口都有一个Cost值。
(2)一条OSPF路由的Cost值,由该路由从起源一路到达本地的所有入接口Cost值的总和。
四、OSPF的邻居表、链路状态数据库、OSPF路由表
邻居表(Peer Table):在路由器之间传递链路状态通告之前,需要建立OSPF邻居关系,hello报文用于发现链路上的OSPF路由器,经过一系列的OSPF消息交互最终建立毗邻的关系。
链路状态数据库(LinkState Advertisement,LSDB):OSPF协议通过LSA(LinkState Advertisement,链路状态通告)描述网络拓扑结构,OSPF路由器用链路状态数据库来存储LSA。
OSPF路由表(Routing Table):基于LSDB进行SPF计算(Dijkstra算法),得出OSPF路由表。
五、OSPF 报文类型
Hello 周期性发送,用于发现和维持OSPF邻居关系。
DBD 描述本地LSDB的摘要信息,用于两台设备进行数据库同步。
LSR 用于向邻居请求所需的LSA,设备只有在OSPF邻居成功建立后,交换DBD报文后才会发出LSR报文。
LSU 对LSR请求,进行回应,把完整信息发给邻居(包含一条或多条LSA)。
LSAck 对LSU中的LSA进行确认。
注:Hello报文的发送间隔时间是10秒,默认无效时间间隔是Hello时间间隔的4倍,即如果在40秒内没有从特定的邻居接收到这种分组,路由器就认为邻居不存在了。 支持路由器发现邻接路由器(Hello),学习其本身链路状态库中没有的LSA(DD),请求并交换LSA(LSR/LSU),监测邻接路由器是否发生拓扑改变,LSA每30分钟重传1次。
六、OSPF邻居关系建立的过程
(1)通过发现直连链路上的OSPF路由器,建立双向关系(通过Hello报文)
(2)协商主/从关系,交换LSA头部摘要信息(通过DBD报文)
(3)同步LSA,请求(通过LSR报文)/发送(通过LSU报文,LSAs)
(4)完成同步,进入OSPF全毗邻状态
七、DR、BDR
指定路由器(DR):负责把信息更新到其它OSPF路由器。
备用指定路由器(BDR):BDR会监控DR的状态,并在当DR发生故障时接替其角色。
其它路由器(DRother):只允许与DR路由器建立邻居关系,彼此之间不相互建立邻居关系,这样可以大大减少LSA的泛洪。
注:(1)DR选举规则是,具有最高OSPF接口优先级的路由器被选作DR,如果优先级相等(默认为1),具有最高的OSPF Router-ID的路由器被选择成为DR,另外DR具有非抢占性。
(2)OSPF接口优先级为0,则路由器不参与DR和BDR的选举。
(3)OSPF为 接口敏感型协议,DR及BDR的身份状态是基于OSPF接口的。
八、OSPF 区域
九、OSPF协议 LSAs
十、OSPF路由器的角色
区域内路由器 Internal Router
区域边界路由器ABR Area Border Router
骨干路由器 Backone Router
AS边界路由器ASBR AS Boundary Router
十一、相关命令
1 2 3 4 5 6 7 8 9 | dis ospf //查看OSPF运行参数 dis ospf interface //查看OSPF本地接口 dis ospf peer //查看OSPF邻居表 dis ospf lsdb //查看LSDB表 dis ospf routing //查看OSPF路由 dis ospf statistics error //查看OSPF错误信息 [接口]ospf cost XX //修改cost值 [接口]ospf dr-priority //修改DR优先级 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效
2015-06-16 《闪电战》德军攻略