关于OSPF报文学习

news2025/1/18 10:02:15

目录

一.OSPF学习补充

(1)OSPF报文头部

(2)ospf建立邻居关系

1.Hello报文——建立邻居关系

2.hello报文头部

(3)OSPF建立邻接关系

1.发送DD报文

2.DD报文头部

(4)关于DR,BDR

二.OSPF计算路由

(1).OSPF协议有以下4个步骤

2.router LSA

(1)一类LSA报文头部

(2)一类报文中类型

3.network LSA

三.路由计算

(1).SPF树计算

(2)根据开销计算出最佳路由


在动态路由协议——OSPF_ospf主从选举-CSDN博客中我们学习了OSPF路由协议基础,这里就以有基础来进行讲解

一.OSPF学习补充

(1)OSPF报文头部

version——OSPF的版本号,IP v4是v2,IP v6是v3 

Type——传输报文的类型

router id ———路由器的唯一标识

area id ——OSPF的区域号,0是骨干区域,非0是非骨干区域

checksum——校验报文完整性

auth type 和 authentication——都是认证

(橘色是对邻居关系建立影响大的字段)

(2)ospf建立邻居关系

1.Hello报文——建立邻居关系

1.R1先发出Hello报文,此时他的邻居是空的,并没有学习到任何邻居状态,是Down状态

2.R2发出Hello报文,邻居为空,R1知道有R2这个邻居,但R2不知道R1,现在的状态是Init

3.R2发出Hello报文,邻居已经有R1的地址,此时R1和R2知道彼此的存在,并且知道对方知道自己,邻居关系建立完成,为2-WAY

2.hello报文头部

network mask——掩码

hello interval ——hello报文以10S为周期发送,表示周期发送时间

options——8bit位,现在需要学习的只有3位——

E  ------是否支持外部路由  MC——是否支持组播(OSPF是以组播形式发送)   NIP ——是否为特殊区域(stub ,nssa,后面会学习)

routerdead interval——死亡时间(一般40s没有收到hello报文就认为邻居关系结束)

DR——表示谁是DR

BDR——表示谁是备份DR(关于BDR,DR在之前的文章有)

neighbor——邻居表

自此,邻居关系建立成功

(3)OSPF建立邻接关系

1.发送DD报文

1.从设备发出DD报文,刚开始都认为自己是主设备,M=1表示是主设备,MS=1表示后面还有DD报文。

2.双方都发出DD报文,现在是ExStart状态。

3.现在已经选举出主从,由从设备R1率先发出LSDB摘要。

4.R2后发LSDB摘要,此时是exchange(交换)状态

5.确定交换LSDB报文,此时是Loading 状态

2.DD报文头部

MTU——不分片下能接收的最大报文长度,要求建立邻接关系两边一样,否则就丢弃

I——I=1,表示传输的是第一个DD报文

M——M=1 ,就是主设备

MS—MS=1表示还有DD报文要传输

3.同步LSDB

在之前的OSPF基础的文章中有关于LSR,LSU,LSACK的介绍,我门要知道这三个报文是一组的,一条一条请求LSDB表中的LSA信息。

(4)关于DR,BDR

1.DR,BDR是非抢占式的,新添一条设备优先级高也不改变DR 设备

2DR,BDR是基于接口

二.OSPF计算路由

(1).OSPF协议有以下4个步骤

1.建立邻居关系

2,建立邻接关系

3.计算路由——数据核心补充内容

4.生成路由——数据核心补充内容

(2)LSA类型

1.LAS报文头部

这里我们着重学习三元组——包括

LS Type——LSA类型

LINK State id——链路状态IP地址

advertising  router——通告路由器的IP地址

2.router LSA

一类LSA,记录链路状态和开销,包含路由信息和拓扑信息。在区域内防洪

(1)一类LSA报文头部

V——表示虚连接,为了使没有和DR连接的设备也能加入到OSPF学习当中

E——表示外部路由引入,ASBR,是外部路由就设为1

B——区域间路由器,为ABR,是的话设为1

(2)一类报文中类型

不同连接状态(type )有不同的id 和data

这里要了解到P2P与STUBNET是一起出现,STUBNET是关于网段信息,P2P是物理连接,

transnet只有拓扑信息,没有掩码信息,不完整,就有了二类LSA

3.network LSA

计算DR网段

1.报文头部

包含接口IP地址,掩码,和与之连接的邻居路由器的IP地址,与transnet一起组成拓扑和路由信息

三.路由计算

(1).SPF树计算

1.以自己为根,查找一类LSA,找出除网段信息的IP地址加入候选表,比较开销和优先级选出地址,就是DR设备,加入SPF树

2,根据选出的DR设备查找二类LSA,找出IP地址信息加入候选列表,比较开销和优先级选出地址,加入SPF树

3.根据新选出的设备查找一类LSA表,IP地址加候选列表,选出最佳的。

4.根据选出的DR查二类LSA表,一样的步骤选出下一个节点

。。。。。

5.直到候选列表没有信息,如果有还没有添加的router id就加到对应的节点上。

6.加叶子,将网段信息加入树的节点中。

(2)根据开销计算出最佳路由

这里要注意一点,OSPF的最佳路由不是都会出现在最终的路由表中,例如:OSPF  的路由与直连都可以到达一个目的IP,那么一定会选择优先级高的直连,那么opsF就不会出现在最终的路由表里。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1628091.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Blender点操作

顶点操作即一般的“布线”操作 1.顶点移动 -先切到顶点模式 -移动,G 或 G X/Y/Z -旋转,R 同上 -缩放,S 同上 2.顶点滑移,用于微调顶点的位置 快捷键:Shift V,G G 3.顶点删除 -选中一个顶点 -按…

【算法】人工蜂群算法,解决多目标车间调度问题,柔性车间调度问题

文章目录 复现论文什么是柔性作业车间调度问题?数据处理ABC算法编码解码种群初始化雇佣蜂操作IPOX交叉多点交叉 观察蜂操作侦察蜂操作算法流程 结果程序截图问询、帮助 复现论文 什么是柔性作业车间调度问题? 也叫多目标车间调度问题。 柔性作业车间调…

构建NodeJS库--前端项目的打包发布

1. 前言 学习如何打包发布前端项目,需要学习以下相关知识: package.json 如何初始化配置,以及学习npm配置项; 模块类型type配置, 这是nodejs的package.json的配置main 入口文件的配置 webpack 是一个用于现代 JavaSc…

golang反射

go反射 反射基本介绍应用场景基本使用结构体注意练习最佳实践遍历结构体的方法,调用接头体的方法,获取结构体的标签 反射 基本介绍 反射可以在运行时动态获取变量的各种信息,比如变量的类型(type)、类别(kind)如果是结构体变量,…

Java应用开发必备:使用 easy-captcha 组件生成验证码的详细介绍

一、前言 最近系统开发在优化验证码的相关功能,第一反应就是有没有开源的第三方组件可以使用呢。 在一番寻觅以后,还真发现一个好用的第三方验证码组件Easy-captcha。Easy-captcha是一个开源的Java库,用于生成和验证验证码,它的…

RGB灯珠的控制-单片机通用模板

RGB灯珠的控制-单片机通用模板 一、RGB控制的原理二、RGB.c的实现三、RGB.h的实现四、color色彩空间变换以及控制渐变一、RGB控制的原理 ①通过IO发送脉冲识别0/1编码,组合24Bit的RGB数据,从而控制RGB;②每个RGB灯珠通过DIN、DOU进行级联起来;③通过HSV色彩转换成RGB从而控…

Tomcat架构设计精髓分析-Connector高内聚低耦合设计

优秀的模块化设计通常都会采用高内聚、低耦合 高内聚是指相关度比较高的功能要尽可能集中,不要分散。低耦合是指两个相关的模块要尽可能减少依赖的部分和降低依赖的程序,不要让两个模块产中强依赖。 Tomca连接器需要实现的功能: 监听网络端口 接受网络…

手撕netty源码(一)- NioEventLoopGroup

文章目录 前言一、NIO 与 netty二、NioEventLoopGroup 对象的创建过程2.1 创建流程图2.2 EventExecutorChooser 的创建 前言 processOn文档跳转 本文是手撕netty源码系列的开篇文章,会先介绍一下netty对NIO关键代码的封装位置,主要介绍 NioEventLoopGro…

使用PyCharm开发工具创建工程

一. 简介 前面文章实现了开发 python程序使用的 开发工具PyCharm,本文来学习使用 PyCharm开发工具创建一个 python工程。 二. 使用PyCharm开发工具创建工程 1. 首先,打开 PyCharm开发工具,打开 "New project" 选项: …

hive启动beeline报错

问题一在zpark启动集群报错 出现上面的问题执行以下代码 chmod 777 /opt/apps/hadoop-3.2.1/logs 问题二启动beeline报错 执行 cd /opt/apps/hadoop-3.2.1 bin/hadoop dfsadmin -safemode leave 问题三执行查询语句报错 执行 set hive.exec.mode.local.autotrue;

java接口加密解密

这里写目录标题 controller加解密工具类加密(本质是对ResponseBody加密)解密(本质是对RequestBody传参解密)注解 controller Controller public class PathVariableController {GetMapping(value "/test")ResponseBod…

Redis缓存问题:穿透,击穿,雪崩等

Redis缓存问题:穿透,击穿,雪崩等 在高并发场景下,数据库往往是最薄弱的环节,我们通常选择使用redis来进行缓存,以起到缓冲作用,来降低数据库的压力,但是一旦缓存出现问题,也会导致数据库瞬间压力过大甚至崩溃,从而导致整个系统崩溃.今天就聊聊常见的redis缓存问题. 缓存击穿 …

相关分析方法

目录 1.什么是相关分析方法 2.相关系数 3.常见的相关分析方法 3.1.皮尔逊相关系数 3.2.斯皮尔曼等级相关 ​​​​​​​3.3.肯德尔等级相关 ​​​​​​​3.4.其它 4.应用 5.注意事项 6.结语 1.什么是相关分析方法 相关分析是数据分析中的一种统计方法&#xff0c…

[C++基础学习]----02-C++运算符详解

前言 C中的运算符用于执行各种数学或逻辑运算。下面是一些常见的C运算符及其详细说明:下面详细解释一些常见的C运算符类型,包括其原理和使用方法。 正文 01-运算符简介 算术运算符: a、加法运算符():对两个…

RabbitMQ(高级)笔记

一、生产者可靠性 (1)生产者重连(不建议使用) logging:pattern:dateformat: MM-dd HH:mm:ss:SSSspring:rabbitmq:virtual-host: /hamllport: 5672host: 192.168.92.136username: hmallpassword: 123listener:simple:prefetch: 1c…

AWTK 开源串口屏开发(17) - 通过 MODBUS 访问数组数据

在 AWTK 串口屏中,内置了 MODBUS Client Channel 的模型,不用编写代码即可实现在 ListView 中显示数组数据。 MODBUS 协议一次只能读取 125 个 WORD,AWTK-MODBUS Client Channel 支持长数据,自动分成多个请求访问。 1. 功能 不用…

浏览器的同源策略与解决跨域

同源策略(协议、域名、端口) 同源策略(Same-Origin Policy)是一个在浏览器安全模型中被实施的重要安全机制。它是基于域名、协议和端口号的限制,用于防止不同源的网页间的恶意行为和信息泄露。 根据同源策略&#xf…

【Diffusion实战】训练一个diffusion模型生成蝴蝶图像(Pytorch代码详解)

上一篇Diffusion实战是确确实实一步一步走的公式,这回采用一个更方便的库:diffusers,来实现Diffusion模型训练。 Diffusion实战篇:   【Diffusion实战】训练一个diffusion模型生成S曲线(Pytorch代码详解)…

【Linux学习】​​学习Linux的准备工作和Linux的基本指令

˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如…