T1 时间到 client 送出 renew 封包

若 server 没有回应 , client 持续送出 renew 封包

T2 时间到 client 改送出 rebind 封包

若 server 没有回应

第一次重送 rebind 封包的时间 ( RT ) = IRT + RAND*IRT

第二次之后重送 rebind 封包的时间 ( RT ) = 2*RTprev + RAND*RTprev

若 server 一直没有回应

client 持续送出 rebind 封包到 valid lifetime

 

IRT = REB_TIMEOUT = Initial Rebind timeout = 预设是 10 秒 ( 请注意 , 不是 1 秒 )

RAND 是个随机变数 , 介于 -0.1 ~ 0.1 之间

RTprev 是前一次 RT 的时间

 

MRT = Maximum retransmission time = RT 的上限

若 MRT = 0 , 代表 RT 没有上限

若 MRT 不等于 0 , 则

if ( RT > MRT )

   RT = MRT + RAND*MRT

 

详细请参考 RFC3315

 

这边的例子

T1 = 60 秒 , T2 = 240  秒 , Preferred lifetime = 400 秒 , Valid lifetime = 700 秒

 

dhcpv6 rebind fail 1.png

 

client 和 server 做完一开始的 negotiate 后

60 秒后做第一次 renew ( Time = 280.959422 )

server 没有回应

一直到 240 秒后 , client 做第一次 rebind ( Time = 461.008212 )

server 还是没有回应

之后 client 陆续重送 5 次 rebind

直到 700 秒 ( Time = 921.595548 ) , client 重新做 solicit

 

dhcpv6 rebind fail 2.png

 

待续

看完文章请按 赞 or 推 , 感谢啦 ~ 

相关文章