链路状态泛洪扩散


一、关于lsa的序列号问题

1、线性序列号空间
使用32为的线性序列号,序列号的长度为2 32 一router可以使用上千年。如果有新加入的router或者有router出现重启则需要遵循以下规则:一台新的或重启的router向邻居发送lsa的序列号比邻居保存的序列号还要老,那么邻居会发回自己保存的lsa和序列号。
is-is使用线性空间序列号。

2、循环序列号空间

序列号循环利用,判断一个序列号是否为更新序列号, 以下2种情况a为更新序列号,n为序列号空间。
a>b 且 (a-b)<=n/2
an/2

3、棒棒糖形序列号空间

两个更新序列号a和b,序列号空间n,当且仅当
a<0 且 aa>0, aa>0, b>0, a>b, 且(a-b)>n/2。
认为b比a更新

二、老化


lsa被创建时aging字段被设置为 1,扩散时每经过一台router都会增加aging的数值。
MaxAgeDiff:当router收到一个序列号重复的lsa时会比对两个aging的差值,如果差值超过MaxAgeDiff定义的数值,则认为网络发生异常。典型的数值为15min
MaxAge:当lsa驻留在router数据库里的时aging值也会不停的增加,当达到MaxAge的时候,router从数据库中删除相关记录,并泛洪该lsa。ospf定义的maxage为1hour。
LSRefreshTime:用来复位MaxAge的值。ospf定义的lsfrfreshtime为30min


SPF算法

3个集合:树数据库,候选对象数据库,链路状态数据库
在router中算法的执行过程
step1   初始化树数据库,将自己作为根
setp2   添加链路状态数据库中的三元组(路由器id、邻居id、代价)到候选对象数据库
step3   计算链路代价,选择代价最小的链路,添加邻居的三元组到树数据库
step4   将已加入到树数据库中邻居的邻居放到候选对象数据库进行最短路径的选择
step5   检查候选对象数据库,如果还有内容goto step3
注:每次选择的路径都是最小路径。

区域

为什么使用区域的概念:
1、数据库会消耗大量的内存
2、复杂的算法需要更多的cpu资源
3、消耗大量的带宽