48小时系统班试听入口

OSPF序列号问题是怎么回事?

发布作者:新盟教育 发布日期:2021-08-03 浏览人数:20563人

很多人在读到思科的BSCI OSPF LSA Sequence Number这个章节时,常常会在心中出现一个问号? Cisco的教材是不是又打错字了(Cisco教材编辑校阅相关负责单位请好好反省…真的是错字百出),其实是没错的。

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一个数和它的补码是可逆的_)。