IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> OSPF理论基础篇-02 -> 正文阅读

[网络协议]OSPF理论基础篇-02

OSPF五种类型报文


OSPF有五种类型的协议报文:

①.Hello报文:周期性发送,用来发现和维持OSPF邻居关系,以及进行DR/BDR的选举。

PS:可将Hello理解为进餐厅服务员的欢迎光临和下次再来。

②.DD(Database Description,数据库描述)报文:描述了本地LSDB(Link State DataBase,链路状态数据库)中每一条LSA(Link State Advertisement,链路状态通告)的摘要信息,用于两台路由器进行数据库同步。

PS:可将DD理解为进入餐厅后查看的菜单

③.LSR(Link State Request,链路状态请求)报文:向对方请求所需的LSA。两台路由器互相交换DD报文之后,得知对端的路由器有哪些LSA是本地的LSDB所缺少的,这时需要发送LSR报文向对方请求所需的LSA。

PS:在看完餐单以后看自己有没有没吃过的菜,若没吃过则点这道菜

④.LSU(Link State Update,链路状态更新)报文:向对方发送其所需要的LSA。

PS:服务员根据点的菜单送上的菜品

⑤.LSAck(Link State Acknowledgment,链路状态确认)报文:用来对收到的LSA进行确认。

PS:对自己点的菜品进行确认

1、OSPF报文头格式

Version: 8位,OSPF 的版本号。2代表OSPFv2,3代表OSPFv3。

Type:8位,OSPF报文的类型。

1为Hello;2为DD;3为LSR;4为LSU;5为LSAck。

Packet length: 16位,OSPF报文的总长度。

Router ID:32位,发送该报文的路由器标识。

Area ID: 32位,发送该报文的路由器所属区域。

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

AuType: 16位,验证类型如下:
0:不验证;?????????1:简单明文认证;?????????2:MD5认证。

Authentication: 64位,其数值根据验证类型而定:

0:不含验证信息;????????1:此字段为明文密码;
2:此字段包括Key ID、MD5或 SHA256的验证数据长度和序列号的信息。

查看实际报文交互情况

可以发现该数据是OSPFv2的hello报文,包长度是44Byte,原路由是1.1.1.1,区域0的交互

?

2、Hello报文格式

Network Mask:32位,发送Hello报文的接口所在网络的掩码。

Hello Interval:16位,发送Hello报文的时间间隔。

Options:8位,可选项,含义同OSPF 头中一致。

Rtr Pri:8位,DR优先级,默认为1,如果为0,则路由器被视为放弃参与DR或BDR的选举。

RouterDeadInterval:32位,邻居失效时间。如果在此时间内未收到邻居发来的Hello报文,则认为邻居失效,并从邻居表里移除该邻居,从路由表里撤销指向其的路由。

Designated Router:32位,本网段上DR路由器的接口IP地址。

Backup DesignatedRouter:32位,本网段上BDR路由器的接口IP地址。

Neighbor:32位,邻居列表,用 Router ID标识。记录当前路由器已知的链路上所有邻居的RID。

查看Hello报文

可以看出该消息是刚建立OSPF时候抓获的,因为DR和BDR还没有选举出来。

在此需要注意有点,在广播和点到点网络中Hello报文是10s/每次,而在NBMA和P2MP网络中,Hello报文是10s/每次.

?

?3、DD报文格式

Interface MTU:16位,表示在不分片的情况下,此接口最大可发出的IP报文长度。华为默认不填充接口实际MTU值,所以值为0。

Options:含义同OSPF头中一致。

I (Initialization)位:1位,当发送连续多个DD报文时,如果这是第一个 DD报文,则置为1,代表同步过程开始。否则置为0。

M (More)位:1位,当发送连续多个DD报文时,如果后续的DD报文中不再有LSA头,则置为0。

M/S (Master/Slave)位:1位,当两台OSPF 路由器交换 DD报文时,首先需要确定双方的主从关系,优先级相同的情况下,RouterID大的一方会成为Master,当值为1时表示发送方为 Master。

DD Sequence Number:32位,DD报文序列号。主从双方利用序列号来保证DD报文传输的可靠性和完整性。

LSA Headers:本LSDB 中 LSA的头。

查看DD报文

可以看出这是一个空的DD报文,该报文中这是第一个DD报文,后续还会有LSA头,DD序列号为245。

?

4、LSR报文

LS type:32位,LSA 的类型号。

Link State ID:32位,根据LSA中的LS Type和 LSA Description在路由域中描述一个LSA。

Advertising Router:32位,产生此LSA的路由器的Router ID。

查看LSR报文

可以看出这是所有OSPF Route都发出的Type 1 的LSA报文,第一个LSA是来自10.10.12.2的,而第二个是来自1.1.1.1的LSA信息。

?

5、LSU报文

Number of LSAs:32位,表示此Update中所包含的LSA的数量。

LSAs:多个完整LSA的内容。

查看LSU报文

?

6、LSAck报文

LSA Headers:LSA头列表,OSPF通过LSA头对收到的完整LSA做确认。一份LSAck可以对多份LSU中的LSA 做确认。?

查看确认

?

OSPF邻居和领接关系

一、邻居关系建立过程

先查看一段在华为路由器上配置完成OSPF后的syslog

?三步握手

?

Down状态:邻居的初始化,此时双方刚发送Hello报文,两方还互不知道对方。

Init状态:R1收到邻居的Hello报文时,若该Hello报文中的Active Neighbor字域没有包含当前路由器的Router ID 1.1.1.1,则R1中邻居的状态为 Init.

Two-Way状态:R1再次收到Hello报文时,此次Hello报文中的Active Neighbor字域中有自己的Router ID 1.1.1.1,这时路由器进入Two-Way状态。

PS:只有A及B的邻居都进入Two-Way 状态,才代表彼此间双向邻居建立起来。

二、领接关系建立过程

先查看一段在华为路由器上配置完成OSPF后的syslog

?

ExStart?(信息交换初始)状态:该状态下,本地路由器和邻居路由器间互传空DD报文。

①.确定主/从关系????????②.确定DD的初始序列号????????③.比较接口MTU(可选)

在ExStart 状态下,路由器互相发送的空DD报文中置Ⅰ(Initialize),M (More)及MS (Master/Slave)位。

?以下是一个空的DD报文,当本地Route和邻居Route互传空DD时,就是Exstart状态

Exchange(信息交换)状态:选举出 Master后,Slave路由器向Master回送 DD报文,其中包含LSDB中的LSA头(LSA summary)列表,并使用Master 的序列号。Master也把自己的LSA头列表用DD发送,序列号增加1,同时,Slave收到后,会回应相同序列号的DD报文。

任何一侧只要还有未传递完的LSA头,Master就一定要产生DD报文并由 Slave回应。Exchange阶段通过这种可靠的DD交互,完成快速交换LSA 头。

查看报文可以发现,Master已选出,此状态即为Exchange状态?

?

Loading(信息加载)状态:该状态下,本地路由器将会向它的邻居路由器发送链路状态请求数据包LSReq,以请求本地LSDB中没有的LSA。收到LSReq的报文,路由器会用包含完整的被请求的LSA的LSU 做回应。请求方收到LSU后,如果无误,则LSAck确认该LSU。一份LSAck可同时为多份LSUpdate做确认。

Full(完全邻接)状态:在FULL状态下,邻居路由器之间已完成同步过程,建立起完全邻接关系。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-02-01 20:56:37  更:2022-02-01 20:58:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 10:16:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码