OSPF报文介绍和格式:

五种报文类型

OSPF报头格式
OSPF报文直接封装为IP协议报文,因为OSPF是专为TCP/IP网络而设计的路由协议。以上所说到的五种OSPF报文使用相同的OSPF报头格式,如下图所示:

  1. Version
    版本字段,占1个字节,指出所采用的OSPF协议版本号,目前最高版本为OSPF v4,即值为4(对应二进制就是0100)。
  2. Packet Type
    报文类型字段,标识对应报文的类型。前面说了OSPF有5种报文,分别是:Hello报文、DD报文、LSR报文、LSU报文、LSAck报文。具体将在下面各小节介绍。
  3. Packet Length:包长度字段,占2个字节。它是指整个报文(包括OSPF报头部分和后面各报文内容部分)的字节长度。
  4. Router ID:路由器ID字段,占4个字节,指定发送报文的源路由器ID。
  5. Area ID:区域ID字段,占4个字节,指定发送报文的路由器所对应的OSPF区域号。
  6. Checksum:校验和字段,占2个字节,是对整个报文(包括OSPF报头和各报文具体内容,但不包括下面的Authentication字段)的校验和,用于对端路由器校验报文的完整性和正确性。
  7. AuType:认证类型字段,占2个字节,指定所采用的认证类型,0为不认证,1为进行简单认证,2采用MD5方式认证。
    Authentication:认证字段,占8个字节,具体值根据不同认证类型而定:认证类型为不认证时,此字段没有数据,认证类型为简单认证时,此字段为认证密码,认证类型为MD5认证时,此字段为MD5摘要消息。

OSPF Hello报文及格式
OSPF协议使用一种称之为Hello的报文来建立和维护相邻邻居路由器之间的链接关系。这个报文很简单的,容量很小,仅用来向邻居路由器证明自己的存在,就像人与人之间的打招呼一样。RIP邻居路由器之间的邻接关系建立是都是定期的路由更新报文进行的,通过定期的路由更新来同时向邻居RIP路由器证明自己的存在。显然OSPF的这种Hello报文更简单,可大大减小网络中的报文传输流量。

Hello报文被周期性(默认为10秒)地发向邻居路由器接口发送,如果在设定时间(默认为40秒,通常至少是Hello包发送时间间接4倍)内没有收到对方OSPF路由器发送来的Hello报文,则本地路由器会认为该对方路由器无效。报文内容包括一些定时器设置、DR、BDR以及本路由器已知的邻居路由器。整个Hello报文格式如下图所示:

  1. Network Mask 4字节 发送Hello报文接口所在的子网掩码。
  2. HelloInterval 2字节 指定发送Hello报文的时间间隔,默认为10秒。
  3. Options 1字节 可选项,包括E:允许泛洪AS-external-LAS;MC:允许转发IP组皤报文;N/P:允许处理Type 7 LSA; DC:允许处理按需链路。
  4. Rtr Pri 1字节 指定DR优先级,默认为1。如果设为0,则表示本路由器不参与DR/BDR选举。
    RouterDeadInterval 4字节 指定路由器失效时间,默认为40秒。如果在此时间内没有收到邻居路由器发来的Hello报文,则认为该邻居路由器已失效。
  5. Designated Router 4字节 指定DR的接口IP地址。
  6. Backup Designated Router 4字节 指定BDR的接口IP地址。
  7. Neighbor 4字节 指定邻居路由器的RID。下面的省略号(…)表示可以指定多个邻居路由器RID。

OSPF DD报文及格式
DD报文是用来描述本地路由器的链路状态数据库(LSDB),在两个OSPF路由器初始化连接时要交换DD报文,进行数据库同步。

DD报文内容部分包括:DD报文序列号和LSDB中每一条LSA的头部等,对端路由器根据所收到的DD报文中的OSPF报头就可以判断出是否已有这条LSA。由于数据库的内容可能相当长,所以可能需要多个数据库描述报文来描述整个数据库。所以有三个专门用于标识数据库描述报文序列的比特位,即DD报文格式中的I、M和M/S这三位。接收方对报文的重新排序使其能够真实地复制数据库描述报文。

DD交换过程按询问/应答方式进行,在DD报文交换中,一台为Master(主)角色,另一台为Slave(从)角色。Master路由器向从路由器发送它的路由表内容,并规定起始序列号,每发送一个DD报文,序列号加1,Slave则使用Master的序列号进行确定应答。但是显然,主从之间的关系会因每个DD交换的不同而不同。网络中的所有路由器会在不同时刻作用,在这个过程中既可能是主路由器又可能是从路由器。

  1. Interface MTU 2字节 指出发送DD报文的接口在不分段的情况下,可以发出的最大IP报文长度。
  2. Options 1字节 可选项,包括E:允许泛洪AS-external-LAS;MC:允许转发IP组播报文;N/P:允许处理Type 7 LSA; DC:允许处理按需链路。
  3. I 1比特 指定在连续发送多个DD报文,如果是第一个DD报文则置1,其它的均置0。
  4. M 1比特 指定在连续发送多个DD报文,如果是最后一个DD报文则置0,否则均置1。
  5. M/S 1比特 设置进行DD报文双方的主从关系,如果本端是Master角色,则置1,否则置0。
  6. DD Sequence Number 4字节 指定所发送的DD报文序列号。主从双方利用序列号来确保DD报文传输的可靠性和完整性。
  7. LSA Heaader 4字节 指定DD报文中所包括的LSA头部。后面的省略号(…)表示可以指定多个LSA头部。

OSPF LSR报文及格式
LSR报文用于请求相邻路由器链路状态数据库中的一部分数据。当两台路由器互相交换完DD报文后,知道对端路由器有哪些LSA是本LSDB所没有的,以及哪些LSA是已经失效的,则需要发送一个LSR报文,向对方请求所需的LSA。LSR报文内容包括所需的LSA摘要,如图:

  1. LS type 4字节 指定所请求的LSA类型,主要共6类。
  2. Link State ID 4字节 用于指定ospf所描述的部分区域,该字段的使用方法根据不同的LSA类型而不同:当为LSA 1时,该字段值是产生LSA 1的路由器的Router-ID,当为LSA 2时,该字段值是DR的接口地址,当为LSA 3时,该字段值是目的网络的网络地址,当为LSA 4时,该字段值是ASBR的Router-ID,当为LSA 5时,该字段值是目的网络的网络地址。
  3. Advertising Router 4字节 指定产生此所要请求的LSA的路由器ID。

如上三个字段可以表示唯一的一个LSA,一个LSR报文可以请求多个LSA。

OSPF LSU报文及格式
LSU报文是应LSR报文的请求,用来向对端路由器发送所需的LSA,内容是多条LSA完整内容的集合,LSU报文内容部分包括此次共发送的LSA数量和每条LSA的完整内容。

LSU报文在支持组播和多路访问的链路上是以组播方式将LSA泛洪出去的,并且对没有收到对方确认应答(就是下面将要介绍的LSAck报文)的LSA进行重传,但重传时的LSA是直接送到没有收到确认应答的邻居路由器上,而不再是泛洪。

  1. Number of LSA 4字节 指定此报文中共发送的LSA数量。
  2. LSAs 4字节 是一条条具体的LSA完整信息,后面的省略号表示可多条LSA。

OSPF LSAck报文及格式

LSAck报文是路由器在收到对端发来的LSU报文后所发出的确认应答报文,内容是需要确认的LSA头部(LSA Headers),整个LSAck报文的格式如图所示。LSAck报文根据不同链路以单播或组播形式发送。

LSA报文格式:

常见LSA报文类型:

常用的LSA共有6种,分别为:Router-LSA、Network-LSA、Network-summary-LSA、ASBR-summary-LSA、AS-External-LSA和NSSA LSA。 所有的LSA都有相同的报文头:

LSA头部:

  1. LS age 16比特 LSA产生后所经过的时间,单位是秒。无论LSA是在链路上传输,还是保存在LSDB中,其值都会在不停的增长。
  2. Options 8比特
  3. 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。
  4. Link State ID 32比特 与LS Type一起描述路由域中唯一一个LSA。
  5. Advertising Router 32比特 产生此LSA的路由器的Router ID。
  6. LS sequence number 32比特 LSA的序列号。其他路由器根据这个值可以判断哪个LSA是最新的。
  7. LS checksum 16比特 除了LS age外其它各域的校验和。
  8. length 16比特 LSA的总长度,包括LSA Header,以字节为单位。

Option字段补充:

DN:用来避免在MPLS VPN中出现环路。当PE向CE发送3类、5类和7类LSA时需要设置DN位,其他PE路由器从CE接收到该LSA时,不能够在它的OSPF路由计算中使用该LSA。
O:该字段指出始发路由器支持Opaque LSA(类型9、类型10和类型11)。
DC位:当始发路由器支持按需链路上的OSPF的能力时,该位将被设置。
EA:当始发路由器具有接收和转发External-Attributes-LSA(type8 LSA)的能力时,该位被置位。
N位:只用在Hello数据包中。N=1表明路由器支持7类LSA。N=0表明该路由器将不接收和发送NSSA LSA。
P位:只用在NSSA LSA。该位将告诉NSSA区域的ABR路由器将7类LSA转换为5类LSA。

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

  1. Link State ID 32比特 生成LSA的Router ID。
    V(Virtual Link) 1比特 如果产生此LSA的路由器是虚连接的端点,则置为1,否则置为0。
    E(External) 1比特 如果产生此LSA的路由器是ASBR(AS Boundary Router),则置为1,否则置为0。
    B(Border) 1比特 如果产生此LSA的路由器是ABR(Area Border Router),则置为1,否则置为0。
  2. links 16比特 LSA中所描述的链路信息的数量,包括路由器上处于某区域中的所有链路和接口。
  3. Link ID 32比特 路由器所接入的目标,其值取决于连接的类型:
    • P2P:点到点连接Router ID。
    • TransNetwork:DR(Designated Router)的接口IP地址。
    • StubNetwork:网段/子网号。
    • Virtual Link:虚连接中对端的Router ID。
  4. Link Data 32比特 连接数据,其值取决于连接的类型:
    • P2P:自己接口IP地址。
    • TransNetwork:自己接口IP地址。
    • StubNetwork:网络掩码。
    • Virtual Link:本地Vlink的IP地址。
  5. Type 8比特 路由器连接的基本描述:
    • 1:点到点(P2P)。
    • 2:连接到传输网络(TransNetwork)。
    • 3:连接到stub网络(StubNetwork)。
    • 4:虚拟链路(Virtual Link)。
  6. #ToS 8比特 服务类型ToS(Type of Service)数量。
  7. metric 16比特 链路的开销值。
  8. ToS 8比特 服务类型ToS。
  9. ToS metric 16比特 和指定ToS值相关联的度量。

Network-LSA(Type2):
由广播网或NBMA网络中的DR产生,PPP网络类型下不存在,Network-LSA中记录了这一网络上所有路由器的Router ID,描述本网段的链路状态,在所属的区域内传播。

  1. Link State ID 32比特 DR的接口IP地址。
  2. Network Mask 32比特 该广播网或NBMA网络地址的掩码。
  3. Attached Router 32比特 连接在同一个网络上的所有路由器的Router ID,也包括DR的Router ID。

Network-summary-LSA(Type3)和ASBR-summary-LSA(Type4):
Type3和Type4的LSA有相同的格式,它们都是由ABR产生,为了防止环路,都遵循水平分割原则。
三类LSA描述区域内所有网段的路由,可以通告给其他相关区域。
四类描述到ASBR的路由,通告给除ASBR所在区域的其他相关区域,告知去往ASBR的下一跳是什么,设备与ASBR在同一区域内不需要4类LSA。

  1. Link State ID 32比特 通告的网络地址。
  2. Network Mask 32比特 该广播网或NBMA网络地址的掩码。
  3. metric 24比特 到目的地址的路由开销。
  4. ToS 8比特 服务类型ToS。
  5. ToS metric 24比特 和指定ToS值相关联的度量。

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

AS-External-LSA(Type5)和NSSA-LSA(Type7):
五类LSA由ASBR产生,描述到AS外部的路由,这是五种LSA中,唯一一种通告到所有区域(除了Stub区域和NSSA区域)的LSA(不遵循水平分割原则)。
七类LSA作用和五类LSA一致,主要是代替5类LSA存在与于NSSA区域中,有相同的格式、包括外部路由及掩码、Forwading-address Tag、Cost-Type及Cost。(具体不同点在特殊区域中分析)

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

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

其余LSA:

总结:

归纳资料:华为hedex文档

OSPF报文分类与格式相关推荐

  1. HCNP——OSPF报文类型的五种格式

    224.0.0.5:该组播IP地址意指所有的OSPF路由器. 224.0.0.6:该组播IP地址意指所有的OSPF DR路由器. OSPF一共定义了五种报文,各有各的用途. 类型 报文名称 报文描述 ...

  2. ospf hello时间和dead_深入理解OSPF协议----第二讲:OSPF报文类型

    各位小伙伴们:大家好,!今天让我们来继续一起聊聊OSPF协议:通过上一节的介绍,我们已经知道OSPF路由设备之间交流的是LSA(链路状态通告),并不是路由表:后续几节想给大家讲讲OSPF邻居之间是如何 ...

  3. 【计算机网络】传输层 : TCP 协议 ( TCP 协议特点 | TCP 报文段首部格式 | TCP 报文段控制位 )

    文章目录 一.TCP 协议 特点 二.TCP 报文段首部格式 三.TCP 报文段首部 666 控制位 一.TCP 协议 特点 TCP 协议 特点 : ① 面向连接 : TCP 协议的连接是 " ...

  4. OSPF报文详解——LSA概述

    目录 一.OSPF报文详解: (1)---OSPF头部分析: (2)---hello字段分析: 二.LSA报文--链路状态通告 (1)---简介: (2)---头部信息: (3)---数据部分: 一. ...

  5. 【OSPF的特殊区域和特性】ospf的lsdb优化、特殊区域、路由汇总、静默接口、ospf报文认证、LSA路由汇总、高级特性(PRC、智能计时器、FRR、ospf database overflow)

    目录 一.路由汇总 1)区域间路由汇总:在ABR上汇总 LSA 3 2)外部路由汇总:在ASBR汇总 LSA 5.LSA 7(nssa场景使用) 外部路由缺省 3) 避免环路在汇总路由器上配一个空接口 ...

  6. 一款可编程的的串口调试工具 报文分类 脚本编程

    下载链接链接: [https://download.csdn.net/download/weixin_41617063/85373149] 软件说明 一.软件基础功能: a.串口接收. b.串口发送. ...

  7. 六、QOS实现报文分类与标记

    报文分类与标记 报文分类与标记 1.1.优先级映射是什么? 1.2.802.1P优先级 1.3.IP Precedence优先级 1.4.DSCP优先级 1.5.服务等级 1.6.服务等级规范定义 1 ...

  8. Labview 用DBC文件解析CAN报文以及DBC格式发送CAN,调用的dll有说明文档

    Labview 用DBC文件解析CAN报文以及DBC格式发送CAN,调用的dll有说明文档. 2013,2016,2019版本. 参考程序后续可以自己改动. YID:5120624571656370

  9. Anycast功能原理OSPF报文分析-上手必看

    系列文章目录 Anycast介绍及应用场景 OSPF报文分析 BFD与OSPF联动 OSPF-常见问题 文章目录 系列文章目录 Anycast介绍及应用场景 OSPF报文分析 BFD与OSPF联动 O ...

  10. 常见网络报文数据包格式

    当我们应用程序用TCP传输数据的时候,数据被送入协议栈中,然后逐个通过每一层,知道最后到物理层数据转换成比特流,送入网络.而再这个过程中,每一层都会对要发送的数据加一些首部信息.整个过程如下图. 以太 ...

最新文章

  1. hadoop1.x 与hadoop2.x 架构变化分析
  2. 智源大会“人工智能伦理、治理与可持续发展论坛”超5000人线上参会,专家敦促全球多边协作...
  3. 剑指offer 面试题三 找出数组中重复的数字
  4. xs_run加密还原
  5. python网络爬虫的论文模板_Python简单网络爬虫实战—下载论文名称,作者信息(上)...
  6. PhpStorm+Xdebug断点调试环境搭建
  7. 畅销书《深入浅出Vue.js》作者,在阿里淘系1年的收获成长
  8. 路由器和网关的区别?
  9. vue做混合式app_Vue+原生App混合开发手记#1
  10. centos7恢复mysql数据库_mysql数据库恢复过程记录
  11. 补习系列(15)-springboot 分布式会话原理
  12. MATLAB字符数组和空数组
  13. 黑群晖 7.0 安装
  14. 一、简单刷题APP(题库是Excel)之项目功能和效果图
  15. 他一年写了200篇原创笔记,帮助你快速入门Python与机器学习
  16. 【xubuntu-22.04】精简模式,给intel 盒子安装系统,使用稳定,内存cpu占用低,比之前的版本更加稳定,可以做个服务器使用,也可以上网,功耗低
  17. 单片机c语言给变量赋值,单片机c语言变量的定义和赋值
  18. Webots学习笔记(四)---舵轮模型
  19. ajax读取文件数据,Ajax 实现读取 properties 格式资源文件数据
  20. 国王游戏 [NOIP2012 提高组]

热门文章

  1. 机器学习—线性回归推广及案例
  2. pandas之get_dummies
  3. 【图文+代码】不客气的说,这可能是你距离深入理解Java接口最近的一次
  4. 每周荐书:Web扫描、HTML 5、Python(评论送书)
  5. 软件测试管理是什么?
  6. 188. 买卖股票的最佳时机 IV
  7. 32线性空间06——行空间和左零空间
  8. SciPy教程 - 常数constants和特殊函数库special
  9. TF-IDF算法的介绍
  10. opencv 图像旋转_图像数据集增强方式总结和实现【数字图像处理系列四】