OSPF协议报文
OSPF(Open Shortest Path First,开放最短路径优先)是一种内部网关协议(Interior Gateway Protocol,IGP),用于在同一个自治系统(Autonomous System,AS)内的路由器之间交换路由信息。
链路状态路由协议:比如OSPF、IS-IS、
采用链路状态算法,层次式的链路状态,传递LSA
距离矢量路由协议:比如RIP、EIGRP
1、路由器之间周期性的交换路由表
2、交换的是整张路由表的内容
3、水平分割技术
一、RIP和OSPF特性对比:

二、OSPF的主要特点包括:
链路状态协议:OSPF是一种链路状态协议,这意味着它维护一个关于网络拓扑的数据库,包括每个路由器与其邻居之间的连接状态。路由器之间交换链路状态信息,然后每个路由器使用这些信息来构建自己的网络拓扑图,并计算到达每个目的地的最短路径。
无类别域间路由(CIDR)支持:OSPF支持CIDR,这意味着它可以处理不同大小的IP地址块,从而提高了IP地址的利用率。
区域划分:OSPF允许将大型网络划分为多个区域(Area),每个区域运行一个OSPF实例。这有助于减少路由器之间的链路状态信息交换量,降低网络带宽的占用,并提高网络的稳定性。
多种路径计算:OSPF支持多种路径计算方法,包括最短路径优先(SPF)算法,以确保数据包能够沿着最优路径传输。
认证和安全性:OSPF提供了多种认证机制,如明文认证和MD5认证,以确保路由器之间交换的链路状态信息的安全性。
支持VLSM和子网划分:OSPF能够很好地支持可变长子网划分(VLSM)和子网划分,使得网络设计更加灵活。
三、Router-id:格式为点分十进制
官方文档:
1、手动配置OSPF的Router-id
2、环回接口IP地址最大的作为Router-id
3、物理接口IP地址最大的作为Router-id
实际情况:
1、手动配置OSPF的Router-id
2、使用路由器全局router-id作为OSPF的Router-id
3、全局router-id为设备第一个配置了IP并且UP的接口IP地址
dis router id 查看路由器全局router-id
DR与BDR的选举:
先选BDR,再选DR
四、OSPF报文详解

1.HELLO报文
Hello报文
用于发现、建立和维持邻居关系的


2.DD报文
DD报文
链路状态信息摘要报文
DD报文中的MTU
DD报文中的第一个字段就是发出该报文接口的MTU值,正常来说,OSPF邻居建立是需要要求两端接口的MTU值保持一致,否则无法建立,但是华为默认不检查MTU值,因此一般会显示为0(默认MTU为1500)(思科默认检查MTU)
可以手动开启MTU检测 接口下:ospf mtu-enable
当接口开启MTU检测后,DD报文中MTU的值将正常显示,如果两端接口只有一端开启MTU检测,不影响邻居建立,必须两端同时开启MTU检测后才会生效
如果slave路由器接口的MTU>master路由器的MTU,那么从路由器卡在exchange,主路由器卡在exstart状态
如果master路由器接口的MTU>slave路由器的MTU,双方都卡在exstart状态(从发送较小MTU的DD报文,主可以收到,但是主MTU较大,发送给从无法收到)

3.LSR报文
LSR报文
用于向邻居请求自身缺少的LSA
当路由器收到LSR报文时,会根据报文中的LSA三要素在自身LSDB中查找相关LSA,并将其封装到LSU中回复。


4.LSU报文
LSU报文
用于发送完整的LSA信息


5.LSAck报文
LSAck报文
用于确认收到的LSA,使用LSA头部信息做确认回复。


五、OSPF邻居状态机流程
1、两台路由器没有宣告OSPF之前,属于**DOWN**状态
2、宣告OSPF后,在收到第一个HELLO包后,将邻居的router-id放到自己的HELLO包内active neighbor字段发出,此时状态为**INIT**。
3、再次收到对方发来的hello包内active neighbor字段为自己的router-id,状态进入**2-way**。在init到**2-way**这个阶段,OSPF判断网络类型是否需要和邻居建立邻接关系,是否要发送DD报文。
4、双方分别发送DD报文,i=1,m=1,ms=1开始选举主从,两台路由器都认为自己是主,此时为**exstart**状态。
5、确定主从关系之后(router-id大的为主),从路由器发送DD摘要,i=0,m=0,ms=0其中m取决于后续是否还有摘要报文,此时从路由器是**exchange**状态,主路由器是**exstart**状态
6、主路由器收到DD摘要后,发送LSR。之后发送DD摘要给从路由器,i=0,m=0,ms=1。m取决于后续是否还有摘要报文,此时从路由器是**loading**状态,主路由器是**exchange**状态。
7、从路由器收到DD报文后,发送LSR。然后发送DD报文,i=0,m=0,ms=0。这个DD报文没有摘要信息,只为了告诉主路由器摘要交换完毕,且让主路由器从**exchange**进入**loading**状态。
8、双方路由器之间更新LSU之后,回复LSACK,进入**FULL**状态
扩展:两台设备无法建立邻居关系的原因
1、两台设备的区域类型不一致
2、两台设备发送HELLO包时间不一致
3、两台设备的认证类型不一致
4、两台设备的router-id冲突
5、两台设备是否能ping通
六、OSPF报文的确认机制
1、hello报文,10s一个,40s老化
2、DD报文,用seq做隐式确认主从(DD sequence:数值,双方设备随机发送seq数值,如果从设备认为自己比不过主设备,则会发送和主设备同样的DD seq数值)
例如:R1->R2 seq:244
R2->R1 seq:243
R1->R2 seq:243 R2为主,R1为从
3、LSR报文,使用LSU报文作为确认回复
4、LSU报文,使用LSAck报文作为确认回复
七、网络类型对OSPF建立邻居的影响
Broadcast:当链路层协议为以太网时,OSPF网络类型默认为广播型。Hello时间10s,dead时间40s。DR和BDR和DRother建立邻接,DRother之间建立邻居。组播地址:224.0.0.5 224.0.0.6。所有设备使用单播交互DD、LSR,所有设备固定使用224.0.0.5交换hello报文
P2P:建立邻接关系,当链路层协议为PPP/HDLC时,OSPF网络类型默认为点到点。Hello时间10s,dead时间40s。不选举DR和BDR,所有报文通过224.0.0.5更新
NBMA:当链路层协议为帧中继DR/ATM时,OSPF网络类型默认为NBMA。在OSPF进程中,还需要使用peer x.x.x.x指定对端邻居IP,NBMA有一个attempt状态。Hello时间30s,dead时间120s。需要选举DR和BDR。所有报文单播发送
P2MP:一般手动配置,多用于DSVPN技术,hellos时间30s,dead时间120s,不选举DR和BDR,直接建立邻接关系
广播和p2p可以建立邻接关系,但是无法传递路由信息
OSPF协议报文的更多相关文章
- 学习总结---OSPF协议
总结: 1.ospf协议报文不会泛洪扩散,而是逐级路由器处理后,再从所有ospf启用端口发送出去,也就是说,只能从邻居接收到ospf报文,报文的源ip是邻居的ip地址,目的ip是组播ip. 2.开启o ...
- OSPF协议总结
总结: 1.ospf协议报文不会泛洪扩散,而是逐级路由器处理后,再从所有ospf启用端口发送出去,也就是说,只能从邻居接收到ospf报文,报文的源ip是邻居的ip地址,目的ip是组播ip. 2.开启o ...
- 动态选路、RIP协议&&OSPF协议详解
动态选路.RIP协议&&OSPF协议详解 概念 当相邻路由器之间进行通信,以告知对方每个路由器当前所连接的网络,这时就出现了动态选路.路由器之间必须采用选路协议进行通信,这样的选路协议 ...
- OSPF协议详解
CCNP OSPF协议详解 2010-02-24 20:30:22 标签:CCNP 职场 OSPF 休闲 OSPF(Open Shortest Path Fitst,ospf)开放最短路径优先协议,是 ...
- OSPF协议介绍及配置 (上)
OSPF协议介绍及配置 (上) 一.OSPF概述 回顾一下距离矢量路由协议的工作原理:运行距离矢量路由协议的路由器周期性的泛洪自己的路由表,通过路由的交互,每台路由器都从相邻的路由器学习到路由,并且加 ...
- OSPF协议介绍及配置
一.OSPF概述 回顾一下距离矢量路由协议的工作原理:运行距离矢量路由协议的路由器周期性的泛洪自己的路由表,通过路由的交互,每台路由器都从相邻的路由器学习到路由,并且加载进自己的路由表中,而对于这个网 ...
- H3C路由器配置——动态路由OSPF协议
一.介绍 1.OSPF协议介绍 (1).OSPF(Open Shortest Path First,开放最短路径优先)路由协议是用于网际协议(IP)网络的链路状态路由协议.是一个被各厂商设备广泛支持的 ...
- OSPF协议原理及配置5-LSA分析
OSPF协议原理及配置5-LSA分析 前面,已经介绍了邻接关系的建立和LSDB的同步.通过同步过程的介绍,我们可以了解LSDB的同步是通过交互LSA实现的. 不同角色的路由器发出的LSA的内容是不 ...
- OSPF协议原理及配置3-邻居关系的建立
OSPF协议原理及配置3-邻居关系的建立 OSPF协议的邻居关系是通过交换Hello报文建立的,所以我们先对OSPF的报文的种类,及Hello报文的结构做一了解. 1 OSPF协议有5种协议报文( ...
- OSPF协议原理及配置4-邻接关系的建立和LSDB同步
OSPF协议原理及配置4-邻接关系的建立和LSDB同步 进入ExStart状态后,广播和NBMA型网络要等待4倍的Hello时间,确定DR和BDR.然后建立邻接关系,并交互链路状态通告,以使用LS ...
随机推荐
- [转][vue-router] Duplicate named routes definition动态路由addRoutes的踩坑
问题描述: 第一次进入页面,左侧静态路由和动态路由列表均能正常显示,但点击左侧其他路由后浏览器报警告[vue-router] Duplicate named routes definition-,并且 ...
- WorldWind源码剖析系列:WorldWind瓦片调度策略说明
1 基于源码的分析 首先我们来看WorldWind中摄像头变化相关的几个方法的内部逻辑. 1.1 NltTerrainAccessor. GetElevationAt 方法声明:public over ...
- centos 安装python3后yum报错
问题 centos 安装python3后,并且把/usr/bin/python 软链接到python3后,yum命令报错 原因: yum命令依赖于python2,导致报错 解决方法: 修改 /usr/ ...
- Mybatis插入数据后返回主键
添加记录后获取主键ID,这是一个很常见的需求,特别是在一次前端调用中需要插入多个表的场景. 除了添加单条记录时获取主键值,有时候可能需要获取批量添加记录时各记录的主键值,MyBatis从3.3.1版本 ...
- 用 C# 实现检测系统环境变量 “Path” 中是否有某个值,没有就添加的方法
用 C# 实现检测系统环境变量 "Path" 中是否有某个值,没有就添加的方法: using System; using System.Collections.Generic; u ...
- 高性能的RTC服务器OpenFire
<高性能的RTC服务器OpenFire>-第一章部署与源码调试 前言 OpenFire是什么,以及它能做什么?或许这是许多开发人员最关心的一个话题.简单来说,OpenFire是一个采用纯J ...
- Python语法使用
由于之前学习过js,代码基本上是相同的,先看看和js有那些区别 项目 python javascript 适用版本 python3 es6,即ECMAScript 2015 运行环境 #!/usr/b ...
- Kotlin基础语法
- InfluxDB UI 设置保留策略
InfluxDB UI 设置保留策略 创建Bucket时设置保留策略 在InfluxDB 2.x的UI中创建Bucket时,你可以直接设置其保留策略.以下是一个基本的步骤指南: 登录到InfluxDB ...
- Lucas 定理证明与扩展
Lucas 定理及其证明.扩展 \[\binom{n}{m}\equiv\binom{n/p}{m/p}\binom{n\bmod p}{m\bmod p}\pmod p,\text{where}\ ...