本文描述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以内;

为什么使用软件时钟的同步精度不能达到硬件时钟呢

  1. 软件时钟只能记录ptp报文在driver中的时刻,就是说t1,t2,t3,t4,记录的是报文在网络驱动发送或者接收的时间,但是时间到达物理链路还需经过多个步骤,比如说PCIe总线传输,网卡报文调度,phy调制等,这些时间不是可控的,也就是delay1 不一定 等于delay2,但是硬件时钟记录的时间更接近物理链路开始传输的时刻,物理链路传输时间总是确定的,这个记录的时间越接近物理链路传输时间,delay1 和delay2就越近似,同步精度就越高;

  2. 硬件时钟采取的时钟晶振一般更好,而且不存在linux 获取时间时的调度误差等,获取时间更精准

linux ptp整体架构

linux 支持ptp时钟同步,整体软件框架入上图所示,由应用程序,软件驱动,网卡phc组成,其中应用程序为linux ptp应用软件套件(ptp4l,phc2sys等),软件时钟驱动为phc时钟驱动,网卡硬件主要负责记录时间戳等功能;

linux ptp时钟同步相关推荐

  1. 解密:智能化变电站中PTP时钟同步(北斗时钟服务器)

    解密:智能化变电站中PTP时钟同步(北斗时钟服务器) 解密:智能化变电站中PTP时钟同步(北斗时钟服务器) 简要:本文根据目前授时技术和市场形势,介绍北斗授时钟终端的工作原理.北斗授时机的应用途径和特 ...

  2. 局域网内多台linux系统时钟同步

    局域网内多台linux系统时钟同步 centos7系统离线NTP安装包下载路径: https://mp.csdn.net/mp_download/manage/download/UpDetailed ...

  3. 如何配置Linux的时钟同步

    Ubuntu系统默认的时钟同步服务器是ntp.ubuntu.com,Debian则是0.debian.pool.ntp.org等, 各Linux发行版都有自己的NTP官方服务器. 身在中国,使用这些都 ...

  4. 配置Linux的时钟同步

    Ubuntu系统默认的时钟同步服务器是ntp.ubuntu.com,Debian则是0.debian.pool.ntp.org等, 各Linux发行版都有自己的NTP官方服务器.身在中国,使用这些都会 ...

  5. Linux NTP时钟同步

    一.为什么要了解时钟同步? 时钟同步在大数据方向,用到的地方很多.举个例子来说吧,像Zookeeper.RegionServer服务都是需要实时和各节点进行通信的.假如各节点差超过30s,那么Regi ...

  6. 在Linux系统实现PTP时钟同步,查看网卡信息后发现网卡不支持PTP软硬件时间戳

    1.首先,在ubuntu子系统终端输入命令ifconfig,如图 2.继续在终端输入命令sudo ethtool -T eth0,查看网卡是否支持PTP软硬件时间戳,若出现如图所示表示该网卡只支持PT ...

  7. linux查看时钟同步命令,Linux下查看设置时间及同步时间的命令

    linux系统内有两套时钟,一是硬件时钟,即CMOS中的时间,二是系统时钟,在系统初始化完成后,使用的就是系统时钟,两套时钟之间没有任何关联.linux中与时间相关的命令有date.hwclock.n ...

  8. 多台Linux服务器时钟同步

    以网络方式同步 安装ntp工具 yum install -y ntp (-y表示会一直自动的 yes) 启动定时服务 corntab -e (-e : 执行文字编辑器来设定时程表)随后在输入界面输入 ...

  9. linux查看时间同步服务,Linux系统时钟同步服务NTPD配置方法

    下述设置以时钟源服务器IP地址为192.168.0.1为例.可以命令ntpstat 和 ntpq -p 查看本机NTPD服务状态.配置完成后,均需要重新启动NTPD服务 service ntpd re ...

  10. 向量时钟同步算法_【精品】无压缩4K超高清EFP系统中PTP精确时钟同步技术解析...

    点击标题下「广电猎酷」可快速关注 本文由<广播与电视技术>杂志独家授权.本文刊发于2020年第6期. 作者:钟辰 (中央广播电视总台,北京 100020) [摘 要] 在SMPTE-211 ...

最新文章

  1. Docke的WEB管理工具
  2. 解决 Alfred 每次开机都提示请求通讯录权限的问题
  3. Maven本地库添加Oracle JDBC驱动
  4. Ubuntu解除端口占用
  5. 大神!有人花两年开发了一个新notebook,支持实时协作还更快
  6. 9个问题,带你掌握流程控制语句中的java原理
  7. windows查看端口号占用
  8. C语言 FileStreaming fseek
  9. linux+tux游戏,Linux吉祥物游戏SuperTux 0.5.0版发布 类《超级马里奥兄弟》
  10. HTML学习总结(3)——标签a/head/style/img
  11. IDEA运行java文件环境配置
  12. 码神之路博客部署总结补充
  13. iptables中DNAT、SNAT和MASQUERADE
  14. P3369 【模板】普通平衡树
  15. 英语单词背诵系统(有单词背诵,错词背诵功能)
  16. 饺子的吃法,你学会了么?
  17. 徐荣谦《养好脾和肺 宝宝不积食不咳嗽长大个》【01】小儿常见病
  18. svmtrain和svmpredict简介
  19. Oracle 聚合实现小计、合计 (GROUP BY ROLLUP)
  20. css特效实现透明渐变

热门文章

  1. 【高级篇 / SDWAN】(7.0) ❀ 03. SD-WAN 链路负载均衡的模式 ❀ FortiGate 防火墙
  2. 无监督图像分类《SCAN:Learning to Classify Images without》代码分析笔记(1):simclr
  3. jQuery动画效果——淡入淡出
  4. 4399Q版泡泡堂(DEVC++实现+解析)
  5. 西魏拓地与侯景防线之关系
  6. revit二次开发 创建标注标记
  7. Java实体类(entity)作用
  8. 扣哒世界发布面向中小学阶段C++信奥课程体系
  9. 移动端300ms延迟_移动端300ms延迟原因及解决方案
  10. TesterHome android app 编写历程(五)