2021-02-06 08:59:23 +08:00
|
|
|
vsntp README
|
|
|
|
|
|
|
|
See INSTALL for details on how to install and run vsntp.
|
|
|
|
|
|
|
|
Obtaining the Newest Information
|
|
|
|
|
|
|
|
vsntp's official website is at...
|
|
|
|
|
2021-02-07 00:50:01 +08:00
|
|
|
vsntp project on GitHub: https://github.com/imacat/vsntp
|
|
|
|
vsntp project on SourceForge: https://sf.net/p/vsntp
|
2021-02-06 08:59:23 +08:00
|
|
|
|
|
|
|
You can always download the newest version of vsntp from...
|
|
|
|
|
2021-02-07 00:50:01 +08:00
|
|
|
vsntp download on SourceForge: https://sourceforge.net/projects/vsntp/files
|
|
|
|
Tavern IMACAT's FTP directory: https://ftp.imacat.idv.tw/pub/vsntp/
|
2021-02-06 08:59:23 +08:00
|
|
|
|
|
|
|
imacat's PGP public key is at...
|
|
|
|
|
2021-02-07 00:50:01 +08:00
|
|
|
Tavern IMACAT's: https://www.imacat.idv.tw/me/pgpkey.asc
|
2021-02-06 08:59:23 +08:00
|
|
|
|
|
|
|
Introduction:
|
|
|
|
|
|
|
|
vsntp is an SNTP client daemon for machines without a sane system
|
|
|
|
time. The word "vsntp" stands for "SNTP for Virtual PC". It was
|
|
|
|
originally designed for my GNU/Linux server running on Connectix
|
|
|
|
Virtual PC. It runs according to RFC 1769 SNTP, connecting the NTP
|
|
|
|
server on UDP port 123.
|
|
|
|
|
|
|
|
Without Virtual PC Additions, the system time on Virtual PC is
|
|
|
|
completely insane. It's RTC (Real Time Clock, or CMOS time, or
|
|
|
|
hardware clock) is software emulated, which does not seems to be
|
|
|
|
running. The GNU/Linux kernel hardly maintains a system time itself.
|
|
|
|
With smooth run it goes 4 seconds ahead per minute, which is nearly
|
|
|
|
1.5 hours per day. That is insane. You can even tell it with your
|
|
|
|
eyes.
|
|
|
|
|
|
|
|
David L. Mills' ntp does not work here. It uses a method that
|
2021-02-07 00:50:01 +08:00
|
|
|
learns the clock frequency drift first, and adjust the kernel clock
|
2021-02-06 08:59:23 +08:00
|
|
|
with adjtimex() so that time adjustment goes smoothly, from the point
|
|
|
|
of view of system and applications. This assumes an existing fix-
|
|
|
|
speed system clock. But this is not the case of Virtual PC. The
|
|
|
|
system clock on Virtual PC is software emulated. It can be faster
|
|
|
|
or slower now and then, depending on the load of the hosting machine.
|
|
|
|
There is no fixed clock speed. The frequency drift does not exist,
|
|
|
|
then. It dooms to fail to measure it.
|
|
|
|
|
|
|
|
There is an sntp client that comes with David L. Mills' ntp
|
|
|
|
package. It is suggested to be run from crontab. But crontab runs
|
|
|
|
by minutes, and Virtual PC goes 4 seconds ahead per minute. Rolling
|
|
|
|
back 4 seconds every minute is insane for most applications. It also
|
|
|
|
increases system load heavily to run one instance per minute.
|
|
|
|
|
|
|
|
vsntp is a workaround on this. It runs as a daemon to eliminates
|
|
|
|
the additional system load on every synchronization. It uses
|
|
|
|
settimeofday() to synchronize the time. It synchronizes the time
|
|
|
|
with an arbitrary interval, so that time can be accurate within a
|
|
|
|
second.
|
|
|
|
|
|
|
|
There are some defects. Synchronizing the time too often
|
|
|
|
introduces heavy network load. It introduces heavy load on the
|
|
|
|
target NTP server, too. You should have a working NTP server nearby
|
|
|
|
that is owned by you. Also, since settimeofday() is called so often,
|
|
|
|
high-accurate time operations like timer, etc., may not run
|
|
|
|
correctly.
|
|
|
|
|
|
|
|
vsntp uses sleep() as the synchronization scheduler. Reports show
|
|
|
|
that on some systems sleep() may not function normally. If you find
|
|
|
|
vsntp stops synchronization after running for some time, that the
|
|
|
|
sleep() is not functioning normally on your system, you may want to
|
|
|
|
switch to the alarm() scheduler with the "-a" switch.
|
|
|
|
|
|
|
|
If you ever encounter any problem, you may check your syslog.
|
|
|
|
vsntp logs detailed debugging information to syslog in log level
|
|
|
|
LOG_DEBUG with facility LOG_DAEMON. You may turn it on in your
|
|
|
|
/etc/syslog.conf with the following line:
|
|
|
|
|
|
|
|
daemon.debug /var/log/debug
|
|
|
|
|
|
|
|
and check the /var/log/debug file for the debugging message. Remember
|
|
|
|
to remove this afterwards, for the amount of the debugging messages
|
2021-02-07 00:50:01 +08:00
|
|
|
may be huge and may use up your hard disk in a very short time. To the
|
|
|
|
least it may slow down your system for frequent hard disk I/O.
|
2021-02-06 08:59:23 +08:00
|
|
|
|
|
|
|
vsntp was originally written for GNU/Linux. It uses POSIX
|
|
|
|
compatible system calls. It should work on any POSIX compatible
|
|
|
|
system. But I have yet only tested it on Cygwin. Cygwin is known to
|
|
|
|
work. I don't have others to test and run on. Please let me know
|
|
|
|
(and submit the patch if needed) if you can port it to other systems.
|
|
|
|
I know it does not work on MSWin32, for the way it handles the PID
|
|
|
|
file path.
|
|
|
|
|
|
|
|
Please tell me if you have successfully running vsntp on other
|
|
|
|
virtual machines, like VMWare.
|
|
|
|
|
|
|
|
Generally, please tell me if you are using vsntp. I would like
|
|
|
|
to know that I am really doing some good for the world, *^_^* but not
|
|
|
|
having fun myself. :p
|
|
|
|
|
|
|
|
This is my first daemon, my first socket program and my first
|
|
|
|
public-released C program. Any comment or suggestion is welcome. ^_*'
|