# OSPF 一共有 五种 数据包 : HELLO包 DBD包 LSR包 LSU包 LSack 包
# OSPF 默认 以 10 S 为 周期 发送 HELLO 包 (保活周期为 10 S )
既然是保活,那么,就会有 失效判断 :
===>>
失效判断的时间为 : 四倍 的 HELLO 时间 --- 死亡时间
就是 40 秒 都没有收到 发来的HELLO 包 就会判定你已死亡!!
# 需要强调的是 :
所谓的 10 S 周期 是默认为 10 S ,也是可以被修改的( 计时器的原因)
但是 四倍的 HELLO 时间 的 四倍关系是不变的 !!
# 在介绍 HELLO 包时需要再提出一个概念 :
我们前面学到的 RIP 协议时,RIP 协议在 各个设备之间是传递什么 ??
===>>>
是不是传递的是 路由条目 ,也就是说 传递的包里只需要携带
上 目标网段信息 和 开销值信息就行 !!
但是,现在我们讲的 OSPF 协议,它在传递数据包时,传递的主要是什么?
===>>>
OSPF 发送的是 拓扑信息 ( 是用来描述 路由器周围连接状态)
那就意味着一定要区分各个路由器呀,不然,怎么知道你是给那
个路由器传的包呢??
===>>>
所以为了区分不同的路由器,我们引入了一个概念 -- RID
RID :
# 对其也是有要求的
1. 全网唯一 ( 指拓扑搭建的那个网络)
2 . 格式统一( 必须按照 IP 的格式定义)
# 怎样生成
1. 手动配置
遵循上面两条 要求就行 !!
2. 默认生成
首先看 环回接口,如果存在多个环回接口,则选择其中 IP 地址 数值最
大的作为 RID ;
什么叫做 IP 地址 数值最大 ??
===>>>
就是 纯数值的比较 , 比如 : 192.168.1.1 和 192.168.1.2
那么,在选择 RID 的时候就 选择的是 192.168.1.2
那如果设备上没有 环回接口呢 ? 那就选择 物理接口 ,其选择的理由
也是一样的,选择 接口中 IP 地址 数值最大的 作为 RID !!!
为什么要说这个RID 呢 ?
除了上面介绍的原因,还有一部分是 发送的 HELLO 包 会携带 RID !
RID 后面也会细讲 !!!!
数据库描述包
这个包里主要携带的就是 路径信息摘要 !!
我们形象的举例 :
其实,DBD 包就像是我们去饭店吃饭,顾客去点菜,DBD 就像是菜单,我们
去饭店吃饭,正常逻辑不就是,老板把菜单给我们,然后我们在菜单上点我们
想要吃的菜,然后,老板再根据我们点的菜再去做出来。
而,不会是,我们去饭店吃饭,老板把菜单上所有的菜都做出来,然后,我们
去在做出来的所有菜里去挑出自己的要吃的菜,这就太浪费了!!
我们把例子对应实际 :
在我们传送数据的时候不也是这个道理,我要把拓扑信息发给你,但是,很
有可能,我的拓扑信息里有一部分可能你已经有了,有一部分可能重复了,
那已经重复的是不是就没有必要再给你发一遍了,既增加更新量又没啥实际
作用,因为,你已经有了啊!!
那我能不能,我把我的拓扑信息列成一个目录,列成一个菜单发给你,你看
这个菜单,你拿到这个菜单做对比,你要这个菜单里你没有的拓扑信息!!
要这个你缺的东西,然后,我把你缺的东西再发给你 !!
这样不就不存在浪费,也不存在资源占用 更新量大了!!!
所以,综上,DBD 包实际上存在的意义就是 减少更新量 ,避免重复更新!!
# 在介绍这个包之前先思考下 OSPF 这个协议 最怕什么 ??
===>>>
就前面讲的 ,肯定是 最怕更新量 !!
因此,为了解决这个 OSPF 最怕的事情,其发明者(科学家)也考虑到此问题并
提出了两个方法来预防 更新量大!!
* 区域划分
链路状态请求包,
在查看完对端邻居的 DBD 后,基于本地未知的 LSA 信息查询
LSA : 链路状态通告--就是具体的路由或者拓扑信息
( 一条路由就是 LSA, 一条拓扑就是 LSA )
刚才不是 对法发了一个 DBD 包,那么,按照逻辑不就到了,你收到菜单后,你要
点菜了啊,你该给对方说 你要吃什么菜了,到了,你跟自己的拓扑信息做对比,在
对方发来的 DBD 包里 选择自己没有的拓扑信息,请求本地未知的信息(即就是通
过 LSR 包来请求!!)
链路状态更新包
用于携带各种的 LSA 信息 ( 这个包才是真正携带 LSA 信息的数据包 )
那按照逻辑,饭店的人收到顾客从菜单上选的菜,那饭店不就得做菜了,
把菜做好,给你端上来!!
所以,其实只有这个包才是 真正携带 拓扑信息的包~!!!
链路状态确认包
用于确认接受对端信息
# 看到这里的确认包,你会想到什么 ??
===>>>
想想 RIP ,他不就没有 确认包,所以它需要进行一下 30 S 的周期更新
RIP 的周期更新不就是为了 保活和确认 而存在的!!!
# 现在,请思考OSPF 需不需要进行 周期更新 ??
那对于 OSPF 来说,它有保活机制没? 有 确认机制没 ?
===>>>
OSPF 既有 HELLO 包来保活 又有 ACK 来确认 !!
这与 RIP 进行周期更新的原因一对比,OSPF 完全不需要周期更新啊!
你 OSPF 既有 保活 又有 确认,当然不需要 周期更新了 !
完全不需要周期更新啊!!!
然而,事实上 :
===>>>
OSPF 是有周期更新的!!!!
OSPF 30 分钟 进行一次周期更新 !!!!
# 我擦,30 分钟的周期更新 ,你见过没?? OSPF 就是 !!
# 这周期更新完全就没必要!! 作用太微不足道了 !!
那为什么还要进行这 30 分钟的周期更新呢 ??
===>>
其实,还是 该协议不自信,因为我们说过,OSPF 的
更新量很大,所以它就总害怕落掉某些数据包,就有了
这 30 分钟 更新的兜底!!
但其实,完全没必要 ~!!
# 它的周期更新的做法是 :
它的周期更新和 RIP 也不同,RIP 周期更新是直接发送更
新包,直接把更新包发出去,而 OSPF 不发更新包,因为
更新包数据量大啊,所以 OSPF 发的是菜单!!也是为了
减少更新量的占用资源!!
发送 DBD 包进行对比 ,若存在缺失信息,再根据
LSR,LSU,LSACK 进行数据获取!!
下一篇:个人信息安全工程指南