Skip to main content

附录E. 实现问题

本附录讨论各种实现问题并为邻居发现实现者提供指导。

当节点的链路层地址更改时, 会出现几个问题:

问题: 其他节点上的缓存条目变为无效 解决方案: 发送未经请求的邻居通告以更新邻居的缓存

问题: 更新的时间可能导致数据包丢失 解决方案: 发送多个未经请求的NA (最多MAX_NEIGHBOR_ADVERTISEMENT)

E.2. Duplicate Address Detection Timing (重复地址检测时间)

问题: DAD期间的竞态条件

  • 两个节点可能同时对同一地址执行DAD
  • 两者可能得出地址可用的结论

解决方案:

  • 在开始DAD之前使用随机延迟 (最多MAX_RTR_SOLICITATION_DELAY)
  • 正确处理DAD失败并使用不同地址重试

E.3. Router Advertisement Timing (路由器通告时间)

问题: 在多个路由器之间协调RA传输 解决方案:

  • 在RA间隔中使用随机抖动
  • 使用随机延迟响应RS (0到MAX_RA_DELAY_TIME)

E.4. Neighbor Cache Size (邻居缓存大小)

问题: 邻居缓存条目的内存有限 解决方案:

  • 实施垃圾回收 (首先删除STALE条目)
  • 优先考虑REACHABLE条目
  • 使用最近最少使用 (LRU) 驱逐策略

E.5. Destination Cache Management (目的地缓存管理)

问题: 目的地缓存可能变得非常大 解决方案:

  • 实施老化和大小限制
  • 首先删除具有过期PMTU信息的条目
  • 与邻居缓存清理集成

E.6. Multicast Group Management (组播组管理)

问题: 管理请求节点组播组 解决方案:

  • 在添加/删除地址时加入/离开组
  • 处理映射到同一请求节点组的多个地址

E.7. Performance Optimization (性能优化)

并发地址解析:

  • 并行处理多个地址解析
  • 在解析期间排队数据包

快速路径处理:

  • 优化REACHABLE邻居 (最常见的情况)
  • 缓存经常使用的目的地缓存条目

E.8. Security Implementation (安全实现)

SEND集成:

  • 优雅地处理混合SEND/非SEND环境
  • 提供安全策略的配置选项

速率限制:

  • 防止ND消息泛洪
  • 限制邻居缓存条目创建速率