新聞中心
Network Time Protocol(NTP)是用來使計算機時間同步化的一種協(xié)議,它可以使計算機對其服務器或時鐘源(如石英鐘,GPS等等)做同步化,它可以提供高精準度的時間校正(LAN上與標準間差小于1毫秒,WAN上幾十毫秒),下面為大家分享一下NTPD具體工作原理。

在清水等地區(qū),都構建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供網(wǎng)站建設、成都網(wǎng)站建設 網(wǎng)站設計制作按需設計,公司網(wǎng)站建設,企業(yè)網(wǎng)站建設,品牌網(wǎng)站設計,營銷型網(wǎng)站,成都外貿網(wǎng)站建設,清水網(wǎng)站建設費用合理。
img
NTP 工作原理
ntpd 進程通過定期與NTP時鐘源服務器發(fā)送消息來獲取時間信息。在進程初始啟動時候,不論是第一次boot還是隨后啟動,nptd 會給服務器發(fā)送消息以獲取時間本設置到本地系統(tǒng)。為了防止網(wǎng)絡風暴,進程啟動后會在定義好的間隔64秒之上再加一個隨機延遲值,這個隨機值的范圍是0~16秒;因此進程啟動后需要數(shù)分鐘才會開始同步時間。
如今的計算機都帶有硬件時鐘芯片(time-of-year (TOY) chip),用于在計算機掉電過程中仍然保持正確時間,當計算機上電,操作系統(tǒng)從時鐘芯片中獲取時間。當操作系統(tǒng)啟動完成并連接到時鐘源之后,操作系統(tǒng)會依據(jù)時鐘源定時調整芯片時間。在服務器沒有硬件時鐘芯片或硬件時鐘芯片故障(CMOS電池沒電)或其他原因導致操作系統(tǒng)本地時間與時鐘源時間差別超過1000秒,nptd認為此時發(fā)生了嚴重問題,唯一可靠的處理方法是人為介入。這種情況下nptd Daemon進程會退出并在操作系統(tǒng)的syslog中記錄一條日志。nptd 的啟動選項 -g 選項可以忽略1000秒的檢查并強制將時鐘源時間設置為硬件時間,不過考慮到硬件時鐘芯片故障的場景(CMOS電池沒電、或時鐘計時器故障),一旦再次出現(xiàn)芯片時間與時鐘源超過1000秒,nptd還是會退出。
通常情況下,ntpd 以很小的步長調整時間使得時間盡量是連續(xù)的、不出現(xiàn)跳躍。在網(wǎng)絡極度擁塞的條件下,nptd 與時鐘源之間發(fā)送一個消息包來回的時延有可能達到3秒,因此會導致同步距離(半個來回時延,1.5秒)變的很大。ntpd 同步算法會丟棄時差大于128ms的包,除非在900秒內沒有時差小于128ms的包,還有就是首次啟動時候不會檢查這個時差直接同步。這種設計是為了減少誤報時鐘同步異常的告警。
上述行為的結果是每次成功設置本地時間,一般不會超過128ms,即使在網(wǎng)絡時延很高的情況下。有時候,特別是在ntpd首次啟動的時候,時差可能超過128ms,這種罕見場景一般是本地時間比時鐘源的時間快(未來)超過128秒,這種情況本地時間將會被往過去方向調回。這種情況下某些應用程序會有問題。如果啟動nptd時候加上了 -x 選項,那么 nptd 不會以步長方式(stepped)同步,只會以微調校正方式(slew correction)同步。
使用 -x 選項之前需要仔細考量影響。 ntpd 微調校準的最大頻率是 500 個 PPM (parts-per-million)每秒,也就是每秒校準 5/10,000 秒。因此會導致本地時間與時鐘源之間需要很長時間才能將時差同步到一個可接受的范圍,大概是2000秒同步一秒,對于依賴網(wǎng)絡時鐘源的應用來說這種情況不可接受。
頻度規(guī)則
nptd 啟動時的行為依賴頻度文件是否存在,通常是 npt.drift 。這個文件包含了最近估算出的時鐘頻度誤差值。如果文件不存在,此時 ntpd 進入一種特殊模式會快速調整時間與頻度誤差值,這個快速大概好事15分鐘,隨后在時間與頻度誤差值正常后nptd進入正常模式,時間與頻度持續(xù)與時鐘源同步。并在一個小時之后,將當前的頻度誤差值寫入 npt.drift 文件。如果文件存在,nptd從此文件讀取頻度誤差值直接進入正常模式,并沒隔一個小時將計算好的頻度誤差值寫入文件。
運行模式
nptd 可以運行在多種模式下,包括對稱的 主動、被動(active/passive),客戶端、服務端(client/server),廣播、多播(broadcast/multicase/manycase),詳細參考Association Management。通常運行模式是以Daemon方式持續(xù)跟蹤同步時鐘源時間;當然也可以只運行一次,從外部時鐘源同步時間(從上次紀錄的頻度誤差文件中讀取頻度誤差值)。廣播與多播模式下客戶端能夠自動發(fā)現(xiàn)時鐘源服務器,并計算各個服務器的時延然后自動完成配置,這種模式使得工作站集群自動配置變?yōu)楝F(xiàn)實。
默認情況下nptd以Daemon方式持續(xù)跟蹤多個時鐘源,同步的間隔由一個復雜的狀態(tài)機決定。狀態(tài)機使用啟發(fā)式算法,根據(jù)消息包來回時延、頻度誤差來計算最優(yōu)的同步間隔。通常情況下,狀態(tài)機初始以64秒為間隔并最終達到1024秒,少量的隨機數(shù)值會被增加到間隔上為了均衡服務器壓力。額外的,如果一個服務器不可達的情況下,為了減少網(wǎng)絡消息排隊阻塞,間隔會逐步增加到1024秒。
在某些情況下nptd不能正常持續(xù)運行,通常的規(guī)避手段時使用cron定時任務執(zhí)行ntpdate命令。但是ntpdate并沒有像nptd一樣有考慮各種信號處理、錯誤檢查、連續(xù)同步算法。nptd -q 可以達到與 ntpdate同樣的效果,-q 參數(shù)使得 npt同步一次后就退出;同步的過程與Daemon模式的nptd是相同的。
如果操作系統(tǒng)內核支持調整時鐘頻度(Solaris,Linux,F(xiàn)reeBSD都已經(jīng)支持),那么時鐘同步還有一種不以Daemon方式運行的可選用法。首先,nptd以Daemon方式運行,配置好時鐘源,大約一個或幾個小時后,獲取到頻度誤差npt.drift 文件;然后退出nptd進程,并以一次性模式運行(nptd -q),此時每次nptd運行都基于當前獲取到的頻度誤差與時鐘源同步時間。
同步間隔控制
當前版本的NTP包含了一個復雜的狀態(tài)機,用于減少同步時的網(wǎng)絡負載;同時也包含很多種提升精度的方法。使用者在修改同步間隔(64秒~1024秒)的時候需要仔細考慮影響。默認的最小同步間隔可以使用 tinker minpool 命令修改為不小于16秒,這個值會被用作所有相關的使用到同步間隔的地方,除非顯示使用minpoll 選項覆蓋。需要注意的是不少設備驅動在同步間隔小于64秒時候不能正常工作;同時廣播與多播模式也是使用的默認值,除非顯示覆蓋。
NPTD語法
ntpd [ -aAbdgLmNPqx ] [ -c conffile ] [ -f driftfile ] [ -g ] [ -k keyfile ] [ -l logfile ] [ -N high ] [ -p pidfile ] [ -r broadcastdelay ] [ -s statsdir ] [ -t key ] [ -v variable ] [ -V variable ] [ -x ]
命令行參數(shù)
-a
“md_block md_has_block_below md_has_block_below_ul”>啟動認證(默認啟用)– -A禁用認證
-b
使用NTP廣播消息同步– -c conffile指定配置文件名稱
-d
啟用調試模式– -D level指定調試級別
-f driftfile
指定頻度誤差文件的路徑– -g正常情況下,ntpd 與時鐘源的時間差超過1000秒的閾值會退出,如果閾值設置為0,則ntpd 不會檢查,任何時差都會強制同步。-g 選項就是用于設置閾值為0;但是只是一次生效,如果ntpd 運行過程中發(fā)現(xiàn)時差超過1000秒,還是會退出。
-k keyfile
指定NTP認證key文件的路徑– -l logfile指定日志文件路徑,默認是操作系統(tǒng)日志
-L
listen在虛擬IP上– -m使用NTP多播消息在多播地址224.0.1.1上同步(需要內核支持)
-n
不fork進程– -N priority指定優(yōu)先級運行ntpd進程
-p
指定ntpd的pid文件– -P覆蓋操作系統(tǒng)的優(yōu)先級限制
-q
僅同步一次后退出– -r broadcastdelay指定默認的廣播、多播延遲時間
-s statsdir
指定統(tǒng)計工具生成的文件所在目錄– -t key增加key到信任的key列表
-v, -V
增加系統(tǒng)變量– -x默認情況下,ntpd在時差小于128ms時候使用微調模式,在大于128ms時候使用步長模式。-x 選項強制nptd僅使用微調模式同步。如果步長閾值(128ms)設置為0,則強制使用步長模式,-x也不生效。不是很推薦使用此選項,會導致時間同步變的非常緩慢,對強依賴網(wǎng)絡時鐘的應用有影響。微調模式的同步速率是0.5ms/s,需要2000s才同步1秒。
當前文章:詳解NTPD具體工作原理
文章起源:http://m.5511xx.com/article/dpihesj.html


咨詢
建站咨詢
