12.07.2015 Views

Unreliable Failure Detectors for Reliable Distributed Systems

Unreliable Failure Detectors for Reliable Distributed Systems

Unreliable Failure Detectors for Reliable Distributed Systems

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!