101 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			101 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
vsntp README
 | 
						|
 | 
						|
    See INSTALL for details on how to install and run vsntp.
 | 
						|
 | 
						|
Obtaining the Newest Information
 | 
						|
 | 
						|
    vsntp's official website is at...
 | 
						|
 | 
						|
      vsntp project on GitHub: https://github.com/imacat/vsntp
 | 
						|
      vsntp project on SourceForge: https://sf.net/p/vsntp
 | 
						|
 | 
						|
    You can always download the newest version of vsntp from...
 | 
						|
 | 
						|
      vsntp download on SourceForge: https://sourceforge.net/projects/vsntp/files
 | 
						|
      Tavern IMACAT's FTP directory: https://ftp.imacat.idv.tw/pub/vsntp/
 | 
						|
 | 
						|
    imacat's PGP public key is at...
 | 
						|
 | 
						|
      Tavern IMACAT's: https://www.imacat.idv.tw/me/pgpkey.asc
 | 
						|
 | 
						|
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
 | 
						|
learns the clock frequency drift first, and adjust the kernel clock
 | 
						|
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
 | 
						|
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.
 | 
						|
 | 
						|
    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. ^_*'
 |