telnet 工具-lol分辨率
![同步时间](/uploads/image/0110.jpg)
2023年4月4日发(作者:虚拟主机是什么)
PrecisionTimeProtocol(PTP)
一、什么是PTP
PTP是一种高精度时间同步协议,可以到达亚微秒级精度,有资料说可达到30纳秒左右的偏差精度,但需
要网络的节点(交换机)支持PTP协议,才能实现纳秒量级的同步。
一般在实际使用中,现有的NTP可以达到5ms以内的精度,对一般的应用都是满足的;非超高精度设
备,不建议使用PTP设备。
与NTP主要区别:PTP是在硬件级实现的,NTP是在应用层级别实现的.
PTP是主从同步系统,一般采用硬件时间戳,并配合一些对NTP更高精度的延时测量算法。
PTP最常用的是直接在MAC层进行PTP协议包分析,这样可以不经过UDP协议栈,减少PTP在协议
栈中驻留时间,提高同步的精确度。
PTP也可以承载在UDP上时,软件可以采用SOCKET进行收发UDP包,事件消息的UDP端口号
319,普通消息的组播端口号为320,但其精度就大大降低。
在物理硬件要求主从端都是PTP设备,且网络不能太大,其中间经过的交换机设备也必须支持PTP协
议,并且主从时间网络链路唯一,不存在交替的PTP通道。
PTPv2采用相对时间同步机制。一个参与者被选作主时间钟,其将发送同步信息到从站。主站将发送
同步报文到网络。所有的从站计算时间延迟。
Fig.39.1PTPSynchronizationProtocol
ThePTPsynchronizationinthesampleapplicationworksasfollows:
MastersendsSyncmessage-theslavesavesitasT2.
MastersendsFollowUpmessageandsendstimeofT1.
SlavesendsDelayRequestframetoPTPMasterandstoresT3.
MastersendsDelayResponseT4timewhichistimeofreceivedT3.
Theadjustmentforslavecanberepresentedas:
adj=-[(T2-T1)-(T4-T3)]/2
从钟根据t1、t2、t3、t4计算时间偏移(offset)以及传输延时(delay),即
t2-t1=offset+delay
t4-t3=delay-offset
计算出
delay=(t4-t3+t2-t1)/2
offset=(t2-t1-t4+t3)/2
从钟根据offset从钟可以调整自己的时钟。
二、PTP的一些名词
PTP域中的节点称为时钟节点,PTP协议定义了以下三种类型的基本时钟节点:
OC(OrdinaryClock,普通时钟):只有一个PTP通信端口的时钟是普通时钟。
BC(BoundaryClock,边界时钟):有一个以上PTP通信端口的时钟。
TC(Transparentclock,透明时钟):与BC/OC相比,BC/OC需要与其它时钟节点保持时间同步,而
TC则不与其它时钟节点保持时间同步。TC有多个PTP端口,但它只在这些端口间转发PTP协议报文并
对其进行转发延时校正,而不会通过任何一个端口同步时间。TC包括以下两种类型:
E2ETC(End-to-EndTransparentClock,端到端透明时钟):直接转发网络中非P2P(Peer-to-
Peer,点到点)类型的协议报文,并参与计算整条链路的延时。
P2PTC(Peer-to-PeerTransparentClock,点到点透明时钟):只直接转发Sync报文、Follow_Up报
文和Announce报文,而终结其它PTP协议报文,并参与计算整条链路上每一段链路的延时。
一般链式的P2P网络选择E2E-TC,而从钟节点较多的网络考虑P2P-TC。因在P2P延时测量机制中,
延时报文交互是在每条链路的两个端口间进行的,主钟只与直接相连的网络交换设备有延时报文交
互,因此在P2PTC的延时测量机制中,没有对从钟数量的限制。
主时钟:一个PTP通信子网中只能有一个主时钟。
PTP端口有九种状态主站,从站,待机,未校正,监听,禁止,初始化,故障
三、PTP报文
PTP协议定义了4种多点传送的报文类型和管理报文,包括同步报文(Sync),跟随报文
(Follow_up),延迟请求报文(Delay_Req),延迟应答报文(Delay_Resp)和管理报文。
报文有一般报文和事件报文两种类型。跟随报文和延迟应答报文属于一般报文,一般报文本身不进行
时戳处理,它可以携带事件报文的准确发送或接收时刻值信息。同步报文和延迟请求报文属于事件报
文,事件报文是时间敏感消息,需要加盖精确的时间戳。
同步报文是从主时钟周期性发出的(一般为每两秒一次),它包含了主时钟算法所需的时钟属性,它包含
了一个时间戳,精确地描述了数据包发出的预计时间。
(1)Sync:同步消息,由主设备发送给从设备,消息中可以包含Sync发送时间标签,也可以在后续的
FollowUP消息中包含;
(2)DelayReq:请求对端返回接收到DelayReq消息时的时间标签,时间标签嵌入在响应消息Delay
Resp;
(3)Pdelayreq:用于发起链路延时测量请求,带发送时间标签。
普通消息没有时间标签,主要用于传递其他消息的发送时间标签、系统状态以及管理信息,包括:
(4)Announce:广播发送节点和高级主钟的状态和特征信息;
(5)FollowUp:用于传送Sync消息的发送时间;
(6)DelayResp:对Pdelayreq的响应,可以带发送时间标签,如果没有带由随后的Pdelay
RespFollowUp传送;
(7)PdelayRespFollowUp:用于传送DelayResp的发送时间;
(8)Management:传输用于管理时钟设备的的信息以及命令;Signaling:在不同时钟之间传送信息、请
求以及命令。
(9)Signaling:在不同时钟之间传送信息、请求以及命令。
由于Sync包发送前,无法直接获取到硬件发送Sync包的时间;Sync发送后,可以获取到硬件发送Sync时
间
ptpd源代码
[2]
net.c中的实现:
netSendPcapEther->sendto或pcap_inject发包
getTxTimestamp获取精确发送时间
四、局域网中实验
ubuntu下安装
sudoaptinstalptpd
serverip192.168.37.68
$sudoptpd-M-ieno1-C
指定“仅主控”模式向外组播数据
client
$sudoptpd-g-ieno1-C
等一会就会看到输出
2018-08-3010:05:23.271647ptpd2[27616].eno1(notice)(lstn_reset)Nowinstate:PTP_LISTENING
2018-08-3010:05:54.732606ptpd2[27616].eno1(info)(lstn_reset)Newbestmasterselected:180373fffed
2018-08-3010:05:54.732676ptpd2[27616].eno1(notice)(slv)Nowinstate:PTP_SLAVE,Bestmaster:180373
2018-08-3010:05:55.732189ptpd2[27616].eno1(notice)(slv)ReceivedfirstSyncfromMaster
2018-08-3010:05:56.732758ptpd2[27616].eno1(notice)(slv)ReceivedfirstDelayResponsefromMaster
修改server的系统时间,client也会跟着同步.如果client开启了网络时间同步,系统时间会不停的在网络同
步的时间和主服务器的时间之间进行切换
wireshark抓包看了一下,组播地址224.0.1.129,使用的是319和320端口
单播模式
服务器端-u指定单点广播模式向指定IP发送数据
$sudoptpd-u192.168.92.153-M-ieno1-V
客户端接受指定IP的数据
$sudoptpd-u192.168.52.190-ieno1-V
更多推荐
同步时间
发布评论