PTP延迟测量机制:E2E vs P2P

哪种延迟测量机制最适合部署IEEE 1588?既然我是一名工程师,答案当然是,这要视情况而定。简而言之,P2P延迟测量机制在工程网络中是最好的,在工程网络中,可以保证所有交换机(以及路由器,如果有的话)都支持1588,即它们要么是透明时钟,要么是边界时钟。如果将有任何非1588感知交换机,或者如果对此有任何疑问,那么您需要E2E延迟测量机制。

我们从这两种机制的原理出发,就会发现为什么会出现这种情况。E2E延迟机制在我之前的文章《为什么IEEE 1588如此精确?》中已经描述过。 在P2P网络中,主站仍然向从站时钟发送同步和跟进信息,就像E2E延迟测量机制一样。 在P2P中,从站计算其相对于主站的时钟偏移量,如下所示:

从时间=主时间+网络延迟

不需要像我们在E22网络中那样把四个时间戳结合起来。 但是,等等,从时钟是如何知道网络延迟的? 这就是P2P延迟测量机制的神奇之处。 不是像E2E方式那样从设备向主设备发送延迟测量信息,而是网络上的每个设备交换对等延迟(peer-delay)测量信息。 这样,每个设备都可以跟踪自己和紧邻的邻居之间的延迟。 下图显示了这是如何工作的。

每台设备定期在每个连接的端口上启动对等延迟消息(peer-delay messages)交换。然后,每个设备通过更新Sync或Follow_Up消息中的校正字段,在其进入设备时从Sync消息中移除对等延迟。如果是交换机,它不会将对等延迟包括在出去的电缆中,即使它也知道这一点。链路中的下一个设备将进行校正,我们不想重复计算。

对等延迟信息(peer-delay messages)序列是这样的:

时钟A想知道时钟B的延迟,所以它发送了一个Pdelay_Req消息,简称对等延迟请求。 时钟A也保存了它发送该消息的时间,t1。 时钟B在其时钟上保存了该消息到达的时间,即t2。 然后,时钟B发送一个PDelay_Resp消息,简称对等延迟响应,和一个Pdelay_Resp_Follow_Up。 跟进消息包含Pdelay_Resp的出发时间,t3。时钟A也保存了Pdelay_Resp的到达时间t4,所以它有所有四个时间戳,可以计算出时钟之间的延迟。与我们上篇文章描述的E2E的延迟测量很像,而且事实证明,无论如何我们必须处理整个四个时间戳的业务。 时钟B也将以相反的方向发起同样的一系列消息,这样两个时钟都知道对等延迟。

这里,与E2E机制一样,假设对等延迟信息从一个时钟到另一个时钟所需的时间在每个方向上都是一样的。 在P2P情况下,我们只在一条电缆上做这个假设,而不是整个网络,而且没有队列。 因此,除非电缆非常长,否则这是一个很好的假设。

那么交换机中的队列呢? 在这篇文章的开头提到过,只有当每个交换机都是透明时钟或边界时钟时,P2P才能很好地工作。 这样的话,交换机会照顾到自己的队列延迟。 我们不在普通交换机上使用P2P延迟的另一个原因是,交换机不知道该如何处理对等延迟信息,也不会对它们作出反应。

虽然E2E机制的用途更广,因为它可以处理普通交换机和路由器,但P2P机制在其确实有效的网络中有几个优势:

  • 所有链路都会定期测量,因此当网络路径更改时,主设备和从设备之间的延迟是已知的。 请注意,即使在阻塞的端口上也会交换对等延迟信息,以防止环路,如快速生成树协议的情况。
  • 由于没有Delay_Request消息,所以不存在Sync和Delay_Request消息走不同路径的可能性。
  • 当有很多从时钟时,不需要担心主时钟对Delay_Request消息的响应能力,它只需要发送Sync和Follow_Up。