Networking

無論 ping 起源如何,RTT 理論上是否相同?

  • October 23, 2018

假設您從設備 1 向設備 2 發送 ping。結果將為您提供 RTT。

從理論上講(因為實際上有許多變數在起作用),通過從設備 2 ping 設備 1,RTT 是否相同?

當事情按預期工作時,延遲將由光速決定。如果兩個端點非常靠近(例如在同一棟建築物中),則路徑上任何路由器和交換機的處理時間可能比光速造成的延遲更大。

然而,只要兩個方向上的數據包採用相同的路徑,這些因素將是相同的。

當數據包可以通過多條路徑時,路由器和交換機通常會使用等價多路徑 (ECMP) 來決定向哪個方向發送每個數據包。這通常使用所選標頭欄位的散列來選擇路徑。使用的標頭欄位通常是以下內容的子集:

  • 源 MAC
  • 目標 MAC
  • 源 IP
  • 目標 IP
  • IP協議
  • 流量標籤
  • 源埠
  • 目的埠

無論您從哪個方向執行 ping 命令,前五個都是相同的。

流標籤可能不同,並可能導致數據包採用不同的路由。然而,該欄位僅存在於 IPv6 上,並非所有路由器在選擇路徑時都會考慮它。

ICMP 沒有埠號,因此不會考慮這些欄位。路由器可以改為使用 ID 欄位,但似乎不太可能僅針對 ICMP 回應要求/回複數據包實現這種特殊情況。

因此,總體而言,數據包不太可能採用不同的路由。

在兩個方向上看到不同往返時間的另一個更可能的原因是兩個端點本身的處理時間。在我所知道的每個作業系統中,核心都會接收回應要求並以回顯回復進行響應,因此發生得非常快。但是 ping 命令本身在使用者模式下執行,如果它在繁忙的機器上執行,則會有更多的延遲。如果兩台機器的負載不相等,您可以預期繁忙機器上的 ping 命令會因此看到稍長的往返時間。

引用自:https://serverfault.com/questions/936253