附录 A. 多宿主主机
本附录讨论在使用 Neighbor Discovery 时, 具有多个接口的主机或连接到多个网络的主机 (multihomed hosts, 多宿主主机) 需要考虑的问题.
A.1. 概述
多宿主主机是指具有以下特征的主机:
- 多个物理接口 (例如 Ethernet 和 Wi-Fi)
- 单个物理接口上的多个逻辑接口
- 连接到多个网络或子网
多宿主会给 Neighbor Discovery 带来复杂性, 尤其体现在:
- 源地址选择
- 路由器选择
- 前缀管理
- 默认路由选择
A.2. 源地址选择
当多宿主主机发送分组时, 它必须选择合适的源地址. 该选择会影响:
可达性 (Reachability): 选定的源地址必须能从目的地到达, 并且需要考虑路由策略和入口过滤.
性能 (Performance): 不同接口可能具有不同特性, 如带宽, 时延和成本.
策略 (Policy): 管理策略可能规定到某些目的地应使用哪个接口.
RFC 6724 定义了默认源地址选择算法, 该算法考虑如下因素:
- 作用域匹配
- 首选地址与弃用地址
- Home address 与 care-of address (Mobile IPv6)
- 标签匹配和策略表
A.3. 多接口上的路由器发现
多宿主主机会在多个接口上接收 Router Advertisements. 关键考虑事项包括:
按接口维护的路由器列表: 主机应该为每个接口维护独立的 Default Router Lists, 因为一个接口上的路由器可能无法从另一个接口到达.
默认路由器选择: 选择默认路由器时, 主机必须考虑:
- 该路由器可通过哪个接口到达
- 路由器偏好 (如果通过 RFC 4191 通告)
- 基于本地策略的接口偏好
前缀信息: 通过 Router Advertisements 学到的前缀与接收它们的接口相关联. 除非显式配置为这样做, 否则主机不应该使用来自一个接口的地址, 通过另一个接口发送分组.
A.4. On-Link 判定
对于多宿主主机, on-link 判定会更加复杂:
- 一个地址可能在某个接口上是 on-link, 但在另一个接口上不是
- 主机必须跟踪哪些前缀在哪些接口上是 on-link
- 发送分组时, 主机必须一致地选择源地址和出接口
A.5. Redirect 处理
Redirect 消息与接收它们的接口相关. 多宿主主机:
-必须将 Redirect 信息与接收该 Redirect 的接口关联 -不得将来自一个接口的 Redirect 信息应用到另一个接口的路由决策
A.6. Neighbor Unreachability Detection
Neighbor Unreachability Detection 在每个接口上独立执行. 在一个接口上不可达的邻居, 仍可能在另一个接口上可达 (如果该邻居本身也是多宿主的).
A.7. 每个接口上的多个地址
单个接口可能有多个地址:
- Link-local address (必需)
- 来自不同前缀的一个或多个全局地址
- Privacy addresses (RFC 4941)
- Temporary addresses
每个地址都有自己的 Preferred Lifetime 和 Valid Lifetime, 必须独立跟踪.
A.8. 与 Mobile IPv6 的交互
Mobile IPv6 会为多宿主主机增加额外复杂性:
- Home address 与 care-of address 的选择
- 当多个接口可用时的多个 care-of addresses
- 跨接口的动态 home agent 发现
有关 Mobile IPv6 交互的详细信息, 请参阅 RFC 3775 及相关文档.
A.9. 实现建议
对于多宿主主机, 实现 应该:
-
维护按接口划分的状态: 为每个接口分别维护 Neighbor Caches, Destination Caches, Prefix Lists 和 Default Router Lists.
-
正确的源地址选择: 实现 RFC 6724 源地址选择算法.
-
接口选择: 当多个接口都能到达某个目的地时, 根据以下因素选择:
- 最长匹配前缀
- 路由器偏好
- 本地策略 (管理员配置)
- 接口特性
-
避免跨接口假设: 不要假定在一个接口上学到的信息适用于另一个接口.
-
处理接口状态变化: 正确处理接口启用/禁用事件, 并相应更新路由和地址信息.
-
监视所有接口: 处理所有活动接口上的 Router Advertisements.
A.10. 常见陷阱
陷阱 1: 使用错误的源地址 通过接口 B 发送时使用接口 A 的源地址可能导致:
- 入口过滤丢弃分组
- 返回流量到达错误的接口
- 连接中断
陷阱 2: 跨接口 Redirect 将来自一个接口的 Redirect 信息应用到另一个接口上的路由决策.
陷阱 3: 单一 Default Router List 为所有接口维护一个单一的 Default Router List, 可能导致尝试通过错误接口到达路由器.
陷阱 4: 忽略接口偏好 选择路由时没有考虑接口特定的特性, 如带宽, 成本和可靠性.
A.11. 未来工作
与多宿主主机相关的潜在未来工作包括:
- 更好的接口选择算法
- 在接口之间共享可达性信息的机制
- 能考虑多条路径的增强型路由器偏好
- 与流量工程和服务质量机制集成