PTP简介
PTP简介
在通信网络中,许多业务的正常运行都要求网络时钟同步,即整个网络各设备之间的时间或频率差保持在合理的误差水平内。网络时钟同步包括以下两个概念:
l 时间同步:也叫相位同步(Phase synchronization),是指信号之间的频率和相位都保持一致,即信号之间的相位差恒为零。
l 频率同步(Frequency synchronization):也叫时钟同步,是指信号之间在频率或相位上保持某种严格的特定关系,信号在其对应的有效瞬间以同一平均速率出现,以保证通信网络中的所有设备都以相同的速率运行,即信号之间保持恒定的相位差。
PTP遵循IEEE1588协议,通过Best Master Clock算法确认最精确时钟。PTP采用硬件时间戳,可完成秒脉冲同步。
图 1 时间同步和频率同步示意图
如图 1所示,有两个表Watch A与Watch B,如果这两个表的时间每时每刻都保持一致,这个状态就是时间同步;如果这两个表的时间不一致,但保持一个恒定的差值(如图中的Watch B总比Watch A晚6个小时),这个状态就是频率同步。
PTP(Precision Time Protocol,精确时间协议)是一种时间同步的协议,其本身只是用于设备之间的高精度时间同步,但也可被借用于设备之间的频率同步。相比现有的各种时间同步机制,PTP具备以下优势:
l 相比NTP(Network Time Protocol,网络时间协议),PTP能够满足更高精度的时间同步要求:NTP一般只能达到亚秒级的时间同步精度,而PTP则可达到亚微秒级。
l 相比GPS(Global Positioning System,全球定位系统),PTP具备更低的建设和维护成本,并且由于可以摆脱对GPS的依赖,在国家安全方面也具备特殊的意义。
H3C的设备目前只支持PTP的时间同步功能,而不支持频率同步功能。本文只介绍PTP时间同步的相关概念和原理。
PTP基本概念
1. PTP域
我们将应用了PTP协议的网络称为PTP域。PTP域内有且只有一个同步时钟,域内的所有设备都与该时钟保持同步。
2. PTP端口
我们将设备上运行了PTP协议的端口称为PTP端口。如图 2所示,PTP端口的角色可分为以下三种:
l 主端口(Master Port):发布同步时间的端口,可存在于BC或OC上。
l 从端口(Slave Port):接收同步时间的端口,可存在于BC或OC上。
l 被动端口(Passive Port):既不接收同步时间、也不对外发布同步时间的端口,只存在于BC上。
3. 时钟节点
PTP域中的节点称为时钟节点,PTP协议定义了以下三种类型的基本时钟节点:
(1) OC(Ordinary Clock,普通时钟):该时钟节点在同一个PTP域内只有一个PTP端口参与时间同步,并通过该端口从上游时钟节点同步时间。此外,当时钟节点作为时钟源时,可以只通过一个PTP端口向下游时钟节点发布时间,我们也称其为OC。
(2) BC(Boundary Clock,边界时钟):该时钟节点在同一个PTP域内拥有多个PTP端口参与时间同步。它通过其中一个端口从上游时钟节点同步时间,并通过其余端口向下游时钟节点发布时间。此外,当时钟节点作为时钟源时,可以通过多个PTP端口向下游时钟节点发布时间的,我们也称其为BC,如图 2中的BC 1。
(3) TC(Transparent clock,透明时钟):与BC/OC相比,BC/OC需要与其它时钟节点保持时间同步,而TC则不与其它时钟节点保持时间同步。TC有多个PTP端口,但它只在这些端口间转发PTP协议报文并对其进行转发延时校正,而不会通过任何一个端口同步时间。TC包括以下两种类型:
l E2ETC(End-to-End Transparent Clock,端到端透明时钟):直接转发网络中非P2P(Peer-to-Peer,点到点)类型的协议报文,并参与计算整条链路的延时。
l P2PTC(Peer-to-Peer Transparent Clock,点到点透明时钟):只直接转发Sync报文、Follow_Up报文和Announce报文,而终结其它PTP协议报文,并参与计算整条链路上每一段链路的延时。
如图 2所示,是上述三种基本时钟节点在PTP域中的位置。
图 2 基本时钟节点示意图
除了上述三种基本时钟节点以外,还有一些混合时钟节点,譬如融合了TC和OC各自特点的TC+OC:它在同一个PTP域内拥有多个PTP端口,其中一个端口为OC类型,其它端口则为TC类型。一方面,它通过TC类型的端口转发PTP协议报文并对其进行转发延时校正;另一方面,它通过OC类型的端口进行时间的同步。与TC的分类类似,TC+OC也包括两种类型:E2ETC+OC和P2PTC+OC。
4. 主从关系
主从关系(Master-Slave)是相对而言的,对于相互同步的一对时钟节点来说,存在如下主从关系:
l 发布同步时间的节点称为主节点,而接收同步时间的节点则称为从节点。
l 主节点上的时钟称为主时钟,而从节点上的时钟则称为从时钟。
l 发布同步时间的端口称为主端口,而接收同步时间的端口则称为从端口。
5. 最优时钟
如图 2所示,PTP域中所有的时钟节点都按一定层次组织在一起,整个域的参考时间就是最优时钟(Grandmaster Clock,GM),即最高层次的时钟。通过各时钟节点间PTP协议报文的交互,最优时钟的时间最终将被同步到整个PTP域中,因此也称其为时钟源。
最优时钟可以通过手工配置静态指定,也可以通过BMC(Best Master Clock,最佳主时钟)协议动态选举,动态选举的过程如下:
(1) 各时钟节点之间通过交互的Announce报文中所携带的最优时钟优先级、时间等级、时间精度等信息,最终选出一个节点作为PTP域的最优时钟,与此同时,各节点之间的主从关系以及各节点上的主从端口也确定了下来。通过这个过程,整个PTP域中建立起了一棵无环路、全连通,并以最优时钟为根的生成树。
(2) 此后,主节点会定期发送Announce报文给从节点,如果在一段时间内,从节点没有收到主节点发来的Announce报文,便认为该主节点失效,于是重新进行最优时钟的选择。
PTP同步原理
PTP同步的基本原理如下:主、从时钟之间交互同步报文并记录报文的收发时间,通过计算报文往返的时间差来计算主、从时钟之间的往返总延时,如果网络是对称的(即两个方向的传输延时相同),则往返总延时的一半就是单向延时,这个单向延时便是主、从时钟之间的时钟偏差,从时钟按照该偏差来调整本地时间,就可以实现其与主时钟的同步。
PTP协议定义了两种传播延时测量机制:请求应答(Requset_Response)机制和端延时(Peer Delay)机制,且这两种机制都以网络对称为前提。
1. 请求应答机制
图 3 请求应答机制实现过程
请求应答方式用于端到端的延时测量。如图 3所示,其实现过程如下:
(1) 主时钟向从时钟发送Sync报文,并记录发送时间t1;从时钟收到该报文后,记录接收时间t2。
(2) 主时钟发送Sync报文之后,紧接着发送一个携带有t1的Follow_Up报文。
(3) 从时钟向主时钟发送Delay_Req报文,用于发起反向传输延时的计算,并记录发送时间t3;主时钟收到该报文后,记录接收时间t4。
(4) 主时钟收到Delay_Req报文之后,回复一个携带有t4的Delay_Resp报文。
此时,从时钟便拥有了t1~t4这四个时间戳,由此可计算出主、从时钟间的往返总延时为[(t2 – t1) + (t4 – t3)],由于网络是对称的,所以主、从时钟间的单向延时为[(t2 – t1) + (t4 – t3)] / 2。因此,从时钟相对于主时钟的时钟偏差为:Offset = (t2 – t1) - [(t2 – t1) + (t4 – t3)] / 2 = [(t2 – t1) - (t4 – t3) ] / 2。
此外,根据是否需要发送Follow_Up报文,请求应答机制又分为单步模式和双步模式两种:
l 在单步模式下,Sync报文的发送时间戳t1由Sync报文自己携带,不发送Follow_Up报文。
l 在双步模式下,Sync报文的发送时间戳t1由Follow_Up报文携带。
图 3以双步模式为例来说明请求应答机制的实现过程。
2. 端延时机制
图 4 端延时机制实现过程
与请求应答机制相比,端延时机制不仅对转发延时进行扣除,还对上游链路的延时进行扣除。如图 4所示,其实现过程如下:
(1) 主时钟向从时钟发送Sync报文,并记录发送时间t1;从时钟收到该报文后,记录接收时间t2。
(2) 主时钟发送Sync报文之后,紧接着发送一个携带有t1的Follow_Up报文。
(3) 从时钟向主时钟发送Pdelay_Req报文,用于发起反向传输延时的计算,并记录发送时间t3;主时钟收到该报文后,记录接收时间t4。
(4) 主时钟收到Pdelay_Req报文之后,回复一个携带有t4的Pdelay_Resp报文,并记录发送时间t5;从时钟收到该报文后,记录接收时间t6。
(5) 主时钟回复Pdelay_Resp报文之后,紧接着发送一个携带有t5的Pdelay_Resp_Follow_Up报文。
此时,从时钟便拥有了t1~t6这六个时间戳,由此可计算出主、从时钟间的往返总延时为[(t4 – t3) + (t6 – t5)],由于网络是对称的,所以主、从时钟间的单向延时为[(t4 – t3) + (t6 – t5)] / 2。因此,从时钟相对于主时钟的时钟偏差为:Offset = (t2 – t1) - [(t4 – t3) + (t6 – t5)] / 2。
此外,根据是否需要发送Follow_Up报文,端延时机制也分为单步模式和双步模式两种:
l 在单步模式下,Sync报文的发送时间戳t1由Sync报文自己携带,不发送Follow_Up报文;而t5和t4的差值由Pdelay_Resp报文携带,不发送Pdelay_Resp_Follow_Up报文。
l 在双步模式下,Sync报文的发送时间戳t1由Follow_Up报文携带,而t4和t5则分别由Pdelay_Resp报文和Pdelay_Resp_Follow_Up报文携带。

图 4以双步模式为例来说明端延时机制的实现过程。
原文见http://www.h3c.com.cn/Products___Technology/Technology/System_Management/Other_technology/Technology_recommend/201008/686476_30003_0.htm
PTP简介的更多相关文章
- IEEE1588 ( PTP ) 协议简介
IEEE1588 协议,又称 PTP( precise time protocol,精确时间协议),可以达到亚微秒级别时间同步精度,于 2002 年发布 version 1,2008 年发布 vers ...
- 【嵌入式开发】 Linux Kernel 下载 配置 编译 安装 及 驱动简介
作者 : 韩曙亮 转载请出名出处 : http://blog.csdn.net/shulianghan/article/details/38636827 一. Linux 内核简介 1. 内核功能简介 ...
- NumPy与ndarray简介(转)
http://blog.csdn.net/u014374284/article/details/45420645 一.NumPy简介 NumPy的全名为Numeric Python,是一个开源的Pyt ...
- 结合jenkins以及PTP平台的性能回归测试
此文已由作者余笑天授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 1背景简介 1.1 jenkins Jenkins是一个用Java编写的开源的持续集成工具.在与Oracle ...
- 【转载】TSN简介及相关资源
原文:https://blog.csdn.net/u012692537/article/details/86188392 一.简介 1.1 什么是TSN TSN(Time Sensitive Netw ...
- DPDK应用示例指南简介(汇总)
DPDK应用示例指南简介 <DPDK示例>系列文章主要是学习.记录.翻译DPDK官方示例文档.为了更好地理解和学习DPDK, 特通过对源码中的经典示例进行整理,供大家学习.交流和讨论. A ...
- ASP.NET Core 1.1 简介
ASP.NET Core 1.1 于2016年11月16日发布.这个版本包括许多伟大的新功能以及许多错误修复和一般的增强.这个版本包含了多个新的中间件组件.针对Windows的WebListener服 ...
- MVVM模式和在WPF中的实现(一)MVVM模式简介
MVVM模式解析和在WPF中的实现(一) MVVM模式简介 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在 ...
- Cassandra简介
在前面的一篇文章<图形数据库Neo4J简介>中,我们介绍了一种非常流行的图形数据库Neo4J的使用方法.而在本文中,我们将对另外一种类型的NoSQL数据库——Cassandra进行简单地介 ...
随机推荐
- [CF1111C]Creative Snap
题目大意:有一个长度为$2^n(n\leqslant30)$的格子,有$k(k\leqslant10^5)$个球,分布在这些格子中,有两种消灭格子的方法: 1. 若一段格子长度大于等于$2$,可以对半 ...
- 【EF】EntityFramework DBFirst的使用
一.前言 久闻EF大名,之前做C/S产品用的是Dapper对SqlLite进行ORM.然后接触公司授权系统后发现用的是EntityFramework对SQLSever进行ORM.授权系统 ...
- 洛谷 P1023 税收与补贴问题 (2000NOIP提高组)
洛谷 P1023 税收与补贴问题 (2000NOIP提高组) 题意分析 一开始没理解题意.啰啰嗦嗦一大堆.看了别人的题解才明白啥意思. 对于样例来说,简而言之: 首先可以根据题目推算出来 28 130 ...
- Zookeeper(二) zookeeper集群搭建 与使用
一.zookeeper集群搭建 鉴于 zookeeper 本身的特点,服务器集群的节点数推荐设置为奇数台.我这里我规划为三台, 为别为 hadoop01,hadoop02,hadoop03 1. ...
- 【loj#139】树链剖分
#139. 树链剖分 题目描述 这是一道模板题. 给定一棵 $n$个节点的树,初始时该树的根为 111 号节点,每个节点有一个给定的权值.下面依次进行 $m$ 个操作,操作分为如下五种类型: 换根:将 ...
- i针对网段开放端口 (命令行设置)
针对网段开放端口 -A INPUT -s 192.168.1.0/24 -p tcp -m tcp --dport 1234 -j ACCEPT 命令行设置iptables iptables -I I ...
- Tensorflow Batch normalization函数
Tensorflow Batch normalization函数 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 stackoverflow上tensorflow实现BN的不同函数的 ...
- windows下libcurl与zlib和ssl共同编译
下载了curl 7.37,在project里有各个版本VS对应的项目文件,我们选择合适的打开即可以编译,根据不同的项目配置输出想要的库,比如可以切换多种SSL库,dll/lib,debug/relea ...
- python---Celery分布式任务队列了解
linux下定时器了解 Celery 框架学习笔记(不错哟) Celery 分布式任务队列快速入门 Celery的最佳实践 一.Celery介绍 Celery 是一个 基于python开发的分布式异步 ...
- [洛谷P2745] [USACO5.3]窗体面积Window Area
洛谷题目链接:[USACO5.3]窗体面积Window Area 题目描述 你刚刚接手一项窗体界面工程.窗体界面还算简单,而且幸运的是,你不必显示实际的窗体.有 5 种基本操作: 创建一个新窗体 将窗 ...