OSPF报文格式详解

1      OSPF报文类型数据库

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

1.        Hello报文:周期性发送,用于发现和维持OSPF邻居关系;ide

2.        DD报文(DataBase Description Packet):数据库描述报文,描述本地LSDB的摘要信息,用于两台路由器进行数据库同步;ui

3.        LSR报文(Link State Request Packet):链路状态请求报文,向对方请求所须要的LSA;spa

4.        LSU报文(Link State Update Packet):链路状态更新报文,向对方发送其所须要的LSA或者泛洪本身更新的LSA;3d

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

Hello报文和LSAck报文不须要确认。router

2      OSPF 报文头blog

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

2


Version:8bit,OSPFv2值为2,OSPFv3值为3;

Type:8bit,OSPF报文类型,1:hello,2:DD,3:LSR,4:LSU,5:LSAck;

Packet length:16bit,OSPF报文总长度,包括报文头在内,单位Byte;

Router ID:32bit,发送该报文的路由器标识,恰好为IP地址长度;

Area ID:32bit,发送该报文的路由器接口所属区域;

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

Autype:16bit,验证类型,0:不验证;1:简单认证;2:MD5认证;

Authentication:64bit,鉴定字段,其数值根据验证类型而定。当验证类型为0时未做定义;类型为1时此字段为密码信息;类型为2时此字段包括Key ID、MD5验证数据长度和序列号的信息。MD5验证数据添加在OSPF报文后面,不包含在Authenticaiton字段中

抓包举例

2.2

2.3



3      OSPF Hello报文格式

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

3


Network Mask:32bit,发送Hello报文接口所在的子网掩码;

Hello interval:16bit,发送hello报文的时间间隔;

Options:8bit,可选项,E:容许泛洪 AS-External-LSAs,MC:转发IP组播报文,N/P:处理Type-7 LSAs,DC:处理按需链路;

Rtr Pri:8bit,DR优先级,默认为1,若是为0不参与DR/BDR选举;

Router Dead Interval:32bit,失效时间。若是在此时间内未收到邻居发来的Hello报文,则认为邻居失效;

Designated Router:32bit,本网段DR的接口地址;

Backup Designated Router:32bit,本网段BDR的接口地址;

Neighbor:32bit,邻居列表,以router ID标识;

抓包举例

3.1

3.2



4      OSPF DD报文格式

两台路由器在邻接关系初始化时,用DD报文(DataBase Description Packet)描述本身的LSDB,进行数据库的同步。报文内容包括LSDB的每一条LSA的Header(LSA的header能够惟一标识一条LSA)。LSA Header只占一条LSA整个数据量的一小部分,这样能够减小路由器之间的协商报文流量,对端路由器根据LSA Header就能够判断出是否已有这条LSA。两台路由器在交换DD报文过程当中,一台为Master,一台为Slave,Master规定起始序列号,每发送一个DD报文序列号加1,Slave方使用Master的序号做为确认。

4


Interface MTU:16bit,表示部分片状况下,此接口可发出的最大IP报文长度,默认不填充时为0;

Options:8bit,同hello报文的option;

I(Initialization)位:1bit,初始位,当发送连续多个DD报文时,若是这是第一个DD报文,则置为1,不然置为0;

M (More):1bit,当发送连续多个DD报文时,若是这是最后一个DD报文,则置为0。不然置为1,表示后面还有其余的DD报文

M/S (Master/Slave):1bit,当两台OSPF路由器交换DD报文时,首先须要肯定双方的主从关系,Router ID大的一方会成为Master。当值为1时表示发送方为Master

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

LSA Headers:可变,该DD报文中所包含的LSA的头部信息。

抓包举例:

4.1


5      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的新旧

5

LS type:32bit,LSA的类型号;

Link State ID:32bit,根据LSA中的LS Type和LSA description在路由域中描述一个LSA;

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

抓包举例:

5.1

6      OSPF LSU报文格式

用来向对端Router发送其所须要的LSA或者泛洪本身更新的LSA,内容是多条LSA(所有内容)的集合。LSU报文(Link State Update Packet)在支持组播和广播的链路上是以组播形式将LSA泛洪出去。为了实现Flooding的可靠性传输,须要LSAck报文对其进行确认。对没有收到确认报文的LSA进行重传,重传的LSA是直接发送到邻居的。

6

Number of LSAs:32bit,LSA的数量;

LSAs…:多个完整的LSA。经常使用的LSA共有5种,分别为:Router-LSA、Network-LSA、Network-summary-LSA、ASBR-summary-LSA和AS-External-LSA。全部的LSA都有相同的报文头

抓包举例:

6.1


6.1    LSA报文头

全部的LSA都有相同的报文头

6.11

LS age:16bit,LSA产生后所通过的时间,单位秒,不管是链路上传送仍是保存在LSDB中,其值是一直增加的,默认每通过一台路由器加1,若是LS age高位为1,表明进入LSDB后不老化,仅出如今DemandCircuit(按需)链路上;

Options:8bit,同Hello的option;

LS type:8bit,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:32bit,与LSA中的LS Type和LSA description一块儿在路由域中描述一个LSA;

Advertising Router:32bit,产生此LSA的路由器的Router ID;

LS sequence number:32bit,LSA的序列号。其余路由器根据这个值能够判断哪一个LSA是最新的;

LS checksum:16bit,除了LS ag e外其它各域的校验和;

Length:16bit,LSA的总长度,包括LSA Header,以字节为单位。

抓包举例:

6.12


6.2    Router-LSA格式

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

6.21

Router-LSA的Link State ID为生成LSA的Router ID

V (Virtual Link):1bit,若是产生此LSA的路由器是虚链接的端点,则置为1;

E (External):1bit,若是产生此LSA的路由器是ASBR,则置为1;

B (Border):1bit,若是产生此LSA的路由器是ABR,则置为1;

# links:16bit,LSA中所描述的链路信息的数量,包括路由器上处于某区域中的全部链路和接口;

Link ID:32bit,路由器所接入的目标,其值取决于链接的类型:

       1:Router ID(P2P链路状况下);

2:DR的接口IP地址(MA类型链路状况下);

3:网段/子网号(Stub网络状况下);

4:虚链接中对端的Router ID(Vlink状况下)。

Link Data:32bit,链接数据,其值取决于链接的类型:

unnumbered P2P(P2P使用借用地址状况下):接口的索引值;

stub网络:子网掩码;

其它链接:路由器接口的IP地址。

Type:8bit,路由器链接的基本描述:

1:点到点链接到另外一台路由器;

2:链接到传输网络;

3:链接到stub网络;

4:虚拟链路。

# TOS:8bit,链接不一样的TOS数量;

Metric:16bit,链路的开销值;

TOS:8bit,服务类型;

TOS metric:16bit,和指定TOS值相关联的度量。

抓包举例:

6.22

6.23

6.3    Network-LSA格式

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

6.31

Network-LSA的Link State ID为DR的接口IP地址

Network Mask:32bit,该广播网或NBMA网络地址的掩码;

Attached Router:32bit,链接在同一个网络上的全部路由器的Router ID,也包括DR的Router ID。

抓包举例:

6.32

6.4    Summary-LSA格式

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

Network-summary-LSA(Type3):描述区域内全部网段的路由,由ABR产生并通告给其余相关区域。LSA3在区域间传递,但该LSA3泛洪范围只在一个区域内。

ASBR-summary-LSA(Type4):描述到ASBR的路由,通告给除ASBR所在区域的其余相关区域。该LSA4的泛洪范围仅在一个区域,ABR会在区域边界为其余区域再产生LSA4并继续泛洪

6.41


Sunmmary-LSA的Link State ID为通告的网络地址;

ASBR-summary-LSA的Link State ID为ASBR的Router ID。

Network Mask:32bit,该广播网或NBMA网络地址的掩码。若是是ASBR Summary LSA,此字段无心义,设置为0.0.0.0。

Metric:24bit,到目的地址的路由开销;

TOS:8bit,服务类型;

TOS metric:24bit,和指定TOS值相关联的度量。

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

抓包举例:

6.42


6.5    AS-External-LSA格式

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

6.51


AS-External-LSA的Link State ID为通告的网络地址

Network Mask:32bit,通告的目的地址的掩码;

E:1bit,外部度量值类型:0:第一类外部路由;1:第二类外部路由;

Metric:24bit,到目的地址的路由开销;

Forwarding Address:32bit,到所通告的目的地址的报文将被转发到这个地址;

External Route Tag:32bit,添加到外部路由上的标记。OSPF自己并不使用这个字段,它能够用来对外部路由进行管理;

TOS:8bit,服务类型;

TOS metric:24bit,TOS附加距离信息。

抓包举例:

6.52


NSSA AS-External-LSA(Type7):由ASBR产生,NSSA区域描述到AS外部的路由。


注:LSA 7的forwarding address必定是非0.

抓包举例:

6.53

注:LSA 7的forwarding address必定是非0.

7      OSPF LSAck报文格式

用来对接收到的LSU报文进行确认。内容是须要确认的LSA的Header(一个LSAck报文可对多个LSA进行确认)。LSAck(Link State Acknowledgment Packet)报文根据不一样的链路以单播或组播的形式发送。

7


LSAs Headers:可变,经过LSA的头部信息确认收到该LSA。

抓包举例:

7.1


8      关于LSA1的Link ID、Link Data、Link Type

Type

描述

Link ID

Link Data

Link Type

Point-to-Point

点对点类型链路

邻居路由器的Router ID

本身的接口IP地址
(地址借用状况下为接口的索引值)

1

TransNetwork

MA类型链路

DR的接口IP地址

本身的接口IP地址

2

StubNetwork

末节类型链路(网络)

网络号

网络掩码

3

Virtual Link

虚拟点到点链路

Vlink对端ABR的Router ID

本地Vlink的IP地址

4

 

9      关于Link State ID的总结

1.       Router-LSA(Type1)的Link ID为Link State ID生成LSA的Router ID

2.       Network-LSA(Type2)的Link ID为DR的接口IP地址

3.       Summary-LSA(Type3和Type4)的Link ID为通告的网络地址

4.       ASBR-summary-LSA(Type5和Type7)的Link ID为ASBR的Router ID

相关文章
相关标签/搜索