6.6.2. Solicit-Map-Request (SMR) (请求发送 Map-Request (SMR))
6.6.2. Solicit-Map-Request (SMR) (请求发送 Map-Request (SMR))
请求对端发送 Map-Request 是映射变更站点 ETR 选择性控制其接收 Map-Reply 请求速率的一种方式. SMR 还用于告知远端 ITR 更新其缓存的映射.
由于 ETR 不跟踪哪些远端 ITR 缓存了其映射, 不知道哪些 ITR 需要更新. 因此 ETR 会向过去一分钟内向其发送过已封装数据的那些站点 solicit Map-Request (称为 SMR 消息). 特别地, ETR 会向最近向其发送过已封装数据的 ITR 发送 SMR.
SMR 消息即在 Map-Request 消息中置位的一个比特. ITR 或 PITR 收到 SMR 消息时将发送 Map-Request. SMR 发送方与 Map-Request 响应方都必须对这些消息进行速率限制. 速率限制可实现为全局限制器或按 SMR 目的地的限制器.
以下程序展示站点对 EID-to-RLOC 映射执行 Locator-Set 压缩时 SMR 交换如何进行:
-
ETR 的数据库映射变更时, 站点 ETR 开始对其缓存的每个
Map-Cache条目中的每个 Locator 发送 SMR 位置位的Map-Request. -
收到 SMR 的远端 ITR 将调度向 SMR 消息的源 locator 地址或映射数据库系统发送
Map-Request. 选择新分配的随机 nonce, 使用的 EID-Prefix 从 SMR 消息复制. 若源 Locator 是缓存 Locator-Set 中唯一的 Locator, 远端 ITR 应向数据库映射系统发送Map-Request, 以防单一 Locator 已变更且可能不再可达以接受Map-Request. -
远端 ITR 在继续使用的缓存映射的同时, 必须对
Map-Request进行速率限制直至收到Map-Reply. 当使用第 6.6.3 节所述 Map-Versioning 时, SMR 发送方可检测 ITR 是否使用最新的数据库映射. -
具有变更映射的站点的 ETR 将以 SMR 触发的
Map-Request中的 nonce 回复Map-Reply.Map-Reply应进行速率限制. 这对避免Map-Reply洪泛很重要. -
具有变更映射的站点的 ETR 记录已发送
Map-Request的站点已在Map-Cache条目中收到新映射数据, 以便发往远端站点的分组的Locator-Status-Bits反映新映射. 然后 ETR 停止发送 SMR 消息.
实验正在进行以确定合适的速率限制参数.
出于安全原因, ITR 不得处理未经请求的 Map-Reply. 为避免第三方破坏 Map-Cache 条目, 必须验证 SMR 触发的 Map-Request 的发送方. 若 ITR 收到 SMR 触发的 Map-Request 且源不在所存 Map-Cache 条目的 Locator-Set 中, 则响应的 Map-Request 必须以 EID 目的地址发往映射数据库系统. 由于映射数据库系统是到达权威 ETR 的更可靠途径, 它会将 Map-Request 送达映射数据的权威源.
当 ITR 收到 SMR 触发的 Map-Request 但对 SMR 消息中的 EID 没有缓存映射时, 可以不发送 SMR 触发的 Map-Request. 该场景可能发生在 ETR 向其 Map-Cache 中存储的 Locator-Set 的所有 Locator 发送 SMR, 但收到 SMR 的远端 ITR 可能并未向该站点发送分组时. 在 ITR 需要发送之前更新它们没有意义, 届时它们会发送 Map-Request 以获取 Map-Cache 条目.