文/溫占考 吳建王衛(wèi)東 王宇王興偉
東北大學(xué): 基于GPS的時(shí)間服務(wù)器設(shè)計(jì)
文/溫占考 吳建1王衛(wèi)東 王宇1王興偉2
在計(jì)算機(jī)技術(shù)迅速發(fā)展的今天,眾多應(yīng)用對(duì)時(shí)間同步的依賴性很大。而眾所周知,計(jì)算機(jī)、路由器等設(shè)備的時(shí)鐘振蕩器工作在不受校對(duì)的自由振蕩的狀況下,時(shí)鐘的振蕩頻率和標(biāo)準(zhǔn)頻率之間存在一些誤差,長(zhǎng)期積累后會(huì)產(chǎn)生相當(dāng)大的影響。在數(shù)據(jù)共享、云計(jì)算及網(wǎng)絡(luò)安全等網(wǎng)絡(luò)應(yīng)用中,網(wǎng)絡(luò)管理員需要通過精確的時(shí)間信息來保障系統(tǒng)的正常運(yùn)轉(zhuǎn)。
目前世界上最準(zhǔn)確的計(jì)時(shí)工具就是原子鐘。原子鐘是利用原子吸收或釋放能量時(shí)發(fā)出的電磁波來計(jì)時(shí)的。充分利用這種電磁波的穩(wěn)定性,再通過一系列精密的儀器對(duì)其進(jìn)行控制,從而使得原子鐘的計(jì)時(shí)非常準(zhǔn)確。目前在原子鐘里常用的元素有氫、銫、銣等。原子鐘的精度可以達(dá)到100萬(wàn)年誤差只有1秒。由于原子鐘價(jià)格昂貴,一般用戶無(wú)法使用原子鐘作為時(shí)鐘源用于授時(shí)服務(wù)。
全球定位系統(tǒng)(Global Positioning System,GPS),是一個(gè)中距離圓型軌道衛(wèi)星導(dǎo)航系統(tǒng)。它可以為地球表面98%以上地區(qū)提供準(zhǔn)確的定位、測(cè)速和高精度的時(shí)間標(biāo)準(zhǔn)。該系統(tǒng)由美國(guó)國(guó)防部于上世紀(jì)70年代開始進(jìn)行研制并于1994年全面建成,可滿足位于全球98%以上地方或近地空間的精確三維位置定位、三維運(yùn)動(dòng)確定和時(shí)間同步的需求。該系統(tǒng)在太空中部署了24顆GPS衛(wèi)星,其中21顆GPS衛(wèi)星處于工作狀態(tài),其余3顆作為備用衛(wèi)星。這24顆衛(wèi)星均勻分布在6個(gè)軌道平面上,所以每個(gè)軌道面上有4顆衛(wèi)星;在地面上配備有1個(gè)主控站、3個(gè)數(shù)據(jù)注入站和5個(gè)監(jiān)測(cè)站及作為用戶端的GPS接收機(jī)。最少只需3顆衛(wèi)星,就能迅速確定用戶端在地球上所處的位置及海拔高度;所能收聯(lián)接到的衛(wèi)星數(shù)越多,定位精度就越高,其終端所得到的時(shí)間精度也就越高。
圖1 NEMA解碼后時(shí)間信息
圖2 根據(jù)PPS信號(hào)調(diào)整后的時(shí)間信息
為使GPS系統(tǒng)能夠正常工作,每顆衛(wèi)星都安裝了高精度原子鐘,也叫著星載時(shí)鐘。星載時(shí)鐘的精確度越高,其定位精度也越高。早期試驗(yàn)型衛(wèi)星采用的是石英振蕩器,相對(duì)頻率穩(wěn)定度為10~11/秒。1974年以后,GPS衛(wèi)星開始采用銣原子鐘,相對(duì)頻率穩(wěn)定度達(dá)到10~12/秒。1977年,BOKCK ⅠⅠ型PGS衛(wèi)星采用了銫原子鐘后相對(duì)穩(wěn)定頻率達(dá)到10~13/秒。1981年,BLOCK ⅠⅠR型GPS衛(wèi)星采用相對(duì)穩(wěn)定頻率為10~14/秒的氫原子鐘。
在使用GPS過程中,我們可以通過串口獲得GPS NEMA輸出的時(shí)間信息,但是收到這個(gè)時(shí)間會(huì)有一定的延遲,一般在0.035~0.42秒左右,為了提供更精確的授時(shí)服務(wù),GPS授時(shí)模塊提供1PPS脈沖信號(hào)(部分GPS模塊有5PPS、10PPS等多種脈沖輸出,即每秒輸出5、10個(gè)脈沖信號(hào)),GPS每秒輸出一個(gè)脈沖信號(hào),在脈沖的上升沿標(biāo)識(shí)整秒的開始,引入PPS上升沿來標(biāo)識(shí)UTC時(shí)間整秒的開始,因此授時(shí)精度可以達(dá)到納秒級(jí),并且不會(huì)產(chǎn)生累積誤差。
圖3 Garmin GPS 18x LVC
GPS NEMA信號(hào)輸出的時(shí)間信息如圖1所示,由于GPS計(jì)算、輸出、操作系統(tǒng)解碼時(shí)間等因素干擾,從NEMA得到的時(shí)間信息與實(shí)際時(shí)間有一定的偏差,并且這個(gè)數(shù)值不固定。因此,單純依靠NEMA所攜帶的時(shí)間信息用來授時(shí),精度是不夠的。
根據(jù)PPS脈沖信號(hào)調(diào)整后輸出的時(shí)間信息如圖 2所示,系統(tǒng)可以根據(jù)PPS信號(hào)上升沿來判斷整秒開始,并根據(jù)隨后的NEMA時(shí)間信息計(jì)算前一個(gè)整秒的具體時(shí)間信息。
圖4 GPS與COM接口接線順序
圖5 NTP服務(wù)器時(shí)鐘偏移統(tǒng)計(jì)
經(jīng)過試驗(yàn)可以得知,相對(duì)于Linux系統(tǒng),F(xiàn)reeBSD更合適充當(dāng)時(shí)間源服務(wù)器,操作系統(tǒng)選用FreeBSD 9.1 amd64版本,GPS模塊選用Garmin GPS 18x LVC模塊(支持1PPS脈沖信號(hào)),從網(wǎng)上購(gòu)買的Garmin GPS 18x LVC如圖3所示,該模塊不帶COM接口,需要焊接GPS與計(jì)算機(jī)COM接口的連接線,連線順序如圖4所示。
FreeBSD默認(rèn)的內(nèi)核不支持PPS時(shí)鐘同步,需要重新編譯FreeBSD內(nèi)核,使之支持PPS時(shí)鐘同步功能,具體方法如下:
# cd /usr/src/sys/amd64/conf/
# cp GENERIC PPSGENERIC
編輯PPSGENERⅠC文件,增加一行,內(nèi)
容如下:
options PPS_SYNC
重新編譯內(nèi)核
# cd /usr/src/
# make buildkernel KERNCONF=PPSGENERIC
安裝新內(nèi)核
# make installkernel
KERNCONF=PPSGENERIC
在FreeBSD系統(tǒng)中,ntpd程序不會(huì)去檢測(cè)串口所連接的設(shè)備是否為GPS,為讓ntpd程序檢測(cè)到GPS信息,需要增加相應(yīng)的軟連接,編輯/etc/devfs.conf文件增加:
link cuau0 gps1
link cuau0 refclock-0
link cuau0 pps0
配置ntpd程序,使用GPS作為時(shí)鐘源,并修改相應(yīng)的訪問控制列表,允許互聯(lián)網(wǎng)其他主機(jī)同步時(shí)間,編輯ntpd配置文件/etc/ ntp.conf
# Garmin GPS 18 LVC
server 127.127.20.1 mode 0 minpoll 4 maxpoll 4 prefer
fudge 127.127.20.1 flag1 1 flag3 1 refid PPS
restrict default kod nomodify notrap nopeer noquery restrict -6 default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict -6 ::1
重新啟動(dòng)系統(tǒng),運(yùn)行如下命令檢查GPS及ntpd的工作狀態(tài)
# ntpdc -c kern
pll offset: 1.773e-06 s
……
status: 2107 pll ppsfreq ppstime ppssignal nano
……
calibration errors: 6
如果可以看到“ppsfreq ppstime ppssignal”字樣,說明GPS/PPS及ntpd工作正常,可以對(duì)外提供授時(shí)服務(wù)。如圖 5所顯示的是實(shí)際運(yùn)行中的一臺(tái)時(shí)間服務(wù)器的系統(tǒng)時(shí)鐘偏移量統(tǒng)計(jì),系統(tǒng)時(shí)間偏移穩(wěn)定在+10us/-10us之間。
互聯(lián)網(wǎng)不少時(shí)間服務(wù)器使用Garmin GPS 18x LVC模塊作為系統(tǒng)時(shí)鐘源,該模塊性價(jià)比高,適合7×24小時(shí)不間斷工作。在實(shí)際使用中,可以將時(shí)間服務(wù)器配置成同時(shí)使用互聯(lián)網(wǎng)公開的頂級(jí)時(shí)間服務(wù)器作為同步時(shí)鐘源,在GPS故障后依舊可以提供準(zhǔn)確的時(shí)鐘信息,服務(wù)器與互聯(lián)網(wǎng)其他時(shí)間服務(wù)器誤差保持在+1ms/-1ms內(nèi)。
(作者單位:1為東北大學(xué)網(wǎng)絡(luò)中心,2為CERNET東北地區(qū)網(wǎng)絡(luò)中心)