gpt4 book ai didi

logic - NTP 时钟纪律如何工作?

转载 作者:行者123 更新时间:2023-12-04 15:12:03 27 4
gpt4 key购买 nike

我正在阅读 NTPv4 rfc 以更好地理解 ntp 使用的机制。所以,到目前为止,基本的想法似乎很简单。但我对如何 NTP Clock Discipline works 有点困惑.
在 NTPv4 中,它说混合 PLL/FLL 用于管理时钟。据我了解 - PLL 锁定服务器阶段并在更新间隔调整客户端时钟。 FLL 锁定时钟频率并以更新间隔调整客户端时钟。
它还表示,如果网络抖动更多(延迟峰值),PLL 会更好地工作
如果时钟漂移是问题(不同的时钟频率/漂移),FLL 工作得更好
我可以理解使用反馈控制来调整它们,也可以从 NTP rfc 中包含的图表中理解它们是如何工作的。但是谁能解释 NTP 如何仅从服务器接收的数据包中实现 FLL/PLL 混合时钟规则?
如果有人也能解释其背后的逻辑,那就太好了。

最佳答案

详尽地回答问题:

How does NTP implements FLL/PLL hybrid clock discipline just from packet received from server?


需要 90 页的文档: Network Time Protocol Version 4, Reference and Implementation Guide .我将尝试在这里总结一个答案。
简而言之,NTP 客户端从一个或多个服务器接收时间戳并估计要应用的相位校正。然后逐渐应用校正以避免时钟跳变。
PLL 或 FLL 都可以使用,但文件说

PLL usually works better when network jitter dominates, whilea FLL works better when oscillator wander dominates.


与NTPv3相反,在NTPv4中,PLL和FLL是同时使用和组合的。
反馈控制系统
时钟规则被实现为如图 1 所示的反馈控制系统。
enter image description here
图 1:时钟规则反馈循环
theta_r 表示由组合算法生成的引用相位,并表示相对于服务器组的系统时钟偏移的最佳估计。
theta_c 表示模拟为可变频率振荡器 (VFO) 的系统时钟的控制相位。
V_d 是相位差 theta_r - theta_c
V_s 是选择最佳偏移样本的时钟滤波器算法的输出。
V_c 是由结合了 PLL 和 FLL 的环路滤波器产生的信号,如第二幅图所述。
enter image description here
图 2:时钟规则环路滤波器
=== 更新 ===
要了解相位偏移和频率偏移计算的详细信息,您必须深入了解引用实现。一个很好的起点是 packet()功能
/*
* packet() - process packet and compute offset, delay and
* dispersion.
*/
在广播服务器模式下,计算如下
offset = LFP2D(r->xmt - r->dst);
delay = BDELAY;
disp = LOG2D(r->precision) + LOG2D(s.precision) + PHI * 2 * BDELAY;
在哪里 r是接收到的数据包指针和 s系统结构。
然后 clock_filter函数被调用
/*
* The clock filter contents consist of eight tuples (offset,
* delay, dispersion, time). Shift each tuple to the left,
* discarding the leftmost one. As each tuple is shifted,
* increase the dispersion since the last filter update. At the
* same time, copy each tuple to a temporary list. After this,
* place the (offset, delay, disp, time) in the vacated
* rightmost tuple.
*/
clock_filter 本身调用 clock_select函数,只有在此之后 clock_update函数被调用。
重要的是要记住,这些算法与多个时钟同步,而不是只与一个服务器时钟同步。这引入了一层复杂性和如何与一个服务器同步的问题?没有直接的答案,因为算法是为与多个时钟同步而构建的。
SNTP 协议(protocol)(​​Simple NTP)仅使用一个服务器时钟,但没有官方引用实现。

关于logic - NTP 时钟纪律如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19352740/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com