Unreliable Failure Detectors for Reliable Distributed Systems
Unreliable Failure Detectors for Reliable Distributed Systems
Unreliable Failure Detectors for Reliable Distributed Systems
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
238 T. D. CHANDRA AND S. TOUEGEvery process p executes the followingTo execute R-broadcast(m):send m to all (including p)R-deliver(m) occurs as fo]lows:when receive m <strong>for</strong> the first timeif sender(m) # p then send m to aflR-deliver(m)FIG.4. <strong>Reliable</strong> Broadcast by message diffusion.Since Q satisfies weak completeness, by Lemma 3.1, 53’ satisfies strong completeness.We now show that ~ and $23’have the same accuracy property. If 9 is in Qor W, this follows from Lemma 3.2. If !3 is in 0S2 or OW, this follows fromLemma 3.3. •lBy Theorem 3.4 and Observation 2.6.1, we have:COROLLARY3.5. 9 = Q, Y’= W, OQ?= 03, and OY = OW.The relations given in Corollary 3.5 are sufficient <strong>for</strong> the purposes of thispaper. A complete enumeration of the relations between the eight failuredetectors classes defined in Figure 1 is given in Section 8.4. <strong>Reliable</strong> BroadcastWe now define <strong>Reliable</strong> Broadcast, a communication primitive <strong>for</strong> asynchronoussystems that we use in our algorithm.13 In<strong>for</strong>mally, <strong>Reliable</strong> Broadcast guaranteesthat (1) all correct processes deliver the same set of messages, (2) allmessages broadcast by correct processes are delivered, and (3) no spuriousmessages are ever delivered. Formally, <strong>Reliable</strong> Broadcast is defined in terms oftwo primitives, R-broadcasr(m ) and R-deliver(m) where m is a message drawnfrom a set of possible messages. When a process executes R-broadcast(m), wesay that it R-broadcasts m, and when a process executes R-deliver(m), we saythat it R-delivers m. We assume that every message m includes a field denotedsender(m) that contains the identity of the sender, and a field with a sequencenumber; these two fields make every message unique. <strong>Reliable</strong> Broadcastsatisfies the following properties [Hadzilacos and Toueg 1994]:Validity. If a correct process R-broadcasts a message m, then it eventuallyR-delivers m.Agreement. If a correct process R-delivers a message m, then all correctprocesses eventually R-deliver m.Uni<strong>for</strong>m tnte~”ty. For any message m, every process R-delivers m at mostonce, and only if m was previously R-broadcast by sender(m).In Figure 4, we give a simple <strong>Reliable</strong> Broadcast algorithm <strong>for</strong> asynchronoussystems. In<strong>for</strong>mally, when a process receives a message <strong>for</strong> the first time, it relaysthe message to all processes and then R-delivers it, This algorithm satisfies1~This is a ~rash.failureToueg [1985] <strong>for</strong> “Byzantine” failures.version of the asynchronous broadcast primitive defined in Bracha and