6.3.1. Echo Nonce Algorithm (回声随机数算法)
6.3.1. Echo Nonce Algorithm (回声随机数算法)
当数据在来自不同站点的 Locator 之间双向流动时, 可以使用一种称为 "nonce echoing (随机数回声)" 的数据平面机制来确定 ITR 和 ETR 之间的可达性。当 ITR 想要请求随机数回声时, 它会设置 N 位和 E 位, 并在下一个封装数据包的 LISP 头部中放置一个 24 位的 nonce (随机数) [RFC4086]。
当 ETR 接收到这个数据包时, 封装的数据包会正常转发。当 ETR 下次向 ITR 发送数据包时, 它会包含之前接收到的随机数, 并设置 N 位、清除 E 位。ITR 看到这个 "echoed nonce (回声随机数)" 后就知道到 ETR 的往返路径是通畅的。
ITR 在处于 echo-nonce-request (回声随机数请求) 状态时, 会为它发送的每个数据包设置 E 位和 N 位。ITR 在确定路径不可达之前等待处理回声随机数的时间是可变的, 这是留给实现的选择。
如果 ITR 正在接收来自 ETR 的数据包, 但在处于 echo-nonce-request 状态时没有看到随机数回声, 那么到 ETR 的路径是不可达的。这个决定可以被其他 Locator 可达性算法覆盖。一旦 ITR 确定到 ETR 的路径已断开, 它可以切换到该 EID-Prefix 的另一个 Locator。
请注意, 这里的 "ITR" 和 "ETR" 是相对术语。两个设备必须都实现 ITR 和 ETR 功能, 回声随机数机制才能运行。
ITR 和 ETR 可能同时进入 echo-nonce-request 状态。发送的数据包数量或发送回声随机数请求的时间是特定于实现的设置。但是, 当 ITR 处于 echo-nonce-request 状态时, 它可以在下一组封装的数据包中回声 ETR 的随机数, 然后继续发送 echo-nonce-request 数据包。
这种机制不能完全解决前向路径可达性问题, 因为流量可能是单向的。也就是说, 在站点接收流量的 ETR 可能不是从该站点传输流量的 ITR 设备, 或者站点到站点的流量是单向的, 因此没有返回流量的 ITR。
回声随机数算法是双边的。也就是说, 如果一方设置了 E 位而另一方没有启用 echo-noncing, 那么随机数回声不会发生, 请求方可能会错误地认为 Locator 不可达。ITR 应该仅在知道 ETR 启用了 echo-noncing 时才在封装数据包中设置 E 位。这通过 Map-Reply 消息中的 E 位来传达。
请注意, 正在研究其他 Locator 可达性机制, 可以用来补充甚至覆盖回声随机数算法。请参阅下一节中的控制平面探测示例。