OSPF报文格式
OSPF用IP报文直接封装协议报文,协议号为89。OSPF分为5种报文:Hello报文、DD报文、LSR报文、LSU报文和LSAck报文。
hello报文
最常用的一种报文,其作用为建立和维护邻接关系,周期性的在使能了OSPF的接口上发送。报文内容包括一些定时器的数值、DR、BDR以及已知的邻居
hello报文字段解释
字段名 | 长度 | 含义 |
---|---|---|
Network Mask | 32比特 | 发送Hello报文的接口所在网络的掩码 |
HelloInterval | 16比特 | 发送Hello报文的时间间隔 |
Options | 8比特 | 可选:E:允许Flood AS-External-LSAs、N/P:处理Type-7 LSAs、DC:处理按需链路 |
Rtr Pri | 8比特 | DR优先级。默认为1 |
RouterDeadInterval | 32比特 | 失效时间。如果在此时间内未收到邻居发来的Hello报文,则认为邻居失效 |
Designated Router | 32比特 | DR的接口地址 |
Backup Designated Router | 32比特 | BDR的接口地址 |
Network Mask | 32比特 | 发送Hello报文的接口所在网络的掩码。 |
Neighbor | 32比特 | 邻居,以Router ID标识 |
## DD报文 | ||
两台设备在邻接关系初始化时,用DD报文描述本端设备的LSDB,进行数据库的同步。报文内容包括LSDB中每一条LSA的Header(LSA的Header可以唯一标识一条LSA)。LSA Header只占一条LSA的整个数据量的一小部分,这样可以减少设备之间的协议报文流量,对端设备根据LSA Header就可以判断出是否已有这条LSA。在两台设备交换DD报文的过程中,一台为Master,另一台为Slave。由Master规定起始序列号,每发送一个DD报文序列号加1,Slave方使用Master的序列号作为确认。 | ||
### DD报文格式字段解释 | ||
字段名 | 长度 | 含义 |
- | - | - |
Interface MTU | 16比特 | 在不分片的情况下,此接口最大可发出的IP报文长度 |
Options | 8比特 | 可选:E:允许Flood AS-External-LSAs、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的头部信息 |
## LSR报文 | ||
两台设备互相交换过DD报文之后,需要发送LSR报文向对方请求更新LSA,内容包括所需要的LSA的摘要信息。 | ||
### LSR报文格式字段解释 | ||
字段名 | 长度 | 含义 |
- | - | - |
LS type | 32比特 | LSA的类型号 |
Link State ID | 32比特 | 与LS Type一起描述路由域中唯一一个LSA |
Advertising Router | 32比特 | 产生此LSA的设备的Router ID |
## LSU报文 | ||
LSU报文用来向对端设备发送其所需要的LSA或者泛洪本端更新的LSA,内容是多条LSA(全部内容)的集合。LSU报文在支持组播和广播的网络中是以组播形式将LSA泛洪出去。为了实现Flooding的可靠性传输,需要LSAck报文对其进行确认,对没有收到确认报文的LSA进行重传,重传的LSA是直接发送到邻居的。 | ||
### LSU报文格式字段解释 | ||
字段名 | 长度 | 含义 |
- | - | - |
Number of LSAs | 32比特 | LSA的数量 |
## LSAck报文 | ||
LSAck报文用来对接收到的LSU报文进行确认,内容是需要确认的LSA的Header(一个LSAck报文可对多个LSA进行确认)。LSAck报文根据不同的链路以单播或组播的形式发送 | ||
### LSAck报文格式字段解释 | ||
字段名 | 长度 | 含义 |
- | - | - |
LSAs Headers | 由需要确认的LSA的Header长度决定 | 通过LSA的头部信息确认收到该LSA |