NTP客户端服务器-chrony
2013-08-28 16:14:47 阿炯

chrony 是网络时间协议 NTP 的客户端和服务器软件,它可以让你的计算机时间保持最精确。采用C/C++开发并在GPLv2的协议下授权。


chrony is a pair of programs which are used to maintain the accuracy of the system clock on a computer. The two programs are called chronyd and chronyc.

chronyd is a daemon which runs in background on the system. It obtains measurements via the network of the system clock’s offset relative to time servers on other systems and adjusts the system time accordingly. For isolated systems, the user can periodically enter the correct time by hand (using chronyc). In either case, chronyd determines the rate at which the computer gains or loses time, and compensates for this. chronyd implements the NTP protocol and can act as either a client or a server.

chronyc provides a user interface to chronyd for monitoring its performance and configuring various settings. It can do so while running on the same computer as the chronyd instance it is controlling or a different computer.

Red Hat 6.x版本之前的程序包是ntpd,该程序既可以用作服务端又可以用作客户端;它是基于NTP(Network Time Protocal)实现时间同步的。其同步时间的逻辑大致为:
把时间的周期缩短,假设一台服务器两台服务器时间相差1小时,它的思想就是将自己现有的时间周期缩短,从而间接追上时间服务器的时间。比如时间服务器跑一分钟需要60秒,而ntpd的思想是跑一分钟使用30秒甚至1秒实现跑一分钟的的时间周期,这样随着时间的推移一定会追上服务器时间的,也确是可以追到服务器时间,但会付出一定时间的代价,这也是ntpd之所以被淘汰的根本原因。ntpd在和时间服务器进行时间同步的核心逻辑问题导致了从7.x版本将ntpd被替换为chronyd服务。

chrony是网络时间协议(NTP)的通用实现。它可以将系统时钟与NTP服务器、参考时钟(例如GPS接收器)和使用手表和键盘的手动输入同步。它还可以作为NTPv4(RFC 5905)服务器和对等服务器运行,为网络中的其他计算机提供时间服务。它被设计成在各种条件下都能很好地运行,包括断续的网络连接、严重拥挤的网络、不断变化的温度(普通的计算机时钟对温度很敏感),以及不连续运行或在虚拟机上运行的系统。

chrony是ntpd的替代方案。在互联网上同步的两台机器之间的典型精度在几毫秒内;在局域网上,精度通常在几十微秒内。使用硬件时间戳或硬件参考时钟,可以达到亚微秒精度。其中包含两个程序:chronyd是一个可以在启动时启动的守护程序,chronyc是一个命令行接口程序,可用于监视chronyd的性能,并在运行时更改各种操作参数。如果非要把NTP和chrony做一个对比的话,以调整手表时间为例,假设手表时间和实际服务器时间相差3小时:
ntpd的解决思路就是飞速的转动秒针,以最快的速度调准时间,需要非常快的速度转动180圈秒针才能追上时间服务器的时间,这个过程是相当费时间的。
chrony的解决思路就是直接调整时针,挑拨时针不到一圈就能把时间问题解决了。

和ntpd一样,chronyd程序包既可以做服务端也可以做客户端,实际上chrony服务本身是兼容ntpd服务的,123/UDP是传统的NTP服务所默认监听的端口,而323/UDP是chrony所默认监听的端口。因此使用chronyd做服务端后,既可以使用ntpd或chronyd做客户端。其优势包括以下几点:
(1)更快的同步只需要数分钟而非数小时时间,从而最大程度减少时间和频率误差,这对于并非全天24小时的运行的台式计算机或系统而言非常有用;
(2)能够更好地响应时钟频率的快速变化,这对于具备不稳定时钟的虚拟机或导致赛事中频率发生比变化的节能技术;
(3)在初始同步后,它不会停止时钟,以防对需要系统时间保持单调的应用程序造成影响;
(4)在应对临时非对称延迟时(例如大规模下载造成链接饱和等情况)提供了更好的稳定性;
(5)无需对时间服务器进行定期轮询,因此具备间歇性网络连接(如网络不稳定的场景)的系统仍然可以快速同步时钟。


最新版本:3.2
修复了两个安全漏洞:CVE-2012-4502 和 CVE-2012-4503。

项目主页:http://chrony.tuxfamily.org/