K. P. Birman (Cornell)
Network Working Group T. A. Joseph (Cornell)
Request for Comments: 992 November 1986
On Communication Support for Fault Tolerant Process Groups
1. Status of this Memo.
This memo describes a collection of multicast communication primi- tives integrated with a mechanism for handling process failure and recovery. These primitives facilitate the implementation of fault- tolerant process groups, which can be used to provide distributed services in an environment subject to non-malicious crash failures. Unlike other process group approaches, such as Cheriton's "host groups" (RFC's 966, 988, [Cheriton]), our approach provides powerful guarantees about the behavior of the communication subsystem when process group membership is changing dynamically, for example due to process or site failures, recoveries, or migration of a process from one site to another. Our approach also addresses delivery ordering issues that arise when multiple clients communicate with a process group concurrently, or a single client transmits multiple multicast messages to a group without pausing to wait until each is received. Moreover, the cost of the approach is low. An implementation is be- ing undertaken at Cornell as part of the ISIS project.
Birman & Joseph [Page 1]
RFC 992 November 1986 2. AcknowledgmentsThis memo was adopted from a paper presented at the Asilomar workshop on fault-tolerant distributed computing, March 1986, and summarizes material from a technical report that was issued by Cornell Universi- ty, Dept. of Computer Science, in August 1985, which will appear in ACM Transactions on Computer Systems in February 1987 [Birman-b]. Copies of these paper, and other relevant papers, are available on request from the author: Dept. of Computer Science, Cornell Universi- ty, Ithaca, New York 14853. (birman@gvax.cs.cornell.edu). The ISIS project also maintains a mailing list. To be added to this list, contact M. Schmizzi (schiz@gvax.cs.cornell.edu).
3. Introduction
At Cornell, we recently completed a prototype of the ISIS system, which transforms abstract type specifications into fault-tolerant distributed implementations, while insulating users from the mechan- isms by which fault-tolerance is achieved. This version of ISIS, re- ported in [Birman-a], supports transactional resilient objects as a basic programming abstraction. Our current work undertakes to pro- vide a much broader range of fault-tolerant programming mechanisms, including fault-tolerant distributed bulletin boards [Birman-c] and fault-tolerant remote procedure calls on process groups [Birman-b]. The approach to communication that we report here arose as part of this new version of the ISIS system.
Birman & Joseph [Page 2]
RFC 992 November 1986
The multicast primitives we report here are designed to respect several sorts of ordering constraints, and have cost and latency that varies depending on the nature of the constraint required [Birman-b] [Joseph-a] [Joseph-b]. Failure and recovery are integrated into the communication subsystem by treating these events as a special sort of multicast issued on behalf of a process that has failed or recovered. The primitives are presented in the context of fault tolerant process groups: groups of processes that cooperate to implement some distri- buted algorithm or service, and which need to see consistent order- ings of system events in order to achieve mutually consistent behavior. Such groups are similar to the host groups of the V system and the ones described in RFC's 966 and 988, but provide guarantees of consistency in just the situations where a host group provides a "best effort" delivery which may sometimes be erroneous.
Birman & Joseph [Page 3]
RFC 992 November 1986 4. Issues in fault-toleranceThe difficulty of constructing fault-tolerant distributed software can be traced to a number of interrelated issues. The list that fol- lows is not exhaustive, but attempts to touch on the principal con- siderations that must be addressed in any such system:
Birman & Joseph [Page 4]
RFC 992 November 1986
[4] Serializability. Many distributed systems are partitioned into data manager processes, which implement shared variables, and transaction manager processes, which issue requests to data managers [Bernstein]. If transaction managers can execute con- currently, it is desirable to ensure that transactions produce serializable outcomes [Eswaren] [Papadimitrou]. Serializability is increasingly viewed as an important property in "object- oriented" distributed systems that package services as abstract objects with which clients communicate by remote procedure calls (RPC). On the other hand, there are systems for which serializa- bility is either too strong a constraint, or simply inappropriate. Thus, one needs a way to achieve serializability in applications where it will be needed, without imposing system-wide restrictions that would prevent the design of software subsystems for which serializability is not needed.
5. Existing alternatives
If one rules out "unreliable" communication mechanisms, there are basically two fault-tolerant alternatives that can be pursued.
Birman & Joseph [Page 5]
RFC 992 November 1986
The second approach involves the provision of a communication primi- tive, such as atomic broadcast, which can be used as the framework on which higher level algorithms are designed. Such a primitive seeks to deliver messages reliably to some set of destinations, despite the possibility that failures might occur during the execution of the protocol. Above, we termed this the fault tolerant process group approach, since it lends itself to the organization of cooperating processes into groups, as described in the introduction. Process groups are an extremely flexible abstraction, and have been employed in the V Kernel [Cheriton] and in UNIX, and more recently in the ISIS system. A proposal to provide Internet support for host groups was raised in RFC's 966 and 988. However, the idea of adapting the pro- cess group approach to work reliably in an environment subject to the sorts of exception events and concurrency cited in the previous sec- tion seems to be new.
Birman & Joseph [Page 6]
RFC 992 November 1986 6. Our multicast primitivesWe now describe three multicast protocols - GBCAST, ABCAST, and CBCAST - for transmitting a message reliably from a sender process to some set of destination processes. Details of the protocols and their correctness proofs can be found in [Birman-b]. The protocols ensure "all or nothing" behavior: if any destination receives a mes- sage, then unless it fails, all destinations will receive it. Group addressing is discussed in Sec. 6.5.
Birman & Joseph [Page 7]
RFC 992 November 1986
GBCAST (group multicast) is the most constrained, and costly, of the three primitives. It is used to transmit information about failures and recoveries to members of a process group. A recov- ering member uses GBCAST to inform the operational ones that it has become available. Additionally, when a member fails, the system arranges for a GBCAST to be issued to group members on its behalf, informing them of its failure. Arguments to GBCAST are a message and a process group identifier, which is translated into a set of destinations as described below (Sec. 6.5).
Birman & Joseph [Page 8]
RFC 992 November 1986
6.2 The ABCAST primitive
Birman & Joseph [Page 9]
RFC 992 November 1986
6.5 Group addressing protocol
Birman & Joseph [Page 10]
RFC 992 November 1986
A problem is introduced by our decision to allow asynchronous multicasts: the atomic reception property must now be extended to address causally related sequences of asynchronous messages. If a failure were to result in some multicasts being delivered to all their destinations but others that precede them not being delivered anywhere, inconsistency might result even if the desti- nations do not overlap. We therefore extend the atomicity pro- perty as follows. If process t receives a message m from process s, and s subsequently fails, then unless t fails as well, all messages m' that s received prior to its failure must be delivered to their remaining operational destinations. This is because the state of t may now depend on the contents of any such m', hence the system state could become inconsistent if the delivery of m' were not completed. The costs of the protocols are not affected by this change.
7. Using the primitives
The reliable communication primitives described above lead to simple solutions for the problems cited in Sec. 4:
Birman & Joseph [Page 11]
RFC 992 November 1986
[2] Failure detection. Consistent failure (and recovery) detec- tion are trivial using our primitives: a process simply waits for the appropriate process group view to change. This facilitates the implementation of algorithms in which one processes monitors the status of another process. A process that acts on the basis of a process group view change does so with the assurance that other group members will (eventually) observe the same event and will take consistent actions.
Birman & Joseph [Page 12]
RFC 992 November 1986 8. ImplementationThe communication primitives can be built in layers, starting with a bare network providing unreliable Internet datagrams. The software structure is, however, less mature and more complex than the one sug- gested in RFC's 966 and 988. For example, at this stage of our research we do not understand how to optimize our protocols to the same extent as for the unreliable host multicast approach described in those RFC's. Thus, the implementation we describe here should be understood to be a prototype. A particularly intriguing question, which we are investigating actively, concerns the use of a "best effort" ethernet or Internet multicast as a tool to optimize the implementation of our protocols.
Birman & Joseph [Page 13]
RFC 992 November 1986
Although satisfactory performance should be possible using an imple- mentation that sits on top of a conventional Internet mechanism, it should be noted that to achieve really high rates of communication the layers of software described above must reside in the kernel, because they run on behalf of large numbers of clients, run fre- quently, and tend to execute for very brief periods before doing I/O and pausing. A non-kernel implementation will thus incur high scheduling and context switching overhead. Additionally, it is not at all clear how to use ethernet style broadcast mechanisms to optim- ize the performance of this sort of protocol, although it should be possible. We view this as an interesting area for research.
9. Conclusions
The experience of implementing a substantial fault-tolerant system left us with insights into the properties to be desired from a com- munication subsystem. In particular, we became convinced that to build a reliable distributed system, one must start with a reliable communication subsystem. The multicast primitives described in this memo present a simple interface, achieve a high level of concurrency, can be used in both local and wide area networks, and are applicable to software ranging from distributed database systems to the fault- tolerant objects and bulletin boards provided by ISIS. Because they are integrated with failure handling mechanisms and respect desired event orderings, they introduce a desirable form of determinism into distributed computation without compromising efficiency. A conse- quence is that high-level algorithms are greatly simplified, reducing the probability of error. We believe that this is a very promising and practical approach to building large fault-tolerant distributed systems, and it is the only one we know of that leads to a rigorous form of confidence in the resulting software.
Birman & Joseph [Page 14]
RFC 992 November 1986
NOTES:
Birman & Joseph [Page 15]
RFC 992 November 1986 10. References[RFC966] Deering, S. and Cheriton, D. Host groups: A multicast exten-
Birman & Joseph [Page 16]
RFC 992 November 1986
[Eswaren] Eswaren, K.P., et al The notion of consistency and predicate
Birman & Joseph [Page 17]
RFC 992 November 1986
1, Feb. 1985, 15-30.