2013-03-02 27 views
2

我需要測量通過LAN進行通信的兩個應用程序之間的單向延遲測量,並將結果報告給數據收集服務器。如何使用C#實現單向延遲測量?

客戶端應用程序使用多播發送數據,然後將其傳遞直通兩個服務器和最後一個服務器是該試驗的結束點,像這樣:

Agent -> multicast cloud -> server 1 -> server 2

我想過使用NTP(或PTP for LAN)來同步「代理」和「服務器2」,但我不知道什麼是正確的算法來實現這一點,它的精度是多少。

如何執行此測量(使用C#)?它的精確度是什麼?

更新:請注意,數據正在代理和服務器2之間進行處理,因此測量不完全是網絡方式。

+1

通常,不可能確定單向延遲。你可以做的最好的(除非你有精確的時鐘兩端)是往返時間(然後除以2)。 – 2013-03-02 18:08:01

+0

我需要測量應用程序延遲 - 而不是網絡延遲,所以除以2將不適用於我:( – 2013-03-02 18:10:16

+0

好吧,相當於您可以使用PTP同步兩端(儘管這會對延遲= RTT進行等效假設/ 2),然後將時間戳數據包從代理髮送到服務器 – 2013-03-02 18:13:10

回答

0

基礎問題是同步兩臺或多臺機器之間的時鐘。

Synchronization (of clocks) between two remote computers

一旦你有了這個,你只需添加一個「施工時間」添加到包本身,創建時/發送。從開始到結束的單向延遲是「到達時間」減去「構建時間」

如果您不能相信中間節點,那麼您必須向服務器註冊代理程序,以便它發送一個數據包在特定的時間。然後,從開始到結束的單向延遲是「到達時間」減去「預計到達時間」

+0

您是否可以是比較具體的實現是使用C#還是使用已知的協議?如果你也附加一個簡單的算法,我會喜歡它:) – 2013-03-02 18:40:31

+0

我可以嘲笑這個想法,如果它會幫助。 – 2013-03-02 18:43:39

+0

當然,那會很棒,但即使是一個簡單的算法也可以。 – 2013-03-02 18:50:41