浅聊一下ptp
最近做了点时间同步相关工作,浅浅聊一下学习和了解的东西吧。
大概了解了一下PTP,NTP,PTPD,LinuxPTP
1.时钟同步
网络时钟同步包括频率同步和相位同步两个概念。
频率同步(Frequency synchronization,也称为时钟同步)
信号的频率保持一致,相位不一致,但是保持一定的相位差。即信号的平均速率一致,能够保持网络中的所有设备以相同的速率运行。
相位同步(Phase synchronization,也称为时间同步)
信号之间的频率和相位都保持一致,即信号之间相位差恒定为零。
2.时间同步意义在哪
打个比方,自动驾驶汽车,检测前面有障碍物大概在某一时间要刹车,把时间信息给刹车系统,刹车系统比检测系统时间慢一点点,可能会造成刹车晚的事故。
3.什么是PTP
PTP(Precision Time Protocol)是一种精确时钟同步协议,对标准以太网终端设备进行时间和频率同步的协议,其本身可以用于设备之间的高精度时间同步,也可用于设备之间的频率同步。精度为亚微妙,而NTP精度是毫秒。
遵循IEEE1588协议,采用硬件时间戳。
1588协议是由IEEE定义的精确时间同步标准,分为1588v1和1588v2两个版本,1588v1只能达到亚毫秒级的时间同步精度,而1588v2可以达到亚微秒级同步精度。现在1588v1基本已被1588v2取代。
4.PTP的基本原理
在系统的同步过程中,主时钟周期性发布PTP时间同步协议及时间信息,从时钟端口接收主时钟端口发来的时间戳信息,系统据此计算出主从线路时间延迟及主从时间差,并利用该时间差调整本地时间,使从设备时间保持与主设备时间一致的频率与相位。IEEE1588可以同时实现频率同步和时间同步。
我只使用了delay方式。
PTP时间同步有两种不同的同步方式:Delay方式和Pdelay方式,如此划分主要是由于PTP计算路径延时有两种机制。
- 延时请求-请求响应机制E2E(End to End):根据主从时钟之间的整体路径延时时间计算时间差。对应Delay时间同步方式。
- 主设备在时刻t1发送Sync报文。如果主设备为one-step模式,t1时间戳随Sync报文传送到从设备;如果主设备为two-step模式,则t1在随后的Follow_Up报文中传送到从设备;
- 从设备在时刻t2接收到Sync报文,并从Sync报文(one-step)或者Follow_Up报文(two-step)中获取t1。
- 从设备在时刻t3发送延时请求报文Delay_Req给主设备。
- 主设备在时刻t4接收到Delay_Req报文。
- 主设备随后通过延时回答报文Delay_Resp将t4发送给从设备。
Delay=[(t4 – t1) – (t3 – t2)]/2
t2 -t1 = offset + delay
t4 - t3 = delay - offset
delay = ( t4 - t3 + t2 - t1) / 2
offset = ( t2 - t1 - t4 + t3) / 2
通过PTP协议计算出本地时钟和主时钟源的时间偏移,再修正本地时钟。
- 对端延时机制P2P(Peer to Peer):根据主从时钟之间的每一条链路延时时间计算时间差。对应PDelay时间同步方式。
P2P机制是利用延时请求Pdelay_Req报文、延时回答Pdelay_Resp报文和可能的Pdelay_Resp_Follow_Up报文,计算两个支持P2P机制的通信端口之间测量端口到端口的传播时间(路径延时)。与延时请求-响应机制相比,路径延时测量原理基本一致,只是路径延时测量在每段链路之间进行,主从节点间每段链路的链路延时累计在Pdelay_Resp或Pdelay_Resp_Follow_Up报文中,向下游传递,同时传递的信息还包括同步报文在透明时钟TC上的驻留时间。从节点根据每段链路的链路延时和在透明时钟TC上的驻留时间,计算主从节点的平均路径延时。在对端延时机制中,延时测量和端口的主从属性无关,在支持Pdelay机制的两个相连端口之间进行。
单段链路延时=[(t2-t1) + (t4-t3)]/2
5.PTP时钟类型
1.普通时钟OC(Ordinary Clock):同一个PTP域内,只存在单个物理端口参与PTP时间同步,也就是只有一个PTP通信端口的时钟。设备通过该端口从上游节点同步时间,或者向下游节点发布时间。
2.边界时钟BC(Boundary Clock):同一个PTP域内,可以存在两个或两个以上物理端口参与PTP时间同步,也就是有一个以上PTP通信端口的时钟。其中一个端口从上游设备同步时间,其余多个端口向下游设备发布时间。
3.透明时钟TC(Transparent Clock):TC与BC、OC最大的不同是BC和OC都要保持本设备与其他设备的时间同步,但TC则不需要与其他设备保持时间同步。TC有多个PTP端口,它只是在这些PTP端口之间转发PTP报文,对其进行转发时延校正,并不从任何一个端口同步时间。
4.Delay机制透明时钟E2ETC(End to End Transparent Clock):一种延迟测量机制已经确定为Delay方式的透明时钟。
5.Pdelay机制透明时钟P2PTC(Peer to Peer Transparent Clock):一种延迟测量机制已经确定为Pdelay方式的透明时钟。
6.Delay机制透明时钟和普通时钟E2ETCOC:一种特殊的TC节点,其在时间同步方面和TC节点相同,但额外增加了根据PTP报文同步频率,实现与上游节点频率同步的功能。其中用作TC功能的端口使用Delay方式的延迟测量机制。
7.Pdelay机制透明时钟和普通时钟P2PTCOC:同上,其中用作TC功能的端口使用Pdelay方式的延迟测量机制。
8.透明边界时钟TCandBC:设备的部分PTP端口用作BC的功能,同步其他时钟,或向其他设备同步时钟,另有部分PTP端口用作TC的功能,仅传输PTP报文,不进行延迟计算。
6.PTP端口
1.主端口(Master Port):发布同步时间的端口,可存在于T-BC、BC或OC上。
2.从端口(Slave Port):接收同步时间的端口,可存在于T-BC、BC或OC上。
3.被动端口(Passive Port):不接收同步时间,也不对外发布同步时间,闲置备用的端口,只存在于T-BC或BC上。
7.主从关系
1.发布同步时间的节点称为主节点,而接收同步时间的节点则称为从节点。
2.主节点上的时钟称为主时钟,而从节点上的时钟则称为从时钟。
3.发布同步时间的端口称为主端口,而接收同步时间的端口则称为从端口。
8.选举最优时钟
1.自己配置
2.BMC算法(还没有仔细研究过)
9.PTP报文
事件报文:Sync、Delay_Req、Pdelay_Req和Pdelay_Resp。时间概念报文,携带的时间戳计算链路延迟。
通用报文:Announce、Follow_Up、Delay_Resp、Pdelay_Resp_Follow_Up、Management和Signaling,目前设备不支持Management、Signaling报文。非时间概念报文,不产生时间戳,用于主从关系的建立、时间信息的请求和通告。
具体参考: PTP 报文格式_ptp报文_让代码更有趣的博客-CSDN博客