DHCPv6 (Dynamic Host Configuration Protocol for IPv6) 为 IPv6 主机提供了一种有状态的地址配置机制。与 IPv4 DHCP 类似,DHCPv6 分配的地址也是有租期的,但其生命周期管理引入了更细致的状态和计时器机制。
核心概念
在理解生命周期之前,需要了解以下几个关键参数,这些参数通常由 DHCPv6 服务器在 IA Address Option (IAADDR) 中下发:
-
Preferred Lifetime (首选生命周期):
- 地址处于“首选 (Preferred)”状态的时间长度。
- 在此期间,地址可以无限制地用于新的和现有的通信。
-
Valid Lifetime (有效生命周期):
- 地址处于“有效 (Valid)”状态的总时间长度。
- 它总是大于或等于首选生命周期。
- 一旦超过这个时间,地址即变为“无效 (Invalid)”,不能再使用。
-
T1 (Renew Timer - 更新计时器):
- 客户端向分配该地址的特定服务器发起续租请求的时间点。
- 通常建议设置为首选生命周期的 0.5 倍。
-
T2 (Rebind Timer - 重绑定计时器):
- 如果 T1 时刻续租失败,客户端向任意可用的服务器发起续租请求的时间点。
- 通常建议设置为首选生命周期的 0.8 倍。
地址状态流转
IPv6 地址在生命周期中会经历以下几种状态:
- Tentative (试探态):
- 客户端刚收到地址,正在进行重复地址检测 (DAD - Duplicate Address Detection)。
- 此时地址还不能用于通信。
- 如果 DAD 成功(无冲突),进入 Preferred 状态;如果失败,地址不可用。
- Preferred (首选态):
- DAD 通过后,且当前时间 < Preferred Lifetime。
- 地址可以用于建立新的连接,也可以用于现有的连接。
- 这是地址正常工作的状态。
- Deprecated (弃用态):
- Preferred Lifetime < 当前时间 < Valid Lifetime。
- 地址依然“有效”,现有的连接可以继续使用该地址(为了不中断正在进行的会话)。
- 但是,上层应用不应使用该地址建立新的连接(源地址选择算法会避免选它)。
- Invalid (无效态):
- 当前时间 > Valid Lifetime。
- 地址从接口上删除,彻底不可用。Microsoft 365
生命周期流程详解
- 分配 (Allocation): 客户端通过 Solicit/Advertise/Request/Reply 四步交互(或两步 Rapid Commit)获取地址及 T1, T2, Lifetimes 参数。
- DAD 检测: 客户端对新地址进行 DAD 检测。
- 使用 (Usage): 进入 Preferred 状态,T1, T2, Lifetime 倒计时开始。
- 更新 (Renew - T1):
- 当达到 T1 时间,客户端发送
Renew报文给原服务器。 - 如果服务器回复
Reply并刷新了时间,生命周期重置,回到初始 Preferred 状态。
- 当达到 T1 时间,客户端发送
- 重绑定 (Rebind - T2):
- 如果 T1 期间没收到回复,客户端继续使用地址。
- 当达到 T2 时间,客户端发送
Rebind报文广播给所有服务器。 - 如果有服务器回复,生命周期重置。
- 弃用 (Deprecation):
- 如果 T2 也没成功,且时间超过了 Preferred Lifetime,地址进入 Deprecated 状态。
- 停止建立新连接。
- 过期 (Expiration):
- 时间超过 Valid Lifetime,地址被回收。
stateDiagram-v2
[*] --> Tentative
Tentative --> Preferred : DAD 成功
Tentative --> [*] : DAD 失败
Preferred --> Deprecated : t > Preferred Lifetime
Deprecated --> Invalid : t > Valid Lifetime
Preferred --> Invalid : t > Valid Lifetime
Preferred --> Preferred : Renew/Rebind 成功