跳到主要内容

6.3. Routing Locator Reachability (路由定位器可达性)

6.3. Routing Locator Reachability (路由定位器可达性)

目前已定义若干用于判定 Routing Locator (路由定位器, RLOC) 可达性的机制:

  1. ETR 可以检查来自 ITR 的已封装数据分组 LISP 首部中的 Locator-Status-Bits. 若 ETR 同时充当 ITR 且有必要向原 ITR 站点回传流量, 则可利用该状态信息帮助选择 RLOC.

  2. ITR 可能收到针对其所用 RLOC 的 ICMP Network Unreachable 或 Host Unreachable 消息. 这表明 RLOC 可能已失效. 注意, 信任 ICMP 消息未必可取, 但完全忽略它们也不可取. 鼓励实现遵循当前在处理这些情况时的最佳实践.

  3. 参与全球路由系统的 ITR 可以依据是否存在匹配 RLOC IP 地址的 BGP Routing Information Base (路由信息库, RIB) 路由来判定 RLOC 是否失效.

  4. ITR 可能从目的主机收到 ICMP Port Unreachable 消息. 当 ITR 尝试使用互通机制 [RFC6832] 且 LISP 封装数据被发往不具备 LISP 能力的站点时, 会出现这种情况.

  5. ITR 可能收到 ETR 为响应先前发出的 Map-Request 而返回的 Map-Reply. Map-Reply 的 RLOC 源地址很可能处于 up 状态, 因为 ETR 能够将 Map-Reply 发送到 ITR.

  6. 当 ETR 收到来自 ITR 的已封装分组时, 分组外层首部中的源 RLOC 很可能处于 up 状态.

  7. 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 不可达的指示. 相反, 必须使用其他机制判定可达性.