Hello linuxptp-devel group! I would like to discuss the implementation of the two-step peer delay computation. The 1588 and 802.1AS specifications unfortunately have a small discrepancy in their use of correction fields for peer delay. This project appears to be using the 1588 equation rather than the 802.1AS equation. This is generally not an issue, since 802.1AS implementations typically set this field to zero, however, there is at least one switch IC on the market, the KSZ9567, with a silicon errata that results in a non-zero value in this field. The current version of the MOTU switch uses this IC and implements a workaround based on the 802.1AS equation. Since the two equations differ, there is an interoperability issue with the linuxptp project and the MOTU switch.
The 1588 specification [section 11.4.3 d) 4) on p.116 of the IEEE 1588-2008] specifies the following equation to be used to compute mean path delay: <meanPathDelay> = [ (t4 - t1) - (responseOriginTimestamp - requestReceiptTimestamp) - correctionField of Pdelay_Resp - correctionField of Pdelay_Resp_Follow_Up ]/2 where: t4 = Pdelay_Resp Ingress Timestamp t1 = Pdelay_Req Egress Timestamp The 802.1AS specification [section 11.2.19.3.4 computePropTime() on p.186 of 802.1AS-2020] specifies the following equation: D = (r * (t4 - t1) - (t3 - t2)) / 2 where: t4 = pdelayRespEventIngressTimestamp t1 = pdelayReqEventEgressTimestamp t2 = sum of 1) The nanoseconds field of the requestReceiptTimestamp, 2) The seconds field of the requestReceiptTimestamp, multiplied by 10^9 , and 3) The correction field, divided by 2^16, of the Pdelay_Resp message t3 = sum of 1) The nanoseconds field of the responseOriginTimestamp, 2) The seconds field of the responseOriginTimestamp, multiplied by 10^9 , and 3) The correction field, divided by 2^16, of the Pdelay_Resp_Follow_Up message r = current value of neighborRateRatio In short, the difference is that the 1588 specification asks the implementation to sum the correction fields whereas the 802.1AS specification asks the implementation to take their difference. The 802.1AS specification seems to almost go as far as saying that the peer delay correction fields can be ignored altogether (see the NOTE in table 11-6 on p.199 of 802.1AS-2020), and I am aware of a few implementations that do ignore it without apparent issue. I am interested in making the linuxptp project compatible with MOTU switches based on the KSZ9567 switch IC, but before submitting any patches I wanted to explain the motivation and see if this is something that the project would be open to considering. -- Dylan Robinson Software Engineer MOTU
_______________________________________________ Linuxptp-devel mailing list Linuxptp-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxptp-devel