10. Clock Filter Algorithm (クロックフィルターアルゴリズム)
クロックフィルターアルゴリズムはピアプロセスの一部です。これはオンワイヤーデータストリームから正確な時刻を最も表す可能性の高いサンプルを選択します。このアルゴリズムは、オフセット(offset, theta)、遅延(delay, delta)、分散(dispersion, epsilon)、ジッター(jitter, psi)、到着時刻(t)を含む変数を生成します。
10.1. フィルター構造
8段シフトレジスターとして機能するフィルター構造に、最新のサンプルタプル (theta, delta, epsilon, t) を保存します。初期化時、全段を (0, MAXDISP, MAXDISP, 0) に設定し、有効パケットの到着により古いタプルが破棄されます。
10.2. 分散計算
シフトレジスター段をdelta昇順でソートし、第i番目エントリの分散を epsilon_i とすると、ピア分散は:
i=n-1
--- epsilon_i
epsilon = \ ----------
/ (i+1)
--- 2
i=0
10.3. ジッター計算
ソート済みリストの最初のオフセットを theta_0 とすると、ジッターはRMS平均:
+----- -----+^1/2
| n-1 |
1 | \ 2 |
psi = ---- * | / (theta_0-theta_j) |
(n-1) | --- |
| j=1 |
+----- -----+
10.4. 同期距離
同期距離lambdaは遅延と分散から計算:
lambda = (delta / 2) + epsilon
NTPv4では、lambdaは時間とともに増加し、最終的にMAXDISTを超えると同期に不適と判断されます。