zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Window 窗口类
    使用 Bolt 实现 GridView 表格控件
    lua的table库
    Windows编程总结之 DLL
    lua 打印 table 拷贝table
    使用 xlue 实现简单 listbox 控件
    使用 xlue 实现 tips
    extern “C”
    COleVariant如何转换为int double string cstring
    原来WIN32 API也有GetOpenFileName函数
  • 原文地址:https://www.cnblogs.com/zhouhbing/p/3963140.html
Copyright © 2011-2022 走看看