学习笔记——动态路由——OSPF(报头信息、报文信息、三张表)

六、OSPF协议的报头信息、报文信息、三张表

OSPF的协议报文在一个广播域内进行传递,是直接封装在IP报文中的,协议号为89

OSPF本身5种类型:分别是Hello报文、DD报文、LSR报文、LSU报文、LSAck报文,各种不同类型的LSA其实只是包含在LSU报文中。

其他类型的OSPF报文中虽然没有携带LSA,但是仍然会携带一些链路状态信息,当然也会携带一些其他的信息。

1、OSPF报头信息

 

字段

长度  

含义

Version

1字节

版本,OSPF的版本号。对于OSPFv2来说,其值为2。

Version

1字节

版本,OSPF的版本号。对于OSPFv2来说,其值为2。

Type

1字节

类型,OSPF报文的类型,有下面几种类型:

1:Hello报文;2:DD报文;3:LSR报文;4:LSU报文;5:LSAck报文。

Packet length

2字节

OSPF报文的总长度,包括报文头在内,单位为字节。

Router ID

4字节

发送该报文的路由器标识。

Area ID

4字节

发送该报文的所属区域。

Checksum

2字节

校验和,包含除了认证字段的整个报文的校验和。

AuType

2字节

验证类型,值有如下几种表示,0:不验证;1:简单认证;2:MD5认证。

Authentication

8字节

鉴定字段,其数值根据验证类型而定。当验证类型为0时未作定义;

类型为1时此字段为密码信息;

类型为2时此字段包括Key ID、MD5验证数据长度和序列号的信息。 MD5验证数据添加在OSPF报文后面,不包含在Authenticaiton字段中。

2、OSPF五种报文

OSPF的5种报文中,Hello报文用来发现和维护邻居关系只有邻接关系建立完成后才会交互DD、LSR, LSU以及LSAck报文

Type

报文名称

报文功能

1

Hello

发现和维护OSPF邻居关系。周期性发送,用来发现、维护、保持OSPF邻居关系。

2

Database Description(DD)

交互链路状态数据库摘要。描述本地LSDB的摘要信息,用于两台设备进行数据库同步。

3

Link State Request(LSR)

请求特定的链路状态信息。用于向对方请求所需要的LSA。设备只有在OSPF邻居双方成功交换DD报文后才会向对方发出LSR报文。

4

Link State Update(LSU)

发送详细的链路状态信息。用于向对方发送其所需要的LSA,此时LSA信息是完整的。

5

Link State Ack(LSAck)

发送确认报文。用来对收到的LSA进行确认。

注意:OSPF在邻居刚建立的时候会发送路由信息(路由信息使用DD、LSR、LSU、LSack四种报文来发送),路由同步以后,后面仅发送hello包来维持邻居关系即可。

(1)Hello报文

最常用的一种报文,用于发现、维护邻居关系,并在广播和NBMA类型的网络中,选举指定路由器(DR)和备份指定路由路由器(BDR)。

Hello报文周期性发送,发送的时间受OSPF链路类型影响,如,广播网络类型下的Hello发送间隔为10秒不同链路状态下的Hello报文发送方式不同,广播网络类型下的Hello报文以组播发送。

1)Hello报文字段详解:

2)Hello报文的作用:

(1)邻居发现:自动发现邻居路由器,并建立相邻关系,广播网络类型下通过组播224.0.0.5发送,通告两台路由器建立相邻关系所必需统一的参数。

(2)邻居建立:完成Hello报文中的参数协商,建立邻居关系。

(3)邻居保持:通过Keepalive机制,检测邻居运行状态。

广播型的网络中,更新的周期为10S/40S非广播多路访问的网络中,更新的周期30s/120s

3)Hello时间修改:

重置ospf 进程:< >reset  ospf  process

修改hello时间:< >ospf  timer  hello  5

比如改成hello时间5s行吗?    可以

那么死亡时间是多少呢?        20s

hello时间和dead时间感知链路邻居是否存在。如果默认40s没有收到hello报文,OSPF邻居将会down掉

如果我修改了dead没有修改hello时间,那么hello时间会随着dead时间改变吗?

不会!因为hello时间随着报文通告

(2)DD(Database Description,数据库描述)报文

DD(数据库描述)报文,建立邻居的基础上用于两台路由器进行交换链路状态数据库的摘要信息。它允许路由器之间比较彼此的数据库,以确定需要交换的更新信息主要用于数据库的同步

不同链路状态下的DD报文发送方式不同广播网络类型下的DD报文以单播发送

内容包括LSDB中每一条LSA的Heade头部(LSA的Header可以唯一标识一条LSA) 。LSA Header只占LSA的整个数据量的一小部分,这样可以减少路由器之间的协议报文流量,对端路由器根据LSA Header就可以判断出是否已有这条LSA。

1)报文字段详解:

 

2)DD报文的作用:

(1)主要用于数据库的同步。

(2)先描述后请求,减少了交换LSA的次数,提高网络的收敛速度。

(3)如果没有DD报文,每次建立邻居后都要发送全部的LSA,如果对方已经有了大部分了,你还发一堆过去就产生了不必要的流量。

(3)LSR(Link State Request, 链路状态请求)报文

链路状态请求(LSR)报文,用于请求DD报文中的详细路由信息。

两台路由器互相交换过DD报文之后,知道对端的路由器有哪些LSA是本地的LSDB所缺少的,这时需要发送LSR报文向对方请求缺少的LSA。内容包括所需要的LSA 的摘要。

不同链路状态下的LSR报文发送方式不同广播网络类型下的LSR报文以单播发送

1)报文字段详解:

(4)LSU(Link State Update, 链路状态更新)报文

链路状态更新(LSU)报文,用于回复详细的LSR请求信息,在OSPF链路状态更新/拓扑变更时进行路由的更新通知。

用来向对端路由器发送所需要的LSA,内容是多条LSA(全部内容)的集合。当一个路由器检测到网络拓扑发生变化时,它会生成LSU报文,并将更新的链路状态数据发送给邻居路由器。

不同链路状态下的LSU报文发送方式不同广播网络类型下的LSU报文以组播发送

1)报文字段详解:

(5)LSAck报文(Link State Acknowledgment, 链路状态确认)

链路状态确认(LSAck)报文,用来对接收到的LSU报文进行确认。

当一个路由器接收到LSU报文后,会发送LSAck报文作为回应,通知发送方链路状态数据已成功接收。

不同链路状态下的LSACK报文发送方式不同广播网络类型下的LSACK报文以组播发送

1)报文字段详解:

2)LSAck报文的作用

保障LSA传输的可靠性,不至于说发送LSU丢了也不知道。

3、OSPF三张表

OSPF有三张重要的表项,OSPF邻居表、LSDB表和OSPF路由表。

(1)OSPF三张表——OSPF邻居表(neighbor table)

OSPF用邻居机制,来发现和维持路由的存在,邻居表存储了双向通信的邻居关系OSPF路由器列表的信息

对于OSPF的邻居表,需要了解∶

OSPF在传递链路状态信息之前,需先建立OSPF邻居关系邻居关系通过交互Hello报文建立

OSPF邻居表显示了OSPF路由器之间的邻居状态,使用display ospf peer查看。

[R2]display ospf  peer  brief //显示OSPF邻居的概要信息

         OSPF Process 1 with Router ID 2.2.2.2

                  Peer Statistic Information

 ----------------------------------------------------------------------------

 Area Id          Interface                  Neighbor id      State   

 0.0.0.0          GigabitEthernet0/0/0             1.1.1.1         Full   

 ----------------------------------------------------------------------------

[R2]display ospf  peer    //显示OSPF中各区域的详细邻居信息

         OSPF Process 1 with Router ID 2.2.2.2  //本地自己的Router ID

                 Neighbors

 Area 0.0.0.0 interface 10.1.12.2(GigabitEthernet0/0/0)'s neighbors

     Router ID: 1.1.1.1 //邻居的router-id    Address: 10.1.12.1   //邻居的接口IP    

   State: Full //OSPF的状态 Mode:Nbr is  Slave  Priority: 1   //接口优先级用于选举DR和BDR

   DR: 10.1.12.1  BDR: 10.1.12.2  MTU: 0    //MTU值 最大传输单元,缺省为1500,华为缺省是不开启MTU检测

   Dead timer due in 39  sec               //死亡时间(失效时间)

   Retrans timer interval: 5                    //LSA重传时间

   Neighbor is up for 00:05:21            //邻居UP 

   Authentication Sequence: [ 0 ]               //认证字段

(2)OSPF三张表——LSDB(链路状态数据库,link-state database)

OSPF用LSA(链路状态通告)来描述网络拓扑信息,然后OSPF路由器用LSDB链路状态数据库来存储网络的这些LSA。

LSDB同步:每个LSA都要在LSU中通告给邻居,并且每个邻居都要确认,若没有收到邻居的确认,LSU在5s后重传。

对于OSPF的LSDB表,需要了解∶

LSDB会保存自己产生的及从邻居收到的LSA信息。(下图中R1的LSDB包含了三条LSA)

作用:存放其他路由器的LSA

[R2]display ospf lsdb     //显示LSDB链路状态数据库的信息。

         OSPF Process 1 with Router ID 2.2.2.2

                 Link State Database

Area: 0.0.0.0

 LSA的类型            发送LSA的路由器            

 Type      LinkState ID        AdvRouter        Age  Len   Sequence   Metric

 Router      2.2.2.2         2.2.2.2        1175  36    80000003   1

 Router      1.1.1.1         1.1.1.1        1175  48    80000008   1

 Network      10.1.12.1         1.1.1.1        1175  32    80000002   0

Type:LSA的类型:1类2类

Link State ID:描述拓扑信息或者路由信息:根据你的LSA的类型不同

Adv Router:通告路由器:谁告诉你的这条LSA

age: LSA的存放时间                           Len:长度以字节为单位

Sequence:OSPF LSA的序列号(当拓扑产生变化之后+1以十六进制计算)     Metric:开销

(3)OSPF三张表——OSPF路由表(routing table)

对链路状态数据库进行SPF(Dijkstra)计算,而得出的OSPF路由表。

对于OSPF的路由表,需要了解∶

OSPF路由表路由器路由表两张不同的表项。下图中OSPF路由表有三条路由。

OSPF路由表包含:Destination(源地址)、Cost(开销)和NextHop(下一跳)等指导转发的信息。

Transitnet类型:网段路由。一般采用在直连接口,需要维护邻居之间的拓扑信息和路由信息。

stubnet类型:主机路由。一般采用在环回接口,不需要维护邻居之间的拓扑信息,只需要维护路由信息。

[R2]display ospf  routing   //显示OSPF路由表信息

         OSPF Process 1 with Router ID 2.2.2.2

                  Routing Tables Routing for Network

 Destination      Cost  Type               NextHop     AdvRouter    Area

 10.1.12.0/24       1  Transit //网段路由    10.1.12.2    2.2.2.2    0.0.0.0

 10.1.14.0/24       2  Stub   //主机路由    10.1.12.1    1.1.1.1    0.0.0.0

 Total Nets: 2 

 Intra Area: 2  Inter Area: 0  ASE: 0  NSSA: 0

(4)LSA、LSDB、SPF、路由表之间的关系

1)相互交换自己的LSA从而组成LSDB。【LSDB的形成】

2)通过SPF算法对LSDB中的路径信息进行一个计算,得出最优的OSPF路由。【路由的产生】

3)最优的OSPF路由放置在路由表中。如果存在其它路由协议的最优路由与OSPF的最优路由相同,将进行比较路由优先级,优先级小的信任度更高,将成为最优路由放置在路由表中。


整个华为数通学习笔记系列中,本人是以网络视频与网络文章的方式自学的,并按自己理解的方式总结了学习笔记,某些笔记段落中可能有部分文字或图片与网络中有雷同,并非抄袭。完处于学习态度,觉得这段文字更通俗易懂,融入了自己的学习笔记中。如有相关文字涉及到某个人的版权利益,可以直接联系我,我会把相关文字删除。【VX:czlingyun    暗号:CSDN】

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

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

相关文章

Jedis、Lettuce、RedisTemplate连接中间件

jedis就像jdbc一样&#xff0c;用于两个端直接的连接。 1.创建Spring项目 这里不过多赘述... 2.导入连接工具jedis 在pom文件中导入jedis的依赖。 <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version&…

第一周:李宏毅机器学习笔记

第一周学习周报 摘要一、机器学习基础理论1. 什么是机器学习&#xff1f;2. 机器学习“寻找”的函数有哪些类型&#xff1f;3. 机器学习中机器如何“寻找”函数&#xff1f;三步走3.1 第一步&#xff1a;设定函数的未知量&#xff08;Function with Unknown Parameters&#xf…

昇思25天学习打卡营第12天|ShuffleNet图像分类

1. 学习内容复盘 ShuffleNet网络介绍 ShuffleNetV1是旷视科技提出的一种计算高效的CNN模型&#xff0c;和MobileNet, SqueezeNet等一样主要应用在移动端&#xff0c;所以模型的设计目标就是利用有限的计算资源来达到最好的模型精度。ShuffleNetV1的设计核心是引入了两种操作&a…

C++ 数据库MySQL 学习笔记(3) - 数据库操作

C 数据库MySQL 学习笔记(3) - 数据库操作 视图操作 视图是从一个或多个表中导出来的表&#xff0c;是一种虚拟存在的表。视图就像一个窗口&#xff0c;通过这个窗口可以看到系统专门提供的数据&#xff0c;这样用户可以不看整个数据库表中的数据&#xff0c;而只关心对自己有…

Chrome备份数据

Chrome备份数据 1、 导出谷歌浏览器里的历史记录 参考&#xff1a;https://blog.csdn.net/qq_32824605/article/details/127504219 在资源管理器中找到History文件&#xff0c;文件路径&#xff1a; C:\Users\你的电脑用户名\AppData\Local\Google\Chrome\User Data\Default …

【Linux】Linux系统配置,linux的交互方式

1.Linux系统环境安装 有三种方式 裸机安装或者双系统 -- 不推荐虚拟机安装 --- 不推荐云服务器/安装简单&#xff0c; 维护成本低——推荐&#xff0c; 未来学习效果好 我们借助云服务器 云服务器&#xff08;Elastic Compute Service&#xff0c;ECS&#xff09;的标准定义…

昇思25天学习打卡营第7天|网络构建

昇思25天学习打卡营第7天|网络构建 前言函数式自动微分函数与计算图微分函数与梯度计算Stop GradientAuxiliary data神经网络梯度计算 个人任务打卡&#xff08;读者请忽略&#xff09;个人理解与总结 前言 非常感谢华为昇思大模型平台和CSDN邀请体验昇思大模型&#xff01;从今…

基于SpringBoot的超市进销存系统

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot框架 工具&#xff1a;MyEclipse、Tomcat 系统展示 首页 首页界面图 个人中心 个人中心…

使用LabVIEW和示波器测试IGBT参数

使用LabVIEW和示波器测试绝缘栅双极型晶体管&#xff08;IGBT&#xff09;参数的综合解决方案。过程包括硬件设置、示波器和其他必要设备的配置&#xff0c;以及开发LabVIEW程序以自动化数据采集、过滤、关键参数计算和结果显示。该方法确保了IGBT测试的准确性、可靠性和高效性…

Python自动化运维 系统基础信息模块

1.系统信息的收集 系统信息的收集&#xff0c;对于服务质量的把控&#xff0c;服务的监控等来说是非常重要的组成部分&#xff0c;甚至是核心的基础支撑部分。我们可以通过大量的核心指标数据&#xff0c;结合对应的检测体系&#xff0c;快速的发现异常现象的苗头&#xff0c;进…

5.How Fast Should You Be When Learning?(你应该用多快的速度学习? (二))

Are you failing to reach an ideal or you dont know what the ideal is? 你是否没有达到理想状态&#xff0c;或者不知道理想状态是什么? A lot of learing involves having a mental representation of what the ideal performance ought to be, a method or approach t…

【JavaEE】多线程代码案例(1)

&#x1f38f;&#x1f38f;&#x1f38f;个人主页&#x1f38f;&#x1f38f;&#x1f38f; &#x1f38f;&#x1f38f;&#x1f38f;JavaEE专栏&#x1f38f;&#x1f38f;&#x1f38f; &#x1f38f;&#x1f38f;&#x1f38f;上一篇文章&#xff1a;多线程&#xff08;2…

维卡币(OneCoin)是投资骗局!中国成维卡币传销重灾区,信徒们醒醒吧!创始人被通缉,生死不明!

维卡币(英文名&#xff1a;OneCoin)是一个隐藏在加密货币外表下的庞氏骗局&#xff0c;因传销诈骗和违法吸金被起诉&#xff0c;受害者遍布全球。它的创始人Ruja Ignatova因欺骗和洗钱被列为通缉嫌疑人&#xff0c;成为全球最大金融诈骗案件之一的逃犯&#xff0c;目前美国政府…

ELK企业级实战

一、Elstic stack在企业的常⻅架构 https://www.bilibili.com/video/BV1x94y1674x/?buvidXY705117E90F73A790429C9CFBD5F70F22168&vd_source939ea718db29535a3847d861e5fe37ef ELK 解决取得问题 痛点1: ⽣产出现故障后&#xff0c;运维需要不停的查看各种不同的⽇志进⾏…

Flutter 入门与实战(十一):底部弹窗ModelBottomSheet详解

这是我参与更文挑战的第6天,活动详情查看: 更文挑战 在实际开发过程中,经常会用到底部弹窗来进行快捷操作,例如选择一个选项,选择下一步操作等等。在 Flutter 中提供了一个 showModelBottomSheet 方法用于弹出底部弹窗,本篇介绍如何使用底部弹窗。 实现效果 最终实现效果…

【使用sudo apt-get出现报错】——无法获得锁 /var/lib/dpkg/lock-open(11:资 源暂时不可用) ,是否有其他进程正占用它?

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、ubuntu中进程正在被占用1. 问题描述2. 原因分析3. 解决 总结 前言 一、ubuntu中进程正在被占用 1. 问题描述 在Ubuntu中&#xff0c;使用终端时输入带有…

50-3 内网信息收集 - 域环境搭建

搭建准备: 在搭建准备阶段,我们需要准备三台 Windows 虚拟机:Windows Server 2012、Windows 7 和 Windows Server 2008。接下来,我们将配置 Windows Server 2012 作为域控制器,而 Windows 7 和 Windows Server 2008 将作为成员机加入域。建议保持这三台虚拟机的内存不超过…

Servlet_Web小结

1.web开发概述 什么是服务器&#xff1f; 解释一&#xff1a;服务器就是一款软件,可以向其发送请求,服务器会做出一个响应. 可以在服务器中部署文件,让他人访问 解释二&#xff1a;也可以把运行服务器软件的计算机也可以称为服务器。 web开发&#xff1a; 指的是从网页中向后…

C++学习全教程(Day2)

一、数组 在程序中为了处理方便,常常需要把具有相同类型的数据对象按有序的形式排列起来&#xff0c;形成“一组”数据&#xff0c;这就是“数组”(array&#xff09; 数组中的数据&#xff0c;在内存中是连续存放的&#xff0c;每个元素占据相同大小的空间&#xff0c;就像排…

redis实战-添加商户缓存

为什么要使用缓存 言简意赅&#xff1a;速度快&#xff0c;好用缓存数据存储于代码中&#xff0c;而代码运行在内存中&#xff0c;内存的读写性能远高于磁盘&#xff0c;缓存可以大大降低用户访问并发量带来的服务器读写压力实际开发中&#xff0c;企业的数据量&#xff0c;少…