本文档提供有关如何解决网络时间协议(NTP)常见问题的信息。
Cisco建议您很好地了解NTP的工作方式,并很好地了解网络时间协议。
本文档不限于特定的软件和硬件版本。
有关文档规则的详细信息,请参阅 Cisco 技术提示规则。
网络时间协议(NTP)广泛用于使计算机与互联网时间服务器或其他来源(如无线电或卫星接收器或电话调制解调器服务)同步。在LAN上提供的精确度通常小于1毫秒,在WAN上提供的精确度通常可达几毫秒。典型的 NTP 配置使用多台冗余服务器和不同的网络路径来实现高准确性和可靠性。
NTP使用Marzullo的算法将时间与当前版本的NTP同步。它可以通过公共Internet将时间保持在10毫秒内,而且在LAN上的性能更佳。NTP时间服务器在TCP/IP协议簇内工作,依靠用户数据报协议(UDP)端口123。
NTP服务器通常是专用NTP设备,它们使用单个时间参考来同步网络。此时间参考通常为协调世界时(UTC)源。UTC是一个全球时间尺度,由原子钟通过Internet、专用的长波无线电传输或通过全球定位系统(GPS)网络进行分配。安全、保护、准确性、合法性和控制需要专用NTP服务器。
NTP算法使用此时间参考来确定提前或后退系统或网络时钟的数量。NTP分析时间戳值、错误频率及其稳定性。NTP服务器维护参考时钟和自身质量的估计值。
本部分列出了NTP可能遇到的一些常见问题,并为每个问题提供了解决方案。
当Cisco路由器配置为使用Active Directory中的NTP服务器时,Cisco路由器不会从NTP服务器接收任何NTP数据包。出现此问题的原因是Cisco路由器使用NTP,而Active Directory域使用W32Time服务。W32Time使用简单网络时间协议(SNTP)(NTP的子集)进行时间同步。SNTP和NTP使用相同的网络数据包格式。SNTP和NTP之间的主要区别在于,SNTP不提供NTP提供的错误检查和过滤功能。Cisco路由器和交换机使用NTP,并允许NTP v3提供的所有错误检查和过滤功能。
Windows W32Time显示它是内部的SNTP实现(而不是声称自己是NTP)。 尝试与W32Time同步的Cisco IOS-NTP会获得自己的根色散值,并将其发送到W32Time,这证明对Cisco IOS-NTP进行同步成本高昂。由于Cisco IOS-NTP的根色散值大于1000毫秒,因此它会自行取消同步(时钟选择过程)。 由于基于Cisco IOS的路由器运行NTP的完整RFC实施,因此它们不会同步到SNTP服务器。在这种情况下,show ntp associations detail命令的输出显示服务器被标记为insane, invalid。根色散值超过1000毫秒,这导致Cisco IOS NTP实施拒绝关联。如果运行W32Time服务的Windows系统,运行Cisco IOS的路由器无法与NTP服务器同步。如果服务器不同步,路由器将无法向服务器发送和接收数据包。
要解决此问题并同步基于Cisco IOS的路由器,请使用互联网上的授权NTP服务器、运行NTPD的UNIX盒或某些平台上的GPS。或者,您可以选择不在Windows系统上运行W32Time服务。您可以改用NTP 4.x。所有版本的Windows 2000及更高版本都可以用作NTP服务器。然后,网络上的其他计算机可以使用NTP服务器来同步其时间。
以下是路由器无法与公共时间服务器同步的可能原因:
不允许UDP端口123数据包通过的访问控制列表
路由器中不存在配置错误,例如clock timezone 和clock summer-time 命令
公共时间服务器已关闭
NT或UNIX上的NTP服务器软件配置错误
路由器上有更多流量,而通往服务器的路上会有更多流量
NTP主设备失去同步,路由器定期失去同步
高 CPU 利用率
服务器和路由器之间的高偏移量及更多偏移量(使用show ntp association detail命令检查此情况)
当传感器尝试同步到报告其层数为15的服务器时,会显示此错误消息。这是因为服务器层数为15会使传感器层数为16,这是非法的。因此,传感器将拒绝服务器,并显示Strata too high - too many indirections from sensor to master NTP server错误消息。
NTP使用层的概念描述机器旁边有多少NTP 跳来自可信的时间源。该错误消息表明NTP服务器报告的NTP层太高。层是一个介于1和15之间的数字,表示服务器距离精确参考时钟的距离是多少。通常,直接同步到原子时钟的系统将其层报告为一个层。同步到第1层NTP服务器但同时还用作其他主机的NTP服务器的主机向这些主机报告其第2层,其中每个后续的服务器层都比其父级高一个层。
如果将Linux主机用作NTP服务器,请对其报告的层进行硬编码,而不是让它自动计算层。如果是Linux或UNIX盒,则使用/etc/ntp.conf文件配置NTP服务器,并使用fudge命令对层进行硬编码。服务器始终向其客户端报告一个比模糊值高一个的层值。
版本 | 发布日期 | 备注 |
---|---|---|
1.0 |
07-Oct-2008 |
初始版本 |