Abstract
This article presents a signature-free distributed algorithm which builds an atomic read/write shared memory on top of a fully connected peer-to-peer n-process asynchronous message-passing system in which up to t<n/3 processes may commit Byzantine failures. From a conceptual point of view, this algorithm is designed to be as close as possible to the algorithm proposed by Attiya, Bar-Noy and Dolev. J. ACM 42(1), 121–132 (1995), which builds an atomic register in an n-process asynchronous message-passing system where up to t<n/2 processes may crash. The proposed algorithm is particularly simple. It does not use cryptography to cope with Byzantine processes, and is optimal from a t-resilience point of view (t<n/3). A read operation requires O(n) messages, and a write operation requires O(n 2) messages.
Similar content being viewed by others
Notes
This broadcast is a simple send of the same message to all processes. If a process crashes during its execution, it is possible that only a subset of the processes receive the message.
In addition to the stronger necessary and sufficient condition t<n/3, this presentation style allows people aware of the ABD algorithm to see the additional statements needed to go from crash failures to Byzantine behavior.
If we assume that no correct process p i reads its own register R E G[i], r s n i [i] can be used to store w s n i .
References
Aiyer, A.S., Alvisi, L., Bazzi, R.A.: Bounded wait-free implementation of optimally resilient Byzantine storage without (unproven) cryptographic assumptions. In: Proceedings 21st Int?l Symposium on Distributed Computing (DISC?07), pp 7–19. Springer LNCS 4731 (2007)
Attiya, H.: Efficient and robust sharing of memory in message-passing systems. J. Algorithm. 34(1), 109–127 (2000)
Attiya, H., Bar-Noy, A., Dolev, D.: Sharing memory robustly in message passing systems. J. ACM 42(1), 121–132 (1995)
Attiya, H., Bar-Or, A.: Sharing memory with semi-Byzantine clients and faulty storage servers. Parallel Process. Lett. 16(4), 419–428 (2006)
Attiya, H., Welch, J.L.: Distributed computing: fundamentals, simulations and advanced topics, 2nd edn., p 414. Wiley-Interscience (2004). (ISBN 0-471-45324-2)
Bracha, G.: Asynchronous Byzantine agreement protocols. Inf. Comput. 75 (2), 130–143 (1987)
Chaudhuri, S., Kosa, M.J., Welch, J.L.: One-write algorithms for multivalued regular and atomic registers. Acta Inf. 37(3), 161–192 (2000)
Chockler, G., Malkhi, D.: Active disk Paxos with infinitely many processes. Distrib. Comput. 18(1), 73–84 (2005)
Dobre, D., Guerraoui, R., Majuntke, M., Suri, N., Vukolic, M.: The complexity of robust atomic storage. In: Proceedings 30th ACM Symposium on Principles of Distributed Computing (PODC?11), pp 59–68. ACM Press (2011)
Guerraoui, R., Vukolic, M.: How fast can a very robust read be?. In: Proceedings 25th ACM Symposium on Principles of Distributed Computing (PODC’06), pp 248–257. ACM Press (2006)
Herlihy, M.P., Wing, J.: Linearizability: a correctness condition for concurrent objects. ACM Trans. Programm. Lang. Syst. 12(3), 463–492 (1990)
Imbs, D., Rajsbaum, S., Raynal, M., Stainer, J.: Read/write shared memory abstraction on top of asynchronous byzantine message-passing systems. J. Parallel Distrib. Comput. 93-94, 1–9 (2016)
Ittai, A., Chockler, G., Keidar, I., Malkhi, D.: Byzantine disk Paxos: optimal resilience with byzantine shared memory. Distrib. Comput. 18(5), 387–408 (2006)
Lamport, L.: On interprocess communication, Part I: basic forMalism. Distrib. Comput. 1(2), 77–85 (1986)
Lamport, L.: On interprocess communication, Part II: algorithms. Distrib. Comput. 1(2), 77–101 (1986)
Lamport, L., Shostack, R., Pease, M.: The Byzantine generals problem. ACM Trans. Programm. Lang. Syst. 4(3), 382–401 (1982)
Malkhi, D., Reiter, M.: Secure and scalable replication in Phalanx. In: Proceedings 17th IEEE Symposium on Reliable Distributed Systems (SRDS’98), pp 51–58. IEEE Press (1998)
Martin, J.-P.H., Alvisi, L.: A framework for dynamic Byzantine storage. In: Proceedings International Conference on Dependable Systems and Networks (DSN’04), pp 325–334. IEEE Press (2004)
Misra, J.: Axioms for memory access in asynchronous hardware systems. ACM Trans. Programm. Lang. Syst. 8(1), 142–153 (1986)
Mostéfaoui, A., Raynal, M.: Intrusion-tolerant broadcast and agreement abstractions in the presence of Byzantine processes. IEEE Trans. Parallel Distrib. Syst. 27(4), 1085–1097 (2016)
Pease, M., Shostak, R.R., Lamport, L.: Reaching agreement in the presence of faults. J. ACM 27, 228–234 (1980)
Raynal, M.: Communication and agreement abstractions for fault-tolerant asynchronous distributed systems, p 251. Morgan & Claypool Publishers (2010). (ISBN 978-1-60845-293-4)
Raynal, M.: Concurrent programming: algorithms, principles and foundations, p 515. Springer (2013). (ISBN 978-3-642-32026-2)
Raynal, M.: Distributed algorithms for message-passing systems, p 510. Springer (2013). (ISBN: 978-3-642-38122-5)
Acknowledgments
The authors want to thank the referees for their constructive comments, which helped improve the presentation of the paper.
This work has been partially supported by the French ANR project DISPLEXITY devoted to computability and complexity in distributed computing, the Franco-German ANR-DFG project DISCMAT (devoted to connections between mathematics and distributed computing), and the Franco-Hong Kong ANR-RGC Joint Research Programme 12-IS02-004-02 CO2Dim.
Author information
Authors and Affiliations
Corresponding author
Appendix A: Bracha’s Reliable Broadcast Algorithm
Appendix A: Bracha’s Reliable Broadcast Algorithm
The r-broadcast algorithm presented in Fig. 2 is Bracha’s algorithm [6] enriched with sequence numbers. Each process p i manages a local array n e x t i [1..n], where n e x t i [j] is the sequence number sn of the next application message (namely, app (−,s n)) from p j , that p i will process (line 3). Initially, for all i,j, n e x t i [j] = 1.
When a process p i invokes R_b r o a d c a s t app(v,s n), it broadcasts the message app (v,s n) (line 1) where sn is its next sequence number. On its “server” role, the behavior of a process p i is as follows.
-
When a process p i receives a message app (v,s n) from a process, it discards it if it has already received a message app (−,s n ′) such that s n ′ = s n. This is because, in this case p j is Byzantine (a correct process issues a single r-broadcast per sequence number). If p i has not previously received from p j a message app (−,s n ′) such that s n ′ = s n, it waits until it can process this message according to its sequence number (line 3). When this occurs, p i broadcasts the message echo (j,v,s n) to inform the other processes it received the application message app (v,s n) (line 3).
-
Then, when p i has received the same message echo (j,v,s n) from “enough” processes (where enough means that “more than (n + t)/2 different processes”), and has not yet broadcast a message ready (j,v,s n), it does it (lines 6-9).
The aim of (a) the messages echo (j,v,s n), and (b) the cardinality “greater than (n + t)/2 processes”, is to ensure that no two correct processes can r-deliver distinct messages from p j (even if p j is Byzantine). The aim of the messages ready (j,v,s n) is related to the liveness of the algorithm. More precisely, its aim is to allow the r-delivery by the correct processes of the very same message app (v,s n) from p j , and this must always occur if p j is correct. It is nevertheless possible that a message r-broadcast by a Byzantine process p j may never be r-delivered by the correct processes.
-
Finally, when p i has received the message ready (j,v,s n) from (t+1) different processes, it broadcasts the same message ready (j,v,s n), if not yet done. This is required to ensure the RB-termination property. If p i has received “enough” messages ready (j,v,s n) (“enough” means here “from at least (2t+1) different processes”), it r-delivers the message app (v,s n) r-broadcast by p j .
More explanations and proofs that this algorithm satisfies the properties defining the reliable broadcast abstraction can be found in [6, 20].
Rights and permissions
About this article
Cite this article
Mostéfaoui, A., Petrolia, M., Raynal, M. et al. Atomic Read/Write Memory in Signature-Free Byzantine Asynchronous Message-Passing Systems. Theory Comput Syst 60, 677–694 (2017). https://doi.org/10.1007/s00224-016-9699-8
Published:
Issue Date:
DOI: https://doi.org/10.1007/s00224-016-9699-8