简单网络时间协议应用:实现高效准确的时间同步

admin 技术 2023-12-04 16:49 35

使用简介

sntp是简单网络时间协议(Simple Network Protocol)的简称。在linux下可用来进行修改,特别适合有对时需求,但没有时钟装置进行对时源的装置。

linux下用命令sntp -P no -r [某授时中心域名] ,就能够将系统时间和授时中心的时间进行同步,当然这需要超级权限口令。

命令 hwclock --systohc //或者 hwclock -w 可以用系统时间同步硬件时间。

一般在做了以上两步之后,即使重启系统之后,系统时间也会保留重启之前的值。但是有些系统可能还需要清除时间校正文件(rm /etc/adjtime),才能使设置的时间不会因为重启而改变。

时间校正文件/etc/adjtime中保存了一个用来估算硬件时间的偏差的校正因子,系统每次重启会根据校正因子调整硬件时间。所以要想使设置时间在重启后保留,需要删除掉时间校正文件,系统在重启后会重新创建一个新的时间校正文件。

协议SNTP V4介绍

SNTP(Simple Network Time Protocal简单网络时间协议),用于跨广域网或局域网同步时间的协议,精确度一般在几十毫秒。官方文档为RFC 4330,2006年的最新版本为SNTPv4,支持IPV6。

SNTPv4是NTP(Network Time Protocol网络时间协议)的简化版,精度较低,安全机制较低,但是报文格式完全一致。

SNTPv4使用的是UDP 123端口,C/S模式,有单播,多播和广播三种报文发送方式。

报文结构

SNTP4基于UDP网络,报文结构如下:

MAC

IP

UDP

NTP

其中NTP的报文结构如下:

字段说明:

字段

含义

长度

说明

LI

闰秒标志

2比特

见Figure 2

VN

版本号

3比特

表示NTP的版本号,当前为4

Mode

模式

3比特

见Figure 3,一般服务端发送的报文模式值为4

Stratum

1字节unsigned char

见Figure 4,对本地时钟级别的整体识别

Poll

轮询间隔

1字节无符号正数

指示数据包的最大时间间隔,以秒为单位,作为2的指数方的指数部分,取值范围从4-17,即16秒到131,072秒

Precision

精度

1字节有符号正数

指示系统时钟的精确性,以秒为单位,作为2的指数方的指数部分,取值范围从-6到-20

Root Delay

往返延迟

4字节浮点数

指示与主时钟参考源的总共往返延迟,以秒为单位,小数部分在16位以后,取值范围从负几毫秒到正几百毫秒

Root Dispersion

误差

4字节浮点数

指示与主时钟参考源的误差,以秒为单位,小数部分在16位以后,取值范围从零毫秒到正几百毫秒

Reference Identifier

时钟参考源

4字节ASCII字符串

见Figure 5 ,对于二级服务器,在IPV4环境下,取值为一级服务器的IP地址,在IPV6环境下,是一级服务器的NSAP地址

Reference Timestamp

校准时间

8字节时间戳

见Figure 6,指示系统时钟最后一次校准的时间,建议填充非重要的低阶位随机值,便于环路检测与回放检测

Originate Timestamp

原始时间

8字节时间戳

指示客户向服务器发起请求的时间

Receive Timestamp

接收时间

8字节时间戳

指服务器收到客户请求的时间

Transmit Timestamp

传输时间

8字节时间戳

指示服务器向客户发时间戳的时间

Authenticator

认证

160字节可选

当需要进行SNTP认证时,该字段包含密钥和信息加密码

Figure 2 LI

0:无警告

1:最后一分钟是61秒;

2:最后一分钟是59秒;

3:警告(时钟没有同步)

Figure 3 Mode

0:保留

1:对称主动

2:对称被动

3:客户

4:服务器

5:广播

6:保留为NTP控制信息

7:保留为用户定义

Figure 4 Stratum

Stratum值

含义

0

kiss-o’-death(比较重要,见2.4),表示故障信息

1

一级服务器(由radio clock同步)

2-15

二级服务器(由NTP和SNTP同步)

16-255

保留

Figure 5 Reference Identifier Codes

Code

External Reference Source

含义

LOCL

uncalibrated local clock

未校准的本地时钟

CESM

calibrated Cesium clock

校准铯钟

RBDM

calibrated Rubidium clock

校准铷钟

PPS

calibrated quartz clock or other pulse-per-second source

校准石英钟或其他脉冲每秒源

IRIG

Inter-Range Instrumentation Group

跨系列仪表组

ACTS

NIST telephone modem service

NIST(美国国家标准)电话调制解调器服务

USNO

USNO telephone modem service

USNO(美国海军天文台)电话调制解调器服务

PTB

PTB (Germany) telephone modem service

PTB(德国)电话调制解调器服务

TDF

Allouis (France) Radio 164 kHz

Allouis(法国)无线电 164 kHz

DCF

Mainflingen (Germany) Radio 77.5 kHz

Mainflingen(德国)无线电 77.5 kHz

MSF

Rugby (UK) Radio 60 kHz

Rugby(英国)无线电 60 kHz

WWV

Ft. Collins (US) Radio 2.5, 5, 10, 15, 20 MHz

Ft. Collins(美国)无线电 2.5、5、10、15、20 MHz

WWVB

Boulder (US) Radio 60 kHz

博尔德(美国)无线电 60 kHz

WWVH

Kauai Hawaii (US) Radio 2.5, 5, 10, 15 MHz

夏威夷考艾岛(美国)无线电 2.5、5、10、15 MHz

CHU

Ottawa (Canada) Radio 3330, 7335, 14670 kHz

渥太华(加拿大)无线电 3330、7335、14670 kHz

LORC

LORAN-C radionavigation system

LORAN-C无线电导航系统

OMEG

OMEGA radionavigation system

欧米茄无线电导航系统

GPS

Global Positioning Service

全球定位服务

                           1                   2                   3       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+      |                           Seconds                             |      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+      |                  Seconds Fraction (0-padded)                  |      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                           Figure 6  NTP Timestamp Format123456789

request报文

上述字段中如果是客户端发的报文,那么绝大部分是0;如果是服务端发的报文,大部分字段才有意义。

LI,Stratum, Precision, Root Delay, Root Dispersion, Reference Identifier, Reference Timestamp 等都只在服务端有效。

下面是不同传输方式下的字段值示例

Field Name

Unicast/Manycast

Broadcast

Request

Reply

LI

ignore

as needed

as needed

VN

1-4

copied from request

4

Mode

3

4

5

Stratum

ignore

1

1

Poll

ignore

copied from request

log2 poll interval

Precision

ignore

-log2 server significant bits

-log2 server significant bits

significant

significant

Root Delay

ignore

0

0

Root Dispersion

ignore

0

0

Reference Identifier

ignore

source ident

source ident

Reference Timestamp

ignore

time of last source update

time of last source update

Originate Timestamp

ignore

copied from transmit timestamp

0

Receive Timestamp

ignore

time of day

0

Transmit Timestamp

(see text)

time of day

time of day

Authenticator

optional

optional

optional

图片源自网络,侵删。

创作不易,麻烦点赞+关注。

相关推荐
关闭

用微信“扫一扫”