999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于高精度時間的時間同步方法研究

2012-07-25 11:06:10徐海龍羅雙喜
計算機工程與設計 2012年7期
關鍵詞:系統

徐海龍,羅雙喜

(江蘇自動化研究所,江蘇 連云港222006)

0 引 言

時間同步的目的是維護一個全局一致的物理或邏輯時間[1]。確保各個節點與時間有關的事件在時間邏輯上的一致性。在各種信息處理系統中,我們對時間的應用要求可能不盡相同,怎樣獲取滿足系統需求的時間,成為整個系統性能優劣的一個重要內容。如何低成本高精度的利用軟件方式實現時間同步,成為Windows平臺中一個亟待解決的問題。一些文章指出已經實現了在Windows平臺上的亞毫秒級的時間同步,但是實現過程中都是基于相對虛擬時間[2],而沒有與系統時間關聯起來,這不是真正意義的解決問題。基于此,通過在鏈路層獲取計數器并轉換為系統時間,同時引入時鐘頻率調整算法,從而實現了高精度時間同步。

1 獲取時間戳的誤差分析

在Windows平臺中,如果調用Windows API函數GetSystemTime來獲取時間,這個API函數返回一個SYSTEMTIME結構,該結構包含一個wMilliseconds域,在MSDN文檔中說它保存當前的毫秒時間。但是在實際應用中,由于Windows操作系統是非實時系統,故獲取的時間最大精度不超過10ms[3]。這樣的結果,對于毫秒級以內的時間標簽需求者來說顯然遠遠不夠。下面提出幾種有效獲取時間戳的方法并分析其有效性。

從時間同步過程中獲取時間戳的分析可知,時間戳獲取點距離網絡接口的遠近是導致時間報文網絡傳輸延遲計算誤差的重要因素。同步報文時間戳的3個主要可能獲取點如圖1中描繪所示。

(1)從應用層直接獲取時間報文發送/接收到時間戳,即使用原始套接字,直接獲取同步報文到達應用層時的系統時間。該方法操作簡單,能快速實時在系統應用層捕獲數據包的發送/到達時刻。但受應用程序、操作系統、協議棧處理等因素的影響,使時間準確度有毫秒量級的不確定性;且Windows等常用系統調用當前系統時間的最低有效位是毫秒,因此造成時間戳的獲取精度只能達到毫秒級。

圖1 時間同步報文傳遞過程

(2)使用或者自行編寫中間層驅動程序獲取時間報文發送/接收到時間戳。該方法也是微軟公司推薦使用的一種方法,用戶可以根據微軟提供的win2000DDK中提供的驅動程序對時間報文的發送/接收時間進行標記。具體的實現方式上可分為用戶級和內核級兩類。其中內核級主要是NDIS中間層捕獲過濾驅動程序、NDIS捕獲過濾鉤子驅動程序等[4-6],它們都是利用網絡驅動來實現的;而用戶級的包括Windows2000包捕獲過濾接口等。

利用NDIS中間驅動程序可以在網卡驅動程序和傳輸驅動程序之間插入一層處理程序,從而可以用來截獲網絡封包并進行時戳獲取、重新封包及過濾等操作。由于NDIS中間驅動程序位于網卡和傳輸驅動程序之間,所以它可以截獲較為底層的封包。從而可以完成更為低級的操作,安全系數也較高。

(3)在網卡處理處的物理層獲取時間報文發送/接收到時間戳。該方法要借助于硬件從物理層獲取時間報文發送/接收到時間戳,其時間戳獲取精度理論上可達納秒級,基于PTP協議的IEEE1588標準即是采用這種時間標記方法。這種方法需要給每個系統增加額外的硬件設備提高時間標記的讀取精度,顯然增加了系統開發的成本,也不便于已有系統的使用。

以上3種方法,時間戳獲取點離網絡端口越近,獲得的時間戳精度就越高,但其對軟硬件的要求也隨之增加。在應用層獲取時間戳,只需在應用程序中加入系統支持的讀取時戳命令即可;在驅動層獲取時間戳,需要自行編寫驅動程序截獲時間報文并標記時戳;而在網卡物理層獲取時間戳,則需要加入硬件處理電路及相應的處理程序才能獲得高精度時間戳。

2 基于高精度時間的同步算法

通過對時間戳獲取途徑的分析,借鑒以上第二種方法,采用以下算法,本算法通過操作系統支持的NDIS標準接口,以NPF驅動方式獲取高精度的時間戳,以降低應用程序負載、操作系統任務調度等因素引起的時間偏差抖動。

2.1 通過機器鏈路層獲取時間戳

網絡時間同步過程中,客戶端/服務器從發送報文前記錄時間到實際從網卡發送出報文的時間,包括應用層、協議棧、網卡等多個環節的處理時間。其中,應用層、協議棧的處理時延因為受應用程序負載、操作系統任務調度、協議棧緩沖隊列中的報文數量、長度及其處理等因素的影響而具有較大的不確定性。

對于現在廣泛使用的Intel Pentium系列計算機,可通過其本身提供的RDTSC指令 (read time stamp counter),獲得自計算機系統上電以來的64位時鐘周期數 (時間計數器值),進而建立一個與系統時間關聯的、支持時間偏差修正與高精度系統時間獲取的虛擬時鐘,其精度與CPU的時鐘頻率有關,由于CPU主頻非常高,其短時精度可以達到納秒級。

這種時間獲取方法避開了應用層、協議棧等多個環節的處理時間以及一系列不確定因素,所以獲取的時間戳非常精確有效。如圖2所示。

圖2 鏈路層獲取精確時間戳

2.2 從鏈路層獲取時間戳與系統時間建立關聯

在一個小型計算機組網中,利用計算機晶振中斷計數實現計時,晶體振蕩器的頻率并不是恒定不變的。因此,計算機節點i在時刻t的本地時間表示為[7]

式中:c0——網絡節點晶振的標準頻率,yi(t)——晶振在t時刻的實際輸出頻率,t0——本節點系統開始計時的初始時刻。yi(t0)對應i節點在t0時刻的時鐘值。由于現在的Intel Pentium系列計算機,晶振頻率變化非常小,所以在短時期內,可以認為節點晶振的頻率為一恒值。基于這一規律,根據上式可得:第i個計算機節點的時鐘模型又可表示為yi(t)=gi(t-t0)+yi(t0),其中gi=fi/f0,fi是節點i的晶體振蕩器的實際頻率。由于受到硬件實際性能影響,晶振的實際頻率與標準頻率之間存在極其微小的誤差,如下所示

式中:ρ——絕對頻率上限,通常ρ的值在1~100PPM之間[8]。

通過系統函數調用可以獲取時鐘頻率 (其值一般很大),如果在鏈路層得到的計數器仍然使用這個時鐘頻率,則通過它計算的時間間隔就不夠精確。所以我們從新計算一個在鏈路層使用的頻率值,然后在需要定時的時間的兩端分別調用計數器以取得計數器的數值,兩次數值的差值通過這個頻率即可換算成時間間隔,如圖3所示。

圖3 計數器與系統時間關系

假定系統運行開始時通過系統函數取得計數器為s_p,通過驅動獲取計數器值d_p,一個系統任務中斷后通過系統函數取得計數器為s_pl,通過驅動獲取計數器值d_p1,令σs為通過系統函數取得計數器之差,σd為通過驅動獲取計數器之差,則

設通過系統函數取得時鐘頻率為λ,由于我們基于鏈路層獲取時間戳,設我們在鏈路層的實際時鐘頻率為λr,則

設通過系統函數取得操作系統時間t為參考時間,設tn為后續時戳,則

其中n=1,2,3,…。

2.3 時間同步算法

NTP適用于在無序的網絡環境下提供精確和健壯的時間服務,只需單個標準時間源,實現成本較低[9]。

在一個簡單C/S組網中,設θ為時間客戶端與服務器端之間的時間偏差;設δ為時間同步過程中的網絡路徑延遲。那么客戶機與服務器進行時間同步時的時序過程如圖4所示。

圖4 NTP客戶機與服務器校時過程

圖4 中,從客戶端發送時間報文到接收到服務器的反饋報文這一個過程中,共記錄了4個時戳,報文在客戶端和服務器往返過程中,設總路徑的網絡時間延遲為δ,由于報文在從客戶端到服務器與從服務器到客戶端路徑相等,故都等于δ/2。以服務器時鐘為基準,設客戶端時鐘與服務器時鐘的時間偏差是θ,那么可以得到如下方程式

由此可以求出客戶機與服務器之間的時間偏差為

式中:T1——客戶端發送的時間報文,T2——服務器接收的時間報文,T3——服務器反饋的時間報文,T4——客戶端接收的服務器反饋報文。

同時可得到客戶機與服務器之間的半程網絡延遲為

基于即時時間和即時偏差的傳統時鐘調整策略會受到偶然過大即時偏差的影響,無法有效避免在得到時間偏差和延遲的基礎上,傳統的做法是利用這些來進行時鐘調整,但是網絡抖動,從而影響時統的準確性[10],針對此問題,使用了如下策略來進行時鐘調整。

2.4 調整時鐘頻率

對于現有裝備中廣泛使用的Intel Pentium系列計算機,為了使獲取的時間戳精確有效,首先我們介紹調整系統時鐘頻率的方法。拋開硬件的升級改造,我們從軟件處理的角度來調整。

每臺機器都有個計數器,該計數器每秒中斷H次,計數器溢出時,中斷處理程序就將軟件時鐘加1,軟件時鐘是從過去某一已知時間開始的所經歷的tick數。下面將這個時鐘的值稱為C。更明確的說,當UTC時間為t時,機器p的時鐘值為Cp(t)。理想情況下,對于所有的p和t應有Cp(t)=1。換句話說,理想情況下dC/dt為1。

實際的計數器不是準確的每秒中斷H次。理論上說,當H=60時,計數器應每小時生成216 000次ticks。實際上,現代的計數器芯片的相對誤差大約為10-5,即一臺特定機器每小時的ticks數范圍為215 998到216 002[11]。更準確的說,如果存在一個常數ρ,當1-ρ≤dC/dt≤1+ρ成立,就可以認為計數器是正常工作的。常數ρ是由計數器的生產者指定的,稱為最大漂移率 (maximum drift rate)。圖5畫出了精確時鐘和快慢時鐘的關系。

圖5 時鐘快慢與準確時鐘關系

為了獲取時鐘漂移率,從而估計出時鐘頻率偏差,可以采用在一定時間內獲得連續時戳數據來進行線性擬合[12-13],其算法描述如下:

2.4.1 計算漂移率

設n組偏差樣本值為 (t1,θ1) (t1,θ1) (t2,θ2)…(tn,,θn),其中ti代表接受到的來自服務器的第i個時間戳,θi代表即時偏差值,根據這組值我們列出線性趨勢方程

式中:b0——截距,b1——漂移率。采用最小二乘法即可求得b0,b1

2.4.2 調整頻率的方法

在網絡時間協議 (NTP)中,客戶端要與外部服務器保持時間同步,可以使用Windows提供的一個API函數SetSystemTimeAdjustment。這個API有兩個參數,以100納秒為單位的時間調節器以及一個布爾值。布爾值變量表示Windows是否禁用時間調節器。當啟用時間調節器時,系統會在每個時鐘中斷時加上指定的時間調節器的值。當禁用時,系統會用添加缺省的時間增量取而代之。但是還有做產生了兩個問題。①首先啟用 (改變)時間調節器改變了參考頻率——時間流;②也是一個較大的問題,就是當系統時間被修改后,系統不發送啟用或禁止通知。即使以最小的156250個單位 (1單位100納秒)缺省時間增量改變某個系統上的時間調節器,也將導致參考頻率6.4PPM (1/156250)的改變。如果不加以調整,幾秒之后沒有進行再同步,就會偏離準確時間越來越遠。為了減少這類調整帶來的誤差,必須監視當前時間調節的設置。對于這個問題的解決方案,我們可以通過調用SetSystem-TimeAdjustmen的伙伴函數—GetSystemTimeAdjustment來實現。在足夠短的間隔內不斷地執行這個檢查并且根據需要調整內部頻率,就能夠避免客戶端時間偏離服務器時間太遠。

在得到時鐘漂移率的基礎上,每隔一定的周期調整時鐘頻率,下面介紹調整系統時鐘頻率的具體方法和步驟:

(1)獲取n組偏差樣本值為 (t1,θ1) (t1,θ1) (t2,θ2)… (tn,θn),采用最小二乘法即可求得漂移率η0;

(2)取int(η0)調整時鐘頻率 (int (η0)表示取整),然后再獲取n組偏差樣本值為 (t1,θ1) (t1,θ1) (t2,θ2)… (tn,θn),采用最小二乘法即可求得漂移率η1;

(3)重復步驟 (2),得漂移率η2,判斷漂移率η2是否大于門限Ω。若滿足則算法停止,否則繼續執行步驟 (2)。

3 模擬仿真實驗

3.1 Windows XP組網下時間同步

根據以上原理和方法,為了檢驗該時鐘頻率調整算法的有效性以及同步效果的精度,在基于相對時間同步[14-15]的小型實驗室局域網內進行測試,網絡均采用100M網卡保持較高流量,采集了超過300個網絡數據來檢驗該時鐘頻率調整算法的有效性,在時間同步過程中采集了超過2000個網絡數據來計算平均的時鐘同步精度。

首先,選取兩臺裝有Windows XP操作系統的電腦,組網形式為C/S模式,時間同步報文發送周期為1s,運用時鐘頻率調整算法后其結果如圖6所示 (客戶機,其中:橫坐標表示樣本數量 [單位:個],縱坐標表示客戶機與服務器的時間差 [單位以微秒計])。

圖6 調整時鐘頻率前后所得時間同步效果

本實驗中,我們再把穩定的時間差補償到客戶機的系統時間上。再利用客戶機的絕對系統時間與服務器做時間同步,并記錄偏差樣本2200個,同步周期分別為1s、2s,得到的時間同步效果如圖7、圖8所示。

3.2 實驗結果分析

由圖6可看出,客戶機與服務器的時間差在561至564ms之間。在前50個樣本內,時間差值曲線斜率較大,遞減速度較快,這是由于客戶端時鐘和服務器時鐘存在一定的頻率誤差所致,而又沒有進行頻率調整。在50個樣本值后,系統進行了第一次頻率調整,消除了部分漂移率,可以看到曲線斜率變得平緩一些,但是還是在遞減中。再積累一定時間樣本后,系統進行了第二次調整,可以看到其后的差值曲線平穩 (150個樣本后),說明客戶端時鐘和服務器時鐘頻率幾乎一致,漂移率控制在很小的范圍內。

時鐘頻率調整之后,把穩定的時間偏差補償到客戶機,并調整系統時間,從圖7可看出,在1s的周期下,服務器與客戶機的時間偏差均在亞毫秒級 (正/副100μs以內),其偏差均值在20μs左右。圖8中,在2s的周期下,服務器與客戶機的偏差均值比1s周期下稍大,但仍低于50μs,且同樣穩定 (正/副100μs以內)。

4 結束語

常用的基于計數器的相對時間同步方法,往往在應用層獲取系統時間而精度不高,沒有與系統時間建立關聯,也沒有考慮時鐘頻率漂移的影響。在我們的許多工程應用上,由于時統不準確而導致的各種問題層出不窮,如何低成本,高效率的獲取精確時間,這已經成為了我們技術更新升級的瓶頸之一。本文提供的算法,避免了對外部時鐘源的苛刻要求,且系統運行穩定可靠,實現也相對簡單。在現代國防工業中,尤其對于小型艦載系統或者岸基系統內部,可使其同步精度達到亞毫秒級,具有很大的現實應用價值。

[1]ZHANG Yanjun,LIU Jingyu,GUO Kuo.Clock synchronization algorithm in distributed control systems [J].Industrial Control Computer,2006,19 (5):41-42 (in Chinese). [張彥軍,劉靖宇,郭廓.分布式控制系統的時鐘同步研究 [J].工業控制計算機,2006,19 (5):41-42.]

[2]CHEN Huajin,LUO Shuangxi,HE Jiazhou.New mechanism of realizing time-synchronization in LAN by using CPU time stamp[J].Journal of Computer Applications,2009,29(11):2920-2924 (in Chinese). [諶華金,羅雙喜,何佳洲.利用CPU時間戳實現局域網時間同步的新機制 [J],計算機應用,2009,29 (11):2920-2924.]

[3]CHEN Huajin,HE Jiazhou.New mechanism of realizing timesynchronization in LAN based on data link layer [J].Journal of Computer Applications,2010,30 (5):1183-1187 (in Chinese).[諶華金,何佳洲.一種基于數據鏈路層的局域網時間同步新機制 [J].計算機應用,2010,30 (5):1183-1187.]

[4]HU Xiaoyuan,SHI Haoshan.Analysis and application of Win-Pcap system [J].Computer Engineering,2005,31 (2):96-98(in Chinese).[胡曉元,史浩山.WinPcap包截獲系統的分析及其應用 [J].計算機工程,2005,31 (2):96-98.]

[5]ZHOU Jinling,FAN Bingbing,QIN Jie.The simulation realization of the network protocol experiments based on WinPcap[J].Computer Applications and Software,2007,24 (9):218-221(in Chinese). [周金玲,范冰冰,秦潔.基于 Win-Pcap的網絡協議實驗的仿真實現 [J].計算機應用與軟件,2007,24 (9):218-221.]

[6]WU Liwei,YE Nianyu.The development of device driver under the Windows operation system [J].Computer & Digital Engineering,2007,35 (3):196-198 (in Chinese).[吳力煒,葉念渝.Windows平臺下的設備驅動程序開發 [J].計算機與數字工程,2007,35 (3):196-198.]

[7]Shao Lei,Ray S.Rate-one space-frequency block codes with maximum diversity for MIMO-OFDM [J].IEEE Trans on Wireless Communications,2005,4 (4):1674-1685.

[8]SUN Jimin,SHEN Yulong,PEI Qingqi,et al.Abnormal time synchronization data filter algorithm in sensor networks[J].Journal of Xidian University Natural Science,2008,35(5):911-913 (in Chinese). [孫紀敏,沈玉龍,裴慶祺,等.傳感器網絡異常時間同步數據過濾算法 [J].西安電子科技大學學報,2008,35 (5):911-913.]

[9]QIN Mingwei,YAO Yuancheng,LI Yun.Time synchronization in network time-delay measurement [J].Communications Technology,2008,41 (8):149-150 (in Chinese).[秦明偉,姚遠程,李云.網絡時延測量中的時間同步系統應用研究[J].通信技術,2008,41 (8):149-150.]

[10] WANG Yini.Clock synchronization and stability analysis based on clock drift rate[D].Beijing:Beijing University of Chemical Technology,2008:1-71 (in Chinese). [王旖旎.基于時鐘漂移率的時鐘同步及穩定性分析 [D].北京:北京化工大學,2008:1-71.]

[11]Andrew.Tanenbaum.Modern operating systems [M].CHEN Xiangqun,transl.China Machine Press,2005 (in Chinese).[Andrew.Tanenbaum.現代操作系統 [M].陳向群,譯.機械工業出版社,2005.]

[12]ZHAO Ying.Analysis of clock adjusting strategy based on NTP[J].Journal of Chinese Computer Systems,2008,29 (10):1812-1815(in Chinese).[趙英.基于NTP的時鐘調整策略分析[J].小型微型計算機系統,2008,29 (10):1812-1815.]

[13]LIN Guoyuan,XU Feng,HUANG Hao.Improving intrusion detection rate using high precision time stamps [J].Journal of System Simulation,2006,18 (9):2672-2675 (in Chinese).[林果園,許峰,黃皓.利用高精度時間戳提高入侵檢測率 [J].系統仿真學報,2006,18 (9):2672-2675.]

[14]GUO Qisheng,DONG Zhiming,SHAN Jiayuan,et al.Simulation systems [M].Beijing:National Defence Industrial Press,2006(in Chinese). [郭齊勝,董志明,單家元,等.系統仿真 [M].北京:國防工業出版社,2006.]

[15]TANG Qingmao,CHEN Ping,SHEN Bo.Clock synchronization algorithm in simulation systems [J].Computer Engneering,2009,35 (18):37-39 (in Chinese). [唐慶茂,陳平,沈博.仿真系統中的時鐘同步算法 [J].計算機工程,2009,35 (18):37-39.]

猜你喜歡
系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統
基于UG的發射箱自動化虛擬裝配系統開發
半沸制皂系統(下)
FAO系統特有功能分析及互聯互通探討
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
一德系統 德行天下
PLC在多段調速系統中的應用
主站蜘蛛池模板: 精品欧美一区二区三区久久久| 亚洲国产91人成在线| 国产69精品久久久久妇女| 亚洲AⅤ永久无码精品毛片| 国产精品偷伦视频免费观看国产| 亚洲精品无码日韩国产不卡| 国产91视频免费| 无码电影在线观看| 91亚洲国产视频| 青青久久91| 国产成人1024精品下载| 在线观看国产网址你懂的| 四虎在线观看视频高清无码| 激情国产精品一区| 日韩无码黄色| 国产在线拍偷自揄观看视频网站| 在线免费观看a视频| 婷婷色中文| 国产99精品久久| 国产精品亚洲αv天堂无码| 激情综合五月网| 国产精品美女网站| 99在线视频免费| 亚洲黄网在线| 色欲不卡无码一区二区| 国产精品欧美日本韩免费一区二区三区不卡 | 沈阳少妇高潮在线| 亚洲精品在线91| 欧美三級片黃色三級片黃色1| 最新痴汉在线无码AV| 粉嫩国产白浆在线观看| 婷婷综合缴情亚洲五月伊| 欧美国产综合视频| 思思热精品在线8| 亚洲成肉网| 无码精品福利一区二区三区| 天天激情综合| 无码一区二区波多野结衣播放搜索| 国产美女精品在线| 亚洲国产成人在线| 欧美啪啪视频免码| 欧美色视频日本| a级毛片毛片免费观看久潮| 国产一区二区三区精品久久呦| 午夜毛片免费看| 黄色网页在线播放| 亚洲视频免费播放| 亚洲欧美在线综合图区| 三区在线视频| 国产精品片在线观看手机版| 国产成人精品亚洲77美色| 国产男人的天堂| 亚洲第一区欧美国产综合| 一级毛片免费不卡在线| 国产大片黄在线观看| 2020国产精品视频| 国产精品yjizz视频网一二区| 亚洲视频色图| 国产精品私拍在线爆乳| 狠狠五月天中文字幕| 中文字幕2区| 午夜精品福利影院| 国产亚洲视频免费播放| 色老头综合网| 国产高清无码第一十页在线观看| аv天堂最新中文在线| 成人亚洲视频| 五月天在线网站| 免费无码AV片在线观看中文| 亚洲无码91视频| 日本a∨在线观看| 91视频国产高清| 亚洲中文字幕久久精品无码一区| 久久无码av三级| 久久www视频| 久久久噜噜噜| 成年免费在线观看| 日韩精品少妇无码受不了| 一本一本大道香蕉久在线播放| 国产激情国语对白普通话| 免费A∨中文乱码专区| 99精品国产自在现线观看|