OSPF的序列号:

OSPF的序列号使用类似棒棒糖。

OSPF使用的是顺序序列号,不是循环的,范围是0x80000000到0x7FFFFFFF.

第一个8是负的,第一个LSA的序列号是0x80000001,然后累加到0,在从0到0x7FFFFFFF.

如果真的到了0x7FFFFFFF,就发送一个AGE标记为60分钟的LSA,通告出去,邻居收到后会把这个LSA从DATABASE里删除,然后序列号又会从0x80000001开始.

0x80000001化成二进制1000,0000,0000,0000,0000,0000,0000,0001

0x7FFFFFFF化成二进制0111,1111,1111,1111,1111,1111,1111,1111

序列号使用过程:

首先:1000,0000,0000,0000,0000,0000,0000,0001

其次:1111,1111,1111,1111,1111,1111,1111,1111

再次:0000,0000,0000,0000,0000,0000,0000,0000

最后:0111,1111,1111,1111,1111,1111,1111,1111

一目了然,第一位的1和0分别代表负和正.也就是可以有2的31次方再乘2个序列号,足够大了。

如何比较LSA:

1,比较LSA实例的序列号。拥有最大的序列号的LSA就是最新的LSA。

2,如果LSA实例的序列号相同, 那么将会比较它们的校验和。拥有最大的无符号校验的LSA就是最新的LSA。

3,如果LSA实例的校验和也相同,那么将进一步比较它们的老化时间。

4,如果这些LSA的老化时间之间的差别多于15min(称做MaxAgeDiff那么拥有较小的老化时间的LSA将是最新的LSA。

5,如果上述的条件都无法区分最新的LSA,那么这两个LSA就被认为是相同的。

operation:

一,如果收到的LSA在拓扑数据中没有

1,将LSA添加进拓扑数据库

2,向发送给我的邻居发送LSAck

3,泛洪

4,运行SPF算法,算出最佳路由放入路由表中

二,如果收到的LSA在拓扑数据库中有,并且收到的LSA比拓扑数据库中的LSA新

1,将LSA添加进拓扑数据库

2,向发送给我的邻居发送LSAck

3,泛洪

4,运行SPF算法,算出最佳路由放入路由表中

三,如果收到的LSA在拓扑数据库中有,并且拓扑数据库中的LSA比收到的LSA新

1,将旧的LSA丢掉

2,将拓扑数据库中新的LSA发送给邻居,让邻居去更新

四,果收到的LSA在拓扑数据库中有,并且序列号与LSDB中的序列号一致,忽略此LSA