A distributed clock synchronization algorithm
, developed by Drs. Gusella and Zatti at the University of California, Berkeley
Here's what you do:
Choose a coordinator computer to act as the master. The master periodically polls the slaves whose clocks are to be synchronized to the master. The slaves send their clock values to the master.
The master observes the transmission delays and estimates their local clock times. Once this is done, it takes a fault-tolerant average of all the times including its own, and ignores those that are far outside of the range of the rest.
The master then sends each slave the amount (positive or negative) that it should adjust its clock. This is very ingenious, because it means that it doesn't have to send absolute times (which will be messed up by network delays - see Christian's Algorithm for a discussion of this problem).