telnet 工具-lol分辨率

同步时间
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

更多推荐

同步时间