CN116743303B - 时间同步方法、装置、计算机设备、芯片及可读存储介质 - Google Patents

时间同步方法、装置、计算机设备、芯片及可读存储介质 Download PDF

Info

Publication number
CN116743303B
CN116743303B CN202311024677.4A CN202311024677A CN116743303B CN 116743303 B CN116743303 B CN 116743303B CN 202311024677 A CN202311024677 A CN 202311024677A CN 116743303 B CN116743303 B CN 116743303B
Authority
CN
China
Prior art keywords
time
synchronization
time stamp
client
sending
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202311024677.4A
Other languages
English (en)
Other versions
CN116743303A (zh
Inventor
刘小群
袁福生
郑哲
池颖英
李海涛
李长柏
谢勇
刘羽
周晓露
张继光
陈飞
王锐
李艳波
贾晓光
刘瑞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Smartchip Microelectronics Technology Co Ltd
Original Assignee
Beijing Smartchip Microelectronics Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Smartchip Microelectronics Technology Co Ltd filed Critical Beijing Smartchip Microelectronics Technology Co Ltd
Priority to CN202311024677.4A priority Critical patent/CN116743303B/zh
Publication of CN116743303A publication Critical patent/CN116743303A/zh
Application granted granted Critical
Publication of CN116743303B publication Critical patent/CN116743303B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04JMULTIPLEX COMMUNICATION
    • H04J3/00Time-division multiplex systems
    • H04J3/02Details
    • H04J3/06Synchronising arrangements
    • H04J3/0635Clock or time synchronisation in a network
    • H04J3/0638Clock or time synchronisation among nodes; Internode synchronisation
    • H04J3/0658Clock or time synchronisation among packet nodes
    • H04J3/0661Clock or time synchronisation among packet nodes using timestamps
    • H04J3/0667Bidirectional timestamps, e.g. NTP or PTP for compensation of clock drift and for compensation of propagation delays

Abstract

本发明公开了一种时间同步方法、装置、计算机设备、芯片及可读存储介质,所述方法包括:向服务端发送第一同步请求报文,并接收所述服务端发送的针对所述第一同步请求报文的第一同步响应报文;根据第一发送时间戳、第一接收时间戳,以及第二发送时间戳、第二接收时间戳,对所述客户端的时间进行粗同步;向所述服务端发送第二同步请求报文,并接收所述服务端发送的针对所述第二同步请求报文的第二同步响应报文;根据驻留时间戳、粗同步发送时间戳、第三接收时间戳,以及第三发送时间戳、粗同步接收时间戳,对所述客户端的时间进行精同步。由此通过对客户端的时间进行粗同步和精同步,有效提高NTP时钟同步的精度。

Description

时间同步方法、装置、计算机设备、芯片及可读存储介质
技术领域
本发明涉及通信技术领域,尤其涉及一种时间同步方法、装置、计算机设备、芯片及可读存储介质。
背景技术
NTP协议是用于互联网中网络设备时间同步的标准网络协议。由于NTP协议采用软件时间戳进行时间同步,受同步机制、客户端算法及网络流量、中间节点数等网络环境因素影响,普通NTP服务器的时间同步精度通常为十毫秒级。
相关技术中,为了提高NTP时钟同步的精度,采用硬件时间戳机制实现了高精度NTP服务器。然而,通过高精度NTP服务器实现时间同步服务的机制较复杂,从而增加较多的技术成本。
发明内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。为此,本发明的第一个目的在于提出一种应用于客户端的时间同步方法,能够在标准NTP网络时间协议的基础上提高NTP时钟同步的精度,时间同步服务的实现机制简单可靠。
本发明的第二个目的在于提出一种应用于服务端的时间同步方法。
本发明的第三个目的在于提出一种应用于客户端的时间同步装置。
本发明的第四个目的在于提出一种应用于服务端的时间同步装置。
本发明的第五个目的在于提出一种计算机设备。
本发明的第六个目的在于提出一种芯片。
本发明的第七个目的在于提出一种计算机可读存储介质。
为达到上述目的,本发明第一方面实施方式提出了一种时间同步方法,应用于客户端,所述方法包括:向服务端发送第一同步请求报文,并接收所述服务端发送的针对所述第一同步请求报文的第一同步响应报文;根据所述第一同步请求报文对应的第一发送时间戳、第一接收时间戳,以及所述第一同步响应报文对应的第二发送时间戳、第二接收时间戳,对所述客户端的时间进行粗同步;向所述服务端发送第二同步请求报文,并接收所述服务端发送的针对所述第二同步请求报文的第二同步响应报文;其中,所述第二同步响应报文中携带有所述服务端的驻留时间戳;所述驻留时间戳对应所述服务端的数据链路层接收到所述第二同步请求报文的时间和所述服务端的数据链路层发送所述第二同步响应报文的时间之间的时间差;根据所述驻留时间戳、所述第二同步请求报文对应的粗同步发送时间戳、第三接收时间戳,以及所述第二同步响应报文对应的第三发送时间戳、粗同步接收时间戳,对所述客户端的时间进行精同步。
根据本发明的一个实施方式,所述根据所述第一同步请求报文对应的第一发送时间戳、第一接收时间戳,以及所述第一同步响应报文对应的第二发送时间戳、第二接收时间戳,对所述客户端的时间进行粗同步,包括:对所述第一同步响应报文进行解析,得到所述第一发送时间戳、所述第一接收时间戳和所述第二发送时间戳;其中,所述第一发送时间戳对应所述客户端的第一时间同步模块发送所述第一同步请求报文的时间;所述第一接收时间戳对应所述服务端的第二时间同步模块接收所述第一同步请求报文的时间;所述第二发送时间戳对应所述第二时间同步模块发送所述第一同步响应报文的时间;根据所述第一时间同步模块接收所述第一同步响应报文的时间,得到所述第二接收时间戳;根据所述第一发送时间戳、所述第一接收时间戳、所述第二发送时间戳和所述第二接收时间戳,确定所述客户端和所述服务端之间的第一时间偏差;根据所述第一时间偏差对所述客户端的时间进行粗同步。
根据本发明的一个实施方式,在所述根据所述第一发送时间戳、所述第一接收时间戳、所述第二发送时间戳和所述第二接收时间戳,确定所述客户端和所述服务端之间的第一时间偏差之前,所述时间同步方法包括:根据所述第一发送时间戳、所述第一接收时间戳、所述第二发送时间戳和所述第二接收时间戳,确定所述客户端和所述服务端之间的第一链路时延;所述根据所述第一发送时间戳、所述第一接收时间戳、所述第二发送时间戳和所述第二接收时间戳,确定所述第一时间偏差,包括:根据所述第一链路时延、所述第一发送时间戳、所述第一接收时间戳,确定所述第一时间偏差;或者,根据所述第一链路时延、所述第二发送时间戳、所述第二接收时间戳,确定所述第一时间偏差。
根据本发明的一个实施方式,所述根据所述驻留时间戳、所述第二同步请求报文对应的粗同步发送时间戳、第三接收时间戳,以及所述第二同步响应报文对应的第三发送时间戳、粗同步接收时间戳,对所述客户端的时间进行精同步,包括:对所述第二同步响应报文进行解析,得到所述粗同步发送时间戳、所述第三接收时间戳、所述第三发送时间戳和所述驻留时间戳;其中,所述粗同步发送时间戳对应所述客户端的第一时间同步模块发送所述第二同步请求报文的时间;所述第三接收时间戳对应所述服务端的第二时间同步模块接收所述第二同步请求报文的时间;所述第三发送时间戳对应所述第二时间同步模块发送所述第二同步响应报文的时间;根据所述第一时间同步模块接收所述第二同步响应报文的时间,得到所述粗同步接收时间戳;根据所述粗同步发送时间戳、所述第三接收时间戳、所述第三发送时间戳、所述驻留时间戳和所述粗同步接收时间戳,确定所述客户端和所述服务端之间的第二时间偏差;根据所述第二时间偏差对所述客户端的时间进行精同步。
根据本发明的一个实施方式,所述客户端对应有客户端补偿时延,所述服务端对应有服务端补偿时延;所述根据所述粗同步发送时间戳、所述第三接收时间戳、所述第三发送时间戳、所述驻留时间戳和所述粗同步接收时间戳,确定所述客户端和所述服务端之间的第二时间偏差,包括:根据所述粗同步发送时间戳、所述第三接收时间戳、所述第三发送时间戳、所述驻留时间戳、所述粗同步接收时间戳、所述客户端补偿时延和所述服务端补偿时延确定所述第二时间偏差;其中,所述客户端补偿时延包括有所述第二同步请求报文由所述客户端的数据链路层到达所述客户端的物理层的第一补偿时延,以及所述第二同步响应报文由所述客户端的物理层到达所述客户端的数据链路层的第二补偿时延;所述服务端补偿时延包括有所述第二同步请求报文由所述服务端的物理层到达所述服务端的数据链路层的第三补偿时延,以及所述第二同步响应报文由所述服务端的数据链路层到达所述服务端的物理层的第四补偿时延。
根据本发明的一个实施方式,在所述根据所述粗同步发送时间戳、所述第三接收时间戳、所述第三发送时间戳、所述驻留时间戳、所述粗同步接收时间戳、所述客户端补偿时延和所述服务端补偿时延确定所述第二时间偏差之前,所述时间同步方法包括:根据所述粗同步发送时间戳、所述驻留时间戳、所述粗同步接收时间戳、所述客户端补偿时延和所述服务端补偿时延,确定所述客户端和所述服务端之间的第二链路时延;所述根据所述粗同步发送时间戳、所述第三接收时间戳、所述第三发送时间戳、所述驻留时间戳、所述粗同步接收时间戳、所述客户端补偿时延和所述服务端补偿时延确定所述第二时间偏差,包括:根据所述第二链路时延、所述第三接收时间戳、所述第三发送时间戳、所述第一补偿时延和所述第三补偿时延,确定所述第二时间偏差;或者,根据所述第二链路时延、所述第三发送时间戳、所述粗同步接收时间戳、所述第二补偿时延和所述第四补偿时延,确定所述第二时间偏差。
为达到上述目的,本发明第二方面实施方式提出了一种时间同步方法,应用于服务端,所述方法包括:接收客户端发送的第一同步请求报文,并向所述客户端发送针对所述第一同步请求报文的第一同步响应报文;其中,所述第一同步响应报文用于指示所述客户端根据所述第一同步请求报文对应的第一发送时间戳、第一接收时间戳,以及所述第一同步响应报文对应的第二发送时间戳、第二接收时间戳,对所述客户端的时间进行粗同步;接收所述客户端发送的第二同步请求报文,并向所述客户端发送针对所述第二同步请求报文的第二同步响应报文;其中,所述第二同步响应报文中携带有所述服务端的驻留时间戳;所述驻留时间戳对应所述服务端的数据链路层接收所述第二同步请求报文的时间和所述服务端的数据链路层发送所述第二同步响应报文的时间之间的时间差;所述第二同步响应报文用于指示所述客户端根据所述驻留时间戳、所述第二同步请求报文对应的粗同步发送时间戳、第三接收时间戳,以及所述第二同步响应报文对应的第三发送时间戳、粗同步接收时间戳,对所述客户端的时间进行精同步。
根据本发明的一个实施方式,所述第一同步请求报文中携带有所述第一发送时间戳;所述第一发送时间戳对应所述客户端的第一时间同步模块发送所述第一同步请求报文的时间;所述第一同步响应报文的获取方式,包括:根据所述服务端的第二时间同步模块接收所述第一同步请求报文的时间,得到所述第一接收时间戳;根据所述服务端的第二时间同步模块发送所述第一同步响应报文的时间,得到所述第二发送时间戳;将所述第一接收时间戳和所述第二发送时间戳添加至所述第一同步请求报文中,以得到所述第一同步响应报文。
根据本发明的一个实施方式,所述第二同步请求报文中携带有所述粗同步发送时间戳;所述第二同步响应报文的获取方式,包括:根据所述服务端的第二时间同步模块接收所述第二同步请求报文的时间,得到所述第三接收时间戳;根据所述服务端的第二时间同步模块发送所述第二同步响应报文的时间,得到所述第三发送时间戳;根据所述服务端的数据链路层接收所述第二同步请求报文的时间以及所述服务端的数据链路层发送所述第二同步响应报文的时间,得到所述驻留时间戳;将所述第三接收时间戳、所述第三发送时间戳和所述驻留时间戳添加至所述第二同步请求报文中,以得到所述第二同步响应报文。
根据本发明的一个实施方式,所述第一同步请求报文包括有第一驻留时间字段;所述第一驻留时间字段用于指示所述服务端不需要获取所述驻留时间戳;所述第二同步请求报文包括有第二驻留时间字段;所述第二驻留时间字段用于指示所述服务端需要获取所述驻留时间戳。
根据本发明的一个实施方式,所述第一驻留时间字段的最高位为0,所述第二驻留时间字段的最高位为1。
为达到上述目的,本发明第三方面实施方式提出了一种时间同步装置,应用于客户端,所述装置包括:第一报文处理模块,用于向服务端发送第一同步请求报文,并接收所述服务端发送的针对所述第一同步请求报文的第一同步响应报文;时间粗同步模块,用于根据所述第一同步请求报文对应的第一发送时间戳、第一接收时间戳,以及所述第一同步响应报文对应的第二发送时间戳、第二接收时间戳,对所述客户端的时间进行粗同步;第二报文处理模块,用于向所述服务端发送第二同步请求报文,并接收所述服务端发送的针对所述第二同步请求报文的第二同步响应报文;其中,所述第二同步响应报文中携带有所述服务端的驻留时间戳;所述驻留时间戳对应所述服务端的数据链路层接收到所述第二同步请求报文的时间和所述服务端的数据链路层发送所述第二同步响应报文的时间之间的时间差;时间精同步模块,用于根据所述驻留时间戳、所述第二同步请求报文对应的粗同步发送时间戳、第三接收时间戳,以及所述第二同步响应报文对应的第三发送时间戳、粗同步接收时间戳,对所述客户端的时间进行精同步。
根据本发明的一个实施方式,所述时间粗同步模块,还用于对所述第一同步响应报文进行解析,得到所述第一发送时间戳、所述第一接收时间戳和所述第二发送时间戳;根据所述客户端的第一时间同步模块接收所述第一同步响应报文的时间,得到所述第二接收时间戳;根据所述第一发送时间戳、所述第一接收时间戳、所述第二发送时间戳和所述第二接收时间戳,确定所述客户端和所述服务端之间的第一时间偏差;根据所述第一时间偏差对所述客户端的时间进行粗同步;其中,所述第一发送时间戳对应所述第一时间同步模块发送所述第一同步请求报文的时间;所述第一接收时间戳对应所述服务端的第二时间同步模块接收所述第一同步请求报文的时间;所述第二发送时间戳对应所述第二时间同步模块发送所述第一同步响应报文的时间。
根据本发明的一个实施方式,所述时间精同步模块,还用于对所述第二同步响应报文进行解析,得到所述粗同步发送时间戳、所述第三接收时间戳、所述第三发送时间戳和所述驻留时间戳;根据所述客户端的第一时间同步模块接收所述第二同步响应报文的时间,得到所述粗同步接收时间戳;根据所述粗同步发送时间戳、所述第三接收时间戳、所述第三发送时间戳、所述驻留时间戳和所述粗同步接收时间戳,确定所述客户端和所述服务端之间的第二时间偏差;根据所述第二时间偏差对所述客户端的时间进行精同步;其中,所述粗同步发送时间戳对应所述第一时间同步模块发送所述第二同步请求报文的时间;所述第三接收时间戳对应所述服务端的第二时间同步模块接收所述第二同步请求报文的时间;所述第三发送时间戳对应所述第二时间同步模块发送所述第二同步响应报文的时间。
根据本发明的一个实施方式,所述客户端对应有客户端补偿时延,所述服务端对应有服务端补偿时延;所述时间精同步模块,还用于根据所述粗同步发送时间戳、所述第三接收时间戳、所述第三发送时间戳、所述驻留时间戳、所述粗同步接收时间戳、所述客户端补偿时延和所述服务端补偿时延确定所述第二时间偏差;其中,所述客户端补偿时延包括有所述第二同步请求报文由所述客户端的数据链路层到达所述客户端的物理层的第一补偿时延,以及所述第二同步响应报文由所述客户端的物理层到达所述客户端的数据链路层的第二补偿时延;所述服务端补偿时延包括有所述第二同步请求报文由所述服务端的物理层到达所述服务端的数据链路层的第三补偿时延,以及所述第二同步响应报文由所述服务端的数据链路层到达所述服务端的物理层的第四补偿时延。
为达到上述目的,本发明第四方面实施方式提出了一种时间同步装置,应用于服务端,所述装置包括:第三报文处理模块,用于接收客户端发送的第一同步请求报文,并向所述客户端发送针对所述第一同步请求报文的第一同步响应报文;其中,所述第一同步响应报文用于指示所述客户端根据所述第一同步请求报文对应的第一发送时间戳、第一接收时间戳,以及所述第一同步响应报文对应的第二发送时间戳、第二接收时间戳,对所述客户端的时间进行粗同步;第四报文处理模块,用于接收所述客户端发送的第二同步请求报文,并向所述客户端发送针对所述第二同步请求报文的第二同步响应报文;其中,所述第二同步响应报文中携带有所述服务端的驻留时间戳;所述驻留时间戳对应所述服务端的数据链路层接收所述第二同步请求报文的时间和所述服务端的数据链路层发送所述第二同步响应报文的时间之间的时间差;所述第二同步响应报文用于指示所述客户端根据所述驻留时间戳、所述第二同步请求报文对应的粗同步发送时间戳、第三接收时间戳,以及所述第二同步响应报文对应的第三发送时间戳、粗同步接收时间戳,对所述客户端的时间进行精同步。
根据本发明的一个实施方式,所述第一同步请求报文中携带有所述第一发送时间戳;所述第一发送时间戳对应所述客户端的第一时间同步模块发送所述第一同步请求报文的时间;所述第三报文处理模块,还用于根据所述服务端的第二时间同步模块接收所述第一同步请求报文的时间,得到所述第一接收时间戳;根据所述服务端的第二时间同步模块发送所述第一同步响应报文的时间,得到所述第二发送时间戳;将所述第一接收时间戳和所述第二发送时间戳添加至所述第一同步请求报文中,以得到所述第一同步响应报文。
根据本发明的一个实施方式,所述第四报文处理模块,还用于根据所述服务端的第二时间同步模块接收所述第二同步请求报文的时间,得到所述第三接收时间戳;根据所述服务端的第二时间同步模块发送所述第二同步响应报文的时间,得到所述第三发送时间戳;根据所述服务端的数据链路层接收所述第二同步请求报文的时间以及所述服务端的数据链路层发送所述第二同步响应报文的时间,得到所述驻留时间戳;将所述第三接收时间戳、所述第三发送时间戳和所述驻留时间戳添加至所述第二同步请求报文中,以得到所述第二同步响应报文。
为达到上述目的,本发明第五方面实施方式提出了一种计算机设备,包括存储器和处理器,所述存储器存储有第一计算机程序,所述处理器执行所述第一计算机程序时实现前述任一项实施方式所述的时间同步方法的步骤。
为达到上述目的,本发明第六方面实施方式提出了一种芯片,包括存储单元和处理单元,所述存储单元存储有第二计算机程序,所述处理单元执行所述第二计算机程序时实现前述任一项实施方式所述的时间同步方法的步骤。
为达到上述目的,本发明第七方面实施方式提出了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现前述任一项实施方式所述的时间同步方法的步骤。
根据本发明提供的多个实施方式,通过采用软件时间戳机制进行客户端时间的第一次粗同步,然后在经过粗同步之后,根据服务端驻留时间可测的特性,通过采用硬件时间戳将服务端的驻留时间戳携带在响应报文中发送给客户端,用于进行客户端时间的第二次精同步。由此,可以通过软硬件结合的方式获取并处理服务端的时间戳,有效提高基于NTP协议进行时间同步的精度,且实现机制复杂度较低,应用部署简单、方便。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
图1a为根据本说明书提供的基于NTP协议的时间同步流程示意图。
图1b为根据本说明书提供的时间同步方法的应用场景示意图。
图1c为根据本说明书提供的时间同步方法的流程示意图。
图2a为根据本说明书一个实施方式提供的时间同步方法的流程示意图。
图2b为根据本说明书一个实施方式提供的驻留时间戳处理的流程示意图。
图3为根据本说明书一个实施方式提供的对客户端的时间进行粗同步的流程示意图。
图4为根据本说明书一个实施方式提供的对客户端的时间进行精同步的流程示意图。
图5为根据本说明书一个实施方式提供的时间同步方法的流程示意图。
图6为根据本说明书一个实施方式提供的第一同步响应报文的获取方式的流程示意图。
图7为根据本说明书一个实施方式提供的第二同步响应报文的获取方式的流程示意图。
图8为根据本说明书一个实施方式提供的时间同步装置的结构框图。
图9为根据本说明书一个实施方式提供的时间同步装置的结构框图。
图10为根据本说明书一个实施方式提供的计算机设备的结构框图。
图11为根据本说明书一个实施方式提供的芯片的结构框图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
目前,常见的时间同步技术包括基于NTP(Network Time Protocol,网络时间协议)的时间同步技术和基于PTP(Precision Timing Protocol,精确时间协议)的时间同步技术。
PTP协议是IEEE制定的网络测量和控制系统的精确时间协议标准。PTP协议采用硬件时间戳进行时间同步,且不论是主时钟端还是从时钟端都需要实现硬件时间戳功能,才能基于PTP协议实现精确时间同步的目的。基于PTP协议的时间同步方法具有较高的时间戳精度和准确度,一般可以实现纳秒级甚至更高的同步精度。然而,对于局域网中的计算机高精度时间同步应用场景来说,如果采用PTP硬件时间戳方式进行时间同步,需要在网络设备中增加PTP从时钟板卡来实现硬件时间戳功能以及PTP协议栈功能,无疑会额外增加用户投资。
NTP协议是用于互联网中网络设备时间同步的标准网络协议,其作用是把网络内的计算机时间同步到协调世界时(Coordinated Universal Time,UTC)。NTP的设计充分考虑了互联网上时间同步的复杂性,通过采用时间滤波、时间选择、时钟调节等算法,不仅能够校正网络设备的当前时间,也能够维持时间的稳定。NTP支持客户端/服务器(Client-Server,C/S)的工作模式,同时支持对等体模式、广播模式等多种工作模式,操作简单、灵活,且NTP提供的时间同步机制严格、实用、有效,可以适用于具有各种规模、速度和连接通路情况的互联网环境。NTP目前已成为一种公认的时间同步协议,广泛应用于计算机网络时间同步服务,当前主要版本包括NTPv3、NTPv4。
NTP协议采用软件时间戳进行时间同步。以客户端/服务器工作模式为例,NTP协议采用无连接的UDP/IP通信协议进行客户端和服务器之间的报文传输,假设端口号为123,参考图1a所示,基于NTP协议的时间同步过程可以包括:客户端根据发送时间戳T1向服务器发送NTP时间同步请求报文(包含T1时间戳),以发起时间同步请求。服务器根据发送时间戳T3向客户端回复NTP时间同步响应数据报文(包含T1、T2、T3时间戳)。客户端接收到服务器发送的NTP时间同步响应数据报文后,记录接收时间戳T4,并从NTP时间同步响应数据报文中获取T1~T3时间戳。客户端根据T1~T4时间戳的值计算客户端和服务器之间的时间偏差,并根据时间偏差对客户端的时间进行校正,从而实现根据NTP算法完成客户端的系统时间同步。
其中,T1表示客户端发出NTP时间同步请求报文时的客户端的软件时间戳;T2表示服务器收到NTP时间同步请求报文时的服务器的软件时间戳;T3表示服务器发送NTP时间同步响应数据报文时的服务器的软件时间戳;T4表示客户端收到NTP时间同步响应数据报文时的客户端的软件时间戳。同时,T1~T3时间戳都被携带在NTP时间同步响应数据报文中,T4时间戳由客户端在本地产生。假设客户端和服务器之间往返通信的传输线路时延是对称的,则平均线路时延D/2可以表示为:
D/2=((T2-T1)+(T4-T3))/2
其中,D表示往返通信的传输线路总时延;时间偏差可以表示为offset=((T2-T1)+(T3-T4))/2。
由于NTP协议本身基于软件时间戳机制实现网络设备的时间同步,因此NTP服务器和客户端的时间戳是在应用层通过软件方式获取的。受同步机制、客户端算法及网络流量、中间节点数等网络环境因素影响,普通NTP服务器(NTP服务器表示使用NTP协议的客户端服务器和/或服务端服务器)的时间同步精度较低,通常为十毫秒级。因此,普通NTP服务器主要用于对同步精度要求不高的计算机网络时间同步服务中,例如企业局域网、校园局域网等场景下的时间同步服务。
相关技术中,为了提高NTP时钟同步的精度,提供了一种高精度NTP服务器。通过借鉴基于PTP协议的时间同步思想,高精度NTP服务器采用硬件时间戳机制,在服务器的物理层获取相关NTP数据报文的接收和发送的时间戳(即硬件时间戳)。然而,高精度NTP服务器通常需要采用FPGA技术实现NTP数据报文的识别、时间戳提取和插入、CRC校验等功能,实现机制相对比较复杂,协议完整性较弱。同时,由于NTP协议没有类似PTP协议的二步工作模式,因此无法通过软硬件配合的方式获取和处理时间戳,若在此基础上考虑MD5算法,则会导致时间同步的实现机制更加复杂。
为了在标准NTP网络时间协议的基础上提高NTP时钟同步的精度,有必要提出一种时间同步方法、装置、计算机设备、芯片及可读存储介质。该方法首先采用软件时间戳机制对客户端和服务端之间的时间偏差进行第一次测量,以对客户端的时间进行第一次校正,从而完成客户端的时间的第一次粗同步。然后,利用服务端驻留时间可测的特性,将服务端的硬件驻留时间戳携带在时间同步响应数据报文中,用于对客户端和服务端之间的时间偏差进行第二次测量,以对客户端的时间进行第二次校正,从而完成客户端的时间的第二次精同步。同时,在第二次精同步过程中,还增加了客户端和服务端的物理层的时延偏差补偿,以进一步提高对客户端的时间进行校正的精确度。由此,采用软件时间戳机制和硬件时间戳机制结合的方式,通过两次时间偏差测量+两次时间校正的方法对客户端的时间进行粗同步和精同步,以达到提高同步精度的效果。
图1b为本说明书提供的时间同步方法、装置、计算机设备、芯片及可读存储介质的应用场景示意图。以客户端/服务端的工作模式为例,客户端向服务端发送时间同步请求报文,服务端针对时间同步请求报文向客户端发送时间同步响应报文,使客户端可以根据时间同步响应报文完成时间校正和同步。
参考图1b所示,客户端和服务端之间的报文传输过程中的时延包含多个时间节点信息,时延表示从客户端发送数据报文,经过服务端转发,到客户端接收报文的这一段所需的时间。其中,T1表示客户端向服务端发送时间同步请求报文时的软件时间戳,T2表示服务端接收到时间同步请求报文时的软件时间戳。客户端向服务端发送时间同步请求报文的时延包括Tclient_tx、Delay_c2s和Tserver_rx。其中,Tclient_tx表示客户端的时间同步模块将时间同步请求报文发送至客户端的数据链路层后,时间同步请求报文从客户端的数据链路层到达客户端的物理层的时延,即客户端的物理层补偿时延;Delay_c2s表示客户端和服务端之间的传输链路时延,包括时间同步请求报文在传输链路上需要的时间以及中间设备的存储转发时延等;Tserver_rx表示服务端的物理层接收到时间同步请求报文后,时间同步请求报文从服务端的物理层到达服务端的数据链路层的时延,即服务端的物理层补偿时延。
继续参考图1b所示,T3表示服务端向客户端发送时间同步响应报文时的软件时间戳,T4表示客户端接收到时间同步响应报文时的软件时间戳。服务端向客户端发送时间同步响应报文的时延包括Tserver_tx、Delay_s2c和Tclient_rx。其中,Tserver_tx表示服务端的时间同步模块将时间同步响应报文发送至服务端的数据链路层后,时间同步响应报文从服务端的数据链路层到达服务端的物理层的时延,即服务端的物理层补偿时延;Delay_s2c表示服务端和客户端之间的传输链路时延,包括时间同步响应报文在传输链路上需要的时间以及中间设备的存储转发时延等;Tclient_rx表示客户端的物理层接收到时间同步响应报文后,时间同步响应报文从客户端的物理层到达客户端的数据链路层的时延,即客户端的物理层补偿时延。
继续参考图1b所示,服务端还具有转发时延Tserver_forward,表示服务端的数据链路层接收到时间同步请求报文的时间和服务端的数据链路层发送时间同步响应报文的时间之间的时间差,即为服务端的驻留时间,是硬件时间戳。
在本场景示例中,T1表示客户端上层NTP模块发送时间同步请求报文的发送时刻;T2表示服务器端上层NTP模块接收时间同步请求报文的接收时刻;T3表示服务器端上层NTP模块发送时间同步响应报文的发送时刻;T4表示客户端上层NTP模块接收时间同步响应报文的接收时刻。
在本场景示例中,参考图1c所示,首先,客户端采用软件时间戳机制向服务端发送第一同步请求报文,以指示服务端采用软件时间戳机制回复第一同步响应报文,使得客户端根据第一同步响应报文中携带的软件时间戳计算粗同步的平均线路时延和时间偏差,以对客户端的时间进行第一次时间偏差测量和第一次时间校正,从而完成第一次的粗同步过程。然后,利用服务端驻留时间可测的特性,客户端向服务端发送第二同步请求报文,以指示服务端将驻留时间戳(硬件时间戳)携带在第二同步响应报文中,使得客户端根据第二同步响应报文中携带的软件时间戳和硬件时间戳计算精同步的平均线路时延和时间偏差,以对客户端的时间进行第二次时间偏差测量和第二次时间校正,从而完成第二次的精同步过程。
示例性说明客户端的粗同步过程。继续参考图1b和图1c所示,在粗同步过程中第一次粗同步计算平均线路时延和时间偏差时,忽略Tclient_tx、Tclient_rx、Tserver_tx、Tserver_rx和Tserver_forward。粗同步过程具体可以包括:
步骤101:客户端向服务端发送携带有时间戳T11的第一同步请求报文,服务端根据接收到第一同步请求报文的时间戳T12和发送第一同步响应报文的时间戳T13,向客户端回复携带有T11时间戳、T12时间戳和T13时间戳的第一同步响应报文。客户端接收到第一同步响应报文后,记录接收时间戳T14,并从第一同步响应报文中获取T11时间戳、T12时间戳和T13时间戳。其中,T11时间戳、T12时间戳、T13时间戳和T14时间戳均采用软件时间戳。
步骤102:假设第一同步请求报文从客户端发送出来到达服务端的传输链路时延Delay1_c2s和第一同步响应报文从服务端发送出来到达客户端的传输链路时延Delay1_s2c相等。客户端依据T11~T14时间戳的值,计算客户端和服务器之间的粗同步平均线路时延Delay1,即有:
Delay1=Delay1_c2s=Delay1_s2c=((T14-T11)-(T13-T12))/2
客户端依据T11~T14时间戳的值,计算客户端和服务器之间的粗同步时间偏差offset1,即有:
offset1=((T14-T13)+(T12-T11))/2
步骤103:客户端根据上述NTP算法得到时间偏差offset1,对客户端的时间进行第一次时间校正,完成粗同步过程。
示例性说明客户端的精同步过程。继续参考图1b和图1c所示,精同步过程具体可以包括:
步骤104:经过粗同步后,客户端向服务器发送携带有时间戳T21的第二同步请求报文。服务端接收到第二同步请求报文后,获取驻留时间戳Tserver_forward。服务端根据接收到第二同步请求报文的时间戳T22、发送第二同步响应报文的时间戳T23和驻留时间戳Tserver_forward,向客户端回复携带有T21时间戳、T22时间戳、T23时间戳和驻留时间戳Tserver_forward的第二同步响应报文。客户端接收到第二同步响应报文后,记录接收时间戳T24。其中,T21时间戳、T22时间戳、T23时间戳和T24时间戳均采用软件时间戳;驻留时间戳Tserver_forward采用硬件时间戳,是服务端根据服务端的数据链路层接收到第二同步请求报文的时间和服务端的数据链路层发送第二同步响应报文的时间确定的。
步骤105:客户端从第二同步响应报文中获取T1时间戳和驻留时间戳Tserver_forward。假设第二同步请求报文从客户端发送出来到达服务端的传输链路时延Delay2_c2s和第二同步响应报文从服务端发送出来到达客户端的传输链路时延Delay2_s2c相等。客户端依据T21时间戳、T24时间戳以及驻留时间戳Tserver_forward的值,再通过增加时延偏差的补偿,计算出客户端和服务器之间的精同步平均线路时延Delay2,即有:
Delay2=Delay2_c2s=Delay2_s2c=((T24-T21)-Tserver_forward)/2+Tcompensate
计算出客户端和服务器之间的精同步时间偏差offset2,即有:
offset2=T24-T23-Delay2-Tclient_rx-Tserver_tx
=T24-T23-((T24-T21)-Tserver_forward)/2+T'compensate
其中,Tcompensate和T'compensate表示时延偏差补偿值,是根据客户端的物理层补偿时延Tclient_tx和Tclient_rx,以及服务端的物理层补偿时延Tserver_rx和Tserver_tx计算得到的。具体表示为:
Tcompensate=-(Tserver_tx+Tserver_rx+(Tclient_rx+Tclient_tx))/2
T'compensate=-(Tcompensate+(Tclient_rx+Tserver_tx))
可以理解的是,也可以根据offset2=T22-T21-Delay2-Tclient_tx-Tserver_rx计算出客户端和服务器之间的精同步时间偏差offset2,具体不再赘述。
步骤106:在粗同步的基础上,根据上述得到的精同步时间偏差offset2,对客户端的时间进行第二次时间校正,完成精同步过程。
本说明书实施方式提供一种时间同步方法,应用于客户端,参考图2a所示,时间同步方法可以包括以下步骤。
S210、向服务端发送第一同步请求报文,并接收服务端发送的针对第一同步请求报文的第一同步响应报文。
S220、根据第一同步请求报文对应的第一发送时间戳、第一接收时间戳,以及第一同步响应报文对应的第二发送时间戳、第二接收时间戳,对客户端的时间进行粗同步。
S230、向服务端发送第二同步请求报文,并接收服务端发送的针对第二同步请求报文的第二同步响应报文。其中,第二同步响应报文中携带有服务端的驻留时间戳;驻留时间戳对应服务端的数据链路层接收到第二同步请求报文的时间和服务端的数据链路层发送第二同步响应报文的时间之间的时间差。
S240、根据驻留时间戳、第二同步请求报文对应的粗同步发送时间戳、第三接收时间戳,以及第二同步响应报文对应的第三发送时间戳、粗同步接收时间戳,对客户端的时间进行精同步。
其中,客户端是需要进行时间校正的网络设备;服务端的时间为基准时间,服务端可以是具有基准时间的网络设备。第一发送时间戳和第二接收时间戳是粗同步之前的客户端的软件时间戳,第一接收时间戳、第二发送时间戳、第三接收时间戳和第三发送时间戳是服务端的软件时间戳。粗同步发送时间戳和粗同步接收时间戳是经过粗同步后的客户端的软件时间戳。驻留时间戳是服务端的转发时延,即服务端的数据链路层从接收到客户端发送的请求报文到服务端的数据链路层向客户端发送响应报文所需要的时间,是硬件时间戳。第一同步请求报文、第一同步响应报文、第二同步请求报文和第二同步响应报文都是NTP数据报文。
可以理解的是,软件时间戳是应用层的时间戳,客户端可以从客户端本地获取第一发送时间戳和第二接收时间戳,服务端可以从服务端本地获取第一接收时间戳和第二发送时间戳。
具体地,客户端向服务端发送第一同步请求报文,以向服务端请求进行第一次时间同步。服务端接收到第一同步请求报文后,针对第一同步请求报文向客户端回复第一同步响应报文。以客户端发送第一同步请求报文时客户端本地的软件时间戳为第一发送时间戳,以服务端接收到第一同步请求报文时服务端本地的软件时间戳为第一接收时间戳,以服务端发送第一同步响应报文时服务端本地的软件时间戳为第二发送时间戳,以客户端接收到第一同步响应报文时客户端本地的软件时间戳为第二接收时间戳。客户端接收到第一同步响应报文后,可以根据第一同步响应报文获取第一接收时间戳和第二发送时间戳,并可以根据第一发送时间戳、第一接收时间戳、第二发送时间戳和第二接收时间戳对客户端的时间进行粗同步。
在对客户端的时间进行粗同步后,客户端向服务端发送第二同步请求报文,以向服务端请求进行第二次时间同步。服务端接收到第二同步请求报文后,由于第二同步请求报文会经过服务端的物理层到达服务端的数据链路层,然后经过一系列转发处理,在服务端的数据链路层将第二同步响应报文发送至服务端的物理层。因此,服务端的数据链路层接收到第二同步请求报文的时间与该数据链路层发送第二同步响应报文的时间之间具有时间差,称为报文的驻留时间(或者,报文转发时间),且根据硬件时间戳机制,该驻留时间可测。因此,服务端可以将驻留时间对应的驻留时间戳携带在第二同步响应报文中,并向客户端回复第二同步响应报文。以客户端发送第二同步请求报文时客户端本地的软件时间戳为粗同步发送时间戳,以服务端接收到第二同步请求报文时服务端本地的软件时间戳为第三接收时间戳,以服务端发送第二同步响应报文时服务端本地的软件时间戳为第三发送时间戳,以客户端接收到第二同步响应报文时客户端本地的软件时间戳为粗同步接收时间戳。客户端接收到第二同步响应报文后,可以根据第二同步响应报文获取驻留时间戳、第三接收时间戳和第三发送时间戳,并可以根据粗同步发送时间戳、驻留时间戳第三接收时间戳、第三发送时间戳和粗同步接收时间戳对客户端的时间进行精同步。
示例性地,客户端向服务端发送第一同步请求报文M_rq1,以向服务端请求进行第一次时间同步,并可以将客户端发送第一同步请求报文M_rq1的本地软件时间戳T11作为第一发送时间戳。服务端接收到第一同步请求报文M_rq1时,可以将服务端本地的软件时间戳T12作为第一接收时间戳。服务端针对第一同步请求报文M_rq1向客户端回复第一同步响应报文M_rp1,并可以将服务端发送第一同步响应报文M_rp1的本地软件时间戳T13作为第二发送时间戳。客户端接收到第一同步响应报文M_rp1时,可以将客户端本地的软件时间戳T14作为第二接收时间戳。客户端根据第一同步响应报文M_rp1获取T12时间戳和T13时间戳,并可以根据T11时间戳、T12时间戳、T13时间戳和T14时间戳对客户端的时间进行粗同步。
在对客户端的时间进行粗同步后,客户端可以向服务端发送第二同步请求报文M_rq2,以向服务端请求进行第二次时间同步,并可以将客户端发送第二同步请求报文M_rq2的本地软件时间戳T21作为粗同步发送时间戳。服务端接收到第二同步请求报文M_rq2时,可以将服务端本地的软件时间戳T22作为第三接收时间戳。服务端根据服务端的数据链路层接收到第二同步请求报文M_rq2的时间以及服务端的数据链路层发送第二同步响应报文M_rp2的时间,得到驻留时间戳Tserver_forward,并将驻留时间戳携带在第二同步响应报文M_rp2中。服务端向客户端回复第二同步响应报文M_rp2,并可以将服务端发送第二同步响应报文M_rp2时的本地软件时间戳T23作为第三发送时间戳。客户端接收到第二同步响应报文M_rp2时,可以将客户端本地的软件时间戳T24作为粗同步接收时间戳,并可以根据第二同步响应报文M_rp2获取驻留时间戳Tserver_forward、第三接收时间戳T22和第三发送时间戳T23。客户端根据粗同步发送时间戳T21、驻留时间戳Tserver_forward、第三接收时间戳T22、第三发送时间戳T23和粗同步接收时间戳T24对客户端的时间进行精同步。
在一些实施例中,数据链路层包括MAC(Media Access Control,媒体访问控制)层,驻留时间戳对应服务端的MAC层接收到第二同步请求报文的时间和服务端的MAC层发送第二同步响应报文的时间之间的时间差。
示例性地,参考图2b所示,服务端的MAC层包括时延累加模块、时钟模块、接收时间戳模块和发送时间戳模块。服务端接收第二同步请求报文M_rq2后关于驻留时间的时间戳处理流程可以包括:第二同步请求报文M_rq2在经过服务端的PHY(Physical,物理)层进入MAC层后,MAC层芯片内部将第二同步请求报文M_rq2送去接收时间戳模块,并从接收时间戳模块中获取当前时间作为第二同步请求报文M_rq2进入MAC层的时间。MAC层芯片内部将该当前时间t_in进行记录。第二同步请求报文M_rq2经过转发处理后,待将第二同步响应报文M_rp2由从端口发送出去时,MAC层芯片内部将第二同步响应报文M_rp2送到发送时间戳模块,得到第二同步响应报文M_rp2要发送出去的时间t_out。MAC层芯片内部将时间t_out和时间t_in的差值作为服务端内的驻留时间,并将对应的驻留时间戳打在第二同步响应报文M_rp2上后,将第二同步响应报文M_rp2发送至服务端的PHY层。可以理解的是,上述流程中,时间戳的打出机制都是硬件的时间戳打出机制。
需要说明的是,本说明书中,发送报文的时间即发送报文的时刻,接收报文的时间即接收报文的时刻。客户端可以对客户端的系统时间进行粗同步和精同步,也可以对客户端的硬件时间进行粗同步和精同步。
上述实施方式中,通过采用软件时间戳机制进行客户端时间的第一次粗同步,然后在经过粗同步之后,根据服务端驻留时间可测的特性,通过采用硬件时间戳将服务端的驻留时间戳携带在响应报文中发送给客户端,用于进行客户端时间的第二次精同步。由此,可以通过软硬件结合的方式获取并处理服务端的时间戳,有效提高基于NTP协议进行时间同步的精度,且实现机制复杂度较低,应用部署简单、方便,可以有效扩展基于NTP协议的时间同步方法的应用场景。
在一些实施方式中,参考图3所示,根据第一同步请求报文对应的第一发送时间戳、第一接收时间戳,以及第一同步响应报文对应的第二发送时间戳、第二接收时间戳,对客户端的时间进行粗同步,可以包括以下步骤。
S310、对第一同步响应报文进行解析,得到第一发送时间戳、第一接收时间戳和第二发送时间戳;其中,第一发送时间戳对应客户端的第一时间同步模块发送第一同步请求报文的时间;第一接收时间戳对应服务端的第二时间同步模块接收第一同步请求报文的时间;第二发送时间戳对应第二时间同步模块发送第一同步响应报文的时间。
S320、根据第一时间同步模块接收第一同步响应报文的时间,得到第二接收时间戳。
S330、根据第一发送时间戳、第一接收时间戳、第二发送时间戳和第二接收时间戳,确定客户端和服务端之间的第一时间偏差。
S340、根据第一时间偏差对客户端的时间进行粗同步。
其中,第一时间同步模块是客户端的上层NTP模块,第二时间同步模块时服务端的上层NTP模块。第一时间偏差是客户端的时间和服务端的时间之间的偏差,可以用于对客户端的时间进行精度较低的时间校正。
可以理解的是,上层可以是应用层。
具体地,客户端可以根据第一时间同步模块将第一同步请求报文发送至客户端的数据链路层的时间得到第一发送时间戳,并将该时间戳打在第一同步请求报文中。服务端接收到第一同步请求报文后,可以根据服务端的第二时间同步模块接收到第一同步请求报文的时间得到第一接收时间戳,以及根据第二时间同步模块发送第一同步响应报文的时间得到第二发送时间戳。服务端可以将第一发送时间戳、第一接收时间戳和第二发送时间戳携带在第一同步响应报文中,并将第一同步响应报文发送给客户端。
客户端接收到第一同步响应报文后,可以对第一同步响应报文进行解析,以得到第一同步响应报文中携带的第一发送时间戳、第一接收时间戳和第二发送时间戳,并可以根据第一时间同步模块接收到第一同步响应报文的时间,得到第二接收时间戳。客户端根据第一发送时间戳、第一接收时间戳、第二发送时间戳和第二接收时间戳,可以计算客户端和服务端之间的第一时间偏差,以完成客户端和服务端之间的第一次时间偏差测量。根据第一时间偏差对客户端的时间进行校正,以完成客户端的第一次时间校正,从而,可以完成粗同步过程。
示例性地,客户端可以根据该上层NTP模块将第一NTP时间同步请求报文M_rq1发送至客户端的MAC层的时刻得到第一发送时间戳,记为T1时间戳,并将该时间戳打在报文M_rq1中。服务端接收到报文M_rq1后,可以根据服务端的上层NTP模块接收到报文M_rq1的时刻得到第一接收时间戳,记为T2时间戳,以及根据服务端的上层NTP模块发送第一NTP时间同步响应报文M_rp1的时刻得到第二发送时间戳,记为T3时间戳。服务端将携带有T1时间戳、T2时间戳和T3时间戳的报文M_rp1发送给客户端。
客户端接收到报文M_rp1后,可以对报文M_rp1进行解析,以得到报文M_rp1中携带的T1时间戳、T2时间戳和T3时间戳,并可以根据客户端的上层NTP模块接收报文M_rp1的时间,得到第二接收时间戳,记为T4时间戳。客户端根据T1时间戳、T2时间戳、T3时间戳和T4时间戳,可以计算客户端和服务端之间的第一时间偏差offset1,并根据第一时间偏差offset1对客户端的时间进行校正,以完成粗同步过程。
在一些实施方式中,在根据第一发送时间戳、第一接收时间戳、第二发送时间戳和第二接收时间戳,确定客户端和服务端之间的第一时间偏差之前,时间同步方法可以包括:根据第一发送时间戳、第一接收时间戳、第二发送时间戳和第二接收时间戳,确定客户端和服务端之间的第一链路时延。相应地,根据第一发送时间戳、第一接收时间戳、第二发送时间戳和第二接收时间戳,确定第一时间偏差,可以包括:根据第一链路时延、第一发送时间戳、第一接收时间戳,确定第一时间偏差;或者,根据第一链路时延、第二发送时间戳、第二接收时间戳,确定第一时间偏差。
其中,第一链路时延是报文从链路或者网络的一端传送到另外一端所需要的时间,表示计算得到的客户端和服务端之间的精度较低的传输链路时延,可以用于粗同步时间偏差测量。
具体地,客户端可以根据第一发送时间戳、第一接收时间戳、第二发送时间戳和第二接收时间戳,计算得到客户端和服务端之间的第一链路时延。根据第一链路时延、第一发送时间戳、第一接收时间戳、第一时间偏差之间的关系,或者,根据第一链路时延、第二发送时间戳、第二接收时间戳、第一时间偏差之间的关系,可以计算得到客户端和服务端之间的第一时间偏差。
示例性地,将第一同步请求报文离开客户端到达服务端的线路时延记为Delay1_c2s,将第一同步响应报文离开服务端到达客户端的线路时延记为Delay1_s2c。假设时延Delay1_c2s和时延Delay1_s2c相等,则第一链路时延可以是客户端和服务端之间的平均线路时延,记为Delay1。可以理解的是,Delay1=Delay1_c2s=Delay1_s2c。假设第一发送时间戳为T11时间戳,第一接收时间戳为T12时间戳,第二发送时间戳为T13时间戳,第二接收时间戳为T14时间戳,则根据T11时间戳、T12时间戳、T13时间戳和T14时间戳的值,可以计算得到第一链路时延Delay1=((T14-T11)-(T13-T12))/2。由于第一链路时延Delay1、T11时间戳的值、T12时间戳的值和第一时间偏差offset1之间可以满足如下关系:
T11+Delay1-offset1=T12
因此,可以根据第一链路时延Delay1、T11时间戳的值、T12时间戳的值,计算得到第一时间偏差为:
offset1=T11-T12+Delay1=((T14-T13)-(T12-T11))/2
由于第一链路时延Delay1、T13时间戳的值、T14时间戳的值和第一时间偏差offset1之间可以满足T13+Delay1+offset1=T14,因此,也可以根据第一链路时延Delay1、T13时间戳的值、T14时间戳的值,计算得到第一时间偏差为:
offset1=T14-T13-Delay1=((T14-T13)+(T12-T11))/2
示例性地,以上述第一链路时延Delay1、T11时间戳、T12时间戳、T13时间戳、T14时间戳为例。由于第一链路时延Delay1、T11时间戳的值、T12时间戳的值和第一时间偏差offset1之间可以满足T11+Delay1+offset1=T12,因此,可以根据第一链路时延Delay1、T11时间戳的值、T12时间戳的值,计算得到第一时间偏差为:
offset1=T12-T11-Delay1=((T12-T11)-(T14-T13))/2
由于第一链路时延Delay1、T13时间戳的值、T14时间戳的值和第一时间偏差offset1之间可以满足T13+Delay1-offset1=T14,因此,也可以根据第一链路时延Delay1、T13时间戳的值、T14时间戳的值,计算得到第一时间偏差为:
offset1=T13-T14+Delay1=((T13-T14)+(T12-T11))/2
可以理解的是,如果客户端和服务端直接相连,则第一链路时延仅包括报文在传输路线上的时延;如果客户端和服务端跨设备连接,则第一链路时延包括报文在传输路线上的时延以及中间设备的存储转发时延。
在一些实施方式中,参考图4所示,根据驻留时间戳、第二同步请求报文对应的粗同步发送时间戳、第三接收时间戳,以及第二同步响应报文对应的第三发送时间戳、粗同步接收时间戳,对客户端的时间进行精同步,可以包括以下步骤。
S410、对第二同步响应报文进行解析,得到粗同步发送时间戳、第三接收时间戳、第三发送时间戳和驻留时间戳。
其中,粗同步发送时间戳对应客户端的第一时间同步模块发送第二同步请求报文的时间;第三接收时间戳对应服务端的第二时间同步模块接收第二同步请求报文的时间;第三发送时间戳对应第二时间同步模块发送第二同步响应报文的时间。
S420、根据第一时间同步模块接收第二同步响应报文的时间,得到粗同步接收时间戳。
S430、根据粗同步发送时间戳、第三接收时间戳、第三发送时间戳、驻留时间戳和粗同步接收时间戳,确定客户端和服务端之间的第二时间偏差。
S440、根据第二时间偏差对客户端的时间进行精同步。
其中,第二时间偏差可以是客户端的粗同步后的时间和服务端的时间之间的偏差,可以用于对客户端的粗同步后的时间进行精度较高的时间校正。
具体地,客户端可以根据第一时间同步模块将第二同步请求报文发送至客户端的数据链路层的时间得到粗同步发送时间戳,并将该时间戳打在第二同步请求报文中。服务端接收到第二同步请求报文时,可以根据服务端的第二时间同步模块接收第二同步请求报文的时间得到第三接收时间戳,并在第二时间同步模块将第二同步响应报文发送至服务端的数据链路层的时间得到第三发送时间戳。服务端可以根据服务端的数据链路层接收到第二同步请求报文的时间以及发送第二同步响应报文的时间,得到驻留时间戳。服务端将粗同步发送时间戳、第三接收时间戳、第三发送时间戳和驻留时间戳携带在第二同步响应报文中,并将第二同步响应报文发送给客户端。
客户端接收到第二同步响应报文后,可以对第二同步响应报文进行解析,以得到第二同步响应报文中携带的粗同步发送时间戳、第三接收时间戳、第三发送时间戳和驻留时间戳,并可以根据第一时间同步模块接收到第二同步响应报文的时间,得到粗同步接收时间戳。客户端根据粗同步发送时间戳、第三接收时间戳、第三发送时间戳、驻留时间戳和粗同步接收时间戳,可以计算客户端和服务端之间的第二时间偏差,以完成客户端和服务端之间的第二次时间偏差测量。根据第二时间偏差对客户端的时间进行校正,以完成客户端的第二次时间校正,从而,可以完成精同步过程。
示例性地,经过粗同步后,客户端可以根据客户端的上层NTP模块将第二NTP时间同步请求报文M_rq2发送至客户端的MAC层的时刻得到粗同步发送时间戳,记为T21时间戳,并将该时间戳打在报文M_rq2中。服务端接收到报文M_rq2后,可以根据服务端的上层NTP模块接收报文M_rq2的时刻得到第三接收时间戳,记为T22时间戳,并在服务端的上层NTP模块将NTP时间同步响应报文M_rp2发送至服务端的MAC层的时间得到第三发送时间戳,记为T23时间戳。服务端根据服务端的MAC层接收到报文M_rq2的时刻以及发送报文M_rp2的时刻,可以得到驻留时间戳,记为Tserver_forward。服务端将携带有T21时间戳、T22时间戳、T23时间戳和Tserver_forward时间戳的报文M_rp2发送给客户端。
客户端接收到报文M_rp2后,可以对报文M_rp2进行解析,以得到报文M_rp2中携带的T21时间戳、T22时间戳、T23时间戳和Tserver_forward时间戳,并可以根据客户端的上层NTP模块接收报文M_rp2的时刻,得到粗同步接收时间戳,记为T24时间戳。客户端根据T21时间戳、T22时间戳、T23时间戳、Tserver_forward时间戳和T24时间戳,可以计算客户端和服务端之间的第二时间偏差offset2,并根据第二时间偏差offset2对客户端的时间进行进一步地校正,以完成精同步过程。
上述实施方式中,通过两次时间偏差测量+两次时间校正的方法,完成对客户端的时间进行粗同步和精确同步的过程,不改变原有的NTP同步过程,并有效提高NTP时钟同步的精度。
在一些实施方式中,客户端对应有客户端补偿时延,服务端对应有服务端补偿时延。根据粗同步发送时间戳、第三接收时间戳、第三发送时间戳、驻留时间戳和粗同步接收时间戳,确定客户端和服务端之间的第二时间偏差,可以包括:根据粗同步发送时间戳、第三接收时间戳、第三发送时间戳、驻留时间戳、粗同步接收时间戳、客户端补偿时延和服务端补偿时延确定第二时间偏差。
其中,客户端补偿时延包括有第二同步请求报文由客户端的数据链路层到达客户端的物理层的第一补偿时延,以及第二同步响应报文由客户端的物理层到达客户端的数据链路层的第二补偿时延;服务端补偿时延包括有第二同步请求报文由服务端的物理层到达服务端的数据链路层的第三补偿时延,以及第二同步响应报文由服务端的数据链路层到达服务端的物理层的第四补偿时延。
第一补偿时延可以用于表示客户端发送报文的硬件方面的发送时延,第二补偿时延可以用于表示客户端接收报文的硬件方面的接收时延。第三补偿时延可以用于表示服务端接收报文的硬件方面的接收时延,第四补偿时延可以用于表示服务端发送报文的硬件方面的发送时延。
在一些情况中,以客户端向服务端发送第二同步请求报文为例。客户端发送第二同步请求报文的过程存在发送时延,即客户端的第一时间同步模块将整个第二同步请求报文送入传输媒体(即客户端的数据链路层)后,经过排队延时和客户端的物理层,最后推向传输链路所需的时间。同样地,服务端接收第二同步请求报文的过程存在接收时延,即第二同步请求报文经过服务端的物理层到达服务端的数据链路层所需的时间。相应地,服务端发送第二同步响应报文的过程存在发送时延,即服务端的第二时间同步模块将整个第二同步响应报文送入传输媒体(即服务端的数据链路层)后,经过排队延时和服务端的物理层,最后推向传输链路所需的时间;客户端接收第二同步响应报文的过程存在接收时延,即第二同步响应报文经过客户端的物理层到达客户端的数据链路层所需的时间。由于第二同步请求报文进入客户端的数据链路层的时间可以理解为是第一时间同步模块发送第二同步请求报文的时间,即对应粗同步发送时间戳;第二同步响应报文到达客户端的数据链路层的时间可以理解为是第一时间同步模块接收第二同步响应报文的时间,即对应粗同步接收时间戳。因此,客户端可以根据粗同步发送时间戳、驻留时间戳、粗同步接收时间戳、客户端补偿时延和服务端补偿时延确定第二时间偏差。
具体地,客户端在得到粗同步发送时间戳、第三接收时间戳、第三发送时间戳、驻留时间戳和粗同步接收时间戳后,可以获取客户端对应的客户端补偿时延和服务端对应的服务端补偿时延,并根据粗同步发送时间戳、第三接收时间戳、第三发送时间戳、驻留时间戳、粗同步接收时间戳、客户端补偿时延和服务端补偿时延,计算得到客户端和服务端之间的第二时间偏差。
示例性地,将第一补偿时延记为Tclient_tx,将第二补偿时延记为Tclient_rx;将第三补偿时延记为Tserver_rx,将第四补偿时延记为Tserver_tx。将粗同步发送时间戳记为T21时间戳,将第三接收时间戳记为T22时间戳,将第三发送时间戳记为T23时间戳,将驻留时间戳记为Tserver_forward,将粗同步接收时间戳记为T24时间戳。客户端得到T21时间戳、T22时间戳、T23时间戳、Tserver_forward、T24时间戳后,可以获取客户端补偿时延Tclient_tx和Tclient_rx,以及服务端补偿时延Tserver_rx和Tserver_tx。客户端根据得到的T21时间戳、T22时间戳、T23时间戳、Tserver_forward、T24时间戳、客户端补偿时延和服务端补偿时延,可以计算得到第二时间偏差offset2。
可以理解的是,客户端补偿时延可以用于表示报文经过客户端的物理层的时间,服务端补偿时延可以用于表示报文经过服务端的物理层的时间。因此,客户端补偿时延可以是客户端的物理层补偿时延,服务端补偿时延可以是服务端的物理层补偿时延。
需要说明的是,客户端补偿时延和服务端补偿时延是客户端可以事先得到的。通常可以在客户端的芯片上设置客户端补偿时延,以及在服务端的芯片上设置服务端补偿时延。根据不同网络设备上的不同选择的端口物理层芯片,客户端补偿时延和服务端补偿时延的设置略有不同,具体可以根据选型进行设置。一般情况下,可以设置第一补偿时延、第二补偿时延、第三补偿时延和第四补偿时延在1~2μs左右。
在一些实施方式中,在根据粗同步发送时间戳、第三接收时间戳、第三发送时间戳、驻留时间戳、粗同步接收时间戳、客户端补偿时延和服务端补偿时延确定第二时间偏差之前,时间同步方法可以包括:根据粗同步发送时间戳、驻留时间戳、粗同步接收时间戳、客户端补偿时延和服务端补偿时延,确定客户端和服务端之间的第二链路时延。相应地,根据粗同步发送时间戳、第三接收时间戳、第三发送时间戳、驻留时间戳、粗同步接收时间戳、客户端补偿时延和服务端补偿时延确定第二时间偏差,可以包括:根据第二链路时延、粗同步发送时间戳、第三接收时间戳、第一补偿时延和第三补偿时延,确定第二时间偏差;或者,根据第二链路时延、第三发送时间戳、粗同步接收时间戳、第二补偿时延和第四补偿时延,确定第二时间偏差。
其中,第二链路时延是计算得到的客户端和服务端之间的精度较高的传输链路时延,可以用于精同步时间偏差测量。
具体地,客户端可以根据粗同步发送时间戳、驻留时间戳、粗同步接收时间戳、客户端补偿时延和服务端补偿时延,计算得到客户端和服务端之间的第二链路时延。根据第二链路时延、粗同步发送时间戳、第三接收时间戳、第一补偿时延和第三补偿时延可以计算得到第二时间偏差。或者,根据第二链路时延、第三发送时间戳、粗同步接收时间戳、第二补偿时延和第四补偿时延可以计算得到第二时间偏差。
示例性地,将第二同步请求报文离开客户端到达服务端的线路时延记为Delay2_c2s,将第二同步响应报文离开服务端到达客户端的线路时延记为Delay2_s2c。假设时延Delay2_c2s和时延Delay2_s2c相等,则第二链路时延可以是客户端和服务端之间的平均线路时延,记为Delay2。可以理解的是,Delay2=Delay2_c2s=Delay2_s2c。将粗同步发送时间戳记为T21时间戳,第三接收时间戳记为T22时间戳,第三发送时间戳记为T23时间戳,粗同步接收时间戳记为T24时间戳,驻留时间戳记为Tserver_forward。将第一补偿时延记为Tclient_tx,将第二补偿时延记为Tclient_rx;将第三补偿时延记为Tserver_rx,将第四补偿时延记为Tserver_tx。根据T21时间戳、Tserver_forward、T24时间戳、客户端补偿时延Tclient_tx和Tclient_rx、服务端补偿时延Tserver_rx和Tserver_tx,可以计算得到第二链路时延为:
Delay2=Delay2_c2s=Delay2_s2c
=((T24-Tclient_rx-(T21+Tclient_tx))-(Tserver_forward+Tserver_tx+Tserver_rx))/2
=((T24-T21)-(Tserver_forward)-(Tclient_rx+Tclient_tx+(Tserver_tx+Tserver_rx)))/2
=((T24-T21)-Tserver_forward)/2+Tcompensate
其中,Tcompensate=-(Tclient_rx+Tclient_tx+(Tserver_tx+Tserver_rx))/2,用于表示第二链路时延对应的时延补偿值。
进一步地,可以根据第二链路时延Delay2、T21时间戳、T22时间戳、第一补偿时延Tclient_tx和第三补偿时延Tserver_rx,计算得到第二时间偏差offset2为:
offset2=T22-T21-Delay2-Tclient_tx-Tserver_rx
=T22-T21-((T24-T21)-Tserver_forward)/2+T'compensate
其中,T'compensate=-(Tcompensate+(Tclient_tx+Tserver_rx)),用于表示第二时间偏差对应的时延补偿值。
或者,也可以根据第二链路时延Delay2、T23时间戳、T24时间戳、第二补偿时延Tclient_rx和第四补偿时延Tserver_tx,计算得到第二时间偏差offset2为:
offset2=T24-T23-Delay2-Tclient_rx-Tserver_tx
=T24-T23-((T24-T21)-Tserver_forward)/2+T'compensate
其中,T'compensate=-(Tcompensate+(Tclient_rx+Tserver_tx))。
上述实施方式中,采用硬件时间戳机制获取服务端的报文驻留时间(转发时间),并基于该驻留时间提供了客户端和服务端之间的链路时延和时间偏差的计算方法,通过增加链路时延对应的时延补偿值和时间偏差对应的时延补偿值,来提高时间同步的精度。同时,通过使用驻留时间戳代替服务端接收第二同步请求报文的接收时间戳和服务端发送第二同步响应报文的发送时间戳参与第二次的链路时延计算,可以提高服务端的报文转发时延的可靠性,以进一步提高时间同步的精度。
本说明书实施方式提供一种时间同步方法,应用于服务端,参考图5所示,时间同步方法可以包括以下步骤。
S510、接收客户端发送的第一同步请求报文,并向客户端发送针对第一同步请求报文的第一同步响应报文;其中,第一同步响应报文用于指示客户端根据第一同步请求报文对应的第一发送时间戳、第一接收时间戳,以及第一同步响应报文对应的第二发送时间戳、第二接收时间戳,对客户端的时间进行粗同步。
S520、接收客户端发送的第二同步请求报文,并向客户端发送针对第二同步请求报文的第二同步响应报文;其中,第二同步响应报文中携带有服务端的驻留时间戳;驻留时间戳对应服务端的数据链路层接收第二同步请求报文的时间和服务端的数据链路层发送第二同步响应报文的时间之间的时间差;第二同步响应报文用于指示客户端根据驻留时间戳、第二同步请求报文对应的粗同步发送时间戳、第三接收时间戳,以及第二同步响应报文对应的第三发送时间戳、粗同步接收时间戳,对客户端的时间进行精同步。
具体地,客户端向服务端发送第一同步请求报文,以向服务端请求进行第一次时间同步。服务端接收到第一同步请求报文后,针对第一同步请求报文向客户端回复第一同步响应报文,以指示客户端对客户端的时间进行第一次粗同步。在对客户端的时间进行粗同步后,客户端向服务端发送第二同步请求报文,以向服务端请求进行第二次时间同步。服务端接收到第二同步请求报文后,将驻留时间对应的驻留时间戳携带在第二同步响应报文中,并向客户端回复第二同步响应报文,以指示客户端对客户端的时间进行第二次精同步。
需要说明的是,关于上述实施方式中,第一同步请求报文、第一同步响应报文、第二同步请求报文、第二同步响应报文的描述,以及对客户端的时间进行粗同步和精同步的描述,请参考本说明书中关于应用于客户端的时间同步方法的描述,具体这里不再赘述。
在一些实施方式中,第一同步请求报文中携带有第一发送时间戳;第一发送时间戳对应客户端的第一时间同步模块发送第一同步请求报文的时间。参考图6所示,第一同步响应报文的获取方式,可以包括以下步骤。
S610、根据服务端的第二时间同步模块接收第一同步请求报文的时间,得到第一接收时间戳。
S620、根据服务端的第二时间同步模块发送第一同步响应报文的时间,得到第二发送时间戳。
S630、将第一接收时间戳和第二发送时间戳添加至第一同步请求报文中,以得到第一同步响应报文。
具体地,服务端接收到第一同步请求报文后,可以根据服务端的第二时间同步模块接收到第一同步请求报文的时间得到第一接收时间戳,以及根据第二时间同步模块发送第一同步响应报文的时间得到第二发送时间戳。服务端对第一同步请求报文进行转发处理,并将第一接收时间戳和第二发送时间戳添加至第一同步请求报文中的相应位置,可以得到第一同步响应报文。
示例性地,第一同步请求报文M_rq1中携带有第一发送时间戳,记为T11时间戳。服务端接收到第一同步请求报文M_rq1后,可以对根据服务端的上层NTP模块接收到报文M_rq1的时刻得到第一接收时间戳,记为T12时间戳,以及根据服务端的上层NTP模块发送第一同步响应报文M_rp1的时刻得到第二发送时间戳,记为T13时间戳。服务端对报文M_rq1进行转发处理,并将T12时间戳和T13时间戳分别添加至报文M_rq1中的相应位置,可以得到携带有T11时间戳、T12时间戳和T13时间戳的第一同步响应报文M_rp1。
在一些实施方式中,第二同步请求报文中携带有粗同步发送时间戳。参考图7所示,第二同步响应报文的获取方式,可以包括以下步骤。
S710、根据服务端的第二时间同步模块接收第二同步请求报文的时间,得到第三接收时间戳。
S720、根据服务端的第二时间同步模块发送第二同步响应报文的时间,得到第三发送时间戳。
S730、根据服务端的数据链路层接收第二同步请求报文的时间以及服务端的数据链路层发送第二同步响应报文的时间,得到驻留时间戳。
S740、将第三接收时间戳、第三发送时间戳和驻留时间戳添加至第二同步请求报文中,以得到第二同步响应报文。
具体地,服务端接收到第二同步请求报文后,可以根据第二时间同步模块接收第二同步请求报文的时间,得到第三接收时间戳。服务端根据第二时间同步模块发送第二同步响应报文的时间得到第三发送时间戳,并可以根据服务端的数据链路层接收到第二同步请求报文的时间以及发送第二同步响应报文的时间,得到驻留时间戳。服务端对第二同步请求报文进行转发处理,并将第三接收时间戳、第三发送时间戳和驻留时间戳添加至第二同步请求报文中的相应位置,可以得到第二同步响应报文。
示例性地,第二同步请求报文M_rq2中携带有粗同步发送时间戳,记为T21时间戳。服务端接收到第二同步请求报文M_rq2后,可以根据第二时间同步模块接收报文M_rq2的时刻得到第三接收时间戳,记为T22时间戳。服务端根据第二时间同步模块发送第二同步响应报文M_rp2的时刻得到第三发送时间戳,记为T23时间戳,并可以根据服务端的MAC层根据接收到报文M_rq2的时刻以及发送第二同步响应报文M_rp2的时刻,得到驻留时间戳,记为Tserver_forward。服务端对报文M_rq2进行转发处理,并将T22时间戳、T23时间戳和Tserver_forward添加至报文M_rq2中的相应位置,可以得到携带有T21时间戳T22时间戳、T23时间戳和Tserver_forward的第二同步响应报文M_rp2。
在一些实施方式中,第一同步请求报文包括有第一驻留时间字段;第一驻留时间字段用于指示服务端不需要获取驻留时间戳;第二同步请求报文包括有第二驻留时间字段;第二驻留时间字段用于指示服务端需要获取驻留时间戳。
在一些情况中,为了不改变原有的基于NTP协议的时间同步过程,可以在客户端和服务端之间传输的NTP数据报文中设置驻留时间字段,以使服务端能够根据驻留时间字段确定当前需要向客户端回复的数据报文中是否需要携带驻留时间戳。由此,通过驻留时间字段,可以将精确对时(即精同步)用途的NTP服务和正常对时(即粗同步)用途的NTP服务进行区分。
具体地,服务端接收到第一同步请求报文后,对第一同步请求报文进行解析,可以得到第一同步请求报文的第一驻留时间字段中的数据。服务端根据第一驻留时间字段中的数据确定当前不需要向客户端回复驻留时间戳,则服务端将第一发送时间戳、第一接收时间戳和第二发送时间戳携带在第一同步响应报文中,以使客户端根据第一同步响应报文完成粗同步过程。
服务端接收到第二同步请求报文后,对第二同步请求报文进行解析,可以得到第二同步请求报文的第二驻留时间字段中的数据。服务端根据第二驻留时间字段中的数据确定当前需要向客户端回复驻留时间戳,则服务端获取驻留时间戳,并将粗同步发送时间戳和驻留时间戳携带在第二同步响应报文中,以使客户端根据第二同步响应报文完成精同步过程。
在一些实施例中,驻留时间字段可以是NTP数据报文中的参考时间源(ReferenceIdentifier)字段。
示例性地,NTP数据报文的报文格式如下表1所示:
表1 NTP数据报文格式
其中,LI表示闰秒标识器,占用2个比特;VN表示NTP的版本号,占用3个比特;Mode表示工作模式,占用3个比特;Stratum表示系统时钟的层数,占用8个比特;Poll表示轮询时间,即两个连续NTP数据报文之间的时间间隔,占用8个比特;Precision表示本地时钟精确度,占用8个比特。
按照NTP标准规定,可以在已有预定义的标识外对Reference Identifier(参考时间源)字段进行扩充。因此,可以将该字段作为驻留时间字段,并通过对该字段的定义和使用方法进行扩展,以将粗同步过程中的NTP服务和精同步过程中的NTP服务进行区分。
示例性地,可以定义驻留时间字段中最高的两位为11时,表明服务端需要获取驻留时间戳,否则,服务端不需要获取驻留时间戳。当服务端接收到第一同步请求报文后,可以解析出第一驻留时间字段,并判断该字段中最高的两位不是11,服务端确定当前不需要获取驻留时间戳。当服务端接收到第二同步请求报文后,可以解析出第二驻留时间字段,并判断该字段中最高的两位是11,服务端确定当前需要获取驻留时间戳,则服务端可以获取驻留时间戳,并对第二同步请求报文进行转发处理,在该字段的指定字段偏移处添加驻留时间戳,以得到第二同步响应报文。
示例性地,可以定义驻留时间字段中最高的三位为111时,表明服务端需要获取驻留时间戳,否则,服务端不需要获取驻留时间戳。当服务端接收到第一同步请求报文后,可以解析出第一驻留时间字段,并判断该字段中最高的三位不是111,服务端确定当前不需要获取驻留时间戳。当服务端接收到第二同步请求报文后,可以解析出第二驻留时间字段,并判断该字段中最高的三位是111,服务端确定当前需要获取驻留时间戳,则服务端可以获取驻留时间戳,并对第二同步请求报文进行转发处理,在该字段的指定字段偏移处添加驻留时间戳,以得到第二同步响应报文。
需要说明的是,也可以将Reference Identifier字段定义为在精同步阶段,客户端向服务端发送第二同步请求报文以发起精同步请求时,将此字段统一填充为驻留时间字段,而在粗同步阶段,客户端向服务端发送第一同步请求报文以发起粗同步请求时,此字段为常规的参考时间源字段。驻留时间字段的定义方式可以根据实际情况确定,本说明书中不作具体的限定。
在一些实施方式中,第一驻留时间字段的最高位为0,第二驻留时间字段的最高位为1。
其中,第一驻留时间字段和第二驻留时间字段为NTP数据报文中的ReferenceIdentifier字段。
具体地,服务端接收到第一同步请求报文后,可以解析得到第一驻留时间字段,并判断第一驻留时间字段的最高位为0,则确定当前不需要向客户端回复驻留时间戳。服务端可以根据第一发送时间戳、第一接收时间戳和第二发送时间戳,生成第一同步响应报文,以使客户端根据第一同步响应报文完成粗同步过程。
服务端接收到第二同步请求报文后,可以解析得到第二驻留时间字段,并判断第二驻留时间字段的最高位为1,则确定当前需要向客户端回复驻留时间戳。服务端获取驻留时间戳,并可以根据粗同步发送时间戳和驻留时间戳生成第二同步响应报文,以使客户端根据第二同步响应报文完成精同步过程。
示例性地,驻留时间字段的定义如下表2所示。
表2 驻留时间字段的组成
其中,Bit 31是驻留时间字段的第32位,表示用于指示服务端是否增加本设备内驻留时间的标志位,若置1表示添加,若置0表示不添加;Bit 30是驻留时间字段的第31位,表示溢出标志位,若置1表示驻留时间字段溢出,此时驻留时间字段无效;Bit [29-0]是驻留时间字段的第1至第30位,表示驻留时间戳字段,用于存放有效的驻留时间戳,服务端可以将本设备内的驻留时间戳填入此处。
当服务端接收到第一同步请求报文后,可以解析出第一驻留时间字段,并判断第一驻留时间字段的最高位为0,表明当前的驻留时间字段无效(即第一驻留时间字段为常规的参考时间源字段),不需要添加驻留时间戳。当服务端接收到第二同步请求报文后,可以解析出第二驻留时间字段,并判断第二驻留时间字段的最高位为1,表明当前的驻留时间字段有效并且需要添加驻留时间戳。则服务端可以通过芯片访问控制表,选择NTP数据报文作为条件(即要解析和处理的是NTP数据报文),得到指定的在Reference Identifier字段中添加驻留时间戳的字段偏移位置,以使服务端在获取到驻留时间戳后,将驻留时间戳添加该字段偏移处。
进一步地,第二驻留时间字段的最高位为1,其余位均为0。
上述实施方式中,借助NTP数据报文中的Reference Identifier字段,提出一种在NTP数据报文中携带驻留时间戳的方法,以便于将精确对时(即精同步)用途的NTP服务和正常对时(即粗同步)用途的NTP服务进行区分。服务端在识别到正确有效的驻留时间字段后才会在NTP数据报文中添加驻留时间戳,而不会改变原有的NTP数据报文格式,以此来支持服务端进行驻留时间的计算和打戳的行为。相较于相关技术中通常采用FPGA技术实现硬件时间戳的机制,即利用FPGA实现NTP数据报文的识别、时间戳的提取和插入、CRC校验等功能的相对复杂的机制,本说明书提供的方法可以通过服务端访问控制列表来匹配NTP数据报文的方式实现硬件时间戳机制,且不需要改变原有的NTP数据报文格式,实现方式简单可靠,可以有效节省技术成本。
本说明书实施方式提供一种时间同步装置,应用于客户端,参考图8所示,时间同步装置800可以包括:第一报文处理模块810、时间粗同步模块820、第二报文处理模块830、时间精同步模块840。
第一报文处理模块810,用于向服务端发送第一同步请求报文,并接收服务端发送的针对第一同步请求报文的第一同步响应报文。
时间粗同步模块820,用于根据第一同步请求报文对应的第一发送时间戳、第一接收时间戳,以及第一同步响应报文对应的第二发送时间戳、第二接收时间戳,对客户端的时间进行粗同步。
第二报文处理模块830,用于向服务端发送第二同步请求报文,并接收服务端发送的针对第二同步请求报文的第二同步响应报文;其中,第二同步响应报文中携带有服务端的驻留时间戳;驻留时间戳对应服务端的数据链路层接收到第二同步请求报文的时间和服务端的数据链路层发送第二同步响应报文的时间之间的时间差。
时间精同步模块840,用于根据驻留时间戳、第二同步请求报文对应的粗同步发送时间戳、第三接收时间戳,以及第二同步响应报文对应的第三发送时间戳、粗同步接收时间戳,对客户端的时间进行精同步。
在一些实施方式中,时间粗同步模块820,还用于对第一同步响应报文进行解析,得到第一发送时间戳、第一接收时间戳和第二发送时间戳;根据客户端的第一时间同步模块接收第一同步响应报文的时间,得到第二接收时间戳;根据第一发送时间戳、第一接收时间戳、第二发送时间戳和第二接收时间戳,确定客户端和服务端之间的第一时间偏差;根据第一时间偏差对客户端的时间进行粗同步。
其中,第一发送时间戳对应第一时间同步模块发送第一同步请求报文的时间;第一接收时间戳对应服务端的第二时间同步模块接收第一同步请求报文的时间;第二发送时间戳对应第二时间同步模块发送第一同步响应报文的时间。
在一些实施方式中,时间精同步模块840,还用于对第二同步响应报文进行解析,得到粗同步发送时间戳、第三接收时间戳、第三发送时间戳和驻留时间戳;根据客户端的第一时间同步模块接收第二同步响应报文的时间,得到粗同步接收时间戳;根据粗同步发送时间戳、第三接收时间戳、第三发送时间戳、驻留时间戳和粗同步接收时间戳,确定客户端和服务端之间的第二时间偏差;根据第二时间偏差对客户端的时间进行精同步。其中,粗同步发送时间戳对应第一时间同步模块发送第二同步请求报文的时间;第三接收时间戳对应服务端的第二时间同步模块接收第二同步请求报文的时间;第三发送时间戳对应第二时间同步模块发送第二同步响应报文的时间。
在一些实施方式中,客户端对应有客户端补偿时延,服务端对应有服务端补偿时延;时间精同步模块840,还用于根据粗同步发送时间戳、第三接收时间戳、第三发送时间戳、驻留时间戳、粗同步接收时间戳、客户端补偿时延和服务端补偿时延确定第二时间偏差。
其中,客户端补偿时延包括有第二同步请求报文由客户端的数据链路层到达客户端的物理层的第一补偿时延,以及第二同步响应报文由客户端的物理层到达客户端的数据链路层的第二补偿时延;服务端补偿时延包括有第二同步请求报文由服务端的物理层到达服务端的数据链路层的第三补偿时延,以及第二同步响应报文由服务端的数据链路层到达服务端的物理层的第四补偿时延。
本说明书实施方式还提供一种时间同步装置,应用于服务端,参考图9所示,时间同步装置900可以包括:第三报文处理模块910、第四报文处理模块920。
第三报文处理模块910,用于接收客户端发送的第一同步请求报文,并向客户端发送针对第一同步请求报文的第一同步响应报文。
其中,第一同步响应报文用于指示客户端根据第一同步请求报文对应的第一发送时间戳、第一接收时间戳,以及第一同步响应报文对应的第二发送时间戳、第二接收时间戳,对客户端的时间进行粗同步。
第四报文处理模块920,用于接收客户端发送的第二同步请求报文,并向客户端发送针对第二同步请求报文的第二同步响应报文。
其中,第二同步响应报文中携带有服务端的驻留时间戳;驻留时间戳对应服务端的数据链路层接收第二同步请求报文的时间和服务端的数据链路层发送第二同步响应报文的时间之间的时间差;第二同步响应报文用于指示客户端根据驻留时间戳、第二同步请求报文对应的粗同步发送时间戳、第三接收时间戳,以及第二同步响应报文对应的第三发送时间戳、粗同步接收时间戳,对客户端的时间进行精同步。
在一些实施方式中,第一同步请求报文中携带有第一发送时间戳;第一发送时间戳对应客户端的第一时间同步模块发送第一同步请求报文的时间。第三报文处理模块910,还用于根据服务端的第二时间同步模块接收第一同步请求报文的时间,得到第一接收时间戳;根据服务端的第二时间同步模块发送第一同步响应报文的时间,得到第二发送时间戳;将第一接收时间戳和第二发送时间戳添加至第一同步请求报文中,以得到第一同步响应报文。
在一些实施方式中,第四报文处理模块920,还用于根据服务端的第二时间同步模块接收第二同步请求报文的时间,得到第三接收时间戳;根据服务端的第二时间同步模块发送第二同步响应报文的时间,得到第三发送时间戳;根据服务端的数据链路层接收第二同步请求报文的时间以及服务端的数据链路层发送第二同步响应报文的时间,得到驻留时间戳;将第三接收时间戳、第三发送时间戳和驻留时间戳添加至第二同步请求报文中,以得到第二同步响应报文。
关于时间同步装置的具体限定可以参见上文中对于时间同步方法的限定,在此不再赘述。上述时间同步装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
本说明书实施方式还提供一种计算机设备,参考图10所示,该计算机设备1000包括存储器1010、处理器1020及存储在存储器1010上并可在处理器1020上运行的第一计算机程序1030,处理器1020执行第一计算机程序1030时,实现前述任一项实施方式中的时间同步方法。
本说明书实施方式还提供一种芯片,参考图11所示,该芯片1100包括存储单元1110、处理单元1120及存储在存储单元1110上并可在处理单元1120上运行的第二计算机程序1130,处理单元1120执行第二计算机程序1130时,实现前述任一项实施方式中的时间同步方法。
本说明书实施方式还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现前述任一项实施方式中的时间同步方法。
需要说明的是,在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系,除非另有明确的限定。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

Claims (21)

1.一种时间同步方法,其特征在于,应用于客户端,所述方法包括:
向服务端发送第一同步请求报文,并接收所述服务端发送的针对所述第一同步请求报文的第一同步响应报文;
根据所述第一同步请求报文对应的第一发送时间戳、第一接收时间戳,以及所述第一同步响应报文对应的第二发送时间戳、第二接收时间戳,对所述客户端的时间进行第一次时间偏差测量和第一次时间校正,以对所述客户端的时间进行粗同步;其中,所述第一发送时间戳和所述第二接收时间戳是粗同步之前的客户端的软件时间戳;所述第一接收时间戳、所述第二发送时间戳是服务端的软件时间戳;
向所述服务端发送第二同步请求报文,并接收所述服务端发送的针对所述第二同步请求报文的第二同步响应报文;其中,所述第二同步响应报文中携带有所述服务端的驻留时间戳;所述驻留时间戳为硬件时间戳;所述驻留时间戳对应所述服务端的数据链路层接收到所述第二同步请求报文的时间和所述服务端的数据链路层发送所述第二同步响应报文的时间之间的时间差;根据所述驻留时间戳、所述第二同步请求报文对应的粗同步发送时间戳、第三接收时间戳,以及所述第二同步响应报文对应的第三发送时间戳、粗同步接收时间戳,对所述客户端的时间进行第二次时间偏差测量和第二次时间校正,以对所述客户端的时间进行精同步;其中,所述第三接收时间戳和所述第三发送时间戳是服务端的软件时间戳;所述粗同步发送时间戳和所述粗同步接收时间戳是经过粗同步后的客户端的软件时间戳,所述软件时间戳是应用层的时间戳。
2.根据权利要求1所述的方法,其特征在于,根据所述第一同步请求报文对应的第一发送时间戳、第一接收时间戳,以及所述第一同步响应报文对应的第二发送时间戳、第二接收时间戳,对所述客户端的时间进行粗同步,包括:
对所述第一同步响应报文进行解析,得到所述第一发送时间戳、所述第一接收时间戳和所述第二发送时间戳;其中,所述第一发送时间戳对应所述客户端的第一时间同步模块发送所述第一同步请求报文的时间;所述第一接收时间戳对应所述服务端的第二时间同步模块接收所述第一同步请求报文的时间;所述第二发送时间戳对应所述第二时间同步模块发送所述第一同步响应报文的时间;
根据所述第一时间同步模块接收所述第一同步响应报文的时间,得到所述第二接收时间戳;
根据所述第一发送时间戳、所述第一接收时间戳、所述第二发送时间戳和所述第二接收时间戳,确定所述客户端和所述服务端之间的第一时间偏差;
根据所述第一时间偏差对所述客户端的时间进行粗同步。
3.根据权利要求2所述的方法,其特征在于,在所述根据所述第一发送时间戳、所述第一接收时间戳、所述第二发送时间戳和所述第二接收时间戳,确定所述客户端和所述服务端之间的第一时间偏差之前,所述方法包括:
根据所述第一发送时间戳、所述第一接收时间戳、所述第二发送时间戳和所述第二接收时间戳,确定所述客户端和所述服务端之间的第一链路时延;
所述根据所述第一发送时间戳、所述第一接收时间戳、所述第二发送时间戳和所述第二接收时间戳,确定所述第一时间偏差,包括:
根据所述第一链路时延、所述第一发送时间戳、所述第一接收时间戳,确定所述第一时间偏差;或者,根据所述第一链路时延、所述第二发送时间戳、所述第二接收时间戳,确定所述第一时间偏差。
4.根据权利要求1所述的方法,其特征在于,根据所述驻留时间戳、所述第二同步请求报文对应的粗同步发送时间戳、第三接收时间戳,以及所述第二同步响应报文对应的第三发送时间戳、粗同步接收时间戳,对所述客户端的时间进行精同步,包括:
对所述第二同步响应报文进行解析,得到所述粗同步发送时间戳、所述第三接收时间戳、所述第三发送时间戳和所述驻留时间戳;其中,所述粗同步发送时间戳对应所述客户端的第一时间同步模块发送所述第二同步请求报文的时间;所述第三接收时间戳对应所述服务端的第二时间同步模块接收所述第二同步请求报文的时间;所述第三发送时间戳对应所述第二时间同步模块发送所述第二同步响应报文的时间;
根据所述第一时间同步模块接收所述第二同步响应报文的时间,得到所述粗同步接收时间戳;
根据所述粗同步发送时间戳、所述第三接收时间戳、所述第三发送时间戳、所述驻留时间戳和所述粗同步接收时间戳,确定所述客户端和所述服务端之间的第二时间偏差;
根据所述第二时间偏差对所述客户端的时间进行精同步。
5.根据权利要求4所述的方法,其特征在于,所述客户端对应有客户端补偿时延,所述服务端对应有服务端补偿时延;所述根据所述粗同步发送时间戳、所述第三接收时间戳、所述第三发送时间戳、所述驻留时间戳和所述粗同步接收时间戳,确定所述客户端和所述服务端之间的第二时间偏差,包括:
根据所述粗同步发送时间戳、所述第三接收时间戳、所述第三发送时间戳、所述驻留时间戳、所述粗同步接收时间戳、所述客户端补偿时延和所述服务端补偿时延确定所述第二时间偏差;其中,所述客户端补偿时延包括有所述第二同步请求报文由所述客户端的数据链路层到达所述客户端的物理层的第一补偿时延,以及所述第二同步响应报文由所述客户端的物理层到达所述客户端的数据链路层的第二补偿时延;所述服务端补偿时延包括有所述第二同步请求报文由所述服务端的物理层到达所述服务端的数据链路层的第三补偿时延,以及所述第二同步响应报文由所述服务端的数据链路层到达所述服务端的物理层的第四补偿时延。
6.根据权利要求5所述的方法,其特征在于,在所述根据所述粗同步发送时间戳、所述第三接收时间戳、所述第三发送时间戳、所述驻留时间戳、所述粗同步接收时间戳、所述客户端补偿时延和所述服务端补偿时延确定所述第二时间偏差之前,所述方法包括:
根据所述粗同步发送时间戳、所述驻留时间戳、所述粗同步接收时间戳、所述客户端补偿时延和所述服务端补偿时延,确定所述客户端和所述服务端之间的第二链路时延;
所述根据所述粗同步发送时间戳、所述第三接收时间戳、所述第三发送时间戳、所述驻留时间戳、所述粗同步接收时间戳、所述客户端补偿时延和所述服务端补偿时延确定所述第二时间偏差,包括:
根据所述第二链路时延、所述粗同步发送时间戳、所述第三接收时间戳、所述第一补偿时延和所述第三补偿时延,确定所述第二时间偏差;或者,根据所述第二链路时延、所述第三发送时间戳、所述粗同步接收时间戳、所述第二补偿时延和所述第四补偿时延,确定所述第二时间偏差。
7.一种时间同步方法,其特征在于,应用于服务端,所述方法包括:
接收客户端发送的第一同步请求报文,并向所述客户端发送针对所述第一同步请求报文的第一同步响应报文;其中,所述第一同步响应报文用于指示所述客户端根据所述第一同步请求报文对应的第一发送时间戳、第一接收时间戳,以及所述第一同步响应报文对应的第二发送时间戳、第二接收时间戳,对所述客户端的时间进行第一次时间偏差测量和第一次时间校正,以对所述客户端的时间进行粗同步;所述第一发送时间戳和所述第二接收时间戳是粗同步之前的客户端的软件时间戳;所述第一接收时间戳、所述第二发送时间戳是服务端的软件时间戳;
接收所述客户端发送的第二同步请求报文,并向所述客户端发送针对所述第二同步请求报文的第二同步响应报文;其中,所述第二同步响应报文中携带有所述服务端的驻留时间戳;所述驻留时间戳为硬件时间戳;所述驻留时间戳对应所述服务端的数据链路层接收所述第二同步请求报文的时间和所述服务端的数据链路层发送所述第二同步响应报文的时间之间的时间差;所述第二同步响应报文用于指示所述客户端根据所述驻留时间戳、所述第二同步请求报文对应的粗同步发送时间戳、第三接收时间戳,以及所述第二同步响应报文对应的第三发送时间戳、粗同步接收时间戳,对所述客户端的时间进行第二次时间偏差测量和第二次时间校正,以对所述客户端的时间进行精同步;其中,所述第三接收时间戳和所述第三发送时间戳是服务端的软件时间戳;所述粗同步发送时间戳和所述粗同步接收时间戳是经过粗同步后的客户端的软件时间戳,所述软件时间戳是应用层的时间戳。
8.根据权利要求7所述的方法,其特征在于,所述第一同步请求报文中携带有所述第一发送时间戳;所述第一发送时间戳对应所述客户端的第一时间同步模块发送所述第一同步请求报文的时间;所述第一同步响应报文的获取方式,包括:
根据所述服务端的第二时间同步模块接收所述第一同步请求报文的时间,得到所述第一接收时间戳;
根据所述服务端的第二时间同步模块发送所述第一同步响应报文的时间,得到所述第二发送时间戳;
将所述第一接收时间戳和所述第二发送时间戳添加至所述第一同步请求报文中,以得到所述第一同步响应报文。
9.根据权利要求7所述的方法,其特征在于,所述第二同步请求报文中携带有所述粗同步发送时间戳;所述第二同步响应报文的获取方式,包括:
根据所述服务端的第二时间同步模块接收所述第二同步请求报文的时间,得到所述第三接收时间戳;
根据所述服务端的第二时间同步模块发送所述第二同步响应报文的时间,得到所述第三发送时间戳;
根据所述服务端的数据链路层接收所述第二同步请求报文的时间以及所述服务端的数据链路层发送所述第二同步响应报文的时间,得到所述驻留时间戳;
将所述第三接收时间戳、所述第三发送时间戳和所述驻留时间戳添加至所述第二同步请求报文中,以得到所述第二同步响应报文。
10.根据权利要求7所述的方法,其特征在于,所述第一同步请求报文包括有第一驻留时间字段;所述第一驻留时间字段用于指示所述服务端不需要获取所述驻留时间戳;所述第二同步请求报文包括有第二驻留时间字段;所述第二驻留时间字段用于指示所述服务端需要获取所述驻留时间戳。
11.根据权利要求10所述的方法,其特征在于,所述第一驻留时间字段的最高位为0,所述第二驻留时间字段的最高位为1。
12.一种时间同步装置,其特征在于,应用于客户端,所述装置包括:
第一报文处理模块,用于向服务端发送第一同步请求报文,并接收所述服务端发送的针对所述第一同步请求报文的第一同步响应报文;
时间粗同步模块,用于根据所述第一同步请求报文对应的第一发送时间戳、第一接收时间戳,以及所述第一同步响应报文对应的第二发送时间戳、第二接收时间戳,对所述客户端的时间进行第一次时间偏差测量和第一次时间校正,以对所述客户端的时间进行粗同步;其中,所述第一发送时间戳和所述第二接收时间戳是粗同步之前的客户端的软件时间戳;所述第一接收时间戳、所述第二发送时间戳是服务端的软件时间戳;
第二报文处理模块,用于向所述服务端发送第二同步请求报文,并接收所述服务端发送的针对所述第二同步请求报文的第二同步响应报文;其中,所述第二同步响应报文中携带有所述服务端的驻留时间戳;所述驻留时间戳为硬件时间戳;所述驻留时间戳对应所述服务端的数据链路层接收到所述第二同步请求报文的时间和所述服务端的数据链路层发送所述第二同步响应报文的时间之间的时间差;
时间精同步模块,用于根据所述驻留时间戳、所述第二同步请求报文对应的粗同步发送时间戳、第三接收时间戳,以及所述第二同步响应报文对应的第三发送时间戳、粗同步接收时间戳,对所述客户端的时间进行第二次时间偏差测量和第二次时间校正,以对所述客户端的时间进行精同步;其中,所述第三接收时间戳和所述第三发送时间戳是服务端的软件时间戳;所述粗同步发送时间戳和所述粗同步接收时间戳是经过粗同步后的客户端的软件时间戳,所述软件时间戳是应用层的时间戳。
13.根据权利要求12所述的装置,其特征在于,所述时间粗同步模块,还用于对所述第一同步响应报文进行解析,得到所述第一发送时间戳、所述第一接收时间戳和所述第二发送时间戳;根据所述客户端的第一时间同步模块接收所述第一同步响应报文的时间,得到所述第二接收时间戳;根据所述第一发送时间戳、所述第一接收时间戳、所述第二发送时间戳和所述第二接收时间戳,确定所述客户端和所述服务端之间的第一时间偏差;根据所述第一时间偏差对所述客户端的时间进行粗同步;其中,
所述第一发送时间戳对应所述第一时间同步模块发送所述第一同步请求报文的时间;所述第一接收时间戳对应所述服务端的第二时间同步模块接收所述第一同步请求报文的时间;所述第二发送时间戳对应所述第二时间同步模块发送所述第一同步响应报文的时间。
14.根据权利要求12所述的装置,其特征在于,所述时间精同步模块,还用于对所述第二同步响应报文进行解析,得到所述粗同步发送时间戳、所述第三接收时间戳、所述第三发送时间戳和所述驻留时间戳;根据所述客户端的第一时间同步模块接收所述第二同步响应报文的时间,得到所述粗同步接收时间戳;根据所述粗同步发送时间戳、所述第三接收时间戳、所述第三发送时间戳、所述驻留时间戳和所述粗同步接收时间戳,确定所述客户端和所述服务端之间的第二时间偏差;根据所述第二时间偏差对所述客户端的时间进行精同步;其中,
所述粗同步发送时间戳对应所述第一时间同步模块发送所述第二同步请求报文的时间;所述第三接收时间戳对应所述服务端的第二时间同步模块接收所述第二同步请求报文的时间;所述第三发送时间戳对应所述第二时间同步模块发送所述第二同步响应报文的时间。
15.根据权利要求14所述的装置,其特征在于,所述客户端对应有客户端补偿时延,所述服务端对应有服务端补偿时延;所述时间精同步模块,还用于根据所述粗同步发送时间戳、所述第三接收时间戳、所述第三发送时间戳、所述驻留时间戳、所述粗同步接收时间戳、所述客户端补偿时延和所述服务端补偿时延确定所述第二时间偏差;其中,
所述客户端补偿时延包括有所述第二同步请求报文由所述客户端的数据链路层到达所述客户端的物理层的第一补偿时延,以及所述第二同步响应报文由所述客户端的物理层到达所述客户端的数据链路层的第二补偿时延;所述服务端补偿时延包括有所述第二同步请求报文由所述服务端的物理层到达所述服务端的数据链路层的第三补偿时延,以及所述第二同步响应报文由所述服务端的数据链路层到达所述服务端的物理层的第四补偿时延。
16.一种时间同步装置,其特征在于,应用于服务端,所述装置包括:
第三报文处理模块,用于接收客户端发送的第一同步请求报文,并向所述客户端发送针对所述第一同步请求报文的第一同步响应报文;其中,所述第一同步响应报文用于指示所述客户端根据所述第一同步请求报文对应的第一发送时间戳、第一接收时间戳,以及所述第一同步响应报文对应的第二发送时间戳、第二接收时间戳,对所述客户端的时间进行第一次时间偏差测量和第一次时间校正,以对所述客户端的时间进行粗同步;所述第一发送时间戳和所述第二接收时间戳是粗同步之前的客户端的软件时间戳;所述第一接收时间戳、所述第二发送时间戳是服务端的软件时间戳;
第四报文处理模块,用于接收所述客户端发送的第二同步请求报文,并向所述客户端发送针对所述第二同步请求报文的第二同步响应报文;其中,所述第二同步响应报文中携带有所述服务端的驻留时间戳;所述驻留时间戳为硬件时间戳;所述驻留时间戳对应所述服务端的数据链路层接收所述第二同步请求报文的时间和所述服务端的数据链路层发送所述第二同步响应报文的时间之间的时间差;所述第二同步响应报文用于指示所述客户端根据所述驻留时间戳、所述第二同步请求报文对应的粗同步发送时间戳、第三接收时间戳,以及所述第二同步响应报文对应的第三发送时间戳、粗同步接收时间戳,对所述客户端的时间进行第二次时间偏差测量和第二次时间校正,以对所述客户端的时间进行精同步;其中,所述第三接收时间戳和所述第三发送时间戳是服务端的软件时间戳;所述粗同步发送时间戳和所述粗同步接收时间戳是经过粗同步后的客户端的软件时间戳,所述软件时间戳是应用层的时间戳。
17.根据权利要求16所述的装置,其特征在于,所述第一同步请求报文中携带有所述第一发送时间戳;所述第一发送时间戳对应所述客户端的第一时间同步模块发送所述第一同步请求报文的时间;
所述第三报文处理模块,还用于根据所述服务端的第二时间同步模块接收所述第一同步请求报文的时间,得到所述第一接收时间戳;根据所述服务端的第二时间同步模块发送所述第一同步响应报文的时间,得到所述第二发送时间戳;将所述第一接收时间戳和所述第二发送时间戳添加至所述第一同步请求报文中,以得到所述第一同步响应报文。
18.根据权利要求16所述的装置,其特征在于,所述第四报文处理模块,还用于根据所述服务端的第二时间同步模块接收所述第二同步请求报文的时间,得到所述第三接收时间戳;根据所述服务端的第二时间同步模块发送所述第二同步响应报文的时间,得到所述第三发送时间戳;根据所述服务端的数据链路层接收所述第二同步请求报文的时间以及所述服务端的数据链路层发送所述第二同步响应报文的时间,得到所述驻留时间戳;将所述第三接收时间戳、所述第三发送时间戳和所述驻留时间戳添加至所述第二同步请求报文中,以得到所述第二同步响应报文。
19.一种计算机设备,包括存储器和处理器,所述存储器存储有第一计算机程序,其特征在于,所述处理器执行所述第一计算机程序时实现权利要求1至11中任一项所述的方法的步骤。
20.一种芯片,包括存储单元和处理单元,所述存储单元存储有第二计算机程序,其特征在于,所述处理单元执行所述第二计算机程序时实现权利要求1至11中任一项所述的方法的步骤。
21.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至11中任一项所述的方法的步骤。
CN202311024677.4A 2023-08-15 2023-08-15 时间同步方法、装置、计算机设备、芯片及可读存储介质 Active CN116743303B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311024677.4A CN116743303B (zh) 2023-08-15 2023-08-15 时间同步方法、装置、计算机设备、芯片及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311024677.4A CN116743303B (zh) 2023-08-15 2023-08-15 时间同步方法、装置、计算机设备、芯片及可读存储介质

Publications (2)

Publication Number Publication Date
CN116743303A CN116743303A (zh) 2023-09-12
CN116743303B true CN116743303B (zh) 2023-10-31

Family

ID=87911871

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311024677.4A Active CN116743303B (zh) 2023-08-15 2023-08-15 时间同步方法、装置、计算机设备、芯片及可读存储介质

Country Status (1)

Country Link
CN (1) CN116743303B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017051061A1 (en) * 2015-09-22 2017-03-30 Nokia Technologies Oy Media feed synchronisation
CN112865907A (zh) * 2021-01-12 2021-05-28 昆高新芯微电子(江苏)有限公司 实现精确时间协议延迟请求报文的方法、装置及存储介质
CN113037417A (zh) * 2021-02-25 2021-06-25 昆高新芯微电子(江苏)有限公司 实现精确时间协议报文一步模式的方法、装置及存储介质
CN113259038A (zh) * 2021-04-29 2021-08-13 北京邮电大学 时间同步方法、节点、装置及存储介质
CN114142957A (zh) * 2021-11-06 2022-03-04 中国电子科技集团公司第五十四研究所 一种远距离时频设备测试方法
CN114285542A (zh) * 2022-01-28 2022-04-05 高新兴物联科技有限公司 一种网络时间校正方法、设备及计算机可读存储介质
CN115801170A (zh) * 2022-11-02 2023-03-14 北京东土科技股份有限公司 时钟对时方法、控制装置、存储介质及系统

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017051061A1 (en) * 2015-09-22 2017-03-30 Nokia Technologies Oy Media feed synchronisation
CN112865907A (zh) * 2021-01-12 2021-05-28 昆高新芯微电子(江苏)有限公司 实现精确时间协议延迟请求报文的方法、装置及存储介质
CN113037417A (zh) * 2021-02-25 2021-06-25 昆高新芯微电子(江苏)有限公司 实现精确时间协议报文一步模式的方法、装置及存储介质
CN113259038A (zh) * 2021-04-29 2021-08-13 北京邮电大学 时间同步方法、节点、装置及存储介质
CN114142957A (zh) * 2021-11-06 2022-03-04 中国电子科技集团公司第五十四研究所 一种远距离时频设备测试方法
CN114285542A (zh) * 2022-01-28 2022-04-05 高新兴物联科技有限公司 一种网络时间校正方法、设备及计算机可读存储介质
CN115801170A (zh) * 2022-11-02 2023-03-14 北京东土科技股份有限公司 时钟对时方法、控制装置、存储介质及系统

Also Published As

Publication number Publication date
CN116743303A (zh) 2023-09-12

Similar Documents

Publication Publication Date Title
CN101455014B (zh) 传送所发送的或者所接收的消息的发送时间信息或者接收时间信息的方法和装置
EP3491753B1 (en) System and methods for network synchronization
US9667370B2 (en) Communication device with peer-to-peer assist to provide synchronization
US20090086764A1 (en) System and method for time synchronization on network
US20190363815A1 (en) Method, Computer-Readable Medium, System, and Vehicle Comprising the System for Validating a Time Function of a Master and the Clients in a Network of a Vehicle
CN111869138A (zh) 时钟同步的方法和第一设备
CN108667547A (zh) 一种网络时间协议转换方法及系统
CN103138887A (zh) 一种1588事件报文的处理方法及系统
KR20090071923A (ko) 동기식 이더넷에서 단일 타임 싱크 프레임을 이용한 통신단말 및 브리지 장치의 시간 동기화 방법 및 그 장치
CN116456450B (zh) 一种EtherCAT与5G融合组网的时间同步方法
WO2014037684A1 (en) Methods and devices for clock synchronization
WO2018099375A1 (zh) 同步方法、同步装置、同步设备及通信系统
CN110113127B (zh) 一种基于1588协议传递时间的方法及其系统
CN102342051B (zh) 用于通过经由至少一个时间分发协议分开传输第一和第二数据来同步时钟的方法和相关的系统及模块
WO2013155944A1 (zh) 一种时钟传输方法、边界时钟及透传时钟
CN116743303B (zh) 时间同步方法、装置、计算机设备、芯片及可读存储介质
KR100686241B1 (ko) 무선 센서 네트워크를 위한 시각 동기화 방법
FI120378B (fi) Menetelmä ja järjestely kellonaika-arvon siirtämiseksi verkkoelementtien välillä
CN115865246A (zh) 时间同步装置、系统及方法
CN112039621B (zh) 一种时间同步方法和系统
CN106549822B (zh) 测试时间同步报文的响应时间的方法、装置及测试设备
US11831403B2 (en) Network interface card structure and clock synchronization method to precisely acquire heterogeneous PTP synchronization information for PTP synchronization network extension
CN111934804B (zh) 一种通信设备同步的方法、装置及系统
CN115551067A (zh) 时间同步方法、装置、设备及存储介质
CN112887046B (zh) 一种边界时钟和普通时钟数字化时间同步方法及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant