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 推 , 感謝啦 ~ 

相關文章