1 Introduction: Distributed Systems
1.1 What is a Distributed System?
1.2 Architecture and Languages
1.3 Distributed Algorithms
1.4 Outline of the Book
Part One: Protocols
2 The Model
2.1 Transition Systems and Algorithms
2.2 Proving Properties of Transition Systems
2.3 Causal Order of Events and Logical Clocks
2.4 Additional Assumptions, Complexity
Exercises to Chapter 2
3 Communication Protocols
3.1 The Balanced Sliding-window Protocol
3.2 A Timer-based Protocol
Exercises to Chapter 3
4 Routing Algorithms
4.1 Destination-based Routing
4.2 The AU-pairs Shortest-path Problem
4.3 The Netchange Algorithm
4.4 Routing with Compact Routing Tables
4.5 Hierarchical Routing
Exercises to Chapter 4
5 Deadlock-free Packet Switching
5.1 Introduction
5.2 Structured Solutions
5.3 Unstructured Solutions
5.4 Further Issues
Exercises to Chapter 5
Part Two: Fundamental Algorithms
6 Wave and Traversed Algorithms
6.1 Definition and Use of Wave Algorithms
6.2 A Collection of Wave Algorithms
6.3 Traversal Algorithms
6.4 Time Complexity: Depth-first Search
6.5 Remaining Issues
Exercises to Chapter 6
7 Election Algorithms
7.1 Introduction
7.2 Ring Networks
7.3 Arbitrary Networks
7.4 The Korach-Kutten-Moran Algorithm
Exercises to Chapter 7
8 Termination Detection
8.1 Preliminaries
8.2 Computation Trees and Forests
8.3 Wave-based Solutions
8.4 Other Solutions
Exercises to Chapter 8
9 Anonymous Networks
9.1 Preliminaries
9.2 Deterministic Algorithms
9.3 A Probabilistic Election,Algorithm
9.4 Computing the Network Size
Exercises to Chapter 9
10 Snapshots
10.1 Preliminaries
10.2 Two Snapshot Algorithms
10.3 Using Snapshot Algorithms
10.4 Application: Deadlock Detection
Exercises to Chapter 10
11 Sense of Direction and Orientation
11.1 Introduction and Definitions.
11.2 Election in Rings and Chordal Rings
11.3 Computing in Hypercubes
11.4 Complexity-related Issues
11.5 Conclusions and Open Questions
Exercises to Chapter 11
12 Synchrony in Networks
12.1 Preliminaries
12.2 Election in Synchronous Networks
12.3 Synchronizer Algorithms
12.4 Application: Breadth-first Search
12.5 The Archimedean Assumption
Exercises to Chapter 12
Part Three: Fault Tolerance
13 Fault Tolerance in Distributed Systems
13.1 Reasons for Using Fault-tolerant Algorithms
13.2 Robust Algorithms
13.3 Stabilizing Algorithms
14 Fault Tolerance in Asynchronous Systems
14.1 Impossibility of Consensus
14.2 Initially Dead Processes
14.3 Deterministically Achievable Cases
14.4 Probabilistic Consensus Algorithms
14.5 Weak Termination
Exercises to Chapter 14
15 Fault Tolerance in Synchronous Systems
15.1 Synchronous Decision Protocols
15.2 Authenticating Protocols
15.3 Clock Synchronization
Exercises to Chapter 15
16 Failure Detection
16.1 Model and Definitions
16.2 Solving Consensus with a Weakly Accurate Detector
16.3 Eventually Weakly Accurate Detectors
16.4 Implementation of Failure Detectors
Exercises to Chapter 16
17 Stabilization
17.1 Introduction
17.2 Graph Algorithms
17.3 Methodology for Stabilization
Exercises to Chapter 17
Part Four: Appendices
A Pseudocode Conventions
B Graphs and Networks
References
Index