跳到主要内容

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 时间.