目录 / 文档-技术白皮书 / 21-EFT.WP.Metrology.Sync v1.0
一句话目标:以可审计的 BMCA 口径与参考层级策略,稳定选举全网唯一 GM,在故障/切换时保持 offset/skew/J 与 MTIE/tdev 的约束不超预算。
I. 范围与对象
- 适用对象
- IEEE 1588 PTP/gPTP(含 Boundary/Transparent Clock)、SyncE 作为频率下层,GNSS/Rb/OCXO 作为上层参考。
- 单域与多域并存、跨子网透明转发、定制优先级策略与安全信任门控。
- 输入
- Announce 数据集:priority1, clockClass, clockAccuracy, offsetScaledLogVariance, priority2, clockIdentity, stepsRemoved, timeSource, domainNumber, grandmasterIdentity。
- 路径质量:delay_rt, asym, J_path, U(ts), U(asym);端口角色与拓扑元数据。
- 运行策略:logAnnounceInterval, announceReceiptTimeout, holdover_limit, domainPriority, policy.weights。
- 输出
- 选举结果与状态:GM, BM/TC 端口状态、stepsRemoved 更新、gm_switch_count。
- 质量与不确定度:T_switchover, U(offset), MTIE_delta, tdev_delta;manifest.sync.bmca.* 与签名。
II. 名词与变量
- 基本量:offset, skew, J, TIE, MTIE(tau), tdev(tau);时基 tau_mono, 发布 ts。
- BMCA 比较向量:rank(c),候选 c ∈ C;域优先 domainPriority;路径惩罚 penalty(c)。
- 报文与定时:logAnnounceInterval, T_announce = 2^{logAnnounceInterval},announceReceiptTimeout。
- 失败切换预算:T_switchover = T_detect + T_bmca + T_servo_lock。
- 到达时两口径:T_arr = ( 1 / c_ref ) * ( ∫ n_eff d ell ) 与 T_arr = ( ∫ ( n_eff / c_ref ) d ell ),差异 delta_form。
III. 公设 P603-*
- P603-1(域隔离):unique(domainNumber, GM);跨域不可见,不允许隐式跨域影响。
- P603-2(确定性排序):rank(c) 的比较顺序与权重固定、发布且可重放;同构实现应得到一致结果。
- P603-3(活性门控):is_alive(c)=true 方可参与选举;过期 Announce 必须淘汰。
- P603-4(非对称与路径质量显式):asym, delay_rt, J_path 与其不确定度作为选举门控或惩罚项显式进入。
- P603-5(防抖与滞回):切换需满足时间与质量双阈值;设定最小驻留 min_hold 与滞回带 hyst。
- P603-6(安全信任):候选必须 trust=1 或验证 signature;未签名的外部源不得当选。
- P603-7(时基连续):切换后 MTIE(tau) 与 tdev(tau) 不得超过预算曲线。
- P603-8(两口径一致):涉及路径/到达时的评估需并行记录两口径并发布 delta_form。
- P603-9(量纲守恒):所有公式发布前执行 check_dim(expr)。
- P603-10(可追溯):TraceID, hash_sha256(blob), manifest.sync.bmca.* 与 signature 强制。
IV. 最小方程 S603-*
- S603-1(BMCA 比较向量)
rank(c) = ( domainPriority, priority1, clockClass, clockAccuracy, offsetScaledLogVariance, priority2, clockIdentity ) - S603-2(字典序比较)
rank(c1) < rank(c2) 若向量按从左到右字典序更小。
门控:仅当 stepsRemoved(c) < 255 且 is_alive(c)=true。 - S603-3(活性检测)
is_alive(c) = ( now - last_announce(c) ) ≤ ( announceReceiptTimeout * T_announce(c) ) - S603-4(路径惩罚与有效排序)
penalty(c) = w_delay * delay_rt(c) + w_asym * | asym(c) | + w_jit * J_path(c)
effective_rank(c) = ( rank(c), penalty(c) )(先比较 rank,再比较 penalty) - S603-5(失败切换总时)
T_switchover = T_detect + T_bmca + T_servo_lock,需满足 T_switchover ≤ T_budget - S603-6(步数更新)
stepsRemoved(child) = min(255, stepsRemoved(parent) + 1);要求 non_decreasing(stepsRemoved) 沿路径。 - S603-7(波动约束)
MTIE_delta(tau) = MTIE_post(tau) - MTIE_pre(tau) ≤ bound_mtie(tau)
tdev_delta(tau) = tdev_post(tau) - tdev_pre(tau) ≤ bound_tdev(tau) - S603-8(两口径差)
delta_form = | ( 1 / c_ref ) * ( ∫ n_eff d ell ) - ( ∫ ( n_eff / c_ref ) d ell ) | - S603-9(不确定度发布)
U^2(GM) = U^2(src) + U^2(path) + U^2(servo),发布 U = k * u_c 与 k。
V. 计量流程 M60-3(BMCA 与层级选举)
- 采集与标准化
- 解析 Announce 与 Sync/Follow_Up,归一单位与量纲 check_dim(all);在 tau_mono 对齐。
- 构建候选集 C,补齐 last_announce(c) 与 stepsRemoved(c)。
- 活性与安全门控
- 评估 is_alive(c) 与 trust(c);剔除未签名或过期候选。
- 执行路径门控:delay_rt, |asym|, J_path, U 不得超策。
- 排序与当选
- 计算 rank(c) 与 penalty(c),按 effective_rank 字典序选 GM*。
- 若现任 GM 与 GM* 差异小于滞回带且未超阈值,保持现任以防抖。
- 发布与置位
- 更新端口角色(Master/Slave/Passive/Disabled),刷新 stepsRemoved。
- 写入 manifest.sync.bmca.*(含 GM, rank, penalty, U, TraceID 与签名)。
- 切换与收敛
当切换发生时,执行伺服过渡策略,测量 T_switchover 与 MTIE_delta/tdev_delta;若超预算触发回退或限流。 - 到达时并行口径
对参与比较的路径度量同步计算两口径与 delta_form,落盘并断言阈值。
VI. 契约与断言 C60-3*
- C60-31(唯一 GM):count_active_gm(domainNumber) = 1。
- C60-32(活性):任意在任 GM 满足 is_alive(GM)=true,否则触发 failover。
- C60-33(步数约束):non_decreasing(stepsRemoved) 且 stepsRemoved < 255。
- C60-34(切换预算):T_switchover ≤ T_budget,MTIE_delta(tau) ≤ bound_mtie(tau),tdev_delta(tau) ≤ bound_tdev(tau)。
- C60-35(路径门控):delay_rt ≤ delay_max,|asym| ≤ asym_max,J_path ≤ J_max,U ≤ U_max。
- C60-36(两口径差):delta_form ≤ tol_Tarr。
- C60-37(安全):trust=1 或 signature.valid=true 方可当选。
- C60-38(量纲):check_dim(all)=true。
VII. 实现绑定 I60-*(BMCA 层)
- collect_announce(stream) -> candidates
- is_alive(c, now, timeout) -> bool
- rank_vector(c, domainPriority) -> tuple
- path_penalty(metrics, weights) -> penalty
- elect_gm(candidates, policy) -> {gm, proofs}(返回排序证明与可重放证据)
- apply_hysteresis(prev_gm, gm*, policy) -> gm_final
- failover_monitor(state, thresholds) -> events
- holdover_manager(state, holdover_limit) -> loop_cfg
- emit_bmca_manifest(result, meta) -> manifest.sync.bmca
不变量:unique(clockIdentity);announce_loss_rate ≤ tol_loss;sum(weights) > 0;delta_form ≤ tol_Tarr。
VIII. 交叉引用
- 时基、Allan 与稳定度:见《EFT.WP.Metrology.TimeBase v1.0》第7章、第14章。
- 同步建模基线与不确定度:见本卷第2章 P602-* / S602-*。
- 清洗与契约发布:见《EFT.WP.Methods.Cleaning v1.0》第10章与附录C。
- 统计漂移监测:见《EFT.WP.Methods.CrossStats v1.0》第7章、附录D。
IX. 质量度量与风控
- SLI/指标
- gm_flaps_per_hour, T_switchover_p50/p95/p99, announce_stale_rate, stepsRemoved_max, mtie_after_switchover(tau), tdev_after_switchover(tau)。
- asym_p95, delay_rt_p95, U(offset)_p95,delta_form_p99。
- 风控策略
- 防抖:min_hold, hyst;异常触发回退到次优 GM。
- 安全:未签名源隔离;域冲突 domain_collision_count > 0 进入保护模式。
- 观测:对 asym 漂移启用周期校准或在线估计;路由变化触发路径重发现。
小结
本章固化了 GM/BMCA 的选举口径:确定性排序 rank(c)、路径惩罚 penalty(c) 与活性/安全门控,并以 M60-3 给出可执行闭环。通过 C60-3* 契约、I60-* 接口与质量面板,保障在多域复杂拓扑下实现稳定、可追溯且合规的主时钟选举与切换。版权与许可(CC BY 4.0)
版权声明:除另有说明外,《能量丝理论》(含文本、图表、插图、符号与公式)的著作权由作者(“屠广林”先生)享有。
许可方式:本作品采用 Creative Commons 署名 4.0 国际许可协议(CC BY 4.0)进行许可;在注明作者与来源的前提下,允许为商业或非商业目的进行复制、转载、节选、改编与再分发。
署名格式(建议):作者:“屠广林”;作品:《能量丝理论》;来源:energyfilament.org;许可证:CC BY 4.0。
首次发布: 2025-11-11|当前版本:v5.1
协议链接:https://creativecommons.org/licenses/by/4.0/