OSPF : 报文结构

发布时间:2024年01月11日

概述

我决定用一个大的系列来写OSPF的内容 , 今天是第一篇, 让我们来详细的看一下OSPF的报文类型结构和细节

OSPF是有5种报文类型 , 5种类型都有相同的头部 , 学习OSPF报文 , 对报文头+5种类型的结构必须要有一个清晰的认知 。OSPF分为5种报文:Hello报文、DD报文、LSR报文、LSU报文和LSAck报文。这五种报文具有相同的报文头格式,长度为24字节。

OSPF报文头部

image-20240107025417811

所有的5种报文都会携带这个头部


Version : 代表OSPF的版本现在主流是V3版本了

Message Type : 头部的这个字段代表了报文类型 1-5 分别对应了 Hello/DD/LSR/LSU/LSAck

Packet Len : 这个字段代表着整个报文的字节长度(头+报文) , 如图48字节 , 头部固定为24 , 可以计算出Hello的长度也是24字节 48-24

Sou OSPF Router : 就是发送这个报文设备的Routeid

Area ID : 发送该报文所属的区域

Cheaksum : 校验和 无需关注

Auth Type : OSPF认证方式 有NULL(0) , 简单认证(1) , MD5认证(2)

Auth Data : 具体的认证信息

Hello

image-20240107031432161

Hello报文是最常用的一种报文,其作用为建立和维护邻接关系,周期性的在使能了OSPF的接口上发送。报文内容包括一些定时器的数值、DR、BDR以及自己已知的邻居。


Net Mask : 发送Hello报文的接口所在的网络掩码

Hello Inter : 发送Hello报文的间隔 默认10s sec就是秒的意思

Options : 可选项 后面详细展开

Router Priority : 接口DR优先级默认1 , 如果设置0代表弃权

Router Dead : 死亡时间 默认40s

DR/BDR : 值DR/BDR的接口IP地址

Neighbor : 截图中没有这个字段 , 说明设备没有发现其他邻居 ,处于init状态

DD

image-20240108013451552

OSPF DD(Database Description)报文描述了本地LSDB的摘要信息,用于两台路由器进行数据库同步。

DD报文其实是分2种的 , 上图是66字节的初始DD数据包 , 用于协商主从 , 并没有LSA摘要 , 特点是Init置位


Interface MTU : 此接口最大可发出的IP报文长度 , 华为默认不检查 可以命令开启(后续详细说明)

DB Description : DB描述 这个是DD报文的关键之一

? ? OOBResync:Out-Of-Band Re-synchronization,当这个位被设置时,它通常用于一些特定情况下的数 据库重新同步。

? (I) Init:当这个位被设置时,它表示这个DB描述数据包是在数据库交换过程的开始时发送的。当发送连续多 个DD报文时,如果这是第一个DD报文,则置为1。

? (M) More:当这个位被设置时,它表示发送者还有更多的DB描述数据包要发送。这是一个指示符,告诉接收 方还有更多的信息在后续的数据包中。

? (MS) Master:这个位表示发送该DB描述数据包的路由器在主从关系中扮演的角色。如果设置为“Master”,则 表示发送数据包的路由器是主路由器;如果没有设置,则表示它是从路由器。主路由器负责控制数据库交换 过程的顺序和节奏。

DD Seq : DD报文的序列号 , 这个序列号只有Master才能自增 , slave的seq复制使用master


image-20240108015023977

此报文Init没有置位 , 说明是非首包作用为 LSA的摘要信息 , 所以内容聚焦在LSA上

LSR

后续报文内容核心聚焦于LSA 不过多关注报文本身 简单介绍一下

image-20240108015754350

两台路由器互相交换过DD报文之后,知道对端的路由器有哪些LSA是本地的LSDB所缺少的和哪些LSA是已经失效的,这时需要发送LSR(Link State Request)报文向对方请求所需的LSA。OSPF LSR报文的内容包括所需要的LSA的摘要。LSR报文格式如下图所示,其中LS type、Link State ID和Advertising Router可以唯一标识出一个LSA,当两个LSA一样时,需要根据LSA中的LS sequence number、LS checksum和LS age来判断出所需要LSA的新旧。

LSU

OSPF LSU(Link State Update)报文用来向对端路由器发送其所需要的LSA或者泛洪自己更新的LSA,内容是多条LSA(全部内容)的集合。

常用的LSA共有5种,分别为:Router-LSA、Network-LSA、Network-summary-LSA、ASBR-summary-LSA和AS-External-LSA。

  • Type1:Router-LSA,每个路由器都会产生,描述了路由器的链路状态和花费,在所属的区域内传播。
  • Type2:Network-LSA,由广播网或NBMA网络中的DR产生,Network-LSA中记录了这一网络上所有路由器的Router ID,描述本网段的链路状态,在所属的区域内传播。
  • Type3:Network-summary-LSA,描述区域内所有网段的路由,并通告给其他相关区域。Type3和Type4的LSA有相同的格式,它们都是由ABR产生。
  • Type4:ASBR-summary-LSA,描述到ASBR的路由,通告给除ASBR所在区域的其他相关区域。Type3和Type4的LSA有相同的格式,它们都是由ABR产生。
  • Type5:AS-External-LSA,由ASBR产生,描述到AS外部的路由,这是五种LSA中,唯一一种通告到所有区域(除了Stub区域和NSSA区域)的LSA。Type5的LSA可以用来通告缺省路由,此时Link State ID和Network Mask都设置为0.0.0.0。
  • Type7:NSSA-LSA,由NSSA的ASBR产生,仅在本NSSA内传播。格式与Type5相同。

LSAck

OSPF LSAck(Link State Acknowledgment)用来对接收到的LSU报文进行确认。内容是需要确认的LSA的Header(一个LSAck报文可对多个LSA进行确认)。

通过发送LSA的头部信息确认收到该LSA。

Options

image-20240108020323231

  • DN (Downward):当设置时,指示路由器支持Type-7 LSA转换成Type-5 LSA的能力,这与NSSA(不含区域的存根区域)相关。
  • O (Opaque):指示路由器支持不透明LSA的能力。
  • DC (Demand Circuits):当设置时,表示路由器支持需求电路功能,这可以减少在需求电路上的LSA更新。
  • L (LLS Data block):表示路由器可以发送和接收带有LLS(链路局部签名)数据块的数据包,这是用于改进认证功能。
  • N (NSSA):表示路由器位于一个NSSA区域。
  • MC (Multicast):指示路由器支持多播路由能力。
  • E (External Routing):当设置时,表示路由器可以导入和导出外部路由。
  • MT (Multi-Topology Routing):用于指示路由器支持多拓扑路由的能力。

E普通区域可以接受外部路由

如果配置成NASS 这里就置0

文章来源:https://blog.csdn.net/weixin_61113386/article/details/135447747
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。