所以我试图解决关于伯克利算法的这个练习:
说明Berkeley算法在以下情况下的工作原理。有一组计算机需要内部同步。一台主计算机S和另外五台计算机P1,P2,P3,P4和P5。主计算机定期轮询从计算机并从从站接收时间戳。主机以11:11:5.129(hr:min:sec:ms)向从机多播其请求,所有从机的往返时间S为P1为10ms,P2为12ms,P3为16ms,P4为20ms,16ms对于P5。 P1携带的时间戳为11:11:3.200,P2为11:11:1.500,P3为11:11:5.600,P4为11:11:10.000,P5为11:11:22.200。 Master S将丢弃故障时钟的时间戳,其时钟与其他时钟的读数相差超过10秒。 S计算的平均时间是多少?这五个从节点中每个节点的偏移量是多少?
根据我在互联网上找到的一些讲义,我可以做的就是这样做:
平均=(5.129 + 3.2 + 1.5 + 5.6 + 10)/ 5 = 5.0658 偏移: S:-0.0632 P1:+1.8658 P2:+3.5658 P3:-0.5342 P4:-4.9342 P5:-17.1342
讲座对RTT时间没有任何说明,所以我想知道是否应该用它们来解决这个问题。那么,我该怎么做呢?
答案 0 :(得分:0)
如果您从另一台计算机收到时间戳,则需要考虑承载它的数据包所需的时间。在任何其他信息的默认情况下,你可能做不到比假设这个时间是往返时间的一半更好。
为了进行比较,http://en.wikipedia.org/wiki/Network_Time_Protocol详细描述了NTP的等效计算。这有利于获取服务器和客户端时间戳以便在两个方向上进行接收和传输,并且计算的时钟偏移θ是接收的平均值减去传输和传输减去接收,这试图平衡传输延迟 - 但仅限于两个方向上的传输延迟是相等的,这相当于假设相同的事情,实际上文章说非对称数据包延迟会产生系统偏差。