KeyStartGenerate:
从该时间起,路由器将开始以该密码生成数据包。
KeyStopGenerate:
从该时间起,路由器将不再以该密码生成数据包。
KeyStopAccept:
从该时间起,路由器将不再接受以该密码生成的包。
为了达到密码的平滑过度,KeyStartAccept 应当小于 KeyStartGenerate , 并且
KeyStopGenerate 应当小于 KeyStopAccept。如果没有定义 KeyStopGenerate 和 KeyStopAccept,
该密码的生存周期为无限。如果用新密码代替旧的,新密码的 KeyStartGenerate 必须小于或等
于旧密码的 KeyStopGenerate。
不论经过系统的热启动或冷启动,密码都应当被保持,以避免操作中断。如果接口上最后
一个密码过期,不应当回到非验证的情况,也不应当中断路由。这时,路由器应当向网管发出”
最后的密码过琠拔_期”信息,并扩展该密码的生存周期为无限,直到网管删除该密码或配置了
新的
密码。
D.4 信息生成
当生成了 OSPF 包以后,在从接口发送前,应当根据接口的验证类型调用验证过程。验证
过程按下面的描述修改 OSPF 包:
- 96 -
D.4.1 生成空验证
当使用空验证时,按如下修改包:
(1)OSPF 包头中的验证类型域被设定为 0。
(2)OSPF 包头中的校验和域被设定为整个包的标准 IP 校验和,计算从 OSPF 包头开始
但不包括 64 位验证域。按 16 位 1 补足校验和计算包中除了验证域外的 16 位字,如果包长度
不是 16 位字的整数倍,在校验和前加上一个字节的 0 补足。
D.4.2 生成简单口令验证
当使用简单口令验证时,按如下修改包:
(1)OSPF 包头中的验证类型域被设定为 1。
(2)OSPF 包头中的校验和域被设定为整个包的标准 IP 校验和,计算从 OSPF 包头开始
但不包括 64 位验证域。按 16 位 1 补足校验和计算包中除了验证域外的 16 位字,如果包长度
不是 16 位字的整数倍,在校验和前加上一个字节的 0 补足。
(3)OSPF 包头中的 64 位验证域被设定为按接口配置的 64 位口令(即验证密码)。
D.4.3 生成密码验证
当使用密码验证时,接口上可能配置有多个密码。这时,从有效生成密码中(即
KeyStartGenerate <= 当前时间 < KeyStopGenerate)选择具有最近 KeyStartGenerate 时间的密码。
使用该密码,按如下修改包:
(1)OSPF 包头中的验证类型域被设定为 2。
(2)不计算标准 OSPF 包头中的校验和,而将其设为 0。
(3)将密码标识(见图 18)设定为所选择密码的密码标识。
(4)将验证数据长度域设定为追加到 OSPF 包的数据摘要长度。当使用 MD5 验证算法
时,验证数据长度为 16。
(5)将 32 位的密码序号(见图 18)设定为非减数值(不能小于上次从该接口发出的数值)。
具体选择的数值根据不同的实现而不同。例如可以基于简单的计数器,或基于系统时钟。
(6)计算信息摘要并追加到 OSPF 包。所使用的验证算法由密码自身决定,将 OSPF