9. Traceroute Considerations (Traceroute 考虑事项)
9. Traceroute Considerations (Traceroute 考虑事项)
当 LISP 站点中的源主机向另一个 LISP 站点中的目标主机发起 traceroute 时, 非常希望能看到完整路径。由于数据包从 ITR 到 ETR 是封装的, 隧道跨越可以被视为单跳。但是, LISP traceroute 将提供完整路径, 以便用户可以看到从源 LISP 主机到目标 LISP 主机路径的 3 个不同段:
Segment 1 (源 LISP 站点内基于 EID):
source host ---> first hop ... next hop ---> ITR
Segment 2 (核心网络中基于 RLOC):
ITR ---> next hop ... next hop ---> ETR
Segment 3 (目标 LISP 站点内基于 EID):
ETR ---> next hop ... last hop ---> destination host
对于路径的段 1, ICMP Time Exceeded 消息以正常方式返回, 就像今天一样。ITR 在封装之前执行 TTL 递减并测试是否为 0。因此, ITR 的跳数被 traceroute 源视为具有 EID 地址 (面向站点的接口地址)。
对于路径的段 2, ICMP Time Exceeded 消息返回到 ITR, 因为 TTL 递减到 0 是在外部头部完成的, 所以 ICMP 消息的目标是 ITR RLOC 地址和封装 traceroute 数据包的源 RLOC 地址。ITR 查看 ICMP 有效负载内部以检查 traceroute 源, 以便可以将 ICMP 消息返回到 traceroute 客户端的地址, 并且还在 ICMP 消息中保留核心路由器 IP 地址。这样 traceroute 客户端可以在 traceroute 输出中显示核心路由器地址 (RLOC 地址)。ETR 返回其 RLOC 地址并响应 TTL 递减到 0, 就像之前的核心路由器一样。
对于段 3, ETR 下游的下一跳路由器将递减被封装、发送到核心、由 ETR 解封装并转发的数据包的 TTL, 因为它不是最终目标。如果 TTL 递减到 0, 到 traceroute 目标路径上的任何路由器 (包括下一跳路由器或目标) 将向 traceroute 客户端的源 EID 发送 ICMP Time Exceeded 消息。ICMP 消息将由本地 ITR 封装并发送回发起 traceroute 的源站点中的 ETR, 数据包将在那里传递给主机。