11. System Process (系统进程)
系统进程包含缓解算法(mitigation algorithms),用于处理时钟过滤算法产生的样本数据。这些算法包括选择算法(selection)、聚类算法(cluster)、组合算法(combine)和时钟调节算法(clock discipline)。
11.1. 系统进程变量
系统进程使用的主要变量包括:
| 名称 (Name) | 公式 (Formula) | 描述 (Description) |
|---|---|---|
| t | t | 更新时间 (update time) |
| p | p | 系统对等体标识符 (system peer identifier) |
| leap | leap | 闰秒指示器 (leap indicator) |
| stratum | stratum | 层级 (stratum) |
| precision | rho | 精度 (precision) |
| offset | THETA | 组合偏移 (combined offset) |
| jitter | PSI | 组合抖动 (combined jitter) |
| rootdelay | DELTA | 根延迟 (root delay) |
| rootdisp | EPSILON | 根离散 (root dispersion) |
| v | v | 幸存者列表 (survivor list) |
| refid | refid | 参考ID (reference ID) |
| reftime | reftime | 参考时间 (reference time) |
关键常量:
- NMIN = 3: 最小幸存者数量
- CMIN = 1: 最小候选者数量
11.2. 系统进程操作
11.2.1. 选择算法 (Selection Algorithm)
选择算法的目标是识别并剔除"假时钟"(falsetickers),保留"真时钟"(truechimers)。该算法基于一致性原则,构建一个多数派集团。
工作原理:
- 扫描所有关联,评估每个对等体的同步距离
- 使用区间交集原理识别一致的时间源
- 淘汰那些与多数派不一致的时间源
- 产生候选者列表供后续算法使用
11.2.2. 聚类算法 (Cluster Algorithm)
聚类算法通过统计方法进一步精炼候选者列表,移除离群值。
处理步骤:
- 计算所有候选者的质心(centroid)
- 在每轮中,移除距离质心最远的候选者
- 重复此过程,直到剩余指定数量的幸存者
- 从幸存者中选择一个作为系统对等体(system peer)
选择标准:
- 优先选择同步距离最小的对等体
- 考虑层级(stratum)和抖动(jitter)指标
11.2.3. 组合算法 (Combine Algorithm)
组合算法基于加权平均计算最终的系统偏移和抖动。
计算方法:
THETA = Σ(w_i * theta_i) / Σ(w_i)
其中权重 w_i 与同步距离 lambda 成反比:
w_i = 1 / lambda_i
输出:
- 系统偏移(THETA):用于调节系统时钟
- 系统抖动(PSI):表示时间质量的统计度量
- 根延迟(DELTA)和根离散(EPSILON):传播给依赖的客户端
11.3. 工作流程
- 输入:时钟过滤算法产生的样本
(theta, delta, epsilon, jitter, t) - 选择:识别并淘汰假时钟,产生候选者列表
- 聚类:通过统计方法精炼候选者,选择系统对等体
- 组合:计算加权平均的系统偏移和抖动
- 输出:最终偏移传递给时钟调节算法
11.4. 特殊情况处理
- 如果选择算法无法产生多数派集团,系统保持当前状态
- 如果没有足够的幸存者,系统进入非同步状态(leap = 3, stratum = 16)
- 初始化时,所有变量清零,leap设为3(未同步),stratum设为MAXSTRAT(16)
系统进程的实现示例见附录 A.5.5.6 中的 clock_select() 例程。