跳到主要内容

12. 重新编号考虑

IPv6 网络可能因各种原因需要重新编号, 例如更换 Internet Service Providers (ISPs), 公司合并或网络重组. Neighbor Discovery 包含便于平滑执行重新编号操作的功能. 本节讨论 IPv6 网络重新编号的考虑事项.

12.1. 重新编号概述

网络重新编号涉及改变网络上主机使用的 IPv6 地址前缀. IPv6 中重新编号的主要机制包括:

  1. 带有新前缀的 Router Advertisements: 路由器使用适当的 lifetimes 通告新前缀, 同时逐步淘汰旧前缀.
  2. DHCPv6: Dynamic Host Configuration Protocol for IPv6 也可以在重新编号期间管理地址分配.
  3. Stateless Address Autoconfiguration (SLAAC): 主机根据路由器通告的新前缀自动生成新地址.

12.2. 基于 Router Advertisement 的重新编号

Neighbor Discovery 的 Router Advertisement 机制旨在支持平滑的重新编号:

12.2.1. 引入新前缀

引入新前缀时:

  1. 初始通告: 路由器开始通告新前缀, 并带有:

    • Valid Lifetime: 设置为合理的持续时间 (例如 2 小时或更长)
    • Preferred Lifetime: 初始设置为等于 Valid Lifetime
    • A (Autonomous) flag: 设置以指示主机应使用 SLAAC
  2. 共存期: 同时通告旧前缀和新前缀, 允许:

    • 新连接使用新地址
    • 现有连接继续使用旧地址
    • 在不中断服务的情况下逐步迁移

12.2.2. 弃用旧前缀

要逐步淘汰旧前缀:

  1. 将 Preferred Lifetime 设为零: 这会使主机:

    • 停止为新连接使用旧前缀
    • 继续使用带旧地址的现有连接
    • 不再从已弃用前缀生成新地址
  2. 缩短 Valid Lifetime: 逐步减少 Valid Lifetime, 以允许现有连接完成.

  3. 最终移除: 一旦 Valid Lifetime 过期或被设为零, 主机会从其配置中移除这些地址和前缀.

12.2.3. 时间线建议

典型的重新编号时间线可能是:

  • 第 0 周: 开始与旧前缀同时通告新前缀 (两者均为 preferred)
  • 第 1-2 周: 弃用旧前缀 (Preferred Lifetime = 0, Valid Lifetime = 1 week)
  • 第 2-3 周: 继续缩短旧前缀的 Valid Lifetime
  • 第 3 周及以后: 完全停止通告旧前缀

确切时间线取决于网络要求以及应用和连接的性质.

12.3. 实现考虑

12.3.1. 主机行为

主机 应该:

  • 监测 Router Advertisements: 持续处理 Router Advertisements, 以获知新前缀和 lifetime 变化.
  • 遵守 Lifetimes: 为新连接选择源地址时, 遵守 Preferred Lifetimes 和 Valid Lifetimes.
  • 平滑弃用: 当前缀变为 deprecated (Preferred Lifetime = 0) 时, 避免将其用于新连接, 但维持现有连接.
  • 移除过期地址: 当地址的 Valid Lifetime 过期时删除该地址.

12.3.2. 路由器行为

路由器 应该:

  • 协调重新编号: 链路上的所有路由器都应通告一致的前缀信息.
  • 使用保守定时器: 留出足够时间完成重新编号, 而不中断服务.
  • 监测进度: 网络管理员应监测重新编号进度, 以确保平滑过渡.

12.3.3. 应用考虑

应用应设计为:

  • 处理地址变化: 准备好在长时间运行的应用生命周期内处理地址变化.
  • 优先使用临时地址: 对于隐私敏感型应用, 使用会周期性变化的临时地址 [RFC4941].
  • 实现 Happy Eyeballs: 在过渡期间支持旧地址和新地址 [RFC8305].

12.4. DHCPv6 和重新编号

使用 DHCPv6 进行地址分配时:

  • Lease Times: DHCPv6 服务器可以通过调整旧地址和新地址的 lease times 来控制重新编号.
  • RECONFIGURE Messages: 服务器可以使用 RECONFIGURE messages 指示客户端更新其配置并获得新地址.
  • 与 RA 协调: 基于 DHCPv6 的重新编号应与 Router Advertisements 协调, 以确保一致性.

12.5. DNS 考虑

重新编号期间, 必须更新 DNS 记录:

  1. 添加新记录: 为新地址创建 AAAA 记录.
  2. 降低 TTL: 在重新编号前降低 DNS 记录的 Time-To-Live (TTL), 以尽量减少缓存问题.
  3. 保留旧记录: 在过渡期内保持旧 AAAA 记录可用.
  4. 移除旧记录: 重新编号完成且旧地址不再使用后, 移除过时的 DNS 记录.

Dynamic DNS (DDNS) 可以为支持它的主机自动执行此过程.

12.6. 运行建议

网络运营者应:

  1. 仔细规划: 制定详细的重新编号计划, 包括时间线和回滚过程.
  2. 沟通: 告知用户和利益相关者重新编号日程.
  3. 监测: 使用网络监测工具跟踪重新编号进度并识别问题.
  4. 测试: 如有可能, 在部署到生产环境前, 在实验室环境中测试重新编号流程.
  5. 记录: 维护前缀分配和重新编号历史的文档.

12.7. 多宿主和重新编号

多宿主网络 (连接到多个 ISPs) 面临额外挑战:

  • 多个前缀: 主机可能同时拥有来自多个前缀的地址.
  • 源地址选择: 正确的源地址选择 (RFC 6724) 对于为出站连接选择正确地址至关重要.
  • Provider Failover: 当某个提供商的前缀不可用时, 主机应无缝过渡到使用其他前缀的地址.

12.8. 企业考虑

对于企业网络:

  • 内部编号: 内部地址分配可能不需要像边缘前缀那样频繁改变.
  • ULA 使用: Unique Local Addresses (ULA, RFC 4193) 可以提供不依赖 ISP 变化的稳定内部寻址.
  • NAT66: 虽然通常不建议使用, 一些企业可能会使用 NAT66 将内部重新编号与外部变化隔离, 但这有显著缺点.

12.9. 自动化和工具

为便于重新编号:

  • 配置管理: 使用自动化配置管理工具更新路由器配置.
  • 监测系统: 实现监测以检测与重新编号相关的问题.
  • 脚本和 APIs: 开发脚本或使用 APIs 自动执行 DNS 更新和其他重新编号任务.

12.10. 总结

Neighbor Discovery 的 Router Advertisement 机制为 IPv6 网络重新编号提供了稳健支持. 通过仔细管理前缀 lifetimes, 并在路由器,DHCPv6 服务器和 DNS 之间协调变更, 网络运营者可以实现服务中断最少的平滑过渡. 适当的规划, 沟通和监测是成功完成重新编号操作的关键.