6.3. Routing Locator Reachability (路由定位器可达性)
6.3. Routing Locator Reachability (路由定位器可达性)
目前已定义若干用于判定 Routing Locator (路由定位器, RLOC) 可达性的机制:
-
ETR 可以检查来自 ITR 的已封装数据分组 LISP 首部中的
Locator-Status-Bits. 若 ETR 同时充当 ITR 且有必要向原 ITR 站点回传流量, 则可利用该状态信息帮助选择 RLOC. -
ITR 可能收到针对其所用 RLOC 的 ICMP Network Unreachable 或 Host Unreachable 消息. 这表明 RLOC 可能已失效. 注意, 信任 ICMP 消息未必可取, 但完全忽略它们也不可取. 鼓励实现遵循当前在处理这些情况时的最佳实践.
-
参与全球路由系统的 ITR 可以依据是否存在匹配 RLOC IP 地址的 BGP Routing Information Base (路由信息库, RIB) 路由来判定 RLOC 是否失效.
-
ITR 可能从目的主机收到 ICMP Port Unreachable 消息. 当 ITR 尝试使用互通机制 [RFC6832] 且 LISP 封装数据被发往不具备 LISP 能力的站点时, 会出现这种情况.
-
ITR 可能收到 ETR 为响应先前发出的
Map-Request而返回的Map-Reply.Map-Reply的 RLOC 源地址很可能处于 up 状态, 因为 ETR 能够将Map-Reply发送到 ITR. -
当 ETR 收到来自 ITR 的已封装分组时, 分组外层首部中的源 RLOC 很可能处于 up 状态.
-
ITR/ETR 对可以使用本节描述的 Locator 可达性算法, 即 Echo-Noncing 或 RLOC-Probing.
通过检查 LISP 封装数据分组中的 Locator-Status-Bits 来确定 Locator 通断可达性时, ETR 将从封装 ITR 收到关于该站点所有 ETR 可达性的最新状态. 源站点的基于 CE 的 ITR 可以按如下方式借助站点 IGP 相互判定可达性:
o 正常情况下, 每个 ITR 会向站点 IGP 通告默认路由.
o 若 ITR 故障或其到 PE 的上行链路故障, 其默认路由将超时或被撤销.
因此每个 ITR 可以观察其他 ITR 是否仍通告默认路由, 从而为其设置 Locator-Status-Bits.
Map-Reply 中列出的 RLOC 以序号 0 到 n-1 编号. LISP 封装分组中的 Locator-Status-Bits 从最低有效位起编号为 0 到 n-1. 例如, 若 Map-Reply 中第 3 个位置的 RLOC 失效 (序号为 2), 则站点内所有 ITR 会清除其为封装分组设置的 Locator-Status-Bits 字段的第 3 个最低有效位 (xxxx x0xx).
ETR 解封装时会检查 Locator-Status-Bits 字段是否有变化. 当某位从 1 变为 0 时, 若 ETR 同时充当 ITR, 将停止向被标示为 down 的 RLOC 封装分组. 仅当对应的 Locator-Status-Bit 恢复为 1 时才恢复使用该 RLOC. Locator-Status-Bits 与每个 EID-Prefix 的 Locator-Set 相关联. 因此, 当某 Locator 不可达时, 与最后一次 Map-Reply 返回列表中该 Locator 位置对应的 Locator-Status-Bit 将对该 EID-Prefix 置零.
当站点内的 ITR 未部署在 CE 路由器上时, 仍可使用 IGP 判定 Locator 的可达性, 前提是将 Locator 注入 IGP. 通常在环回接口上配置 /32 地址时这样做.
当 ITR 将 ICMP Network Unreachable 或 Host Unreachable 消息作为判定不可达的手段时, 将停止使用 Map-Reply 的 Locator 列表中描述的 Locator. 然而该方法不可靠, 因为许多网络运营商关闭了 ICMP Destination Unreachable 的生成.
若 ITR 确实收到 ICMP Network Unreachable 或 Host Unreachable 消息, 它可以针对发起被 ITR 封装的数据分组的主机, 自行产生 ICMP Destination Unreachable 消息.
此外, 启用 BGP 的 ITR 可以单方面检查 RIB, 查看映射条目中 Locator-Set 的 locator 地址是否匹配某前缀. 若未找到且 BGP 在 Default-Free Zone (DFZ) 中运行, 即使 Locator-Status-Bits 表明 Locator 为 up, 也可以决定不使用该 Locator. 此时从 ITR 到分配该 Locator 的 ETR 的路径不可用. 更多细节见 [LOC-ID-ARCH].
可选地, ITR 可以向某 Locator 发送 Map-Request, 若返回 Map-Reply, 则已判定该 Locator 可达. 显然, 发送此类探测会增加隧道路由器为活动流产生的控制消息数量, 因此假定被通告的 Locator 可达.
该假设确实造成一种依赖: Locator 不可达通过接收 ICMP Host Unreachable 消息检测. 当判定某 Locator 不可达时, 不再将其用于活动流量, 这与在 Map-Reply 中以 Priority 255 列出该 Locator 的效果相同.
ITR 可以通过周期性发送 Request 来测试不可达 Locator 的可达性. Request 与 Reply 都必须进行速率限制. Locator 可达性测试从不使用数据分组进行, 因为那样会增加端到端会话的分组丢失风险.
ETR 解封装分组时, 知道从封装 ITR 到自身可达, 因为分组正是经此路径到达. 多数情况下 ETR 也能到达 ITR, 但不能假定一定成立, 因为路径可能不对称. 当存在从 ITR 到 ETR 的单向流量时, ITR 不应将缺乏回程流量作为 ETR 不可达的指示. 相反, 必须使用其他机制判定可达性.