事件接口与通用接口
在1588的通信中,在之前的博客中有提到,有些报文中是需要有精确的时间信息的,有些则不需要,需要精确的时间信息的为事件接口,其他的为通用接口。
报文格式
在很久之前,可以参考这个,但是当我看是写这个博文的时候,已经404了。网址如下:http://www.023wg.com/message/message/cd_feature_1588v2_message.html
在之前的博文中说过,1588实际上是一个以以太网为基础的时间同步协议。这里可以有四种封装方式:
- PTP over Ethernet
- PTP over UDP over IPv4
- PTP over UDP over IPv6
- PTP over MPLS
实际上,这个只是一个报文格式而已,对于一般的工程应用而言,是不需要了解的。你现在可以使用两个linux的电脑,网线直线,使用ptpd或者是ptp4l这两个工具,将两个linux电脑进行1588的时间同步。然后使用wireshaek进行抓包,便可以观察到实际的报文了。
单播、组播、多播
先简单说明一下概念:
单播:一个发送者,一个接受者
多播:一个发送者,多个接受者
广播:一个发送者,所有都是接受者
1588一般而言都是组播,显而易见的,在同一个网络中,只有一个用于时间同步的主机就OK了。至于为什么不是广播,是因为不是所有的设备都需要接入1588,所以,不必要这样设计。
在编码时,需要注意,需要让socket加入对应的多播组。
在IPV4的UDP中的一些参数
端口号为319与320。
319对应的是事件端口。320对应的是通用端口。
参考
本文的参考如上所述,另外这个文档写的很好,可以参考:
https://www.cnblogs.com/AdaminXie/p/6771701.html
写在最后
若是非1588这个行业的从业人员的话,这个章节的内容实际上是只有在调试中,遇到了困难才会去查阅的。或者是说,在你做完了之后,也很有可能很快的时间就忘了,所以,不必要去记1588的详细的报文,只是能在遇到问题的时候,知道查报文就可以了。