webrtc NTP網絡時間同步

原文鏈接:https://blog.csdn.net/zhangkai19890929/article/details/85239220

假設我們有2個設備A和B,A的時間是10::00:00am ,B的時間是11::00::00am,現在我們要把A和B的時間統一.

首先我們以B的時間爲統一的時間源,這樣時間纔好統一.

實際上我們要統一時間,我們需要計算的是,A和B之間的時間差(一個小時).

我們把問題轉化爲數學題:

  1. Device A發送一個NTP報文給Device B,該報文帶有它離開Device A時的時間戳,該時間戳爲10:00:00am(t1t_1
  2. 當此NTP報文到達Device B時,Device B加上自己的時間戳,該時間戳爲11:00:01am(t2t_2
  3. 當此NTP報文離開Device B時,Device B再加上自己的時間戳,該時間戳爲11:00:02am(t3t_3
  4. 當Device A接收到該響應報文時,Device A的本地時間爲10:00:03am(t4t_4

所以我們需要求:

1.這個ntp往返一次所需要花費的時間?

兩種解法:
第一種解法:

t=(t2t1)+(t3t4);t = ( t_2 -t_1 ) + (t_3 - t_4);
t=(11:00::0110::00::00)+(11::00::0210::00::03)=2st = (11:00::01 - 10::00::00) + (11::00::02 - 10::00::03) = 2s

但是這種結算對計算理解起來很不友好,因爲設計到雙方時間的轉化,爲了我們自己比較好理解.

在計算機中我們主要我們採用這種寫法:

t=(t4t1)(t3t2)=2st = (t_4 - t_1) - (t_3 - t_2)= 2s

意思是:
t4t1t_4 - t_1是報文從發送到收到總的花費時間, t3t2t_3 - t_2爲報文在B設備裏處理花費的時間.

所以(t4t1)(t3t2)(t_4 - t_1) - (t_3 - t_2)就是報文往返的耗費時間. (官方上的叫法叫rtt).

2.設備A相對設備B的時間差.

這個更容易:
offset=(t2t1+t3t4)/2offset = (t_2 - t_1 + t_3 - t_4) / 2

上面的計算其實不精準,還應該減去往返數據的時間差rtt

offset=(t2t1+t3t4t())/2offset = (t_2 - t_1 + t_3 - t_4 - t (第一步計算得出)) / 2

offset 就是A設備和B設備的時間偏移;

webrtc中通過rtcp的SR和RR包進行NTP時間同步;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章