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
