一、时间

1、LSRefreshTime(LSA定时刷新时间):1800s

为确保数据库的准确性,OSPF每隔30分钟对每条LSA记录刷新一次,每刷新一次序列号加1。收到新的LSA后,LSA将重置计时器,又重新计算时间。如果1小时内,未被刷新,LSA将从数据库中删除。
有时序列号需要循环回最初的值,在这种情况下,LSA提前作废,(最大寿命定时器立即被设置 为1 )并被删除。然后,LSA重新使用序列号0X800001。

2、MaxAge(LSA老化时间):3600s

OSPF每隔1800s定时刷新一次LSA,如果LSA在3600s内未被刷新,LSA将从数据库中删除,即老化掉。

3、RxmtInterval(邻接重传LSA的间隔时间):5s

没有得到确认的情况下,重传OSPF packet所等待的时间长度,默认为5秒。

4、HELLO相关的时间

(1)HelloInterval(发送Hello包的时间间隔):10s/30s

路由器接口上发送Hello包的时间间隔。

(2)RouterDeadInterval(未收到Hello后关闭Router的时间):40s/120s

如果在4倍于HelloInterval间隔里(40秒和120秒内)仍然没有收到来自邻居的新的Hello包,这个邻居将被宣告为无效(dead)。

5、WaitTimer(DR的选举等待时间):40s

先启动OSPF进程的路由器会等待一段时间,这个时间内你没有启动其它路由的OSPF进程的话,第一台路由就认为自己是DR,之后再加进来的也不能在选举了,这个等待时间叫做WaitTimer计时器,CISCO规定的WaitTimer是40秒。这个时间内你启动的路由是参与选举的,所以真实工作环境中,40秒你大概只启动了两台,DR会再前两台启动的路由中产生,工作一段时间以后,活的最久的路由最有可能成为DR。


二、LSA的老化机制

1、LSA通过LS类型、LS标识和宣告路由器来识别,并通过序列号、校验和、老化时间判断LSA新旧。
Seq: 序列号(Seq)的范围是0x80000001到0x7fffffff(不用考虑8和7的大小),数值越大视为越新。
Checksum: 校验和(Checksum)计算除了Age字段以外的所有字段,每5分钟校验1次。
Age: 范围是0到3600秒,16位长.当路由器发出1个LSA后,就把Age设置为0,当这个LSA经过1台路由器以后,Age就会增加,1个LSA保存在LSDB中的时候,老化时间也会增加。
当收到相同的LSA的多个实例(LS类型、LS标识、宣告路由器相同)的时候,将通过下面的方法来确定哪个LSA是最新的:
(1)比较LSA实例的序列号,越大的越新。
(2)如果序列号相同,就比较校验和,越大越新。
(3)如果校验和也相同,就比较老化时间,如果只有1个LSA拥有MaxAge(3600秒)的老化时间,它就是最新的。
(4)如果LSA老化时间相差15分钟以上,(叫做MaxAgeDiff),老化时间越小的越新。
(5)如果上述都无法区分,则认为这2个LSA是相同的。


2、序列号、校验和、老化时间
每一个LSA都包含这3个值。OSPFv2使用线性空间(注1),序列号从0x80000001到0x7fffffff。
检验和是计算除了Age以外的字段,因为Age在每经过一个节点都会变大(InfTransDelay),如果包含了它,每个节点都必须重新计算校验和。链路状态数据库中的LSA每经过5分钟都需要重新计算一次校验和,以确保在数据库中没被破坏。
老化时间Age是一个指明LSA的生存时间(16位),范围还是0~3600秒。当LSA被泛洪时,经过一个路由器都需要增加一个InfTransDelay时间,CISCO默认是1秒,可通过ip ospf transimit-delay来改变。

注1:看闫辉的NP课程,里面是OSPF使用的是棒棒糖型的空间,但TCP/IP路由技术里面说了是使用线性空间,查了RFC2328,也是说线性空间,后来百度了一下,在wiki上发现,OSPFv1是使用棒棒糖,但OSPFv2使用的是线性。