附录E. 实现问题
本附录讨论各种实现问题并为邻居发现实现者提供指导。
E.1. Link-Layer Address Changes (链路层地址更改)
当节点的链路层地址更改时, 会出现几个问题:
问题: 其他节点上的缓存条目变为无效 解决方案: 发送未经请求的邻居通告以更新邻居的缓存
问题: 更新的时间可能导致数据包丢失 解决方案: 发送多个未经请求的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消息泛洪
- 限制邻居缓存条目创建速率