DHCPv6 Address Lifecycle

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 状态。
  • 重绑定 (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 成功
Licensed under CC BY-NC-SA 4.0
使用 Hugo 构建
主题 StackJimmy 设计