6. Destination Address Selection (目标地址选择)
6. Destination Address Selection (目标地址选择)
目标地址选择算法接受一个目标地址列表并对地址进行排序以产生一个新列表。它在此处根据地址 DA 和 DB 的成对比较进行指定, 其中 DA 在原始列表中出现在 DB 之前。
该算法将 IPv6 和 IPv4 地址一起排序。要在策略表中找到 IPv4 地址的属性, IPv4 地址必须表示为 IPv4 映射地址。
我们写 Source(D) 来表示为目标 D 选择的源地址。对于 IPv6 地址, 上一节指定了源地址选择算法。本文档中未指定 IPv4 地址的源地址选择。
如果目标 D 没有可用的源地址, 我们说 Source(D) 是未定义的。对于 IPv6 地址, 仅当 CandidateSource(D) 是空集时才是这种情况。
目标地址的成对比较包括十个规则, 这些规则必须按顺序应用。如果一个规则确定了结果, 则剩余的规则不相关且必须被忽略。后续规则充当早期规则的平局打破器。有关如何使用成对比较平局打破器规则对列表进行排序的更详细描述, 请参见上一节。
Rule 1: Avoid unusable destinations (避免不可用的目标). 如果已知 DB 不可达或 Source(DB) 未定义, 则偏好 DA。类似地, 如果已知 DA 不可达或 Source(DA) 未定义, 则偏好 DB。
讨论: 实现可能以多种方式知道特定目标不可达。例如, 目标可能通过当前未插入的网络接口到达。例如, 实现可能在一段时间内保留来自邻居不可达检测 [RFC4861] 的信息。无论如何, 用于此规则的不可达性确定是实现相关的。
Rule 2: Prefer matching scope (偏好匹配范围). 如果 Scope(DA) = Scope(Source(DA)) 且 Scope(DB) <> Scope(Source(DB)), 则偏好 DA。类似地, 如果 Scope(DA) <> Scope(Source(DA)) 且 Scope(DB) = Scope(Source(DB)), 则偏好 DB。
Rule 3: Avoid deprecated addresses (避免弃用地址). 如果 Source(DA) 是弃用的而 Source(DB) 不是, 则偏好 DB。类似地, 如果 Source(DA) 不是弃用的而 Source(DB) 是弃用的, 则偏好 DA。
Rule 4: Prefer home addresses (偏好归属地址). 如果 Source(DA) 同时是归属地址和转交地址而 Source(DB) 不是, 则偏好 DA。类似地, 如果 Source(DB) 同时是归属地址和转交地址而 Source(DA) 不是, 则偏好 DB。
如果 Source(DA) 只是归属地址而 Source(DB) 只是转交地址, 则偏好 DA。类似地, 如果 Source(DA) 只是转交地址而 Source(DB) 只是归属地址, 则偏好 DB。
Rule 5: Prefer matching label (偏好匹配标签). 如果 Label(Source(DA)) = Label(DA) 且 Label(Source(DB)) <> Label(DB), 则偏好 DA。类似地, 如果 Label(Source(DA)) <> Label(DA) 且 Label(Source(DB)) = Label(DB), 则偏好 DB。
Rule 6: Prefer higher precedence (偏好更高的优先级). 如果 Precedence(DA) > Precedence(DB), 则偏好 DA。类似地, 如果 Precedence(DA) < Precedence(DB), 则偏好 DB。
Rule 7: Prefer native transport (偏好本地传输). 如果 DA 通过封装过渡机制 (例如, IPv6 在 IPv4 中) 到达而 DB 不是, 则偏好 DB。类似地, 如果 DB 通过封装到达而 DA 不是, 则偏好 DA。
讨论: IPv6 Rapid Deployment on IPv4 Infrastructures (6rd, IPv4 基础设施上的 IPv6 快速部署) 协议 [RFC5969], Intra-Site Automatic Tunnel Addressing Protocol (ISATAP, 站点内自动隧道寻址协议) [RFC5214] 和配置的隧道 [RFC4213] 是封装过渡机制的示例, 其中目标地址没有特定前缀, 因此不能在策略表中分配较低的优先级。实现可以通过使用接口偏好的概念并给予虚拟接口 (如 IPv6-in-IPv4 封装接口) 低于本地接口 (如以太网接口) 的偏好来泛化此规则。
Rule 8: Prefer smaller scope (偏好较小的范围). 如果 Scope(DA) < Scope(DB), 则偏好 DA。类似地, 如果 Scope(DA) > Scope(DB), 则偏好 DB。
Rule 9: Use longest matching prefix (使用最长匹配前缀). 当 DA 和 DB 属于同一地址族 (都是 IPv6 或都是 IPv4) 时: 如果 CommonPrefixLen(Source(DA), DA) > CommonPrefixLen(Source(DB), DB), 则偏好 DA。类似地, 如果 CommonPrefixLen(Source(DA), DA) < CommonPrefixLen(Source(DB), DB), 则偏好 DB。
Rule 10: Otherwise, leave the order unchanged (否则, 保持顺序不变). 如果 DA 在原始列表中位于 DB 之前, 则偏好 DA。否则, 偏好 DB。
如果实现有其他方式对目标地址进行排序, 则规则 9 和 10 可以被取代。例如, 如果实现以某种方式知道哪些目标地址将产生 "最佳" 通信性能。