簡體   English   中英

如何測量單向延遲?

[英]How to measure one-way latency?

我想測量 troughput 從我的客戶端到我的服務器所花費的時間。 目前我只能測量完整的行程(從客戶端到服務器再回到客戶端)我可以通過測量發送數據包之前的時間和從服務器接收回來的時間來測量它。 從技術上講,如果我要划分完整的行程時間,我將得到每個單向吞吐量的平均值。

但是,如果一些吞吐量實際上需要更長時間才能到達,就像這樣:

在此處輸入圖像描述

在我創建的圖像中,從客戶端到服務器的吞吐量是 30 毫秒,從服務器到客戶端是 90 毫秒。 如果數據有這樣的到達率,那么測量整個往返行程並將其除以 2 將不會給出准確的單向到達時間。 如何准確測量單程到達時間?

如何准確測量單程到達時間

TL;DR - 你不能

這實際上是一個非常深刻的哲學問題,在物理學的核心(宇宙的底部“金屬”)中沒有得到解答。 物理學並沒有明確地知道單向光速,只知道雙向光速。 到目前為止,我們設計的任何實驗都無法回答這個問題。 請參閱單向光速

盡管可以測量雙向路徑上的平均速度,但一個方向或另一個方向的單向速度是未定義的(並且不僅僅是未知的),除非可以定義兩個不同位置的“同一時間”。 為了測量光從一個地方傳播到另一個地方所花費的時間,有必要知道在同一時間尺度上測量的開始和結束時間。 這需要兩個同步時鍾,一個在開始時,一個在結束時,或者需要某種從開始到結束瞬時發送信號的方法。 沒有已知的即時傳輸信息的方式。 因此,平均單向速度的測量值取決於用於同步開始和結束時鍾的方法。 這是一個約定俗成的問題。

您可以通過同步時鍾來任意接近非相對論的情況,但是您如何知道時鍾保持同步呢? 對於您的情況,您必須同意在同一時間信號上同步,但傳播延遲可能會引入數十到數百毫秒的延遲和抖動。

因此,如果您想將單向時間確定為小於時鍾抖動的准確度,那么您就不走運了。 這是來自我的 Linux 系統之一的ntpq peer等方的 output。

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*unifi.versadns. 71.66.197.233    2 u  289 1024  377    2.298   -0.897   0.747
+eterna.binary.n 68.97.68.79      2 u  615 1024  377   42.258   -3.640   0.430
+homemail.org    139.78.97.128    2 u  160 1024  377   45.257   -0.209   0.391
-time.skylineser 130.207.244.240  2 u  418 1024  103   24.829    2.066   1.376

如果兩個系統都使用相同的主時鍾進行同步,並且有足夠的時間讓延遲和抖動穩定下來,您可能能夠將單向時間限制在 5ms 以內。

OWAMP - owping 你需要讓客戶端和服務器運行,使用 NTP 或 chrony 來同步時間。 也有昂貴的硬件來同步機器之間的時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM