Skip to main content

14. Simple Network Time Protocol (简化网络时间协议 - SNTP)

简化网络时间协议(SNTPv4)是NTP的一个子集,适用于不需要实现完整缓解算法的主服务器和客户端。SNTP与NTP服务器和客户端完全互操作,可以在NTP子网中混合使用。

14.1. SNTP概述

适用场景:

  • 主服务器:配备单个参考时钟的主服务器
  • 客户端:具有单个上游服务器且无依赖客户端的客户端

NTP完整实现的适用场景:

  • 具有多个上游服务器的辅助服务器
  • 具有多个下游服务器或客户端的服务器

14.2. SNTP主服务器

特点:

  • 实现第8节描述的线上协议
  • 除单个参考时钟外没有上游服务器
  • 原则上与具有缓解算法的NTP主服务器无法区分

数据包构造:

收到客户端请求后,SNTP主服务器按以下方式构造回复数据包:

数据包变量来源变量说明
x.leaps.leap闰秒指示器
x.versionr.version版本号
x.mode4模式(服务器)
x.stratums.stratum层级
x.pollr.poll轮询间隔
x.precisions.precision精度
x.rootdelays.rootdelay根延迟
x.rootdisps.rootdisp根离散
x.refids.refid参考ID
x.reftimes.reftime参考时间
x.orgr.xmt起源时间戳
x.recr.dst接收时间戳
x.xmtclock传输时间戳
x.keyidr.keyid密钥ID(可选)
x.digestmd5 digest消息摘要(可选)

注意事项:

  • 数据包头中的离散字段必须按第5节描述进行更新

14.3. SNTP客户端

特点:

  • 实现线上协议
  • 具有单个服务器
  • 无依赖客户端

实现选项:

最简单方法:

  • 仅使用服务器数据包的传输时间戳
  • 忽略所有其他字段

推荐方法:

  • 实现完整的线上协议
  • 附加复杂度很小
  • 可获得更好的时间精度和可靠性

完整实现的优势:

  • 可以计算往返延迟
  • 可以检测和处理不对称延迟
  • 可以验证数据包的有效性
  • 支持可选的认证机制

14.4. SNTP与NTP的互操作性

互操作性保证:

  • SNTP和NTP服务器/客户端完全互操作
  • 可以在同一NTP子网中混合使用
  • 使用相同的数据包格式和协议

区别:

  • SNTP不实现缓解算法(选择、聚类、组合)
  • SNTP不支持多个对等体之间的仲裁
  • SNTP适用于简单的时间同步场景

使用建议:

  • 对于简单应用,SNTP提供足够的时间同步能力
  • 对于需要高可靠性和精度的应用,应使用完整的NTP实现
  • SNTP客户端可以从NTP服务器获取时间,反之亦然