一、链路状态数据的结构
每个LSA条目都有老化定时器(aging timer),它存储在链路状态年龄(age)字段中。在默认情况下,30分钟(在年龄字段中,以秒为单位)后,最初发送该条目的路由器发送一个链路状态更新(LSU),其中包含序列号更高的LSA,以核实链路还处于活动状态。LSA到达其最大寿命(maxage)60分钟后,将被丢弃。LSU可以包含一个或多个LSA。与距离矢量路由器频繁地定期发送整个路由表相比,这种LSA有效性验证方法占用的带宽更少。
如下图所示,收到LSU后,路由器这样做。
- 如果LSDB中没有这样的条目,则将其加入到LSDB中,返回一个链路状态确认(LSAck),将该信息扩散到其他路由器,运行SPF,并更新其路由表。
- 如果有这样的条目,且LSU中包含的信息与之相同,则忽略它。
- 如果有这样的条目,但是LSU中包含的信息更新,则将其加入到LSDB中,返回一个LSAck,将该信息扩散到其他路由器,运行SPF,并更新其路由表。
- 如果有这样的条目,但LSU中包含的信息更旧,则将一个包含新信息的LSU发送给发送方。
二、OSPF的五种包
OSPF执行多种功能,其中包括:
填充好路由表后,链路的状态可能发生变化。OSPF检查到这种变化后,在区域内泛洪有关这种变化的信息(还可能将其泛洪到其它区域),以维护所有邻接路由器的LSDB。
本文介绍如下表所示的5种OSPF分组,并阐述在什么地方及如何使用它们来建立OSPF邻接关系和维护OSPF拓扑数据库。
这5种OSPF分组都被直接封装到IP分组的有效负载中,如下图所示,OSPF分组不使用传输控制协议(TCP)和用户数据报协议(UDP)。OSPF要求使用可靠的分组传输机制,但由于没有使用TCP,OSPF将使用确认分组(5类OSPF分组)来实现自己的确认机制
如上图所示,IP报头中的协议标识符89表示OSPF分组。所有OSPF分组开头的报头格式都相同,该报头中包含以下字段。
- 版本号:对于OSPF第2版(用于IPv4的最新OSPF版本),设置为2。后面会介绍用于IPv6的OSPF第3版。
- 分组类型:区分5种OSPF分组的长度,单位为字节。
- 分组长度:OSPF分组的长度,单位为字节。
- 路由器ID:标识最初发送分组的路由器。
- 区域ID:指出分组来自哪个区域。
- 校验和:用于分组报头错误检测,确保OSPF分组在传输过程中未受损。
- 身份验证类型:一个OSPF选项,指出路由器不进行身份验证、使用明文密码进行身份验证还是使用加密的消息摘要5(MD5)进行身份验证。
- 身份验证:同身份验证类型结合使用。
- 数据:包含的信息随OSPF分组类型而异。
- 对于Hello分组,包含一个由已知邻居组成的列表。
- 对于DBD分组,包含LSDB摘要,其中包括所有已知路由器的ID、最后使用的序列号以及一些其他字段。
- 对于LSR分组,包含需要的LSU类型和能够提供所需LSU的路由器ID。
- LSU分组,包含完整的LSA条目,一个OSPF更新分组中可以包含多个LSA条目。
- 对于LSAck分组,该字段为空。
OSPF内容比较多.会继续连载…..