注:本文为“OSPF 协议”相关合辑。
略作重排,如有内容异常,请看原文。
LSDB(Link State DataBase,链路状态数据库)
通过路由间的路由信息交换,自治系统内部可以达到信息同步,即 LSDB 描述的网络拓扑同步。
LSDB 唯一 ID 的三个参数
LSDB 中每份 LSA 都有唯一的身份证 ID,由以下三个参数构成:
- LSA 类型
- 链路状态 ID (Link State ID)
- 通告路由器的 Router ID
例如:R1 产生的 LSA1,其类型为 RouterLSA,Link State ID 为 1.1.1.1,通告路由器为 1.1.1.1。
LSDB 中的每份 LSA 通过此“身份证 ID”唯一标识。
- 泛洪是可靠的,可以是周期性(30 分钟)或触发产生的 LSA 通告过程。
- 泛洪是将 LSA 向区域中的每条链路复制并通告的过程。
- 全区域的泛洪会导致路由器收到多份相同的 LSA,LSDB 中仅保留最新的。
- 路由器仅泛洪最新的 LSA,相同 ID 的“旧的”LSA 会被“新的”LSA 所覆盖。
- 一旦最新的 LSA 被所有路由器收到,泛洪就结束。
- 区域中会有周期产生的新的 LSA 所致的泛洪或触发产生的新的 LSA 导致的泛洪行为。
判断相同 ID 的 LSA“新的”条件次序
判断相同 ID 的“新的”LSA 要依次比较以下内容:
- LSA 序列号 (Sequence Number)
- LSA 报文校验和 (Checksum)
- LSA 年龄 (LSA Age)
说明如下
- 序列号:有符号 32 位整数,采用线性递增的序列号,初始序列号从
0x80000001
到最大值0x7FFFFFFF
。序列号越大代表越新。LSA 会周期(30 分钟)产生新的 LSA,每次产生的 LSA 序列号都会增加 1。 - Checksum:16 位数,对刚收到的 LSA 做计算,Age 字段不在计算内。即使 LSA 存放在 LSDB 中,路由器也会每 5 分钟重新计算一次。
- Age:16 位无符号整数。LSA 的最大年龄是 3600 秒,LSA 在路由器间泛洪时每经过一跳年龄增加 1,在 LSDB 中存放时年龄也增加 1。若 LSA 的年龄达到 3600 秒(即 MaxAge),路由器会从 LSDB 中清除该 LSA。在拓扑稳定的场合下,每份存放在 LSDB 中的 LSA 间隔 30 分钟都会被周期产生的新 LSA 刷新。
泛洪机制将 LSA 向区域中的每条链路通告,不论 LSA 从哪条链路泛洪到当前路由器,在路由器的 LSDB 中仅保存一份最新的 LSA。若路由器收到多份相同“ID”的 LSA,则依次比较序列号、Checksum 和 LSA Age,来判定是否继续泛洪该 LSA,还是终止泛洪。