关于OSPF报文学习

目录

一.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.mfbz.cn/a/577954.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深入OceanBase内部机制:分区机制构建高可用、高性能的分布式数据库基石

码到三十五 : 个人主页 在数据库技术的发展历程中,随着数据量的不断增长和业务需求的日益复杂,如何高效地存储、查询和处理数据成为了关键挑战。OceanBase作为一款高性能、高可用的分布式关系数据库,通过其独特的分区机制&#xf…

03 spring-boot+mybatis+jsp 的增删改查的入门级项目

前言 主要是来自于 朋友的需求 项目概况 就是一个 用户信息的增删改查然后 具体到业务这边 使用 mybatis xml 来配置的增删改查 后端这边 springboot mybatis mysql fastjson 的一个基础的增删改查的学习项目, 简单容易上手 前端这边 jsp 的 基础的试题的增删改查 学习项…

Shell脚本学习记录

0.理解Linux文件权限 0.1 Linux安全性 用户的权限是通过创建用户时分配的用户ID(UID)来追踪的,UID是个数值,每个用户都有一个唯一的UID 0.1.1 /etc/passwd文件 Linux系统使用一个专门的文件/etc/passwd来匹配登录名与对应的UID值,该文件包…

本地体验最强开源模型Llama3+Qnw(支持Windows和Mac)

一键运行大模型本地软件(含模型):点击下载 Meta放出Llama3模型了,也应该是这段时间里的一个科技大新闻了。 Llama一直都是开源大语言模型的领头羊驼。 而Llama3又是所有羊驼中最新的领头羊。 可以简单地来看一下官方的对比数据…

Open-Sora:开源版的Sora

项目简介 本项目希望通过开源社区的力量复现Sora,由北大-兔展AIGC联合实验室共同发起,当前我们资源有限仅搭建了基础架构,无法进行完整训练,希望通过开源社区逐步增加模块并筹集资源进行训练,当前版本离目标差距巨大&…

FSMC读取FPGA的FIFO

一、硬件说明 FSMC配置 单片机的代码如下: #define VALUE_ADDRESS_AD1 (__IO uint16_t *)0x60400000while (1){if(!HAL_GPIO_ReadPin(GPIOF, GPIO_PIN_8)) //数据非空{data *(__IO uint16_t *)VALUE_ADDRESS_AD1;data2 *(__IO uint16_t *)VALUE_ADDRESS_AD1…

C语言:插入排序

插入排序 1.解释2.步骤3.举例分析示例结果分析 1.解释 插入排序是一种简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采…

Qt中的 tableView 设置 二进制 十六进制 序号表头

二 进制序号 因为QTableView的垂直表头并不支持使用委托来自定义。 相反&#xff0c;可以通过将自定义的QWidget作为QHeaderView的标签来实现这一目标。 代码&#xff1a; #include <QApplication> #include <QMainWindow> #include <QVBoxLayout> #include …

使用LSTM模型对心跳时间序列数据预测(Python代码,ipynb环境)

所用模块版本&#xff1a; matplotlib3.7.1 numpy1.24.4 pandas1.5.3 scikit_learn1.2.2 scipy1.10.1 seaborn0.12.2 statsmodels0.14.0 torch1.13.1 torch2.0.1 wfdb4.1.2 主代码&#xff1a; import itertools import pandas as pd import matplotlib.pyplot as plt #完整…

elasticsearch 常用语法汇总

文章目录 前言elasticsearch 常用语法汇总1. 创建索引2. 检索索引信息3. 删除索引4. 文档操作4.1. 对blog_new索引指定文档ID新增4.2. 对blog_new索引不指定文档ID新增&#xff0c;随机文档ID:4.3. 获取文档4.4. 更新文档4.5. 删除文档 5. 查询5.1. 匹配查询5.2. 范围查询5.3. …

计算机视觉的应用29-卷积神经网络(CNN)中的变种:分组卷积、转置卷积、空洞卷积的计算过程

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下计算机视觉的应用29-卷积神经网络(CNN)中的变种&#xff1a;分组卷积、转置卷积、空洞卷积的计算过程。分组卷积将输入通道分为几组&#xff0c;对每组独立进行卷积操作&#xff0c;以减少计算量和模型参数。转置卷…

vue如何发送请求给后端(包括前后端跨域)

目录 有哪些方法可以发送请求要请求先解决跨域问题代理服务器后端解决跨域问题 axios发送请求vue-resource发送请求 有哪些方法可以发送请求 以前可能了解过&#xff1a; xhr 即&#xff1a;new XMLHttpRequest()jQuery 即&#xff1a;$.get $.postaxios fetch 在vue中特有的…

Leetcode 剑指 Offer II 075.数组的相对排序

题目难度: 简单 原题链接 今天继续更新 Leetcode 的剑指 Offer&#xff08;专项突击版&#xff09;系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 给定两个数组&#xff0c;arr1 和 arr2&#xff0c; arr2 中的元…

Java NIO

1. IO分类概述 1.1 阻塞与非阻塞 阻塞&#xff08;Blocking&#xff09;和非阻塞&#xff08;Nonblocking&#xff09;是在计算机编程中用于描述I/O操作的两个重要概念。阻塞与非阻塞描述的是线程在访问某个资源时&#xff0c;在该资源没有准备就绪期间的处理方式。 1、阻塞&a…

Android使用AlertDialog实现弹出菜单

最近又开始捣鼓APP&#xff0c;许多api , class都忘记怎么用了&#xff0c;楼下使用AlertDialog实现个弹出菜单&#xff0c;结果直接crash&#xff0c;查了半天&#xff0c;终于即将&#xff0c;记录一下…… 1 实现代码 AlertDialog.Builder mBuilder new AlertDialog.Builde…

后端工程师——C++工程师如何准备面试?

相比 Java 语言方向,C++ 入门简单,精通难,找工作竞争压力更小,但 C++ 依然是近年来招聘的热门岗位之一。本文将从以下三个方面进行详细讲解,帮助你对 C++ 相关岗位的就业前景、岗位要求、学习路线等有更充分的了解。 C++工程师面试准备 上两篇文章对 C++ 工程师的招聘需求…

SpringCloud系列(17)--将服务消费者Consumer注册进Zookeeper

前言&#xff1a;在上一章节中我们把服务提供者Provider注册进了Zookeeper&#xff0c;而本章节则是关于如何将服务消费者Consumer注册进Zookeeper 1、再次创建一个服务提供者模块&#xff0c;命名为consumerzk-order80 (1)在父工程下新建模块 (2)选择模块的项目类型为Maven并…

HPE Aruba Networking推出新一代Wi-Fi 7接入点 助力企业高效应对安全、AI与物联网挑战

HPE ArubaNetworking推出的全新Wi-Fi 7接入点&#xff0c;提供全面的AI就绪边缘IT解决方案&#xff0c;旨在为用户和物联网设备提供安全、高性能的连接服务&#xff0c;以实现数据的捕获和路由&#xff0c;从而满足AI训练和推理需求 休斯顿-2024年4月23日-慧与科技(NYSE: HPE)近…

【golang学习之旅】深入理解字符串string数据类型

系列文章 【golang学习之旅】报错&#xff1a;a declared but not used 【golang学习之旅】Go 的基本数据类型 目录 系列文章使用示例string的底层数据结构关于字符串复制字符串是不可变的如何高效的进行字符串拼接&#xff1f; 使用示例 Go 语言中的字符串只是一个只读的字节…

Spring boot + Redis + Spring Cache 实现缓存

学习 Redis 的 value 有 5 种常用的数据结构 Redis 存储的是 key-value 结构的数据。key 是字符串类型&#xff0c;value 有 5 种常用的数据结构&#xff1a; Redis 的图形化工具 Another Redis Desktop Manager Spring Data Redis Redis 的 Java 客户端。 Spring Cache Spr…
最新文章