linux ptp时钟同步
本文描述linux系统如何支持IEEE1588 协议,又称 PTP( precise time protocol,精确时间协议),包含时间同步原理,ptpl4,linux ptp驱动等内容
ptp时钟同步原理
学习之前我们要了解几个概念
主时钟(master):时钟同步源,其他时钟将同步到该时钟
从时钟(slave):需要和主时钟同步的时钟
普通时钟(Ordinary Clock): 作为master或slave之一
边界时钟(Boundary Clock): 有多个端口连接到网络的时钟,一个slave端口连接到上游设备的PTP端口,其他的端口作为master连接到下游设备的slave端口。下游slave端口同构PTP协议直接同步于边界时钟,而不是直接和master通信。
透明时钟(Transparent Clock): 一种网络设备,比如交换机,不需要时间同步,但是能够转发并修改某些经过的PTP报文,记录ptp报文经过本设备时所用的时间(即转发时间)增加到PTP报文的correctonField(矫正域)。
直连同步
上图为ptp时钟同步协议报文交互流程,描述了主从时钟之间报文如何交互,
1、主时钟向从时钟发出 Sync 报文,并携带自身的时钟 t1;
2、从时钟收到 Sync 报文,并标注上该时刻自己的时钟 t2;
3、从时钟向主时钟发送 Delay_Req 报文,并携带该时刻自身的时钟 t3;
4、主时钟收到 Delay_Req 报文,并注上该时刻自己的时钟 t4;
5、主时钟向从时钟发送 Delay_Resp 报文,并携带时钟 t4;
6、假设从时钟和主时钟两者之间的差值为偏移量 offset,主时钟到从时钟的传输时延为 delay1,从时钟到主时钟的传输时延为 delay2,则有下面两个等式:
t1+offset + delay1 = t2
t3 - offset + delay2 = t4
可推导出
t2 - t1= offset + delay1
t4 - t3= delay2 - offset
由于报文使用了同一个物理链路传输,物理链路的传播延时又是固定的,基本可以认为双向时延相同,即:delay = delay1= delay2,则可以算出如下结果:
offset = ((t2 - t1) - (t4 - t3))/2
delay = ((t2 - t1) + (t4 - t3))/2
有了上述计算结果,然后就可以根据偏移量 offset 来修正从时钟,就可以实现同步。
上述两个主/从节点直连的情况,没有穿越其他节点,如果穿越其他不支持tc的节点,那么他的精度无法保证。
非直连同步
非直连情况主从时钟不是直连,他们通过了中间一个节点互联,那么中间节点必须支持TC功能,TC在入端口和出端口处,分别对1588v2报文的CorrectionField(时延校正)字段进行修正,在入口时减去该时刻的时间戳,在出口时加上该时刻的时间戳。因此,最终效果上就是在CorrectionField增加了该报文在本设备内的转发时延。
假设双向链路时延delay相同,那么可以得到如下两个等式:
T2-t1 = delay1+ corr1 + offset
T4-t3 = delay2+ corr2 – offset
delay1和delay2相等,那么可以得到如下公式:
Offset = ((t2-(t1+corr1))-(t4-(t3+corr2)))/2
linux ptp 应用软件
linux 开源社区提供了一个ptp 协议栈软件,linuxptp,它实现了1588v2协议。是一个基于用户空间的ptp协议栈软件;该软件是根据IEEE 1588 Linux标准实现的精确时间协议(PTP)。并使用Linux内核提供的相关应用程序编程接口(API)。
Linuxptp主要包含两个软件,一个是ptp4l,一个是phc2sys。
ptp4l:遵循IEEE 1588-2008标准文档规范,实现了BC(Boundary Clock)、OC(Ordinary Clock)和TC(Transparent Clock)等功能,也就是它可以设置时钟作为master,slave等;
phc2sys:phc2sys是一个同步系统中两个或多个时钟的程序。一般,它用于将系统时钟与PTP硬件时钟(PHC)同步,硬件时钟一般由ptp4l进行同步;
安装步骤:
git clone git://git.code.sf.net/p/linuxptp/code linuxptp
cd linuxptp
make
make install
使用:
usage: ptp4l [options]Delay Mechanism-A Auto, starting with E2E-E E2E, delay request-response (default)-P P2P, peer delay mechanismNetwork Transport-2 IEEE 802.3-4 UDP IPV4 (default)-6 UDP IPV6Time Stamping-H HARDWARE (default)-S SOFTWARE-L LEGACY HWOther Options-f [file] read configuration from 'file'-i [dev] interface device to use, for example 'eth0'(may be specified multiple times)-p [dev] Clock device to use, default auto(ignored for SOFTWARE/LEGACY HW time stamping)-s client only synchronization mode (overrides configuration file)-l [num] set the logging level to 'num'-m print messages to stdout-q do not print messages to the syslog-v prints the software version and exits-h prints this message and exits
master 命令:ptp4l -A -i ens33 -S,使用软件时钟,如果有支持硬件时钟的网卡可使用硬件时钟 使用-p ptp0
slave 命令:ptp4l -A -i ens33 -S -s
linux 硬件时钟
一般ptp同步都会使用硬件时钟,使用硬件时钟才能获得更高时间同步精度,有的同步精度可达100ns以内;
为什么使用软件时钟的同步精度不能达到硬件时钟呢
软件时钟只能记录ptp报文在driver中的时刻,就是说t1,t2,t3,t4,记录的是报文在网络驱动发送或者接收的时间,但是时间到达物理链路还需经过多个步骤,比如说PCIe总线传输,网卡报文调度,phy调制等,这些时间不是可控的,也就是delay1 不一定 等于delay2,但是硬件时钟记录的时间更接近物理链路开始传输的时刻,物理链路传输时间总是确定的,这个记录的时间越接近物理链路传输时间,delay1 和delay2就越近似,同步精度就越高;
硬件时钟采取的时钟晶振一般更好,而且不存在linux 获取时间时的调度误差等,获取时间更精准
linux ptp整体架构
linux 支持ptp时钟同步,整体软件框架入上图所示,由应用程序,软件驱动,网卡phc组成,其中应用程序为linux ptp应用软件套件(ptp4l,phc2sys等),软件时钟驱动为phc时钟驱动,网卡硬件主要负责记录时间戳等功能;
linux ptp时钟同步相关推荐
- 解密:智能化变电站中PTP时钟同步(北斗时钟服务器)
解密:智能化变电站中PTP时钟同步(北斗时钟服务器) 解密:智能化变电站中PTP时钟同步(北斗时钟服务器) 简要:本文根据目前授时技术和市场形势,介绍北斗授时钟终端的工作原理.北斗授时机的应用途径和特 ...
- 局域网内多台linux系统时钟同步
局域网内多台linux系统时钟同步 centos7系统离线NTP安装包下载路径: https://mp.csdn.net/mp_download/manage/download/UpDetailed ...
- 如何配置Linux的时钟同步
Ubuntu系统默认的时钟同步服务器是ntp.ubuntu.com,Debian则是0.debian.pool.ntp.org等, 各Linux发行版都有自己的NTP官方服务器. 身在中国,使用这些都 ...
- 配置Linux的时钟同步
Ubuntu系统默认的时钟同步服务器是ntp.ubuntu.com,Debian则是0.debian.pool.ntp.org等, 各Linux发行版都有自己的NTP官方服务器.身在中国,使用这些都会 ...
- Linux NTP时钟同步
一.为什么要了解时钟同步? 时钟同步在大数据方向,用到的地方很多.举个例子来说吧,像Zookeeper.RegionServer服务都是需要实时和各节点进行通信的.假如各节点差超过30s,那么Regi ...
- 在Linux系统实现PTP时钟同步,查看网卡信息后发现网卡不支持PTP软硬件时间戳
1.首先,在ubuntu子系统终端输入命令ifconfig,如图 2.继续在终端输入命令sudo ethtool -T eth0,查看网卡是否支持PTP软硬件时间戳,若出现如图所示表示该网卡只支持PT ...
- linux查看时钟同步命令,Linux下查看设置时间及同步时间的命令
linux系统内有两套时钟,一是硬件时钟,即CMOS中的时间,二是系统时钟,在系统初始化完成后,使用的就是系统时钟,两套时钟之间没有任何关联.linux中与时间相关的命令有date.hwclock.n ...
- 多台Linux服务器时钟同步
以网络方式同步 安装ntp工具 yum install -y ntp (-y表示会一直自动的 yes) 启动定时服务 corntab -e (-e : 执行文字编辑器来设定时程表)随后在输入界面输入 ...
- linux查看时间同步服务,Linux系统时钟同步服务NTPD配置方法
下述设置以时钟源服务器IP地址为192.168.0.1为例.可以命令ntpstat 和 ntpq -p 查看本机NTPD服务状态.配置完成后,均需要重新启动NTPD服务 service ntpd re ...
- 向量时钟同步算法_【精品】无压缩4K超高清EFP系统中PTP精确时钟同步技术解析...
点击标题下「广电猎酷」可快速关注 本文由<广播与电视技术>杂志独家授权.本文刊发于2020年第6期. 作者:钟辰 (中央广播电视总台,北京 100020) [摘 要] 在SMPTE-211 ...
最新文章
- Docke的WEB管理工具
- 解决 Alfred 每次开机都提示请求通讯录权限的问题
- Maven本地库添加Oracle JDBC驱动
- Ubuntu解除端口占用
- 大神!有人花两年开发了一个新notebook,支持实时协作还更快
- 9个问题,带你掌握流程控制语句中的java原理
- windows查看端口号占用
- C语言 FileStreaming fseek
- linux+tux游戏,Linux吉祥物游戏SuperTux 0.5.0版发布 类《超级马里奥兄弟》
- HTML学习总结(3)——标签a/head/style/img
- IDEA运行java文件环境配置
- 码神之路博客部署总结补充
- iptables中DNAT、SNAT和MASQUERADE
- P3369 【模板】普通平衡树
- 英语单词背诵系统(有单词背诵,错词背诵功能)
- 饺子的吃法,你学会了么?
- 徐荣谦《养好脾和肺 宝宝不积食不咳嗽长大个》【01】小儿常见病
- svmtrain和svmpredict简介
- Oracle 聚合实现小计、合计 (GROUP BY ROLLUP)
- css特效实现透明渐变
热门文章
- 【高级篇 / SDWAN】(7.0) ❀ 03. SD-WAN 链路负载均衡的模式 ❀ FortiGate 防火墙
- 无监督图像分类《SCAN:Learning to Classify Images without》代码分析笔记(1):simclr
- jQuery动画效果——淡入淡出
- 4399Q版泡泡堂(DEVC++实现+解析)
- 西魏拓地与侯景防线之关系
- revit二次开发 创建标注标记
- Java实体类(entity)作用
- 扣哒世界发布面向中小学阶段C++信奥课程体系
- 移动端300ms延迟_移动端300ms延迟原因及解决方案
- TesterHome android app 编写历程(五)