ExpTech NTP Server
· 閱讀時間約 3 分鐘
越來越多 ExpTech 相關產品及服務需要時間同步服務,
在
ttyAMA0 的幫助下,
剛好有這個機會,加上我自己小小加料一下,
就有了這個 ExpTech NTP Server,此外也順便一起把舊的時間同步機制整理一下。
ttyAMA0@bclswl0827
舊架構
早期是用一個很簡單的 HTTP 服務,在 Body 回傳 Unix Timestamp(text/plain)。
因為當時對時間精度沒有特別要求,所以這個「陽春版」其實撐了滿長一段時間。
新架構
現在改成在 time.exptech.com.tw:123 提供 SNTP(UDP) 時間同步服務,
同時保留 HTTP 介面,方便在無法用 UDP 的環境(例如 Web)也能對時。
SNTP
先拿幾個常見的公共 NTP Server 來對照一下:
各家 NTP Server 對照
Google NTP Server

Cloudflare NTP Server

Apple NTP Server

TW NTP Server

ExpTech NTP Server
最後是主角 ExpTech 自家的 NTP Server:
HTTP GET(text/plain)
除了 SNTP 以外,也可以用 HTTP 的方式取得時間:
- 會在 Header 回傳
X-NTP-T2、X-NTP-T3 - 同時也會在 Body 回傳 Unix Timestamp(向下相容舊架構)
總結
實測結果:
- SNTP 協議:誤差約 ±5ms,精度表現很好,實測結果相當穩定
- HTTP 協議:誤差約 ±50ms(主要是 TCP 開銷),雖然精度沒有 SNTP 那麼理想,但在 Web 等無法使用 UDP 的情境下,非常實用
依照實際使用環境選擇 SNTP 或 HTTP,就能在不同平台上都維持不錯的時間同步效果。
特別感謝
感謝 台灣數位串流有限公司 TWDS(Taiwan Digital Streaming) 提供伺服器贊助,讓 ExpTech NTP Server 能夠穩定運作。
