京准电钟:NTP网络校时服务器从入门到精准

京准电钟:NTP网络校时服务器从入门到精准

京准电钟:NTP网络校时服务器从入门到精准

1.前言

由计算机网络系统组成的分布式系统,若想协调一致进行:IT行业的“整点开拍”、“秒杀”、“Leader选举”,通信行业的“同步组网”之类业务处理,毫秒级甚至微秒级的时间同步是重要基础之一。

2.术语描述

2.0 世界时

世界时UT,可以简单理解为按照地球自转一周来计量24小时的时间标准,由于地球自转速率的变化,世界时的秒长会有微小的变化,每天的快慢可以达到千分之几秒。

2.1 TAI时间

世界时不准,因此国际组织定义了TAI时间,即国际原子时( International Atomic Time),其起点是1958年的开始(世界时UT),以铯原子钟走秒连续计时的时间。

2.2 UTC时间

计算机网络普遍使用的UTC时间(协调世界时),由国际计量局BIPM综合全世界多个守时实验室的钟组计算得到,为了使UTC时间与地球自转1天的时间(世界时UT)协调一致,每隔1到2年, BIPM会通告在UTC时间6月30日或12月31日最后一分钟“加一秒”或“减一秒”等闰秒调整。也就是说,UTC时间会出现60秒或少了59秒的情况。

最近一次闰秒是UTC时间2015年6月底:

2015 年6月30日,23时 59分 59秒
2015 年6月30日,23时 59分 60秒
2015 年7月 1日, 0时 0分 0秒

由于存在闰秒,UTC时间与TAI时间是有差别的,UTC = TAI - n,这个n现在(2016年1月)是36秒,也就是说UTC时间比TAI时间慢了36秒。

2.3 北京时间

北京时间也就是东八区时间,在UTC时间基础上加8小时,中国的北京标准时间由位于陕西的国家授时中心发播。

2.4 GPS时间

由GPS系统通过卫星信号发播的原子时间,GPS时间用自1980年1月6日零点(UTC时间)起的星期数和该星期内内的秒数来表示。

工程上,GPS接收机会根据闰秒数将GPS时间换算为我们通常使用的UTC时间。GPS时间的源头是美国海军天文台的守时原子钟组。

2.5 北斗(BDS)时间

由北斗卫星导航系统通过卫星信号发播的原子时间,同样,北斗接收机会根据闰秒数将北斗时间换算为我们通常使用的UTC时间。

北斗时间的时钟源是位于北京的解放军时频中心的守时原子钟组,陕西的国家授时中心好尴尬:(。

2.6 频率

时间的导数就是频率,机械发条、石英晶体振荡器、原子钟等各种时钟源通过产生频率信号,按照频率均匀打拍计数,模拟时间的等间隔流逝,就有了可见的“时间”。

2.7 频率准确度

手表有准和不准的,反映的就是频率准不准,时钟频率和标准频率的偏差可以用频率准确度来衡量。1E-9量级表示1秒会差1ns,我们使用的个人电脑,它的守时时钟是个32. 768kHz的石英晶振,准确度大概只有2E-5量级(20ppm),也就是说1秒会差0.02ms,1天会跑偏大概2秒。

2.8 时间同步

广义的“时间同步”包括的时间和频率的同步。上级时钟将时间频率信号通过各种有线(以太网、SDH数字网、同轴电缆、电话等)、无线(卫星、长波、电台、微波、WIFI、Zigbee等)链路传递给下级时钟,下级时钟接受时间频率信息后,与上级时钟保持相位、频率的一致。

3.时间同步原理

3.1 单向授时

上级时钟主动发播时间信息,下级用户端被动接受时间信息,并调整本地时钟使时差控制在一定范围内。

要想提高授时精度,用户端必须计算出时间信息在传播链路中的延时,GPS/北斗等卫星授时,可以通过用户端定位与卫星之间距离确定电磁传输延时,消除大部分误差,而电缆、网络等如果是单向授时方式就无法准确计算单向链路时延了。

3.2 双向授时

用户端将接受的时间信息原路返回给上级时钟服务端,服务端将往返时间除以二即得到单向链路时延,再把单向时延告诉客户端,在此基础上,客户端得到服务端更准确的时间信息。比如:北斗单向卫星授时精度100ns,双向卫星授时精度可做到20ns。

3.3 网络时间同步

网络时间同步,特指在计算机网络内的服务器与客户端之间利用网络报文交换实现的时间同步。

鉴于计算机网络传输路径的不确定性和中间路由交换设备转发报文时间的不确定性,通过单播或多播实现的单向网络授时是不可靠的。因此,前辈们发明的网络时间同步技术NTP/PTP等,基本原理都是通过对网络报文打时间戳(标记),往返交换报文计算传输时延和同步误差。

3.4 频率同步

频率同步指的是主从时钟的频率误差保持在一定范围内,频率同步有2种类型:

第1种是直接传递模拟频率信号,比如用电缆或光缆传递10MHz、5Mhz、2.048MHz等标准频率,或者传递bit位宽脉冲;

第2种是通过测量得到的主从时钟时差,通过锁定主从相差实现频率锁定(PLL),或者间接计算频率偏差,完成频率修正。

4.计算机网络时间同步

计算机网络时间同步只是时间同步的一种应用场景,其时间传递的链路可能是SDH网、以太网、WIFI无线网络等。

4.1 NTP

NTP(Network Time Protocol)从1985年诞生来,目前仍在在大部分的计算机网络中起着同步系统时间的作用。

  • 基本原理

服务器和客户端之间通过二次报文交换,确定主从时间误差,客户端校准本地计算机时间,完成时间同步,有条件的话进一步校准本地时钟频率。

  • 时间同步过程

服务器在UDP的132端口提供授时服务,客户端发送附带T1时间戳(Timestamp)的查询报文给服务器,服务器在该报文上添加到达时刻T2和响应报文发送时刻T3,客户端记录响应报到达时刻T4。

改个维基的图:

  • 时差计算

维基这个图中用蓝色标注了主从直接来回链路的时延Sigma:
Sigma = (t4-t1)-(t3-t2)
因此,假设来回网络链路是对称的,即传输时延相等,那么可以计算客户端与服务器之间的时间误差Delta为:
Delta = t2-t1-Sigma/2=((t2-t1)+(t3-t4))/2

客户端调整自身的时间Delta,即可完成一次时间同步。

  • 计时方式

NTP采用UTC时间计时,NTP时间戳包括自1900-01-01 00:00:00开始的UTC总秒数,当前秒的亚秒数。

当正闰秒时,60秒和下一分钟的0秒的NTP总秒数一致的,因此NTP报文专门定义了闰秒指示域来提示。

  • 误差分析

局域网内计算机利用NTP协议进行时间同步,时间同步精度在5ms左右,主要误差包括:

1)计算机打时间戳的位置在应用层,受协议栈缓存、任务调度等影响,不能在网络报文到来时马上打戳;
2)各种中间网络传输设备带来的传输时延不确定性以及链路的不对称性,将进一步降低NTP时间同步精度。

4.2 PTP

为克服NTP的各种缺点,PTP(Precision Time Protocol,精确时间同步协议)应运而生,最新协议是IEEE1588v2,可实现亚微秒量级的时间同步精度。

  • 基本原理

主从节点在网络链路层打时间戳,利用支持IEEE1588协议的PHY片,精准记录时间同步网络报文接受或发送的时刻。交换机、路由器等网络中间节点准确记录时间同步报文在其中停留的时间,实现对链路时延的准确计算。

  • 时间同步过程

PTP默认使用组播协议,二层或四层UDP组播都可以,一般我们使用基于UDP组播,使用319和320两个端口。

PTP定义了三种角色:OC、BC和TC。我们一般接触的是OC:主时钟和从时钟,交换机、路由器一般是BC或TC。

由于硬件性能有限,网络报文发送时记录的时刻信息,可以在随后的Follow_Up跟随报文中发出,这就是PTP的双步模式(Two-step)。

下图是两OC主从时钟之间的同步过程:

  • a.主时钟向从时钟发送Sync报文,并在本地记录发送时间t1;从时钟收到该报文后,记录接收时间t2。
  • b.时钟发送Sync报文之后,紧接着发送一个携带有t1的Follow_Up报文。
  • c.从时钟向主时钟发送Delay_Req报文,用于发起反向传输延时的计算,并在本地记录发送时间t3;主时钟收到该报文后,记录接收时间t4。
  • d.主时钟收到Delay_Req报文之后,回复一个携带有t4的Delay_Resp报文。
  • 时差计算

与NTP一样的原理,从时钟根据拥有的t1~t4这四个时间戳,由此可计算出主、从时钟间的往返总延时为:
Sigma = (t4-t1)-(t3-t2)

假设网络是对称的,从时钟相对于主时钟的时钟偏差为:
Delta = t2-t1-Sigma/2=((t2-t1)+(t3-t4))/2

  • 计时方式

与NTP不同,PTP采用TAI世界原子时间计时,而且PTP计时的起点与unix时间一致,即UTC时间1970年1月1日0点。

PTP主钟会告知从钟,当前UTC相对于TAI的累计偏移量,从钟据此计算当前准确的UTC时间。

  • 误差分析

PTP能准确记录报文发送和接受的时间,也能计算中间链路的延时,剩下影响最大的就是网络链路的不对称性了。

在实际工程中,网络中间链路设备不支持PTP协议,大大降低了PTP的同步精度。目前,PTP主要应用在通信同步网、电力同步网等行业网络系统里。

  • 同步拓扑

PTP域中所有的时钟节点都按一定层次组织在一起,可通过BMC(Best Master Clock,最佳主时钟)协议动态选举出最优时钟,最优时钟的时间最终将被同步到整个PTP域中。

BMC算法与STP(Spaning Tree Protocl)生成树协议类似,最终形成无环路的树形网络拓扑,且都是动态选举,能适应最佳主时钟切换的变化。

  • 扩展应用——PTP over SDH

充分利用各行业已有的SDH通信网络,利用PTP-E1信号转换设备,架设PTP同步网络,除了需要考虑链路倒换问题之外,SDH网络的时延稳定性可大幅提升网络时间同步精度。

4.3 SyncE同步以太网

以太网最早只能传输数据信号,有另外独立的频率同步网络,随着以太网的快速发展,SyncE(Synchronized Ethernet)同步以太网技术诞生后,企业们有了新的选择。

  • 基本原理

时钟节点利用以太网(1000M、1G、10G等)物理层的空闲间隙,传递位宽时钟信号,实现时钟频率信号(25M、125M等)的自上而下传递。

  • 协议控制

类似于SDH网络等时间间隔传递的SSM同步状态信息,同步以太网(Sync-E)利用链路层ESMC协议封装传递SSM信息,SSM信息包含时钟质量信息,接收端据此选择合适的上级网络时钟。

  • 应用

一般商业PHY片提供SyncE功能选项,开启该功能模式,即可利用PHY恢复出来的频率信号,校准本地时钟频率或分频后用于本地计时。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/887664.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《生成式 AI》课程 第3講 CODE TASK执行文章摘要的机器人

课程 《生成式 AI》课程 第3講:訓練不了人工智慧嗎?你可以訓練你自己-CSDN博客 任务1:总结 1.我们希望你创建一个可以执行文章摘要的机器人。 2.设计一个提示符,使语言模型能够对文章进行总结。 model: gpt-4o-mini,#gpt-3.5-turbo, import…

【人工智能】深入解析GPT、BERT与Transformer模型|从原理到应用的完整教程

在当今人工智能迅猛发展的时代,自然语言处理(NLP)领域涌现出许多强大的模型,其中GPT、BERT与Transformer无疑是最受关注的三大巨头。这些模型不仅在学术界引起了广泛讨论,也在工业界得到了广泛应用。那么,G…

Python开发环境搭建+conda管理环境

下载Miniconda 推荐从清华镜像下载安装包 Index of /anaconda/miniconda/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 打开网页后,下拉到最后找到Miniconda3-latest前缀的文件,或者网页中直接搜索Miniconda3-latest,都可以找…

python控制鼠标,键盘,adb

python控制鼠标,键盘,adb 听说某系因为奖学金互相举报,好像拿不到要命一样。不禁想到几天前老墨偷走丁胖子的狗,被丁胖子逮到。他面对警察的问询面不改色坚持自我,反而是怒气冲冲的丁胖子被警察认为是偷狗贼。我觉得这…

使用 exe4j 将 Spring Boot 项目打包为 EXE 可执行文件

使用 exe4j 将 Spring Boot 项目打包为 EXE 可执行文件 文章目录 使用 exe4j 将 Spring Boot 项目打包为 EXE 可执行文件什么是 exe4j准备工作打包 Spring Boot 项目为 EXE 文件1.启动 exe4j2. 选择项目类型3. 配置项目名称和输出目录4. 配置项目类型或可执行文件名称5. java配…

【操作文档】mysql分区操作步骤.docx

1、建立分区表 执行 tb_intercept_notice表-重建-添加分区.sql 文件; DROP TABLE IF EXISTS tb_intercept_notice_20241101_new; CREATE TABLE tb_intercept_notice_20241101_new (id char(32) NOT NULL COMMENT id,number varchar(30) NOT NULL COMMENT 号码,cre…

使用 pycharm 新建不使用 python 虚拟环境( venv、conda )的工程

有时候我们发现一个好玩的 demo,想赶快在电脑上 pip install 一下跑起来,发现因为 python 的 venv、conda 环境还挺费劲的,因为随着时间的发展,之前记得很清楚的 venv、conda 的用法,不经常使用,半天跑不起…

安全设备-日志审计-数据管理

7 日志审计系统数据管理 7.1 日志审计系统数据管理概述 日志审计系统数据管理系统自身数据存储管理,并对自身配置、采集的日志进行统一管理。 7.2 日志审计系统数据管理配置举例 7.2.1 用户场景 用户通过数据管理配置,实现对系统的备份、清理、转存…

简单的Activiti Modoler 流程在线编辑器

简单的Activiti Modoler 流程在线编辑器 1.需求 我们公司使用的流程是activiti5.22.0,版本有些老了,然后使用的编辑器都是eclipse的流程编辑器插件,每次编辑流程需要打开eclipse进行编辑,然后再导入到项目里面,不是特…

玩转 uni-app 静态资源 static 目录的条件编译

一. 前言 老生常谈,了解 uni-app 的开发都知道,uni-app 可以同时支持编译到多个平台,如小程序、H5、移动端 App 等。它的多端编译能力是 uni-app 的一大特点,让开发者可以使用同一套代码基于 Vue.js 的语法编写程序,然…

云技术-docker

声明! 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团…

【C++】从C语言到C++学习指南

如果你也是从C语言一路过来的,那么请一起看下去吧! 文章目录 面型对象程序设计C基础C和C一些语法区别C在非对象方面对C语言的扩充C的一些标准(兼容旧标准) 首先,在C的学习中,我们要时刻清醒一点&#xff1…

【FPGA开发】Vivado自定义封装IP核,绑定总线

支持单个文件的封装、整个工程的封装,这里用单个文件举例。 在文件工程目录下,自建一个文件夹,里面放上需要封装的verilog文件。 选择第三个,指定路径封装,找到文件所在目录 取个名,选择封装IP的路径 会…

CA系统(file.h---申请认证的处理)

#pragma once #ifndef FILEMANAGER_H #define FILEMANAGER_H #include <string> namespace F_ile {// 读取文件&#xff0c;返回文件内容bool readFilename(const std::string& filePath);bool readFilePubilcpath(const std::string& filePath);bool getNameFro…

前端-Git

一.基本概念 Git版本控制系统时一个分布式系统&#xff0c;是用来保存工程源代码历史状态的命令行工具 简单来说Git的作用就是版本管理工具。 Git的应用场景&#xff1a;多人开发管理代码&#xff1b;异地开发&#xff0c;版本管理&#xff0c;版本回滚。 Git 的三个区域&a…

深入浅出摸透AIGC文生图产品SD(Stable Diffusion)

hihi,朋友们,时隔半年(24年11月),终于能腾出时间唠一唠SD了🤣,真怕再不唠一唠,就轮不到SD了,技术更新换代是在是太快! 朋友们,最近(24年2月)是真的没时间整理笔记,每天都在疯狂的学习Stable Diffusion和WebUI & ComfyUI,工作实在有点忙,实践期间在飞书上…

HCIP——堆叠技术实验配置

目录 一、堆叠的理论知识 二、堆叠技术实验配置 三、总结 一、堆叠的理论知识 1.1堆叠概述&#xff1a; 是指将两台交换机通过堆叠线缆连接在一起&#xff0c;从逻辑上变成一台交换设备&#xff0c;作为一个整体参与数据的转发。 1.2堆叠的基本概念 堆叠系统中所有的单台…

快速上手:如何开发一个实用的 Edge 插件

在日常浏览网页时&#xff0c;背景图片能够显著提升网页的视觉体验。如果你也想为自己的浏览器页面添加个性化背景图片&#xff0c;并希望背景图片设置能够持久保存&#xff0c;本文将介绍如何通过开发一个自定义Edge插件来实现这一功能。我们将涵盖保存背景设置到插件选项页&a…

介绍一下atol(arr);(c基础)

hi , I am 36 适合对象c语言初学者 atol(arr)&#xff1b;是返回整数(long型)&#xff0c;整数是arr数组中字符中数字 格式 #include<stdio.h> atol(arr); 返回值arr数组中的数字 未改变arr数组 #include<stdio.h> //atol(arr); 返 <stdlib> int main…

Python的排序算法

一、算法 1.1 算法概念 算法就是计算机解决问题的方法或者步骤 程序 数据结构 算法 1.2 算法的特性 1】确定性&#xff1a; 算法的每条语句具有明确的意思&#xff0c;不能模棱两可 2】有穷性&#xff1a;在执行一定的时间后&#xff0c;能自动结束算法 3】输入&#…