This Article 
 Bibliographic References 
 Add to: 
Self-Stabilizing Distributed Queuing
July 2006 (vol. 17 no. 7)
pp. 646-655

Abstract—Distributed queuing is a fundamental coordination problem arising in a variety of applications, including distributed shared memory, distributed directories, and totally ordered multicast. A distributed queue can be used to order events, user operations, or messages in a distributed system. This paper presents a new self-stabilizing distributed queuing protocol. This protocol adds self-stabilizing actions to the arrow distributed queuing protocol, a simple path-reversal protocol that runs on a spanning tree of the network. We present a proof that the protocol stabilizes to a stable state irrespective of the (perhaps faulty) initial state, and also present an analysis of the time until convergence. The self-stabilizing queuing protocol is structured as a layer that runs on top of any self-stabilizing spanning tree protocol. This additional queuing layer is guaranteed to stabilize in time bounded by a constant number of message delays across an edge, thus establishing that the stabilization time for distributed queuing is not much more than the stabilization time for spanning tree maintenance. The key idea in our protocol is that the global predicate defining the legality of a protocol state can be written as the conjunction of many purely local predicates, one for each edge of the spanning tree.

[1] S. Aggarwal and S. Kutten, “Time Optimal Self-Stabilizing Spanning Tree Algorithm,” Proc. 13th Conf. Foundations of Software Technology and Theoretical Computer Science (FSTTCS), pp. 400-410, 1993.
[2] G. Antonoiu and P. Srimani, “Distributed Self-Stabilizing Algorithm for Minimum Spanning Tree Construction,” Proc. Euro-Par Conf. Parallel Processing, pp. 480-487, 1997.
[3] B. Awerbuch, B. Patt-Shamir, and G. Varghese, “Self-Stabilization by Local Checking and Correction,” Proc. 31st Ann. IEEE Symp. Foundations of Computer Science (FOCS), pp. 268-277, 1991.
[4] M. Demmer and M. Herlihy, “The Arrow Directory Protocol,” Proc. 12th Int'l Symp. Distributed Computing (DISC), pp. 119-133, 1998.
[5] E. Dijkstra, “Self Stabilizing Systems in Spite of Distributed Control,” Comm. ACM, vol. 17, pp. 643-644, 1974.
[6] S. Dolev, Self-Stabilization. MIT Press, 2000.
[7] S. Dolev, A. Israeli, and S. Moran, “Self-Stabilization of Dynamic Systems Assuming Only Read/Write Atomicity,” Distributed Computing, vol. 7, no. 1, pp. 3-16, 1993.
[8] M. Gouda and N. Multari, “Stabilizing Communication Protocols,” IEEE Trans. Computers, vol. 40, no. 4, pp. 448-458, Apr. 1991.
[9] M. Herlihy, “The Aleph Toolkit: Support for Scalable Distributed Shared Objects,” Proc. Workshop Comm., Architecture, and Applications for Network-Based Parallel Computing (CANPC), pp. 137-149, 1999.
[10] M. Herlihy and S. Tirthapura, “Self-Stabilizing Distributed Queuing,” Proc. 15th Int'l Symp. Distributed Computing (DISC), pp. 209-223, 2001.
[11] M. Herlihy, S. Tirthapura, and R. Wattenhofer, “Competitive Concurrent Distributed Queuing,” Proc. 20th ACM Symp. Principles of Distributed Computing (PODC), pp. 127-133, 2001.
[12] M. Herlihy, S. Tirthapura, and R. Wattenhofer, “Ordered Multicast and Distributed Swap,” Operating Systems Rev., vol. 35, no. 1, pp. 85-96, 2001.
[13] M. Herlihy and M. Warres, “A Tale of Two Directories: Implementing Distributed Shared Objects in Java,” Concurrency: Practice and Experience, vol. 12, no. 7, pp. 555-572, 2000.
[14] T. Hu, “Optimum Communication Spanning Trees,” SIAM J. Computing, vol. 3, no. 3, pp. 188-195, 1974.
[15] F. Kuhn and R. Wattenhofer, “Dynamic Analysis of the Arrow Distributed Protocol,” Proc. 16th ACM Symp. Parallelism in Algorithms and Architectures (SPAA), pp. 294-301, 2004.
[16] M. Nesterenko and M. Mizuno, “A Quorum-Based Self-Stabilizing Distributed Mutual Exclusion Algorithm,” J. Parallel Parallel and Distributed Computing, vol. 62, no. 2, pp. 284-305, 2002.
[17] D. Peleg and E. Reshef, “A Variant of the Arrow Distributed Directory Protocol with Low Average Complexity,” Proc. 26th Int'l Colloquium Automata Languages and Programming (ICALP), July 1999.
[18] K. Raymond, “A Tree-Based Algorithm for Distributed Mutual Exclusion,” ACM Trans. Computer Systems, vol. 7, no. 1, pp. 61-77, 1989.
[19] M. Schneider, “Self-Stabilization,” ACM Computing Surveys, vol. 25, pp. 45-67, 1993.
[20] S. Tirthapura, “Distributed Queuing and Applications,” PhD thesis, Brown Univ., 2002.
[21] G. Varghese, “Self-Stabilization by Counter Flushing,” Proc. 13th Ann. ACM Symp. Principles of Distributed Computing (PODC), pp. 244-253, 1994.
[22] G. Varghese, A. Arora, and M. Gouda, “Self-Stabilization by Tree Correction,” Chicago J. Theoretical Computer Science, vol. 3, pp. 1-32, 1997.

Index Terms:
Distributed queue, arrow protocol, self-stabilization.
Srikanta Tirthapura, Maurice Herlihy, "Self-Stabilizing Distributed Queuing," IEEE Transactions on Parallel and Distributed Systems, vol. 17, no. 7, pp. 646-655, July 2006, doi:10.1109/TPDS.2006.94
Usage of this product signifies your acceptance of the Terms of Use.