Design of broadcast programming primitives for distributed systems

This paper discusses causal broadcast programming primitives that allow distributed applications to specify message ordering requirements. The primitives, implemented in the communication interface by a kernel, allow event-driven programming whereby application entities specify partial ordering on delivery of messages and all entities perceive the flow of logical time upon exchanging messages. Since entities see the same order on messages, they have the same view of application state at every tick in logical time. The primitives allow ordering constraints to be carried in messages in the form of predicates, and a message to be delivered at destinations after its predicates are satisfied. The approach insulates the specification from the implementation, thereby providing flexibility and uniformity in the communication structure of applications. The programming interface supports an execution model that is derived from the ISIS 'process group' style of programming, whereby application entities are organized as members of a group, and a message exchanged in the group is delivered to all members, satisfying the ordering requirements. A realization of distributed shared memory using the primitives is also given. The paper also discusses the kernel level protocol support required to implement the interface. The primitives are useful in structuring complex applications such as distributed services and replica management.

[1]  André Schiper,et al.  Lightweight causal and atomic group multicast , 1991, TOCS.

[2]  Liuba Shrira,et al.  Lazy replication: exploiting the semantics of distributed services (extended abstract) , 1990, OPSR.

[3]  Mustaque Ahamad,et al.  Implementing and programming causal distributed shared memory , 1991, [1991] Proceedings. 11th International Conference on Distributed Computing Systems.

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

[5]  Louise E. Moser,et al.  Broadcast Protocols for Distributed Systems , 1990, IEEE Trans. Parallel Distributed Syst..

[6]  Louise E. Moser,et al.  Membership algorithms for asynchronous distributed systems , 1991, [1991] Proceedings. 11th International Conference on Distributed Computing Systems.

[7]  K. Ravindran,et al.  A Flexible Causal Broadcast Communication Interface for Distributed Applications , 1992, J. Parallel Distributed Comput..

[8]  K. Ravindran,et al.  Communication structures and paradigms for distributed conferencing applications , 1992, [1992] Proceedings of the 12th International Conference on Distributed Computing Systems.

[9]  Richard D. Schlichting,et al.  Preserving and using context information in interprocess communication , 1989, TOCS.

[10]  Kenneth P. Birman,et al.  Using process groups to implement failure detection in asynchronous environments , 1991, PODC '91.

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

[12]  Paul Hudak,et al.  Memory coherence in shared virtual memory systems , 1989, TOCS.

[13]  Colin J. Fidge,et al.  Logical time in distributed computing systems , 1991, Computer.

[14]  K. Ravindran,et al.  Extraction of logical concurrency in distributed applications , 1993, [1993] Proceedings. The 13th International Conference on Distributed Computing Systems.

[15]  Shivakant Mishra,et al.  Implementing fault-tolerant replicated objects using Psync , 1989, Proceedings of the Eighth Symposium on Reliable Distributed Systems.

[16]  Kenneth P. Birman,et al.  Exploiting virtual synchrony in distributed systems , 1987, SOSP '87.

[17]  Virgil D. Gligor,et al.  A Fault-Tolerant Protocol for Atomic Broadcast , 1990, IEEE Trans. Parallel Distributed Syst..

[18]  K. Ravindran,et al.  Causal broadcasting and consistency of distributed shared data , 1994, 14th International Conference on Distributed Computing Systems.

[19]  Richard D. Schlichting,et al.  Fail-stop processors: an approach to designing fault-tolerant computing systems , 1983, TOCS.