OSPF邻居关系迁移到Full后,链路状态数据库LSDB就固定不变了吗?当然不会,网络拓扑环境可能随时会发生变化。为了保持路由器的LSDB最新,OSPF三种办法来更新LSDB:
一种是建立邻接关系时,把邻居在LSR中请求的LSA用LSU封装后单播发给邻居,邻居会更新LSDB;
第二种是触发更新。如果网络中某路由器的拓扑发生改变,则路由器会把最新的链路状态信息立即用LSU封装并组播更新给邻居;
第三种是周期更新。如果一台连接了Stub网络的路由器发生故障(比如路由器连接了一台电脑),那么这个Stub网络的路由(这台电脑所在的网段)在其它路由器上依然会一直存在,这显然不合理。因此OSPF给每条链路状态定义了一个老化时间,默认为3600秒。如果LSDB中某条LSA的老化时间超过3600秒,路由器会把这条LSA从LSDB中删除。
但这样,正常的LSA也会老化。为了防止正常的LSA老化,OSPF规定每台路由器每间隔1800秒,主动把自己的所有链路状态封装在LSU中,组播发送给所有邻居。这样就避免了正常的链路状态被老化。
我们一直在说OSPF是一个基于链路状态的路由协议,路由器也会把链路状态保存在链路状态数据库LSDB中。那么到底什么是链路状态呢?
OSPF把链路状态共分成了11种类型,其中Type-6用在组播中,Type-8标识外部属性LSA,Type-9、Type-10和Type-11用于在MPLS TE中标识Opaque LSA,这些我们不做讨论。
我们来讨论其余的6种类型。
先看Type-1类LSA:
每台OSPF路由器都会发送Type-1类LSA,把自己所直连的所有链路状态打包在一个Type-1类LSA中,通过LSU报文发给邻居。
上图中,LS age是这条LSA的老化时间;
Options和Hello报文中的一样;
LS Type表示这条LSA是Type-1第1类LSA(Router-LSA);
Link State ID(LSID)用于标识这条LSA,也可以说是这条LSA的名字。路由器用自己的RID为发送的Type-1 LSA起名字;
Advertising Router记录这条LSA的始发者;
Sequence Number序列号的作用和DD报文中的序列号作用完全不同。这里的序列号用于表示这条LSA的新旧程度。如果一台路由器收到了一条LSA,但发现这条LSA的名字LSID在自己的LSDB中已存在,那么就比较两人的序列号,序列号大的为新,小的为旧。如果收到的新,那么就更新LSDB,如果LSDB中的新,那么就丢弃收到的同名LSA。
所以,同一条LSA(LSID相同)才会比较序列号,不同LSA(LSID不同)的序列号没有可比性。
Checksum为除了LS Age外其他各域的校验和。
Length表示这条LSA的总长度。
Flags是虚连接终点、ASBR及ABR的标记位。
再往下看,我们发现这条Type-1 LSA包含了两条链路状态信息:
第一条链路状态,表示这条链路是一个Stub类型(连接终端或接入交换机,这条链路上没有OSPF邻居关系)的网络,Link ID为这个Stub网络的网络号,Link Data为掩码。
Link Type表示这条链路的类型:1为P2P连接;2为连接到Transit类型;3为连接到Stub类型;4为虚连接。
Number of Metrics表示和指定TOS值相关联的度量值,一般为。
Metric:这条链路的开销值。
第二条链路状态,表示这条链路是一个Transit类型(这条链路上有OSPF邻接关系),Link ID为这条链路上DR的接口地址,Link Data为发送这条LSA的路由器接口地址。
接下来我们看Type-2类LSA:
Type-2类LSA只有DR会发,其他路由器不会发。也就是说Type-2类LSA只在Broadcast和NBMA网络中存在。
LS Type表示这条LSA是Type-2第2类LSA(Network-LSA);
LSID为链路上DR的接口地址,也就是说用DR的接口地址为这条LSA命名。
Attached Router列出这个MA网络上都有哪些路由器,包括DR以及与DR建立邻接关系的路由器。
Type-1和Type-2是OSPF中真正用于描述链路状态的LSA,并且只会在一个区域内传播,不会传播到其他区域。通过Type-1,我们可以了解区域内每台路由器所连接的每一条直连链路的具体信息;通过Type-2,我们可以了解区域内所有MA网络的具体信息。
除了Type-1和Type-2,其他类型的LSA都不能算是真正的链路状态,而且会在区域之间传播。我把它们称为“穿着不同LSA外衣的路由”,是的,它们都只是路由而已。
领取专属 10元无门槛券
私享最新 技术干货