GNSS终端授时之四:高精度的PTP授时

article/2025/8/13 15:41:10

我们在GNSS终端的授时之三:NTP网络授时中介绍了NTP网络授时的基本原理。我们知道了NTP授时的精度跟网络环境相关,即使在局域网中NTP授时的精度也只能到ms级别。如果广域网,经过多级交换机,路由器,由于传输路径和延时的不确定性,NTP授时的精度在百ms的级别。

为什么NTP授时精度只能到ms(局域网),百ms(广域网)呢?

在上一个文章中也提到了,导致NTP授时精度比较低的原因主要有2个:

  • CPU的处理延时

NTP授时原理中的四个时间戳,T1、T2、T3、T4,都是CPU处理时间数据包的时刻,并不是数据包从网口发送/接收的时刻。

CPU处理数据包的时刻 和 数据包从网口上输入/输出的时刻 ,肯定存在差异,这个也会引起授时精度降低。

而且由于CPU都带有操作系统,是多线程运行的,带来的结果是CPU的处理延时并不是一个确定的数值,没法进行补偿。

  • 网络环境的延时

在 NTP 授时原理中,假定从服务器到客户端的网络传输延时 T1 和从客户端到服务器的网络传输延时 T2 相等且对称。而实际网络环境中,存在多级交换机,多级路由器,上面的两个时间T1和T2不可能是相等、对称的。

这就带来了NTP授时的误差。随着广域网中国路由器的数量增多,从服务器到客户端的路由路径 和从客户端到服务器的路由路径 会有很大的差异,导致T1和T2的差异更大,所以授时精度也会到百ms的级别。

那么,有没有一种办法,能够让网络授时精度达到1us以下呢?

今天我们就来聊聊这个话题。

授时精度能够达到1us以下精度的网络授时方式是有的,这就是PTP授时

PTP授时中的第一个“P”的意思就是Precise,精确的意思。

我们从NTP授时精度差的痛点开始介绍。

CPU处理延时怎么解决

既然

  • CPU处理存在延时

  • 应该记录的是数据包从网口发送和接收的时刻

那么

我们给T1、T2、T3和T4打时间戳的时候,直接在物理层(PHY)或者网卡(NIC)记录时间,这样就绕过了操作系统和软件协议栈的延时抖动,不存在由于操作系统的调度,中断处理等导致的随机延时了。

就像下面这个图上所表示的:

时间戳

时间戳

网络环境延时怎么解决

中间节点延时补偿

网络中数据包经过的交换机、路由器这些中间节点的时候,在节点的内部都存在处理时间,这个交换机和路由器的处理时间,称为驻留时间(Residence Time)。

如果我们能够把驻留时间测量出来,然后作为补偿值放在时间数据包的专用字段中,发送到下一级。

下一级节点收到数据包之后,经过处理,在对外发送的时候,把自己的驻留时间和上一级的驻留时间相加,相加的结果放在时间数据包的专用字段中。

。。。。

这样一级一级的传递下去,等到数据包从主时钟到达从时钟的时候,从时钟不仅知道了从主时钟到从时钟的总路径延时T,还知道了中间各个节点总的驻留时间Tr。

在主从时钟之间传输的数据包中有专门的时间校正字段correctionField

我们假定主时钟和从时钟之间有2个路由器,第一个路由器的驻留时间是3us,第二个路由器的驻留时间是2us。主时钟发送的数据包从第一个路由器发出的时候,数据包的correctionField字段写上了3us,数据包从第二个路由器发出的时候,数据包的correctionField字段写上了5us。

从时钟拿到数据包之后,从correctionField字段中拿到了5us,就知道网络路径上的路由器节点增加了5us延迟,那么

总路径延时T减去总驻留时间Tr=5us,不就是实际的网络传输延时吗?

以此类推,如果有N级路由器,每个路由器都把自己的处理驻留时间加到correctionField字段上去。

我们可以用下面这个图来说明。

驻留时间分析

驻留时间分析

通过上述的办法,可以消除交换机、路由器内部处理带来的延时影响,即使经过了多级交换机,多级路由器也没关系了。

中间节点延时补偿,在业内有一个专门的术语“透明时钟”,意思也就是说,数据包通过节点是完全“透明”的,没有增加延时,原因是延时已经被补偿掉了。

强制路由

中间节点延时补偿能够消除路由器、交换机内部处理延时的影响。但是我们从服务器到客户端的路由路径,和,从客户端到服务器的路由路径 不同的话,仍然会存在路径延时的误差,导致往返延时的不对称,最终影响授时的精度。

所以,我们可以对网络路由进行优化,通过配置路由协议,强制服务器到客户端之间双向往返流量走相同的物理路径,从而保证往返延迟的对称性。

另外如果能够为PTP时间数据包划分独立的VLAN或者物理链路,就更好了,不仅保证了双向链路走了相同的物理路径,还避免了路径上的数据堵塞可能导致的随机延迟。

具体实现方式

上面根据NTP授时精度不高的痛点,提出了提高授时精度的解决方法。而PTP授时就是利用上面的方法来提高授时精度的。

首先PTP时间协议中的时间戳,都是基于网卡NIC或者物理层PHY的时间,是数据包从网口发送/接收的时刻,消除了CPU处理延时的影响。

在网络中的节点,交换机和路由器,都是测量自己的处理时间(驻留时间)Tr,然后把自己的驻留时间加到总的驻留时间中

具体的实现方式如下:

主从时间传递

主从时间传递

(1) SyncFollow_Up 消息(主 → 从)

主时钟发送同步信息Sync。如果硬件时间的话,就把网口的发送时间T1放在Sync数据包中发送出去。

如果硬件不能支持的话,就由CPU读取网口发送时间T1,随后再发送一个Follow_UP数据包,把T1放在Follow_UP数据包中发送出去。

(2) Delay_Req 消息(从 → 主)

从时钟收到Sync数据包之间,记录自己的网口接收时刻T2,然后向主时钟发送Delay_Req数据包,同时记录自己网口的发送时刻T3。

在这个过程中,T2 和 T3 这两个时间戳都不需要向主时钟回传。

(3) Delay_Resp回传信息(主→从)

主时钟收到Delay_Req之后,记录自己网口的接收时间T4,然后通过Delay_Resp数据包把T4返回给从时钟。

那么现在从时钟手里有了T1、T2、T3和T4,应该怎么处理才能得到主从时钟时间的时间差offset呢?

跟NTP授时的时候类似,我们可以如下计算:

从时钟计算出了offset之后,将自己的时钟调整offset,就可以完成跟主时钟时间的同步了。

为什么PTP授时仍然能够假定主从之间的往返路径延时是对称的呢?就是因为:

透明时钟消除了各个节点的内部处理驻留时间,强制路由限定了主从之间相同的路径,保证了主从往返延时的对称性。

时钟传递,从时钟变成下一级的主时钟

如果网络过于复杂,即使经过上述处理,主从之间的往返延时仍然是不对称的。还有一种办法能够提高授时精度,就是把主时钟到从时钟之间的长链路分割为多个短链路。

假定主时钟A需要给从时钟B授时,但是A和B之间网络比较复杂,还可以中间增加一个PTP的节点C,C具备从主时钟A获取时间的能力,把自己的时间同步到主时钟。

同时C还可以作为新的主时钟,给下一级的时钟B提供时间。

时钟传递

时钟传递

由于长链路分成了多个短链路,每个短链路的往返延时就更容易保证对称了。

示例

下面是某PTP授时板卡的技术指标和说明

PTP授时板

PTP授时板


http://www.hkcw.cn/article/tFPFXTcUZN.shtml

相关文章

Amazon Augmented AI:人类智慧与AI协作,破解机器学习审核难题

在人工智能日益渗透业务核心的今天,你是否遭遇过这样的困境:自动化AI处理海量数据时,面对模糊、复杂或高风险的场景频频“卡壳”?人工审核团队则被低效、重复的任务压得喘不过气?Amazon Augmented AI (A2I) 的诞生&…

OS10.【Linux】yum命令

目录 1.安装软件的几种方法 直接编译源代码,得到可执行程序 使用软件包管理器 2.yum yum list命令 参数解释 yum install命令 yum remove命令 下载链接存放的位置 扩展yum源 实验:安装sl小火车命令 sl命令的选项 方法1:man sl 方法2:读源代码 3.更新yum源 查看…

网络协议的原理及应用层

网络协议 网络协议目的为了减少通信成本,所有的网络问题都是传输距离变长的问题。 协议的概念:用计算机语言来发出不同的信号,信号代表不同的含义,这就是通信双方的共识,便就是协议。 协议分层(语言层和…

【计算机网络】第3章:传输层—可靠数据传输的原理

目录 一、PPT 二、总结 (一)可靠数据传输原理 关键机制 1. 序号机制 (Sequence Numbers) 2. 确认机制 (Acknowledgements - ACKs) 3. 重传机制 (Retransmission) 4. 校验和 (Checksum) 5. 流量控制 (Flow Control) 协议实现的核心:滑…

RV1126-OPENCV 图像叠加

一.功能介绍 图像叠加:就是在一张图片上放上自己想要的图片,如LOGO,时间等。有点像之前提到的OSD原理一样。例如:下图一张图片,在左上角增加其他图片。 二.OPENCV中图像叠加常用的API 1. copyTo方法进行图像叠加 原理…

Java流【全】

IO流分类 AA、根据数据流动的方向:输入流和输出流 如:打开一个新的记事本并输入一些内容,而这些内容是在内存里面的,没有存储到磁盘中,当点击保存之后,数据才会从内存流向磁盘;当双击打开磁盘文件的时候,数据才会从磁盘流向内存【数据存储有一个特点:内存一旦断电数…

大模型登《情报学报》!大模型驱动的学术文本挖掘!

武汉大学信息管理学院、武汉大学信息检索与知识挖掘研究所的陆伟、刘寅鹏、石湘、刘家伟、程齐凯、黄永和汪磊共同研究的《大模型驱动的学术文本挖掘——推理端指令策略构建及能力评测》在《情报学报》中发表。论文以学术文本挖掘任务为切入点,构建涵盖文本分类、信…

UI 设计|提高审美|极简扁平过时吗?

​在做UI界面时,极简扁平一直是个稳妥又高适配的选择。它没有复杂的质感和装饰,更强调清晰、直接和功能导向,能快速搭建出干净、有秩序的界面,适合大多数场景落地。 但是也确实有太多太相似的极简导致确实辨识度,这中…

哈尔滨工业大学提出ADSUNet—红外暗弱小目标邻帧检测新框架

ADSUNet: Accumulation-Difference-Based Siamese U-Net for inter-frame Infrared Dim and Small Target Detection 作者单位:哈尔滨工业大学空间光学工程研究中心 引用: Liuwei Zhang, Yuyang Xi, Zhipeng Wang, Wang Zhang, Fanjiao Tan, Qingyu Hou, ADSUNet: A…

#14 【Kaggle】 Drawing with LLMs 金牌方案赏析

用大模型画svg的比赛结束了,本来还是银牌的,shake down成了铜牌… 痛定思痛,瞻仰一下第一名的金牌解决方案。 🍕 比赛简单介绍 给定一段描述图像的文本提示,你的任务是生成可缩放矢量图形(SVG)代码,将其尽可能准确地渲染为一幅图像。 本次竞赛旨在构建既实用又可复用…

多任务——进程

1.进程的介绍 1. 进程的基本概念 在 Python 中,进程是操作系统分配资源和调度的基本单位,代表一个独立的程序执行实例。Python 的 multiprocessing 模块支持多进程编程,允许在单个程序中并行运行多个进程。每个进程拥有: 独立的…

Baklib加速企业AI数据治理实践

企业知识中台构建路径 在数字化转型进程中,企业需通过知识中台实现知识资产的系统性整合与价值释放。Baklib作为典型解决方案,以智能化技术为支撑,通过标准化数据接口打通CRM、ERP等异构系统,构建全域知识图谱。其核心实施路径包…

设计模式——状态设计模式(行为型)

摘要 状态设计模式是一种行为型设计模式,核心在于允许对象在内部状态改变时改变行为。它通过状态对象封装不同行为,使状态切换灵活清晰。该模式包含环境类、抽象状态类和具体状态类等角色,具有避免大量分支判断、符合单一职责和开闭原则等特…

搜索引擎2.0(based elasticsearch6.8)设计与实现细节(完整版)

1 简介 1.1 背景 《搜索引擎onesearch 1.0-设计与实现.docx》介绍了1.0特性,搜索schema,agg,表达式搜索映射,本文介绍onesearch 2.0 新特性, 参考第2节 规划特性与发布计划 1.2 关键词 文档 Document elasticsearch 一行数据称为…

【项目记录】登录认证(上)

前面已经实现了部门管理、员工管理的基本功能,但并没有登录,就直接访问到了Tlias智能学习辅助系统的后台。 这是不安全的,所以这次的主题就是登录认证。最终要实现的效果是: 如果用户名密码错误,不允许登录系统。 如…

Redis:安装与常用命令

🌈 个人主页:Zfox_ 🔥 系列专栏:Redis 🔥 安装 Redis 使⽤apt安装 apt install redis -y⽀持远程连接 修改 /etc/redis/redis.conf 修改 bind 127.0.0.1 为 bind 0.0.0.0 修改 protected-mode yes 为 protected-mo…

16-前端Web实战(Tlias案例-部门管理)

在前面的课程中,我们学习了Vue工程化的基础内容、TS、ElementPlus,那接下来呢,我们要通过一个案例,加强大家对于Vue项目的理解,并掌握Vue项目的开发。 这个案例呢,就是我们之前所做的Tlias智能学习辅助系统…

MagicAnimate 论文解读:引入时间一致性的视频人物动画生成方法

1. 前言/动机 问题:现有动画生成方法缺乏对时间信息的建模,常常出现时间一致性差的问题 描述: 现有的动画生成方法通常采用帧变形(frame-warping)技术,将参考图像变形以匹配目标动作。尽管这类方法能生成较…

C语言基础(09)【数组的概念 与一维数组】

数组 数组的概念 什么是数组 数组是相同类型、有序数据的集合。 数组的特征 数组中的数据称之为数组的元素(数组中的每一个匿名变量空间,是同构的)数组中的元素存放在内存空间建立。 衍生概念:下标(索引) 下标或者索引代表…

Spring MVC参数绑定终极手册:单多参/对象/集合/JSON/文件上传精讲

我们通过浏览器访问不同的路径,就是在发送不同的请求,在发送请求时,可能会带一些参数,本文将介绍了Spring MVC中处理不同请求参数的多种方式 一、传递单个参数 接收单个参数,在Spring MVC中直接用方法中的参数就可以&…