跳到主要内容

14. Transmission of Messages by a Client

除非本文档或描述 IPv6 如何在特定类型链路上承载的文档另有规定 (针对不支持 multicast 的链路类型), 客户端会把 DHCP 消息发送到 All_DHCP_Relay_Agents_and_Servers multicast 地址.

只要 Layer 3 地址正确, DHCP 服务器不应该检查所使用的 Layer 2 地址是否为 multicast.

客户端使用 multicast 到达所有服务器或某个单独服务器. 单独服务器通过在客户端消息的 Server Identifier option (见第 21.3 节) 中指定该服务器的 DUID 来表示. (所有服务器都会收到此消息, 但只有被指定的服务器会响应.) 未提供此 option 时表示所有服务器.

14.1. Rate Limiting​

DHCPv6 客户端必须限制其发送或重传 DHCP 消息的速率. 这会把长期消息突发或循环的影响降至最低, 例如当客户端拒绝服务器响应, 重复请求并得到相同服务器响应, 而该响应又再次被客户端拒绝时.

如果没有退出或停止机制, 该循环可能无限重复. 因此, 客户端不得过于频繁地发起传输.

实现速率限制功能的一种推荐方法是 token bucket (见 [RFC3290] 附录 A), 将平均传输速率限制为某一时间间隔内的某个数量. 这种限制突发性的方式还保证不会超过长期传输速率.

传输速率限制应该可配置. 一个可能的默认值是在 20 秒内 20 条消息.

对于具有多个接口的设备, 必须按每个接口分别执行该限制.

转发的 DHCP 消息和服务器侧消息的速率限制不在本规范范围内.

14.2. Client Behavior when T1 and/or T2 Are 0​

在某些情况下, T1 和/或 T2 值可以设置为 0. 当前有两种这样的情况:

  1. 客户端收到值为零的 IA_NA option (见第 21.4 节)

  2. 客户端收到值为零的 IA_PD option (见第 21.21 节)

这表示 renew 和 rebind 时间由客户端自行决定. 但是, 它们并非完全任意.

当 T1 和/或 T2 值设置为 0 时, 客户端必须选择一个时间以避免消息风暴. 特别是, 它不得立即发送. 如果客户端收到多个 IA options, 它应该选择 renew 和/或 rebind 传输时间, 以便在可能时让所有 IA options 在一次 exchange 中处理. 客户端必须选择不会违反第 14.1 节定义的速率限制约束的 renew 和 rebind 时间.