OSPF报文类型

OSPF报文类型OSPF 报文头格式 OSPF 用 IP 报文直接封装协议报文 协议号为 89 OSPF 分为 5 种报文 Hello 报文 DD 报文 LSR 报文 LSU 报文和 LSAck 报文 OSPF 这五种报文具有相同的报文头格式 长度为 24 字节 报文格式 字段解释 Version1 字节版本 OSPF 的版本号 对于 OSPFv2 来说 其值为 2 字段长度含义

OSPF报文头格式

OSPF用IP报文直接封装协议报文,协议号为89。OSPF分为5种报文,Hello报文、DD报文、LSR报文、LSU报文和LSAck报文。

OSPF这五种报文具有相同的报文头格式,长度为24字节。

报文格式:

这里写图片描述

字段解释:

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字段中。

hello 报文抓包:

这里写图片描述


图:OSPF报文头


OSPF Hello报文格式

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

OSPF Hello报文格式:

这里写图片描述

字段解释:

字段 长度 含义
Network Mask 32比特 发送Hello报文的接口所在网络的掩码。
HelloInterval 16比特 发送Hello报文的时间间隔。
Options 8比特 可选项:E:允许Flood AS-External-LSAs MC:转发IP组播报文 N/P:处理Type-7 LSAs DC:处理按需链路
Rtr Pri 8比特 DR优先级。默认为1。如果设置为0,则路由器不能参与DR或BDR的选举。
RouterDeadInterval 32比特 失效时间。如果在此时间内未收到邻居发来的Hello报文,则认为邻居失效。
Designated Router 32比特 DR的接口地址。
Backup Designated Router 32比特 BDR的接口地址。
Neighbor 32比特 邻居,以Router ID标识。

OSPF Hello 抓包:

这里写图片描述


图:OSPF报文头


OSPF DD 报文格式

DD 报文格式:

这里写图片描述

字段解释:

字段 长度 含义
Interface MTU 16比特 在不分片的情况下,此接口最大可发出的IP报文长度。
Options 8比特 可选项:E:允许Flood AS-External-LSAs;MC:转发IP组播报文;N/P:处理Type-7 LSAs;DC:处理按需链路。
I 1比特 当发送连续多个DD报文时,如果这是第一个DD报文,则置为1,否则置为0。
M (More) 1比特 当发送连续多个DD报文时,如果这是最后一个DD报文,则置为0。否则置为1,表示后面还有其他的DD报文。
M/S (Master/Slave) 1比特 当两台OSPF路由器交换DD报文时,首先需要确定双方的主从关系,Router ID大的一方会成为Master。当值为1时表示发送方为Master。
DD sequence number 32比特 DD报文序列号。主从双方利用序列号来保证DD报文传输的可靠性和完整性。
LSA Headers 可变 该DD报文中所包含的LSA的头部信息。

DD 抓包:

这里写图片描述


图: DD 报文抓包


OSPF LSR报文格式

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

LDR报文格式:

这里写图片描述

字段解释:

字段 长度 含义
LS type 32比特 LSA的类型号。
Link State ID 32比特 根据LSA中的LS Type和LSA description在路由域中描述一个LSA。
Advertising Router 32比特 产生此LSA的路由器的Router ID。

LSR抓包:

这里写图片描述


图:LSR 报文抓包


OSPF LSU报文格式

LSU报文格式:

这里写图片描述

字段解释:

字段 长度 含义
Number of LSAs 32比特 LSA的数量。

LSU抓包:

这里写图片描述


图:LSU 报文抓包


OPSF LSAck报文格式

LSAck报文格式:

这里写图片描述

字段解释:

字段 长度 含义
LSAs Headers 可变 通过LSA的头部信息确认收到该LSA。

LSAck抓包:

这里写图片描述


图:LSAck 报文抓包


常见的五种LSA

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

字段 长度 含义
LS age 16比特 LSA产生后所经过的时间,以秒为单位。无论LSA是在链路上传送,还是保存在LSDB中,其值都会在不停的增长。
Options 8比特 可选项:E:允许泛洪AS-External-LSA;MC:转发IP组播报文;N/P:处理Type-7 LSA;DC:处理按需链路。
LS type 8比特 LSA的类型:Type1:Router-LSA Type2:Network-LSA Type3:Network-summary-LSA Type4:ASBR-summary-LSA Type5:AS-External-LSA Type7:NSSA-LSA
Link State ID 32比特 与LSA中的LS Type和LSA description一起在路由域中描述一个LSA。
Advertising Router 32比特 产生此LSA的路由器的Router ID。
LS sequence number 32比特 LSA的序列号。其他路由器根据这个值可以判断哪个LSA是最新的。
LS checksum 16比特 除了LS age外其它各域的校验和。
length 16比特 LSA的总长度,包括LSA Header,以字节为单位。

Router-LSA(1类)

Router-LSA(Type1):每个路由器都会产生,描述了路由器的链路状态和花费,在所属的区域内传播。

这里写图片描述

字段 长度 含义
Link State ID 32比特 生成LSA的Router ID。
V (Virtual Link) 1比特 如果产生此LSA的路由器是虚连接的端点,则置为1。
E (External) 1比特 如果产生此LSA的路由器是ASBR,则置为1。
B (Border) 1比特 如果产生此LSA的路由器是ABR,则置为1。
# links 16比特 LSA中所描述的链路信息的数量,包括路由器上处于某区域中的所有链路和接口。
Link ID 32比特 路由器所接入的目标,其值取决于连接的类型:1:Router ID;2:DR的接口IP地址;3:网段/子网号;4:虚连接中对端的Router ID。
Link Data 32比特 连接数据,其值取决于连接的类型:unnumbered P2P:接口的索引值;stub网络:子网掩码;其它连接:路由器接口的IP地址。
Type 8比特 路由器连接的基本描述:1:点到点连接到另一台路由器;2:连接到传输网络;3:连接到stub网络;4:虚拟链路。
# TOS 8比特 连接不同的TOS数量。
metric 16比特 链路的开销值。
TOS 8比特 服务类型。
TOS metric 16比特 和指定TOS值相关联的度量。
[AR3]dis ospf 1 lsdb router self-originate OSPF Process 1 with Router ID 10.0.13.3 Area: 0.0.0.0 Link State Database Type : Router Ls id : 10.0.13.3 Adv rtr : 10.0.13.3 Ls age : 1128 Len : 36 Options : E seq# :  chksum : 0xd911 Link count: 1 * Link ID: 10.0.13.1 Data : 10.0.13.3 Link Type: TransNet Metric : 1 

Network- LSA(2类)

这里写图片描述

字段 长度 含义
Link State ID 32比特 DR的接口IP地址。
Network Mask 32比特 该广播网或NBMA网络地址的掩码。
Attached Router 32比特 连接在同一个网络上的所有路由器的Router ID,也包括DR的Router ID。
[AR2]dis ospf 1 lsdb network self-originate OSPF Process 1 with Router ID 10.0.2.2 Area: 0.0.0.0 Link State Database Area: 0.0.0.1 Link State Database Type : Network Ls id : 10.0.25.2 Adv rtr : 10.0.2.2 Ls age : 925 Len : 32 Options : E seq# :  chksum : 0xbe43 Net mask : 255.255.255.0 Priority : Low Attached Router 10.0.2.2 Attached Router 10.0.5.5 

Summary-LSA(3类)

Network-summary-LSA(Type3):描述区域内所有网段的路由,并通告给其他相关区域。

ASBR-summary-LSA(Type4):描述到ASBR的路由,通告给除ASBR所在区域的其他相关区域。

Type3和Type4的LSA有相同的格式,它们都是由ABR产生。

这里写图片描述

字段 长度 含义
Link State ID 32比特 通告的网络地址。如果是ASBR Summary LSA,此字段表示ASBR的Router ID。
Network Mask 32比特 该广播网或NBMA网络地址的掩码。如果是ASBR Summary LSA,此字段无意义,设置为0.0.0.0。
metric 24比特 到目的地址的路由开销。
TOS 8比特 服务类型。
TOS metric 24比特 和指定TOS值相关联的度量。

通告缺省路由时,Link State ID和Network Mask都设置为0.0.0.0。

[AR2]dis ospf 1 lsdb summary self-originate OSPF Process 1 with Router ID 10.0.2.2 Area: 0.0.0.0 Link State Database Type : Sum-Net Ls id : 10.0.15.0 Adv rtr : 10.0.2.2 Ls age : 199 Len : 28 Options : E seq# :  chksum : 0xda55 Net mask : 255.255.255.0 Tos 0 metric: 2 Priority : Low 

ASBR-Summary-LSA(4类)

ASBR-Summary-LSA(Type4):描述到ASBR的路由,通告给除ASBR所在区域的其他相关区域。

Type3和Type4的LSA有相同的格式,它们都是由ABR产生。

AS-External-LSA(5类)

AS-External-LSA(Type5):由ASBR产生,描述到AS外部的路由,这是五种LSA中,唯一一种通告到所有区域(除了Stub区域和NSSA区域)的LSA。

这里写图片描述

字段 长度 含义
Link State ID 32比特 通告的网络地址。
Network Mask 32比特 通告的目的地址的掩码。
E 1比特 外部度量值类型:0:第一类外部路由;1:第二类外部路由。
metric 24比特 到目的地址的路由开销。
Forwarding Address 32比特 到所通告的目的地址的报文将被转发到这个地址。
External Route Tag 32比特 添加到外部路由上的标记。OSPF本身并不使用这个字段,它可以用来对外部路由进行管理。
TOS 8比特 服务类型。
TOS metric 24比特 TOS附加距离信息。

Type5的LSA可以用来通告缺省路由,此时Link State ID和Network Mask都设置为0.0.0.0。

<AR3>dis ospf lsdb ase OSPF Process 1 with Router ID 10.0.13.3 Link State Database Type : External Ls id : 192.168.10.0 Adv rtr : 10.0.4.4 Ls age : 766 Len : 36 Options : E seq# :  chksum : 0x48fe Net mask : 255.255.255.0 TOS 0 Metric: 1 E type : 2 Forwarding Address : 0.0.0.0 Tag : 1 Priority : Low 

这里写图片描述


图:5类LSA抓包示例



参考文档:华为HedEx文档


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/231628.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 一个Web前端自学者的自述「建议收藏」

    一个Web前端自学者的自述「建议收藏」想来想去还是写下这篇文章,先说明,我精通JAVA编程语言和web前端常见的技术,个人是做JAVA的多,但是更加喜欢前端。因为我从高一开始接触JAVA,家父是黑马的JAVA讲师,自己对编程很热爱,在大学

    2022年8月1日
    4
  • 使用python代码画折线图【matplotlib】

    使用python代码画折线图【matplotlib】1、画折线图【一条示例】importmatplotlib.pyplotaspltimportnumpyasnpx_axis_data=[1,2,3,4,5,6,7]#xy_axis_data=[68,69,79,71,80,70,66]#yplt.plot(x_axis_data,y_axis_data,’b*–‘,alpha=0.5,linewidth=1,label=’acc’)#’bo-‘表示蓝色实线,数据点实心原点标注##plot中参数的含义分别

    2025年5月27日
    3
  • leetcode-41缺失的第一个正数

    leetcode-41缺失的第一个正数原题链接给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。进阶:你可以实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案吗?示例 1:输入:nums = [1,2,0]输出:3示例 2:输入:nums = [3,4,-1,1]输出:2示例 3:输入:nums = [7,8,9,11,12]输出:1 提示:0 <= nums.length <= 300-231 <= nums[i] <= 231 – 1题解

    2022年8月8日
    15
  • Java WeakHashMap

    Java WeakHashMap作为一个java开发者肯定都知道且使用HashMap,但估计大部分人都不太知道WeakHashMap。从类定义上来看,它和普通的HashMap一样,继承了AbstractMap类和实现了Map接口,也就是说它有着与HashMap差不多的功能。那么既然jdk已经提供了HashMap,为什么还要再提供一个WeakHashMap呢?黑格尔曾经说过,存在必合理,接下来我们来看下为什么有WeakHashM…

    2022年5月31日
    33
  • keypad driver

    keypad driver键盘是6×6矩阵式,在网上下了对应的PATCH,下载地址是https://patchwork.kernel.org/patch/71857/ 这个补丁会创建两个文件arch/arm/plat-mxc/include/mach/mxc_keypad.h//mxc_keypad_platform_data键盘平台设备的结构体/drivers/input/keyboard/mxc_

    2022年4月27日
    45
  • mysql 字符串转数字并排序

    mysql 字符串转数字并排序使用二级查询首先将字符串的列转成数字,然后排序select*from (selectCONVERT(k.key,SIGNED)askid,pathfromkpvk)tORDERBYt.kidasc;

    2022年5月30日
    45

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号