Substituting for real time and common knowledge in asynchronous distributed systems

We study time and knowledge in reliable distributed systems with asynchronous communication. We first describe an extension of Lamport’s logical clocks that can be used as if they were perfectly synchronized real-time clocks in the solution of a large class of problems that we formally characterize. For this same class of problems, we also propose a broadcast primitive that can be used as if it achieves common knowledge. Our logical clocks and broadcast primitive are tools that considerably simplify the design of distributed algorithms: one can now design and prove them correct with the assumption that processors have access to real-time clocks and the ability to achieve common knowledge. The latter can be used to implement the abstraction of shared memory. Extensions to more synchronous systems are considered. Distributed systems with no known bound on relative processor speeds or message transmission times are called asynchronous. Asynchrony makes coordination between processors difficult, and can complicate the design and proof of algorithms for such systems. These difficulties can be reduced if one can assume that all processors have access to some global clock by which they can coordinate their actions, e.g., that local processor clocks always show real time. Unfortunately, clock synchronization cannot be achieved in totally asynchronous systems. In addressing this problem, Lamport defined “logical clocks” [l]. They were designed to simulate a specific feature of real-time clocks: the ability to cap‘Partial support for this work was provided by the National Science Foundation under grant T)CR86-01864 Permission to copy without fee all or part of this material is granted provided that the copies are not made or distributed for direct commercial advantage, the ACM copyright notice and the title of the publication and its date appear, and notice is given that copying is by permission of the Association for Computing Machinery. To copy otherwise, or to republish, requires a fee and/or specific permission.

[1]  Neil Immerman,et al.  Foundations of Knowledge for Distributed Systems , 1986, TARK.

[2]  Van Nguyen,et al.  Knowledge, Communication, and Time , 1986, DS-2.

[3]  Leslie Lamport,et al.  Time, clocks, and the ordering of events in a distributed system , 1978, CACM.

[4]  Krzysztof Apt,et al.  Real time clocks versus virtual clocks , 1986 .

[5]  Ronald Fagin,et al.  A formal model of knowledge, action, and communication in distributed systems: preliminary report , 1985, PODC '85.

[6]  Ramaswamy Ramanujam,et al.  Distributed Processes and the Logic of Knowledge , 1985, Logic of Programs.

[7]  Sam Toueg,et al.  A distributed algorithm for generalized deadlock detection , 1984, PODC '84.

[8]  Leslie Lamport,et al.  Distributed snapshots: determining global states of distributed systems , 1985, TOCS.

[9]  Jennifer L. Welch,et al.  Simulating Synchronous Processors , 1987, Inf. Comput..

[10]  K. Mani Chandy,et al.  How processes learn , 1985, PODC '85.

[11]  Rohit Parikh,et al.  Logics of Knowledge, Games and Dynamic Logic , 1984, FSTTCS.

[12]  Sam Toueg,et al.  Distributed agreement in the presence of processor and communication faults , 1986, IEEE Transactions on Software Engineering.

[13]  Baruch Awerbuch,et al.  Complexity of network synchronization , 1985, JACM.

[14]  Leslie Lamport,et al.  The Byzantine Generals Problem , 1982, TOPL.

[15]  Kenneth P. Birman,et al.  Reliable communication in the presence of failures , 1987, TOCS.

[16]  Yoram Moses,et al.  Knowledge and common knowledge in a Byzantine environment I: crash failures , 1986 .

[17]  Sam Toueg,et al.  Optimal clock synchronization , 1985, PODC '85.

[18]  Prakash Panangaden,et al.  Concurrent common knowledge: a new definition of agreement for asynchronous systems , 1988, PODC '88.

[19]  Joseph Y. Halpern,et al.  Knowledge and common knowledge in a distributed environment , 1984, JACM.

[20]  Sam Toueg,et al.  Substituting for Real Time and Common Knowledge in Distributed Systems , 1986 .