IEEE 1588-PTP简介

2023-11-20

1. PTP简介

    网络测控系统精确时钟同步协议PTP(Precision Time Protocol)是一种对标准以太网终端设备进行时间和频率同步的协议,也称为IEEE 1588,简称为1588。
    1588分为1588v1和1588v2两个版本,1588v1只能达到亚毫秒级的时间同步精度,而1588v2可以达到亚微秒级同步精度。1588v2被定义为时间同步的协议,本来只是用于设备之间的高精度时间同步,随着技术的发展,1588v2也具备频率同步的功能。现在1588v1基本已被1588v2取代,以下非特殊说明,PTP即表示1588v2。

2. 原理描述

2.1 基本原理

同步的概念
    在现代通信网络中,大多数电信业务的正常运行要求全网设备之间的频率或时间差异保持在合理的误差水平内,即网络时钟同步。

    网络时钟同步包括相位同步和频率同步两个概念。

    - 相位同步 -
    相位同步(Phase synchronization),也称为时间同步,是指信号之间的频率和相位都保持一致,即信号之间相位差恒定为零。

    - 频率同步 -
    频率同步(Frequency synchronization),是指信号之间的频率或相位上保持某种严格的特定关系,信号在其相对应的有效瞬间以同一速率出现,以维持通信网络中所有的设备以相同的速率运行,即信号之间保持恒定相位差。

    为防止概念混淆,下文中时间同步统一表示相位同步,时钟同步表示同时进行相位同步和频率同步。

图1 时间同步与频率同步示意图
在这里插入图片描述
时钟同步原理
    应用网络时钟同步的网络,称为时钟同步网。时钟同步网的结构如图2所示。时钟同步网分为两级,其中一级节点采用1级时钟同步设备,二级节点采用2级时钟同步设备,二级节点以下是客户端设备,即为包括基站在内的需要时钟同步的设备。

    客户端时间同步链路是时钟同步网节点至客户端的时钟同步链路,因为这段链路需进行包括以太时钟同步、NTP在内的多种同步方式,它包括NTP传送方式在内的各种传输链路。节点时钟同步链路是时钟同步网节点之间的时钟同步链路,它包括除NTP传送方式以外的各种传输链路,主要采用DCLS(DC Level Shifter,是IRIG-B码的另一种传输码形,用直流电位来携带码元信息,比较适用于双绞线局内传输)传送方式的专线链路。

    整个PTP网络中,所有时钟都会按照主从(Master-Slave)层次关系组织在一起,各节点向系统的最优时钟Grandmaster上逐级同步时钟。整个同步的过程是通过交换PTP报文来完成的。从时钟通过PTP报文中携带的时间戳信息计算与主时钟之间的偏移和延时,据此调整本地时钟达到与主时钟的同步。

图2 分级时钟同步网
在这里插入图片描述
PTP基本概念

  • PTP域
        应用了PTP协议的网络称为PTP域。网络中可能含有多个PTP域,PTP域是独立PTP时钟同步系统,一个PTP域内有且只有一个时钟源,域内的所有设备都与该时钟源保持同步。

  • 时钟节点
        PTP域中的节点称为时钟节点,PTP协议定义了以下三种类型的基本时钟节点:

    普通时钟OC(Ordinary Clock):同一个PTP域内,只存在单个物理端口参与PTP时间同步。设备通过该端口从上游节点同步时间,或者向下游节点发布时间。

    边界时钟BC(Boundary Clock):同一个PTP域内,可以存在两个或两个以上物理端口参与PTP时间同步。其中一个端口从上游设备同步时间,其余多个端口向下游设备发布时间。此外,当时钟节点作为时钟源,同时通过多个PTP端口向下游时钟节点发布时间,也称其为BC。

    透明时钟TC(Transparent Clock):TC与BC、OC最大的不同是BC和OC都要保持本设备与其他设备的时间同步,但TC则不与其他设备保持时间同步。TC有多个PTP端口,它只是在这些PTP端口之间转发PTP报文,对其进行转发时延校正,并不从任何一个端口同步时间。

  • PTP端口
        设备上运行了PTP协议的端口称为PTP端口,PTP端口的按角色可分为以下三种。
        主端口(Master Port):发布同步时间的端口,可存在于BC或OC上。
        从端口(Slave Port):接收同步时间的端口,可存在于BC或OC上。
        被动端口(Passive Port):不接收同步时间,也不对外发布同步时间,闲置备用的端口,只存在于BC上。

  • 主从关系
        PTP域的节点设备按照一定的主从关系(Master-Slave)进行时钟同步。主从关系是相对而言的,同步时钟的节点设备称为从节点,发布时钟的节点设备称为主节点,一台设备可能同时从上层节点设备同步时钟,然后向下层节点设备发布时钟。

    对于相互同步的一对时钟节点来说,存在如下主从关系:

    发布同步时间的节点称为主节点,而接收同步时间的节点则称为从节点。
    主节点上的时钟称为主时钟,而从节点上的时钟则称为从时钟。
发布同步时间的端口称为主端口,而接收同步时间的端口则称为从端口。

  • 最优时钟

    PTP域中所有的时钟节点都按一定层次组织在一起,整个域的参考时钟就是最优时钟GMC(Grandmaster Clock),即最高层次的时钟。通过各时钟节点间PTP报文的交互,最优时钟的时间最终将被同步到整个PTP域中,因此也称其为时钟源。最优时钟可以通过手工配置静态指定,也可以通过最佳主时钟BMC(Best Master Clock)算法动态选举。

  • PTP报文

    PTP通过主从节点间交互报文,实现主从关系的建立、时间和频率同步。根据报文是否携带时间戳,可以将PTP报文分为两类,事件报文和通用报文。
    事件报文:时间概念报文,进出设备端口时打上精确的时间戳,PTP根据事件报文携带的时间戳,计算链路延迟。事件报文包含以下4种:Sync、Delay_Req、Pdelay_Req和Pdelay_Resp。
    通用报文:非时间概念报文,进出设备不会产生时间戳,用于主从关系的建立、时间信息的请求和通告。通用报文包含以下6种:Announce、Follow_Up、Delay_Resp、Pdelay_Resp_Follow_Up、Management和Signaling,目前设备不支持Management、Signaling报文。

时钟同步步骤
    时钟同步的实现主要包括3个步骤:

    1. 建立主从关系,选取最优时钟、协商端口主从状态等。
    2. 频率同步,实现从节点频率与主节点同步。
    3. 时间同步,实现从节点时间与主节点同步。

2.2 建立主从关系

    建立主从关系阶段,PTP主要完成最优时钟选取、端口主从关系确定。

主从关系建立步骤
    PTP是通过端口接收到和发送Announce报文,实现端口数据集和端口状态机信息的交互。BMC(Best Master Clock)算法通过比较端口数据集和端口状态机,实现时钟主从跟踪关系。一般按照下面几个步骤来建立:

  1. 接收和处理来自对端设备端口的Announce报文。

  2. 利用BMC算法决策出最优时钟和端口的推荐状态,包括Master、Slave或者Passive状态。

  3. 根据端口推荐状态,更新端口数据集合。

  4. 按照推荐状态和状态决策事件,根据端口状态机决定端口的实际状态,实现时钟同步网络的建立。状态决策事件包括Announce报文的接收事件和接收Announce报文的超时时间结束事件,当接口接收Announce报文的时间间隔大于超时时间间隔时,将此PTP接口状态置为Master。

BMC算法
    在PTP域中,最优时钟的选取,端口主从关系的确立,都是依靠最优时钟BMC算法来完成的。BMC算法比较各时钟节点之间通过交互的Announce报文中所携带的数据集,来选取最优时钟,并且决定各PTP端口状态。

    BMC算法用来选取最优时钟和决定PTP端口状态的数据集包括以下信息:

  • Priority1:时钟优先级1,支持用户配置,取值范围是0~255,取值越小优先级越高。
  • ClockClass:时钟级别,定义时钟的时间或频率的国际原子时-TAI(International Atomic Time)跟踪能力。
  • ClockAccuracy:时钟精度,取值越低精确度越高。
  • OffsetScaledLogVariance:时钟稳定性。
  • Priority2:时钟优先级2,支持用户配置,取值范围是0~255,取值越小优先级越高。

    PTP设备在执行动态BMC选源算法时,优先级选择的排序是priority1>clock-class>clock-accuracy>OffsetScaledLogVariance>priority2,即先比较参选时间源的priority1,若priority1相同再比较clock-class,以此类推,优先级高、级别高、精度好的时钟成为最优时钟。

    通过改变时钟的优先级、级别等属性,用户影响PTP系统主时钟的选取,从而选中自己希望同步的时钟信号。BMC算法可以实现PTP时钟同步分配和保护。

2.3 PTP频率同步

    在主从关系建立后,即可以进行频率同步和时间同步。PTP本来只是用户设备之间的高精度时间同步,但也可以被用来进行设备之间的频率同步。

    PTP通过记录主从设备之间事件报文交换时产生的时间戳,计算出主从设备之间的路径延迟和时间偏移,实现主从设备之间的时间和频率同步,设备支持两种携带时间戳的模式,分别为:

  • 单步时钟模式(One step),指事件报文Sync和Pdelay_Resp带有本报文发送时刻的时间戳,报文发送和接收的同时也完成了时间信息的通告。
  • 两步时钟模式(Two step),指事件报文Sync和Pdelay_Resp不带有本报文发送时刻的时间戳,而分别由后续的通用报文Follow_Up和Pdelay_Resp_Follow_Up带上该Sync和PDelay_Resp报文的发送时间信息。两步时钟模式中,时间信息的产生和通告分两步完成,这样可以兼容一些不支持给事件报文打时间戳的设备。

频率同步原理
    PTP的主节点定时向从节点发送同步Sync报文,报文中有主节点发送Sync报文的时间戳。从节点每接收到一个Sync报文,都会产生一个接收时间戳。显然,如果从节点接收到两个Sync报文,可以通过比较两个接收时间戳的间隔与报文中记录的主节点发送时间戳的间隔的大小,调整从节点的频率。

    假设时钟节点A要同步到时钟节点B。不考虑路径延时和驻留时间的变化,如果A和B的时钟频率相等,则在相同的时间间隔内,A和B的时间累积的偏差应该是一样的,也就是说t2N-t20 = t1N-t10。如果t2N-t20大于t1N-t10,说明A的时钟频率比B快,要调慢A的时钟频率;如果t2N-t20小于t1N-t10,说明A的时钟频率比B慢,则要调快A的时钟频率。(t1n为B点的第n个Sync报文发送的时间,t2n为A点接收第n个Sync报文的时间点。)

图3 频率同步原理
在这里插入图片描述
    上述是通过PTP报文来实现频率同步的基本原理。对于一个实际的PTP同步系统,通常还需要考虑路径延时和驻留时间的变化。图中Follow_Up报文为两步时钟模式发送的通用报文,携带Sync报文的发送时间戳。

2.4 PTP时间同步

    PTP时间同步有两种不同的同步方式:Delay方式和Pdelay方式,如此划分主要是由于PTP计算路径延时有两种机制。

  • 延时请求-请求响应机制E2E(End to End):根据主从时钟之间的整体路径延时时间计算时间差。
  • 对端延时机制P2P(Peer to Peer):根据主从时钟之间的每一条链路延时时间计算时间差。

延时请求-响应机制E2E(End to End)

    图4是PTP采用E2E机制计算主、从设备之间平均路径延时和时间偏移的过程和原理。

图4 延时请求-响应机制
在这里插入图片描述

  1. 主设备在时刻t1发送Sync报文。如果主设备为one-step模式,t1随Sync报文传送到从设备;如果主设备为two-step模式,则t1在随后的Follow_Up报文中传送到从设备;

  2. 从设备在时刻t2接收到Sync报文,并从Sync报文(one-step)或者Follow_Up报文(two-step)中获取t1。

  3. 从设备在时刻t3发送延时请求报文Delay_Req给主设备。

  4. 主设备在时刻t4接收到Delay_Req报文。

  5. 主设备随后通过延时回答报文Delay_Resp将t4发送给从设备。

    上述报文离开和到达时打戳的时钟都是基于本设备内部的系统时钟的,PTP协议规定时间戳的长度为80bit。通过上述报文传递过程,从设备获取t1、t2、t3、t4 4个时间,并利用这4个时间计算出主从设备之间的平均路径延时,进而计算出时间偏移;然后利用这个时间偏移修正本地时间,使主从设备之间的时间实现同步。计算平均路径延时和时间偏移的公式如下所示:

  • 平均路径延时:Delay=[(t4 – t1) – (t3 – t2)]/2

则t2= t1 + Delay + Offset=t1 + [(t4 – t1) – (t3 – t2)]/2 + Offset,那么:

  • 时间偏移:Offset =[(t2 – t1) + (t3 – t4)]/2

    如图5所示,通过PTP协议计算出本地时钟和主时钟源的时间偏移,再修正本地时钟。

图5 时间校正
在这里插入图片描述

对端延时机制P2P(Peer to Peer)

    P2P机制是利用延时请求Pdelay_Req报文、延时回答Pdelay_Resp报文和可能的Pdelay_Resp_Follow_Up报文,计算两个支持P2P机制的通信端口之间测量端口到端口的传播时间,也就是路径延时。与延时请求-响应机制相比,路径延时测量原理并无不同,只是路径延时测量在每段链路之间进行,主从节点间每段链路的链路延时累计在Pdelay_Resp或Pdelay_Resp_Follow_Up报文中,向下游传递,同时传递信息还包括同步报文在透明时钟TC上的驻留时间。从节点每段链路的链路延时和在透明时钟TC上的驻留时间,计算主从节点的平均路径延时。

    在对端延时机制中,延时测量和端口的主从属性无关,在支持Pdelay机制的两个相连端口之间进行。

图6 Pdelay机制原理
在这里插入图片描述
    时间戳t1和t2是Pdelay_Req消息发送时间戳和接收时间戳,时间戳t3和t4是Pdelay_Resp消息的发送时间戳和接收时间戳。计算单段链路延时的公式如下所示:

    单段链路延时=[(t2-t1) + (t4-t3)]/2 = [(t2-t3) + (t4-t1)]/2。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IEEE 1588-PTP简介 的相关文章

  • Springboot整合dubb3+nacos作注册中心(基础篇)

    1 首先看下项目结构如下 2 新建父工程springboot dubbo模块 pom文件如下
  • 亲测可用,SpringBoot项目打印接口请求信息日志,CommonsRequestLoggingFilter实现方式

    文章目录 需求背景 效果图 实现思路 其他方案对比 优缺点分析 具体实现 需求背景 线上项目出现bug时 可以通过接口的请求参数来排查定位问题 和业务方battle时 能够证明他是自己操作的问题 效果图 实现思路 Spring提供了Comm
  • 重试机制的实现(4m,10m,10m,1h,2h,6h,15h)

    项目场景 由于我们现在所做的项目有有很多的外放接口供代理商调用 但是有些接口的响应并不是实时返回的 此时我们就需要使用回调接口的方式 将信息响应给代理商 在这期间可能会出网络不稳定等其他情况 导致回调接口调用失败 所以需要特定的回调重试机制
  • 数据库系统原理---封锁

    封锁 封锁粒度 MySQL中提供了两种封锁粒度 行级锁和表级锁 应该尽量的只锁定需要修改的那部分数据 而不是所有的资源 锁定的数据量越少 发生锁争用的可能性就越小 系统的并发程度就越高 加锁需要消耗资源 锁的各种操作 包括锁的获取 释放锁
  • org.elasticsearch.bootstrap.StartupException: java.lang.IllegalArgumentExceptio

    这是我转载的一片文章 解决了我的问题 所以记录一下 话不多说 见正文吧 elasticsearch安装踩过的那些坑 坑1 failed to send join request to master 原因 你复制了某个节点的elasticse
  • supervisor系列:5、日志

    supervisor系列 5 日志 文章目录 supervisor系列 5 日志 1 活动日志 1 1 活动日志输出示例 1 2 活动日志等级 1 3 活动日志轮换 2 子进程日志 2 1 捕获模式 supervisord执行的主要任务之一
  • 一文带你从IntelliJ IDEA中一键生成Controller、Service、Dao、Model层代码,真的不看看吗?

    前言 EasyCode插件介绍与安装 简介EasyCode是基于IntelliJ IDEA开发的代码生成插件 支持自定义任意模板 Java html js xml 只要是与数据库相关的代码都可以通过自定义模板来生成 支持数据库类型与java
  • LoadRunner用户验证码和验证码使用脚本

    Action 定义Md5变量用来存放使用md5加密后的字符串 char Md5 33 存放包含用户登录信息的URL char str 174 存放用户账户信息 char str1 92 存放当前时间 int t1 int a char Me
  • 外观设计模式

    外观设计模式 根据实际案例分析外观模式 Facade 示例 业务与设计模式落地案例 根据实际案例分析外观模式 Facade 案例 假设一个放电影功能 在播放电影时 需要放下窗帘 打开空调 打开播放机 打开音响 考虑用户观影时间较长时 提供暂
  • frp实现内网穿透(一) 最简配置

    frp实现内网穿透 一 最简配置 内网环境现在可以说非常的普遍 如果连接控制的内网环境设备的话 就变得非常不方便 像端口映射 dmz主机已经不能满足我们的要 不过好在现在实现内网穿透的工具也很多 在这里就记录下一这款配置简单 功能强大的内网
  • 线性代数-初等行变换与初等行矩阵

    定义 初等行变换 在矩阵的行上进行倍加 倍乘 对换变换 初等行矩阵 在单位矩阵上应用初等行变换得到的矩阵 初等行矩阵乘上矩阵 就相当于在矩阵上实施了对应的初等行变换 以矩阵为例 倍加 将第二行乘2加在第三行上 r3 2 r2 r3 所用的初

随机推荐

  • VMWare安装Windows10出现以下问题

    VMWare虚拟机安装Win10出现 Attempting to start up from 直接上图 选择ISO镜像以后 开启虚拟机出现以下界面 等待一会没有操作以后出现以下界面 解决方法 1 关闭虚拟机电源 一定要关闭 2 找到该虚拟机
  • 阿里巴巴为什么不用 ZooKeeper 做服务发现?

    原文地址 https yq aliyun com articles 599997
  • Git 多个GitHub账号配置和多个Hexo博客地址配置

    文章目录 需求场景 方法 TL DR 非图形界面方法 1 生成密钥 2 配置config 3 添加新的 SSH 密钥 到 SSH agent 4 验证配置 5 配置仓库设置 5 1 删除全局配置 5 2 设置local配置 6 示例 6 1
  • Linux-centos花生壳实现内网穿透

    Linux centos花生壳实现内网穿透 官网教程 1 安装花生壳 下载网址 点击复制就可以复制下载命令了 wget https dl oray com hsk linux phddns 5 2 0 amd64 rpm O phddns
  • 递归寻找第n位数字

    编写递归函数digit n j 返回整数n的从右边开始的第j位数字 首先来看非递归法 只需用n 10 j 1 10即可 include
  • linux连接Xshell

    一 下载和安装Xshell 1 下载Xshell 官网下载地址 有时需要科学上网 https www netsarang com en all downloads 点击下载 教育版 2 安装 和软件安装方式一样 二 Xshell连接linu
  • 快乐数(Java)

    编写一个算法来判断一个数 num 是不是快乐数 快乐数 定义为 对于一个正整数 每一次将该数替换为它每个位置上的数字的平方和 然后重复这个过程直到这个数变为 1 也可能是 无限循环 但始终变不到 1 如果 可以变为 1 那么这个数就是快乐数
  • 瀑布流布局2

    要实现瀑布流布局中让图片先排满第一行再排第二行 你可以使用 CSS 的多列布局 CSS multi column layout 来控制 目前你的布局使用了 column count 和 column gap 来定义列数和列之间的间隙 但这会
  • 记一次ElasticSearch 更改 mapping 字段类型的过程

    我的个人博客 逐步前行STEP 首先 es不支持直接更改mappinng 所以 更改 mapping 实质上是重建索引 操作步骤如下 1 为当前这个索引old index设置一个别名my index curl XPOST localhost
  • 数据类型分类

    分为四种类型
  • Java垃圾回收机制(GC)

    一 要回收哪些区域 在JVM内存模型中 有三个是不需要进行垃圾回收的 程序计数器 JVM栈 本地方法栈 因为它们的生命周期是和线程同步的 随着线程的销毁 它们占用的内存会自动释放 所以只有方法区和堆需要进行GC 二 如何判断对象是否存活 1
  • linux 开放端口

    我们可以输入命令查看防火墙的状态 firewall cmd state 如何在CentOS 7下开放8080端口 如果上一步处于关闭状态 输入命令 systemctl start firewalld service 如何在CentOS 7下
  • 计算机毕业设计Node.js+Vue大型零售电商平台——购物车管理子系统(程序+源码+LW+部署)

    该项目含有源码 文档 程序 数据库 配套开发软件 软件安装教程 欢迎交流 项目运行 环境配置 Node js Vscode Mysql5 7 HBuilderX Navicat11 Vue Express 项目技术 Express框架 No
  • 华硕T100HA鼠标乱跳及点击问题解决

    从入手此平板开始就一直有此问题 一直没有解决 今天正好装系统 就顺便解决此问题 一开始打算给这个平板安装Win7 8 网上说装了之后驱动不适配 就此放弃 然后 将系统恢复出厂设置了 然后问题依然在 在网上一直找啊找 终于在百度帖吧里找到问题
  • 人工智能概念

    人工智能概念 人工智能就是用人工方法在机器 计算机 上实现的智能 或称机器智能 即是研究如何用计算机来表示和执行人类的智能活动 以模拟人脑所从事的推理 学习 思考和规划等思维活动 并解决需要人类的智力才能处理的复杂问题 如医疗诊断 管理决策
  • 两个任意长度的长整数相乘(华为oj,C++)

    pre class cpp include oj h include pre
  • 【Android系统蓝牙开发】蓝牙基础知识-蓝牙核心系统架构

    什么是蓝牙 在开启基于蓝牙Spec v5 2的学习前 我们先了解下什么是蓝牙 蓝牙在我们日常生活中又存在哪些实际应用呢 蓝牙无线技术是一种短距离无线通信系统 其核心特性主要是以下三点 robustness 鲁棒性 抗干扰能力强 Low po
  • Python入门—— MySQL-python模块

    MySQL python模块 MySQLdb Python 标准数据库接口为 Python DB API Python DB API为开发人员提供了数据库应用编程接口 可以访问Python数据库接口及API查看详细的支持数据库列表 不同的数
  • Hadoop3 启动服务,提示:Attempting to operate on hdfs namenode as root

    在刚刚安装Hadoop3 环境上 启动Hadoop3 给出如下提示信息 Attempting to operate on hdfs namenode as root 翻译 尝试使用root 账户去操作hdfs namenode 造成原因 缺
  • IEEE 1588-PTP简介

    1 PTP简介 网络测控系统精确时钟同步协议PTP Precision Time Protocol 是一种对标准以太网终端设备进行时间和频率同步的协议 也称为IEEE 1588 简称为1588 1588分为1588v1和1588v2两个版本