开源 NTP Pool 现状:严峻的服务缺口
当前开源 NTP Pool(pool.ntp.org)在中国区面临显著的服务缺口(Under-Served):
以下就简称开源的公共 NTP Pool 为 NTP Pool。
- 服务节点/人口比例失衡:全球 NTP Pool 约90%的服务节点位于等欧美发达国家,中国仅占不足3%(数据来源:NTP Pool Project 2024报告),却承载全球21%的互联网流量。
- 服务延迟差异:境内用户访问境外NTP节点延迟普遍≥150ms,而本土节点因数量不足导致部分区域延迟波动超300ms。
- 监控盲区:原有监控节点多部署于海外,无法真实反映国内网络环境质量(如防火墙策略、骨干网路由抖动),进一步放大服务不稳定性。
如图所示,NTP pool中国区5千万人才拥有一个NTP Pool服务节点,这一地理与网络拓扑的错配,使国内用户难以享受低延迟、高可靠的公共授时服务。
服务缺口的核心问题:本土监控节点缺失
NTP Pool的服务节点调度机制依赖监控节点(Monitor) 实时评估节点健康度。然而:
监控节点国内为0个:2025年前健康检测数据均来自境外,这导致了
- 误判率高:网络波动被标记为“节点故障”
- 调度失衡:健康节点因跨境延迟被降权
- 扩容停滞:缺乏数据支撑中国区服务器准入,服务节点数常年处于50个以下
没有本土监控,NTP Pool的中国服务优化如同“无源之水”。
如图是针对腾讯 NTP 服务器的监控结果,最右边的一列就是监控节点到服务节点的延迟(RTT),越低越好。
大家可以注意到没有中国大陆的监控节点(CN开头的)。
其中的cncan1就是本博客添加的监控节点,可见如果没有cncan1,所有节点都是超过200ms以上的延迟,对于 NTP 准确性会有严重影响。
破局:基于RISC-V监控终端
这次,我选用OrangePi RV2 构建低成本、低功耗监控节点,售价才200出头,加上天线等其他硬件总成本控制在300元左右,还可以通过GPIO添加PPS功能。
相对的,某宝上一般 NTP 服务器都要600以上,还没有算天线等其他设备。
硬件架构
开发板:OrangePi RV2
GNSS模块:Wheeltech GNSS模块 + PPS输出
GNSS天线:北斗+GPS 双模蘑菇头 + 8米 SMA 馈线
开发板添加对应的DTS overlay
/dts-v1/;
/plugin/;
/ {
compatible = "ky,orangepi-rv2\0ky,x1";
fragment@0 {
target-path = "/";
__overlay__ {
pps_gpio: pps {
compatible = "pps-gpio";
gpios = <&gpio 91 0>;
assert-rising-edge;
};
};
};
};
软件栈
- Chrony:维护PPS同步,NTP时间服务
- GPSD:接收北斗卫星信号→PPS硬件时钟同步(精度±200ns)
- ntppool-agent: 负责监控进程(重新编译,Go语言已支持RISC-V)
效果如图,这样就可以获得一个精度在±500ns以下的Stratum 1 NTP 服务器
获得NTP Pool官方破例支持
向NTP Pool上游持续贡献代码
- add riscv64 binary release https://github.com/ntppool/monitor/pull/6
- https://github.com/abh/ntppool/pull/255
- https://github.com/abh/ntppool/pull/262
1年来,在跟上游管理团队来来回回好十几封邮件后,这块RISC-V开发板,获得了豁免监控节点准入限制:常规要求NTP服务节点稳定运行18个月方可成为监控节点,这次为中国区首开绿色通道。
结语:从服务缺口到技术领先
国产RISC-V开发板+北斗GNSS的组合,不仅填补了中国区NTP Pool监控节点空白,更证明了:RISC-V可承担关键基础设施角色