6.1.5. EID-to-RLOC UDP Map-Reply Message (EID 到 RLOC 的 UDP Map-Reply 报文)
6.1.5. EID-to-RLOC UDP Map-Reply Message (EID 到 RLOC 的 UDP Map-Reply 报文)
Map-Reply 返回的 EID-Prefix 及其前缀长度小于或等于所请求的 EID. 所请求 EID 来自 Data-Probe 的 IP 首部目的字段或 Map-Request 的 EID 记录. Map-Reply 中的 RLOC 为 LISP 站点所有 ETR 的全局可路由 IP 地址. 每个 RLOC 传达状态可达性, 但不从请求方视角传达路径可达性, 需单独测试路径可达性, 见第 6.3 节.
Map-Reply 所含的 EID-Prefix 粒度 (前缀 + 长度) 可能与触发它的 Map-Request 不同. 例如 Map-Request 针对先前 Map-Reply 返回的前缀时, 请求方用新的前缀信息与粒度更新缓存. 例如请求方缓存两条被 Map-Reply 中一条更粗前缀覆盖的 EID-Prefix 时, 用更粗 EID-Prefix 替换项. 相反, 也可将一条更粗前缀替换为多条更细前缀, 不是删除更粗项, 而是添加更细前缀, 查找时更细项覆盖更粗项.
当 ETR 配置了重叠 EID-Prefix 时, 对最佳匹配任一 EID-Prefix 的 EID 的 Map-Request 必须仅在一条 Map-Reply 消息中返回. 例如 ETR 数据库映射项为:
10.0.0.0/8 10.1.0.0/16 10.1.1.0/24 10.1.2.0/24
对 EID 10.1.1.1 的 Map-Reply 记录数为 1, 映射记录 EID-Prefix 为 10.1.1.0/24.
对 EID 10.1.5.5 的 Map-Reply 记录数为 3, 映射记录为 10.1.0.0/16, 10.1.1.0/24 与 10.1.2.0/24.
并非所有重叠 EID-Prefix 都需返回, 仅返回相对请求 EID 匹配 EID-Prefix 的更细项 (第二例中请求 10.1.5.5 时未返回 10.0.0.0/8). 返回多条 EID-Prefix 时, 均应使用相同 Time to Live, 以便同时超时. 稍后收到更细 EID-Prefix 时, 即使存在更粗项也可存储其 Map-Reply 记录的 TTL. 稍后收到更粗 EID-Prefix 时, 其 map-cache 过期时间应设为 map-cache 中任何更细 EID-Prefix 的最小过期时间, 以保持 EID-Prefix 集合完整性, 避免删除更细项而保留更粗项.
对同一 EID-Prefix, Map-Reply 向同一请求路由器发送频率不应超过每秒一次. 为可扩展性, 期望将 EID 地址聚合为 EID-Prefix, 使一条 Map-Reply 可满足前缀范围内多个 EID 的映射, 从而减少 Map-Request.
Map-Reply 记录可有空 Locator-Set. Negative Map-Reply 即 Locator-Set 为空的 Map-Reply, 向请求 Map-Reply 的 ITR 或 PITR 传达发送方的特殊动作. 主要用途: Map-Resolver 指示目的属于 LISP 站点还是非 LISP 站点, 以及对未分配 EID 的 Map-Request 进行源抑制.
每条 Map-Reply 记录中, Locator-Set 内 Locator 列表顺序对发起 Map-Reply 的每个 ETR 必须相同. Locator-Set 必须按 IP 地址升序排序, 其中 IPv4 locator 地址在数值上 "小于" IPv6 locator 地址.
发送 Map-Reply 时, 目的地址从 Map-Request 的某一 ITR-RLOC 字段复制. ETR 可从其所支持地址族中选择 locator 地址. 对 Data-Probe, Map-Reply 目的地址从触发应答的 Data-Probe 消息源地址复制. Map-Reply 源地址为选定的本地 IP 地址之一, 以使上游服务提供商的 Unicast Reverse Path Forwarding (uRPF) 检查成功. Map-Reply 目的端口从 Map-Request 或 Data-Probe 的源端口复制, 源端口设为知名 UDP 端口 4342.
6.1.5.1. Traffic Redirection with Coarse EID-Prefixes (粗粒度 EID-Prefix 的流量重定向)
ETR 配置错误或遭入侵时, 可能在 Map-Reply 中返回粗粒度 EID-Prefix, 覆盖分配给其他站点的前缀, 将其流量重定向到被入侵站点的 Locator.
解决思路主要有两种. 一是让 Map-Server 代 ETR 应答 Map-Reply, 使返回的为已注册 EID-Prefix; ETR 与 Map-Server 之间用共享密钥保护, ETR 更易检测异常. 二是让 ITR 与 PITR 仅缓存掩码长度大于或等于某配置前缀长度的 EID-Prefix, 将任意通告前缀宽度的损害限制在特定范围, 但需与站点前缀分配协调. 两种方案可独立或同时使用.
撰写本文时, 其他方案仍在研究与考虑中.