一、链路状态数据的结构

  每个LSA条目都有老化定时器(aging timer),它存储在链路状态年龄(age)字段中。在默认情况下,30分钟(在年龄字段中,以秒为单位)后,最初发送该条目的路由器发送一个链路状态更新(LSU),其中包含序列号更高的LSA,以核实链路还处于活动状态。LSA到达其最大寿命(maxage)60分钟后,将被丢弃。LSU可以包含一个或多个LSA。与距离矢量路由器频繁地定期发送整个路由表相比,这种LSA有效性验证方法占用的带宽更少。

如下图所示,收到LSU后,路由器这样做。

v2-145eb8cb1da02aac9408985574c4012f_hd.jpg

接收LSU的动作:

  1. 1)如果LSDB中没有这样的条目,则将其加入到LSDB中,返回一个链路状态确认(LSAck),将该信息扩散到其他路由器,运行SPF,并更新其路由表。

  2. 2)如果有这样的条目,且LSU中包含的信息与之相同,则忽略它。

  3. 3)如果有这样的条目,但是LSU中包含的信息更新,则将其加入到LSDB中,返回一个LSAck,将该信息扩散到其他路由器,运行SPF,并更新其路由表。

  4. 4)如果有这样的条目,但LSU中包含的信息更旧,则将一个包含新信息的LSU发送给发送方。

二、OSPF的五种包

OSPF执行多种功能,其中包括:

v2-9831900d2c008fa40ab5c58fcd7d1794_hd.jpg

OSPF执行过程填充好路由表后,链路的状态可能发生变化。OSPF检查到这种变化后,在区域内泛洪有关这种变化的信息(还可能将其泛洪到其它区域),以维护所有邻接路由器的LSDB。

v2-0a4fe7e4d53f5aaf36dde170e2d559b0_hd.jpg

  OSPF五种包本文介绍如下表所示的5种OSPF分组,并阐述在什么地方及如何使用它们来建立OSPF邻接关系和维护OSPF拓扑数据库。这5种OSPF分组都被直接封装到IP分组的有效负载中,如下图所示,OSPF分组不使用传输控制协议(TCP)和用户数据报协议(UDP)。OSPF要求使用可靠的分组传输机制,但由于没有使用TCP,OSPF将使用确认分组(5类OSPF分组)来实现自己的确认机制

v2-92c72a813e9abc17127285cf3e3f6f4c_hd.jpg

  OSPF包结构如上图所示,IP报头中的协议标识符89表示OSPF分组。所有OSPF分组开头的报头格式都相同,该报头中包含以下字段。

  1. 版本号:对于OSPF第2版(用于IPv4的最新OSPF版本),设置为2。后面会介绍用于IPv6的OSPF第3版。

  2. 分组类型:区分5种OSPF分组的长度,单位为字节。

  3. 分组长度:OSPF分组的长度,单位为字节。

  4. 路由器ID:标识最初发送分组的路由器。

  5. 区域ID:指出分组来自哪个区域。

  6. 校验和:用于分组报头错误检测,确保OSPF分组在传输过程中未受损。

  7. 身份验证类型:一个OSPF选项,指出路由器不进行身份验证、使用明文密码进行身份验证还是使用加密的消息摘要5(MD5)进行身份验证。

  8. 身份验证:同身份验证类型结合使用。

  9. 数据:包含的信息随OSPF分组类型而异。

  10. 对于Hello分组,包含一个由已知邻居组成的列表。

  11. 对于DBD分组,包含LSDB摘要,其中包括所有已知路由器的ID、最后使用的序列号以及一些其他字段。

  12. 对于LSR分组,包含需要的LSU类型和能够提供所需LSU的路由器ID。

  13. LSU分组,包含完整的LSA条目,一个OSPF更新分组中可以包含多个LSA条目。

  14. 对于LSAck分组,该字段为空。

OSPF内容比较多.会继续连载.....

公众号.jpg