OSPF LSA 序列号问题-下一朵云

OSPF LSA Sequence Number的起始值是0x80000001,结束值是0x7FFFFFFF,或许你可能会感到困惑,怎麽会一开始的数字比结束的数字还要大呢?

一、数字上限可以任意调整

事实上,这是因为起始值中开头的8是代表着负数,它的意思是-7FFFFFFF,请参考以下的说明,就会明白了:

在古早时期玩游戏是一种电脑能力的自我修练与提升,怎麽说呢? 如果十几年前很喜欢玩电脑游戏的朋友,一定曾经使用过这种游戏修改工具,像是PCTOOLS、整人专家等,透过这些工具的辅助将游戏中的梦想变为现实,只要是各种可能的数字上限与主角能力的极限都可以任意调整。

二、位元组范围

废话不多说,来看看我们要谈的东西。一个位元组(byte)资料可表示的范围从0(0000 0000)到255(1111 1111),那麽负数的话要怎麽表示呢?

在电脑系统中只有0与1,并没有任何的额外符号可以用来表示所谓的正/负数,因此可以使用一种变通的方式,我们利用位元组中最左边的数字来代表正或负,以0为正,以1为负。

比如说0111 1111转换为十进位的话是127,1111 1111转换为十进位的话则是-127,由此我们知道一个位元组的表示范围可以从-127到127。

三、倒数

以上我们谈的都是所谓的原码表示法,但是在电脑中的资料都是以补数来存放的,只有这样才能减轻CPU的负担。

提到了补数,我们就不得不提一下倒数了。在电脑中是这样规定倒数的:如果是正数,则按照原码表示法的表示方式维持不变,比如127仍为0111 1111,而如果为负数,那麽第一个数字为1,其他数字则倒反过来(也就是0变1,1变0),比如说二进位表示法-127(1111 1111),倒数的表示法为1000 0000。

四、补数

补数也是相同道理,如果是正数,则依照原码表示法不变,如127仍为0111 1111;如果为负数,则是除了第一个数字为1之外,其他数字先取倒数再加1,如-127,先取倒数为1000 0000,然后再加1,则为1000 0001。
但1000 0000比较特殊,我们可以用它来表示-128,由此可以补数可表示的范围为-128到127。

五、序号N

“序号 -N(0x80000000)被保留未用,而 -N+1(0x80000001)表示最小(也就是最旧)的序号,这一序号被定义为常数InitialSequenceNumber。

路由器在第一次生成任何LSA的时候使用InitialSequenceNumber,当每次路由器生成新的LSA实例时,将LSA的序号加一。

当试图增加最大序号N-1(0x7fffffff,也被定义为MaxSequenceNumber)时,必须先将当前LSA从路由域中废止。
这通过将LSA提早老化(见第14.1节)并重新洪泛而实现。当从所有邻接的邻居收到确认后,生成以InitialSequenceNumber为序号的新实例。

六、意外收到LSA

当在洪泛过程中收到意外的LSA新实例时,路由器可能会强制提高其LSA序号。这应当绝少发生,这可能是路由器在上一次重启动前发出的旧LSA,仍存在于AS中,更多信息见第13.4节。”

如果序列号到了0X7FFFFFFF.当前路由器终止该LSA.然后把AGE为60min的LSA通告出去(提前老化),并且重置其序列号为0X80000001。

七、注意

(负数的反码是将其原码除符号位之外的各位求反[-3]反=[10000011]反=11111100负数的补码是将其原码除符号位之外的各位求反之后在末位再加1。

[-3]补=[10000011]补=11111101一个数和它的补码是可逆的_)。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。