Skip to main content

10. 协议常量

本节定义邻居发现使用的协议常量。这些常量指定时间值、重试限制和控制协议行为的其他参数。除非协议规范中另有明确规定, 否则实现必须 (MUST) 使用这些值。

10.1. Host Constants (主机常量)

主机在执行路由器发现和地址配置时使用以下常量:

常量描述
MAX_RTR_SOLICITATION_DELAY1秒传输第一个路由器请求消息之前的最大延迟。用于防止多个主机同时启动时的同步。
RTR_SOLICITATION_INTERVAL4秒路由器请求消息重传之间的时间间隔。
MAX_RTR_SOLICITATIONS3次传输主机在接受没有路由器存在之前发送的路由器请求消息的最大数量。

使用说明

  • MAX_RTR_SOLICITATION_DELAY: 当主机接口启用时, 它应该 (SHOULD) 在发送第一个路由器请求之前等待0到MAX_RTR_SOLICITATION_DELAY之间的随机时间量。这可以防止许多主机同时启动时的网络拥塞。

  • RTR_SOLICITATION_INTERVAL: 如果主机未收到对其路由器请求的路由器通告响应, 它将在此间隔后重传。

  • MAX_RTR_SOLICITATIONS: 在发送这么多请求而没有收到响应后, 主机得出结论链路上没有可用的路由器, 并可以继续使用其他地址配置机制 (例如DHCPv6)。

10.2. Router Constants (路由器常量)

以下常量控制路由器发送路由器通告时的行为:

常量描述
MAX_INITIAL_RTR_ADVERT_INTERVAL16秒当接口成为通告接口时从接口发送的初始未经请求的路由器通告之间的最大时间间隔。
MAX_INITIAL_RTR_ADVERTISEMENTS3次传输当路由器接口成为通告接口时发送的初始未经请求的路由器通告数量。
MAX_FINAL_RTR_ADVERTISEMENTS3次传输当路由器接口不再是通告接口时发送的最终路由器通告数量。
MIN_DELAY_BETWEEN_RAS3秒从接口发送未经请求的组播路由器通告之间的最小时间间隔。
MAX_RA_DELAY_TIME0.5秒使用路由器通告响应路由器请求之前的最大延迟。

使用说明

  • MAX_INITIAL_RTR_ADVERT_INTERVAL: 当路由器开始在接口上通告时, 它以更高的速率发送几个初始通告, 以快速通知主机其存在。

  • MAX_INITIAL_RTR_ADVERTISEMENTS: 这种快速的初始通告有助于新连接的主机快速配置自己。

  • MAX_FINAL_RTR_ADVERTISEMENTS: 当路由器即将停止通告 (例如, 正常关闭) 时, 它发送路由器生命周期为零的最终通告, 以通知主机它们不应再使用此路由器。

  • MIN_DELAY_BETWEEN_RAS: 这可以防止路由器用路由器通告淹没链路, 即使同时被多个主机请求也是如此。

  • MAX_RA_DELAY_TIME: 当响应路由器请求时, 路由器将其响应延迟最多此值的随机量, 以避免来自多个路由器的同步响应。

10.3. Node Constants (节点常量)

以下常量适用于所有IPv6节点 (主机和路由器) 的地址解析和邻居不可达检测:

常量描述
MAX_MULTICAST_SOLICIT3次传输为地址解析或可达性确认发送的组播邻居请求消息的最大数量。
MAX_UNICAST_SOLICIT3次传输发送以探测邻居可达性的单播邻居请求消息的最大数量。
MAX_ANYCAST_DELAY_TIME1秒响应任播地址的邻居请求之前的最大延迟。
MAX_NEIGHBOR_ADVERTISEMENT3次传输当节点的链路层地址更改时发送的未经请求的邻居通告消息的最大数量。
REACHABLE_TIME30,000毫秒用于计算随机ReachableTime的基值。这通常被路由器通告中接收的值覆盖。
RETRANS_TIMER1,000毫秒邻居请求消息重传之间的时间的基值。这通常被路由器通告中接收的值覆盖。
DELAY_FIRST_PROBE_TIME5秒当邻居变得可疑时发送第一个单播邻居请求探测之前的延迟。
MIN_RANDOM_FACTOR0.5计算RandomReachableTime时使用的随机因子的最小值。
MAX_RANDOM_FACTOR1.5计算RandomReachableTime时使用的随机因子的最大值。

使用说明

  • MAX_MULTICAST_SOLICIT: 当节点需要确定邻居的链路层地址时在地址解析期间使用。在这么多次尝试后, 节点得出结论邻居不可达。

  • MAX_UNICAST_SOLICIT: 在邻居不可达检测期间使用, 以探测已变得可疑的邻居。

  • MAX_ANYCAST_DELAY_TIME: 当多个节点共享任播地址时, 它们以随机延迟响应邻居请求以减少冲突。延迟最短的节点响应, 其他节点抑制其响应。

  • MAX_NEIGHBOR_ADVERTISEMENT: 当节点的链路层地址更改时, 它组播未经请求的邻居通告以更新所有邻居的缓存。

  • REACHABLE_TIMERETRANS_TIMER: 这些提供默认值, 但节点应该 (SHOULD) 在可用时使用路由器通告的值。

  • DELAY_FIRST_PROBE_TIME: 当在DELAY状态下检测到邻居的前向进展时, 节点在探测以确认可达性之前等待这么长时间。

  • MIN_RANDOM_FACTORMAX_RANDOM_FACTOR: 用于计算随机ReachableTime值, 以避免多个节点之间的邻居不可达检测活动同步。

10.4. Implementation Considerations (实现考虑)

实现这些常量时:

  1. 调整: 虽然这些值已经为一般互联网使用仔细选择, 但网络管理员可以 (MAY) 需要为特定环境 (例如, 具有高丢失率的无线网络) 调整它们。

  2. 路由器通告覆盖: 几个节点常量 (REACHABLE_TIME、RETRANS_TIMER) 可以被路由器通告中接收的值覆盖。实现必须 (MUST) 尊重这些接收的值。

  3. 随机化: 几个操作需要随机化 (例如, MAX_RTR_SOLICITATION_DELAY、MAX_RA_DELAY_TIME) 以防止同步。实现应该 (SHOULD) 使用高质量的随机数生成器。

  4. 网络特性: 对于具有不寻常特性 (非常高的延迟、高数据包丢失或非常大量的节点) 的网络, 这些常量可能需要调整。任何此类调整都应该 (SHOULD) 记录并基于仔细的分析。