4. Protocol Overview (协议概述)
本节概述了接口自动配置自身时发生的典型步骤. 自动配置仅在支持组播的链路上执行, 并在启用支持组播的接口时开始, 例如在系统启动期间. 节点 (主机和路由器) 通过为接口生成链路本地地址来开始自动配置过程. 链路本地地址是通过将接口的标识符附加到众所周知的链路本地前缀[RFC4291]来形成的.
但是, 在将链路本地地址分配给接口并使用之前, 节点必须尝试验证此"暂定"地址未被链路上的另一个节点使用. 具体来说, 它发送包含暂定地址作为目标的邻居请求 (Neighbor Solicitation) 消息. 如果另一个节点已经在使用该地址, 它将返回一个邻居通告 (Neighbor Advertisement) 表示如此. 如果另一个节点也试图使用相同的地址, 它也会为目标发送邻居请求. 邻居请求 (重新) 传输的确切次数以及连续请求之间的延迟时间是特定于链路的, 并且可以由系统管理设置.
如果节点确定其暂定链路本地地址不唯一, 则自动配置停止, 并且需要手动配置接口. 为了简化这种情况下的恢复, 管理员应该能够提供替代接口标识符来覆盖默认标识符, 以便可以使用新的 (可能是唯一的) 接口标识符应用自动配置机制. 或者, 需要手动配置链路本地地址和其他地址.
一旦节点确定其暂定链路本地地址是唯一的, 它就将地址分配给接口. 此时, 节点具有与相邻节点的IP级连接性. 剩余的自动配置步骤仅由主机执行; 路由器的 (自动) 配置超出了本文档的范围.
自动配置的下一阶段涉及获取路由器通告 (Router Advertisement) 或确定没有路由器存在. 如果存在路由器, 它们将发送路由器通告, 指定主机可以执行哪种自动配置. 请注意, 即使不存在路由器, 用于地址配置的DHCPv6服务仍然可用.
路由器定期发送路由器通告, 但连续通告之间的延迟通常会比执行自动配置的主机想要等待的时间长[RFC4861]. 为了快速获得通告, 主机向全路由器组播组发送一个或多个路由器请求 (Router Solicitation).
路由器通告还包含零个或多个前缀信息 (Prefix Information) 选项, 这些选项包含无状态地址自动配置用于生成全球地址的信息. 应该注意的是, 主机可以同时使用无状态地址自动配置和DHCPv6. 一个前缀信息选项字段, "自治地址配置标志 (Autonomous Address-Configuration Flag)", 指示该选项是否甚至适用于无状态自动配置. 如果适用, 附加选项字段包含子网前缀以及生命周期值, 指示从前缀创建的地址保持首选和有效的时间长度.
因为路由器定期生成路由器通告, 主机将持续接收新的通告. 主机处理每个通告中包含的信息, 如上所述, 添加和刷新在以前通告中接收的信息.
默认情况下, 为了安全起见, 所有地址在分配给接口之前都应该测试唯一性. 该测试应该单独在手动获得的, 通过无状态地址自动配置获得的或通过DHCPv6获得的所有地址上执行. 为了适应认为执行重复地址检测的开销超过其益处的站点, 可以通过每个接口配置标志的管理设置来禁用重复地址检测的使用.
为了加速自动配置过程, 主机可以并行生成其链路本地地址 (并验证其唯一性) 与等待路由器通告. 因为路由器可能会延迟几秒钟响应路由器请求, 如果串行执行这两个步骤, 完成自动配置所需的总时间可能会显著更长.
4.1. Site Renumbering (站点重新编号)
地址租赁通过提供对分配给主机中接口的地址进行超时的机制来促进站点重新编号. 目前, 上层协议 (如TCP) 不支持在连接打开时更改端点地址. 如果端点地址变为无效, 现有连接中断, 并且与无效地址的所有通信失败. 即使应用程序使用UDP作为传输协议, 地址通常也必须在数据包交换期间保持不变.
将有效地址分为首选和已弃用类别提供了一种向上层指示有效地址可能很快变为无效的方式, 并且如果地址的有效生命周期在通信结束之前到期, 使用该地址的未来通信将失败. 为了避免这种情况, 更高层应该使用首选地址 (假设存在足够范围的地址) 以增加地址在通信期间保持有效的可能性. 系统管理员应设置适当的前缀生命周期, 以便在重新编号发生时最小化失败通信的影响. 弃用期应该足够长, 以便在地址变为无效时, 大多数 (如果不是全部) 通信正在使用新地址.
预计IP层将为上层 (包括应用程序) 提供一种方法来选择最合适的源地址, 给定特定的目标和可能的其他约束. 应用程序可以选择在开始新通信之前自己选择源地址, 或者可以不指定地址, 在这种情况下, 上层网络层将使用IP层提供的机制代表应用程序选择合适的地址.
详细的地址选择规则超出了本文档的范围, 并在[RFC3484]中描述.