DHCPv6协议

🧩 一、什么是 DHCPv6-PD

DHCPv6 Prefix Delegation(PD) 是 DHCPv6 的一种扩展机制,用来给下游路由器分配一个可用的前缀(subnet prefix),而不是单个 IPv6 地址。

通俗解释:

  • DHCPv6 分配“地址” → 给主机
  • DHCPv6-PD 分配“网段” → 给路由器,让它继续给内部主机分配地址(通常通过 SLAAC)

🌐 二、使用场景

场景描述示例
家庭宽带(ISP 分配)家用路由器通过 DHCPv6-PD 向 ISP 请求一个前缀,比如 /56ISP → 分配 2001:db8:abcd:1200::/56
企业子网分配总路由器将多个前缀分给不同部门的边界路由器总网段 /48 → 子部门各 /56
嵌套路由 / 4G / 光猫桥接模式下级路由器自动获取上级分配的 IPv6 子网光猫 → 家用路由器

⚙️ 三、协议角色

角色对应 DHCPv6 名称作用
请求方(Requesting Router)DHCPv6 客户端向上游请求前缀(类似主机请求地址)
委派方(Delegating Router)DHCPv6 服务器从上游地址池中选取可用前缀并下发

🔁 四、DHCPv6-PD 报文流程(与 IA_PD 选项配合)

与普通 DHCPv6 类似,只是使用的 IA_NA 变为 IA_PD(Identity Association for Prefix Delegation)

阶段报文源地址 / 目标地址含义
Solicit源:Link-local目标:ff02::1:2请求 PD,包含 IA_PD option。
Advertise源:服务器LL或GUA目标:客户端LL告知可用前缀范围、生命周期。
Request源:客户端LL目标:服务器LL/GUA请求确认某个前缀。
Reply源:服务器LL/GUA目标:客户端LL返回最终分配的前缀。

🔹 若支持 Rapid Commit,可跳过 Advertise/Request(两步完成)。


🧱 五、关键选项(Option)

Option Code名称说明
25IA_PD(Identity Association for Prefix Delegation)外层容器,标识一个 PD 实例(包含 IAID、T1、T2)。
26IAPREFIX在 IA_PD 中携带实际分配的前缀、生命周期。
13Status Code表示是否成功(如 NoPrefixAvail)。
6ORO客户端声明希望返回哪些 Option。

🧩 六、IAPREFIX Option 结构

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|       OPTION_IAPREFIX (26)    |          option-len           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         preferred-lifetime                    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          valid-lifetime                       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| prefix-length |                                               |
+-+-+-+-+-+-+-+-+                                               |
|                                                               |
|                        IPv6 prefix (variable)                 |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       sub-options (if any)                    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
字段含义长度(字节)说明
preferred-lifetime地址在此时间内“首选”使用4单位为秒(uint32)。超过此时间,地址仍可用但不再推荐新连接使用。
valid-lifetime地址在此时间内仍“有效”4单位为秒。超过此时间后,前缀应立即废弃。
prefix-length前缀长度1表示前缀位数(如 56、60、64),最大 128。
IPv6 prefix实际分配的前缀16例如:2001:db8:abcd:1000::(网络部分,主机位清零)。

🧭 七、下游地址分配过程

获得前缀后,请求方(下级路由器)通常会:

  1. 为每个 LAN 接口生成子前缀
    • 例如上游分配 /56,路由器可将其拆分成多个 /64
  2. 在 LAN 口上发送 RA(Router Advertisement)
    • 广播这些 /64 前缀,让终端通过 SLAAC 自动生成地址。
  3. 为上行口配置默认路由
    • 使用上游的 Link-local 地址作为默认网关。

🔐 八、续租与回收流程

阶段触发时间报文源地址目的地址功能说明
Renew当前租约时间到达 T1(推荐值:有效期的 0.5)RENEW客户端的 link-local 地址服务器单播地址(如果已知)请求续租,更新相同前缀。
Rebind当前租约时间到达 T2(推荐值:有效期的 0.8)REBIND客户端的 link-local 地址组播地址 ff02::1:2(所有 DHCPv6 服务器/中继)无响应时广播请求任何服务器续租。
Expire超过 valid-lifetime——————前缀被废弃,不可再用。
📘 公式(推荐值)

🧠 小结:

  • T1、T2 由服务器指定,客户端只需遵守。
  • 若未指定,客户端可采用默认比例(0.5、0.8)。
  • T1 之前,客户端正常使用分配前缀;
    T1 到 T2 之间 尝试与原服务器续租;
    T2 到 valid-lifetime 尝试向任意服务器续租;
    过 valid-lifetime 后立即撤销配置。