工业物联网-时钟同步
2024-07-30 09:03:20 0 举报
AI智能生成
工业物联网-时钟同步
作者其他创作
大纲/内容
1.时钟同步指的是什么?
使局域网中的所有计算机,时间一致(耗级无误差),俗称“对钟”。
2.为什么时钟不同?
1. 通用PC机自带两类时钟源:硬件时钟和软件时钟。
2. 不论是硬件时钟还是软件时钟,都是由内部石英晶体振荡器驱动的,通过累计石英晶体振荡器输出脉冲数,换算出时间。所以计算机时钟的准确度取决于晶振频率准确度。由于工艺和材料的原因,同一生产线上标称频率相同的石英晶体,其实际频率是不同的,实际频率与标称频率偏差率从10-4量级到10-9量级不等。以10-4量级为例,时钟每天至少误差8.64 s。
3. 受温度变化、电压、芯片老化等因素影响,晶振频率会发生小幅度波动,其中温度对晶振频影响最大。
2. 不论是硬件时钟还是软件时钟,都是由内部石英晶体振荡器驱动的,通过累计石英晶体振荡器输出脉冲数,换算出时间。所以计算机时钟的准确度取决于晶振频率准确度。由于工艺和材料的原因,同一生产线上标称频率相同的石英晶体,其实际频率是不同的,实际频率与标称频率偏差率从10-4量级到10-9量级不等。以10-4量级为例,时钟每天至少误差8.64 s。
3. 受温度变化、电压、芯片老化等因素影响,晶振频率会发生小幅度波动,其中温度对晶振频影响最大。
3.时钟不同步的业务影响
网络管理:从不同网络设备采集来的日志信息进行分析时,需要以时间作为参照依据。如果不同设备上的系统时间不一致,会因先后顺序等问题给故障定位带来障碍。
计费系统:计费业务对于时间尤其敏感,要求所有设备的时间保持一致,否则会引起计费不准确,导致用户质疑、投诉等。
系统时间:某些应用或服务需要准确的时间来标记用户登录、交易等操作信息,确保可追溯记录。。。
协同处理:多个系统协同处理同一个复杂事件,为保证正确的执行顺序,多个系统必须参考同一时钟,否则事件执行混乱,导致风险存在。比如定时开关闸,软件系统时间与机器时间不同步,而提前停机,导致不可预知的安全风险。
4.时钟同步方式
一般场景
一般场景是指时钟同步不影响核心业务事件流转。
产品运营
产品要求高一致的时间事务同步机制,否则会带来损失的场景。
精准场景
精准场景,比如火箭发射、精准控制等场景。
6.在windows系统如何实现NTP时钟同步?
WINDOW 上使用 Ntpd服务实现
- 打开时钟和区域设置:
- 打开Internet时间标签点击更改设置按钮
- 配置时钟源,点击立即更新按钮即可完成任务
缺点
操作繁琐,若干台机器就有若干次操作;
对于安全意识较高的客户,该操作执行受阻;
7.在linux系统如何实现NTP时钟同步?
实现方案步骤
1.- 需要安装ntpd服务
yum -y install ntp
开启ntp服务:systemctl start ntpd
设置ntp服务开机自启:systemctl enable ntpd
yum -y install ntp
开启ntp服务:systemctl start ntpd
设置ntp服务开机自启:systemctl enable ntpd
2.- 修改配置文件
授权 192.168.xxx.0-192.168.10.255 网段上的所有机器可以从这台机器上查询和同步时间:restrict 192.168.xxx.0 mask 255.255.255.0 nomodify notrap
/etc/ntp.conf配置文件增加:server 127.127.1.0
/etc/ntp.conf配置文件增加:fudge 127.127.1.0 stratum 10
开启同步配置:SYNC_HWCLOCK=yes
授权 192.168.xxx.0-192.168.10.255 网段上的所有机器可以从这台机器上查询和同步时间:restrict 192.168.xxx.0 mask 255.255.255.0 nomodify notrap
/etc/ntp.conf配置文件增加:server 127.127.1.0
/etc/ntp.conf配置文件增加:fudge 127.127.1.0 stratum 10
开启同步配置:SYNC_HWCLOCK=yes
3-重启及设置ntpd服务
重启ntp服务:systemctl restart ntpd
关闭所有节点上NTP服务:systemctl stop ntpd
关闭NTP服务自启动:systemctl disable ntpd
重启ntp服务:systemctl restart ntpd
关闭所有节点上NTP服务:systemctl stop ntpd
关闭NTP服务自启动:systemctl disable ntpd
4-- crontable定时触发调用ntpd服务
每10s触发定时:*/10 * * * * /usr/sbin/ntpdate master(主节点服务)
每10s触发定时:*/10 * * * * /usr/sbin/ntpdate master(主节点服务)
缺点
缺点:操作繁琐,虽然可以Shell脚本自动化;但是Linux的版本不同,命令也不相同(例如:Centos直接使用yum安装,而Ubuntu则使用apt-get,要想使用yum还得安装插件支持),后续仍需修改;
5.什么是NTP?
NTP就是用来使网络中的各个主机时钟同步的一种协议,他把主机的时钟同步到协调世界时UTC,其精度在LAN网络内可达1毫秒内,在WAN网络上可以达到几十毫秒内。NTP允许客户端从服务器请求和接收时间,而服务器又从权威时钟源(例如原子钟、GPS)接收精确的协调世界时UTC。
NTP发展
NTP以层级来组织模型结构,层级中的每层被称为Stratum。通常将从权威时钟获得时钟同步的NTP服务器的层数设置为Stratum 1,并将其作为主时间服务器,为网络中其他的设备提供时钟同步。而Stratum 2则从Stratum 1获取时间,Stratum 3从Stratum 2获取时间,以此类推。时钟层数的取值范围为1~16,取值越小,时钟准确度越高。层数为1~15的时钟处于同步状态;层数为16的时钟被认为是未同步的,不能使用的。
NTP授时方式
NTP最典型的授时方式是Client/Server方式
NTP同步原理
1.客户端首先向服务端发送一个NTP请求报文,其中包含了该报文离开客户端的时间戳t1;
2.NTP请求报文到达NTP服务器,此时NTP服务器的时刻为t2。当服务端接收到该报文时,NTP服务器处理之后,于t3时刻发出NTP应答报文。该应答报文中携带报文离开NTP客户端时的时间戳t1、到达NTP服务器时的时间戳t2、离开NTP服务器时的时间戳t3;
3.客户端在接收到响应报文时,记录报文返回的时间戳t4。
2.NTP请求报文到达NTP服务器,此时NTP服务器的时刻为t2。当服务端接收到该报文时,NTP服务器处理之后,于t3时刻发出NTP应答报文。该应答报文中携带报文离开NTP客户端时的时间戳t1、到达NTP服务器时的时间戳t2、离开NTP服务器时的时间戳t3;
3.客户端在接收到响应报文时,记录报文返回的时间戳t4。
客户端用上述4个时间戳参数就能够计算出2个关键参数:
1:NTP报文从客户端到服务器的往返延迟delay。
2:客户端与服务端之间的时间差offset。
根据方程组:
可以解得时间差为:
NTP客户端根据计算得到的offset来调整自己的时钟,实现与NTP服务器的时钟同步。
1:NTP报文从客户端到服务器的往返延迟delay。
2:客户端与服务端之间的时间差offset。
根据方程组:
可以解得时间差为:
NTP客户端根据计算得到的offset来调整自己的时钟,实现与NTP服务器的时钟同步。
延迟计算
偏移量计算
6.JAVA NTP时钟同步服务
技术架构
客户端:NTP-CLIENT
- 作为需要时钟同步的服务器与服务端保持通信,获取NTP时间后,同步更新到操作系统;
- 交互得到服务端传输的数据包,解析拿到NTP时间;
- 代码实现操作系统命令,随即更新系统时间,采用系统默认时区:时区=Asia/Shanghai;
- 交互得到服务端传输的数据包,解析拿到NTP时间;
- 代码实现操作系统命令,随即更新系统时间,采用系统默认时区:时区=Asia/Shanghai;
服务端:NTP-SERVER
1.作为获取NTP时间的主要服务,与一台或多台客户端保持通信,将最新的NTP时间同步给客户端;
2.服务端实时通过NTP协议获取时钟:
- 方式一:采用org.apache.commons.net.ntp开源类库中的TimeInfo下的NtpV3Packet实现;
- 实现逻辑:封装三层时间戳数据包(t1,t2,t3),拿到最新的回复时间
- 方式二:采用org.apache.commons.net.ntp开源类库中的NTPUDPClient实现;
- 实现逻辑:向目标网络地址发送时间包来获取网络时间,由协议来规范
3.与客户端保持通信采用UDP协议:
- 优点:UDP协议性能好,传输速度快;
- 缺点:UDP属于单工协议,在数据可靠性传输方面得不到保证;
4.与客户端保持通信采用TCP协议:
- 优点:TCP协议属于全双工协议,完成三次握手建立连接后方可通信,在数据可靠性传输方面得到保证;
- 缺点:传输性能略低于UDP协议
2.服务端实时通过NTP协议获取时钟:
- 方式一:采用org.apache.commons.net.ntp开源类库中的TimeInfo下的NtpV3Packet实现;
- 实现逻辑:封装三层时间戳数据包(t1,t2,t3),拿到最新的回复时间
- 方式二:采用org.apache.commons.net.ntp开源类库中的NTPUDPClient实现;
- 实现逻辑:向目标网络地址发送时间包来获取网络时间,由协议来规范
3.与客户端保持通信采用UDP协议:
- 优点:UDP协议性能好,传输速度快;
- 缺点:UDP属于单工协议,在数据可靠性传输方面得不到保证;
4.与客户端保持通信采用TCP协议:
- 优点:TCP协议属于全双工协议,完成三次握手建立连接后方可通信,在数据可靠性传输方面得到保证;
- 缺点:传输性能略低于UDP协议
交互流程
- 服务端启动,建立accept事件等待客户端连接;
- 客户端启动,基于TCP协议,使用Netty框架双方建立长连接通信,随即向服务端发送时间同步的会话;
- 服务端收到会话,请求org.apache.commons.net.ntp开源类库中的TimeInfo下的NtpV3Packet资源,通过NTP协议得到时间及时钟拨动频率;
- 服务端将NTP协议返回的结果封装成数据包,通过长连接会话给客户端;
- 客户端收到数据包,解析得到时间,通过操作系统命令的方式完成时间更新,及整个过程时钟同步;
- 客户端定时任务每隔10s,主动与服务端发起会话,服务端以同样的方式同步时钟给客户端,达到缩小时钟偏移量;
- 长连接通信期间,若客户端动态伸缩,服务端能即时感知;相反,服务端状态异常,客户端每隔5s断线重连,直到服务端状态正常;
- 客户端启动,基于TCP协议,使用Netty框架双方建立长连接通信,随即向服务端发送时间同步的会话;
- 服务端收到会话,请求org.apache.commons.net.ntp开源类库中的TimeInfo下的NtpV3Packet资源,通过NTP协议得到时间及时钟拨动频率;
- 服务端将NTP协议返回的结果封装成数据包,通过长连接会话给客户端;
- 客户端收到数据包,解析得到时间,通过操作系统命令的方式完成时间更新,及整个过程时钟同步;
- 客户端定时任务每隔10s,主动与服务端发起会话,服务端以同样的方式同步时钟给客户端,达到缩小时钟偏移量;
- 长连接通信期间,若客户端动态伸缩,服务端能即时感知;相反,服务端状态异常,客户端每隔5s断线重连,直到服务端状态正常;
0 条评论
下一页