OSPF LSDB同步
同步的规则
交换彼此没有的Lsa以及新的LSA替换老旧的LSA,实现邻居LSDB的一致性。
为了实现同步,对Lsa的数据结构做出定义要能实现如下功能:
- 如何实现唯一的区分一条LSA。
- 如何实现LSA的新旧判断。
而这些功能就是LSA的头部信息(摘要信息),DBD报文携带的是LSA的头部信息,exstart状态下DBD不携带LSA头部。
LSA通过6个参数来标识自身和新旧程度。
如何实现唯一区分一条LSA呢?
- LSA Type
- Link state ID
- Adv router
用于区分一条LSA,3个参数相同则认为是同一条LSA,如果都有这条LSA,则需要进一步进行新旧判断,用新的LSA去同步旧的。
如何实现LSA的新旧判断呢? 通过3个参数判断新旧
-
LSA Seq
-
LSA checksum
-
LSA Age
- 比较seq,越大越新
- seq相同,比较checksum.,越大越新
- checksum相同,则判断Lsa age是否等于3600s,如果等于3600s,则认为最新。用于删除一条LSA。
- Ls age 如果都不等于3600s,则判断Ls age的差值,大于900s,则Ls age小的的最新, 小于900s则认为是相同的LSA。
双方根据DBD报文中携带的LSA头部信息,完成LSDB的差异比较,向邻居发送LSR,请求自身需要的LSA。
为什么要设计DD报文呢?实现按需同步,提高收效速度。
LSA老化机制
- LSA每隔半小时周期性更新,谁产生谁负责周期性更新 seq+1,checksum 重新算, ls age置0;
- LSA age到达3600s还没刷新,自己删除老化的LSA;
- LS(链路状态)变化触发更新,seg+1,checksum重新算,ls age置0。