Distributed systems consist of a collection of distinct processes (called nodes) which are spatially separated and which communicate with one another by exchanging messages. The clocks of the nodes tick at different rates and as a result these clocks can drift apart.
Thus, the clocks in the distributed system may not remain always synchronized although they might be synchronized when they start.The lack of global notion of time poses serious problems for the correct operation of the distributed applications and protocols which need synchronized clocks.
Consequently, it is mandatory to provide a distributed clock synchronization algorithm whose objective is to ensure that the nodes are able to acquire a common notion of time.
Clock synchronization algorithms are based on exchanging clock information among the nodes and try to eliminate the effects of non-determinism in the message delay and data processing time.