Concepts for Distributed Systems Design

I: The Nature of Distributed Systems.- 1. Distributed systems: examples and definition.- 1.1 Distribution of control and data in existing systems.- 1.1.1 Systems distributed over long distance.- 1.1.1.1 Remote access.- 1.1.1.2 Computer networks.- 1.1.1.3 Systems for distributed processing.- 1.1.2 Locally distributed systems.- 1.1.3 Multi-processor systems.- 1.1.4 Virtual distribution.- 1.2 Classification of distributed systems.- 1.2.1 Degree of coupling.- 1.2.2 Interconnection structure.- 1.2.3 Interdependence of components.- 1.2.4 Synchronization between components.- 1.3 Definition of "distributed system".- 2. Parallelism.- 2.1 Parallel processes and applications.- 2.2 Constraints on independence.- 2.3 Modular system structure and abstraction.- 3. Common problems.- 3.1 Cooperation.- 3.1.1 Compatibility.- 3.1.2 Synchronization.- 3.2 Distributed resource sharing.- 3.3 Naming and addressing.- 3.3.1 Search strategies for link editors.- 3.3.2 Naming of I/O flows.- 3.3.3 Addressing scheme of telephone networks.- 3.3.4 Process addressing by ports.- 3.4 Protection.- 3.4.1 Protection in distributed systems.- 3.5 Error recovery.- 3.5.1 Error detection.- 3.5.2 Recovery by retry.- 3.5.3 Redundant hardware.- 3.5.4 The design principle of recovery blocks.- 3.6 Real time considerations.- 3.6.1 Time-outs.- 3.6.2 Clock synchronization in distributed systems.- II: Distributed System Architecture and Communication Protocols.- 4. Architecture of distributed systems.- 4.1 Layered hierarchical system structure and physical distribution.- 4.2 Typical structure of a distributed system.- 4.2.1 Communication over a dedicated circuit.- 4.2.2 Communication through a network.- 4.2.3 A uniform transport service.- 4.2.4 Higher level protocols.- 4.3 Compatibility and interworking issues.- 4.3.1 Requirements for compatibility.- 4.3.2 Network interconnection.- 4.3.3 System interworking and adaptation.- 5. Message transport requirements and data transmission networks.- 5.1 Message transport requirements.- 5.2 Data transmission services.- 5.2.1 Dedicated circuits.- 5.2.2 Switching.- 5.2.3 Circuit and packet switching.- 5.3 The transport protocol.- 6. Link protocols.- 6.1 Transmission of bits.- 6.1.1 Interface procedures.- 6.1.2 Physical transmission media.- 6.1.3 Bit synchronization.- 6.2 Transparency and framing.- 6.2.1 Bit-oriented method.- 6.2.2 Character-oriented method.- 6.2.3 Method based on envelope transmission.- 6.3 Transmission error detection and correction.- 6.3.1 Principles.- 6.3.2 Error detecting codes.- 6.3.3 Error correcting codes.- 6.4 Retransmission protocols.- 6.4.1 Principles.- 6.4.2 The "alternating bit" protocol.- 6.4.3 The HDLC classes of procedures.- 6.4.4 Multiplexing.- 7. Technological developments and standards.- III: Formal Description Techniques.- 8. Role of specifications in the design of distributed systems.- 8.1 Specification of different scope and detail.- 8.1.1 The "reference model".- 8.1.2 Service specifications.- 8.1.3 Protocol specifications.- 8.1.4 Implementation specifications.- 8.2 System design validation.- 8.3 Protocol implementation assessment.- 8.4 Protocol implementation.- 9. A state transition formalism for the description of systems.- 9.1 The basic model.- 9.1.1 Transition systems.- 9.1.2 Operations.- 9.1.3 Transitions and relations between states.- 9.1.4 Abstraction.- 9.1.5 Parallelism and functionality.- 9.2 Reachability and execution sequences.- 9.2.1 Possible operation sequences.- 9.2.2 Liveness.- 9.2.3 Equivalence between systems.- 9.3 Synchronization mechanisms.- 9.4 Non-instantaneous operations.- 9.4.1 Mutual exclusion.- 9.4.2 Queueing condiserations and scheduling.- 9.5 Processes.- 9.5.1 The concept.- 9.5.2 Cooperation.- 9.5.3 Mutual exclusion.- 9.6 The induction principle.- 9.7 Distinction between "control structure" and "interpretation".- 9.8 Assertions.- 9.9 Formalized specification methods for systems with parallelism.- 10. A formal description technique for distributed systems.- 10.1 Discussion of specification concepts.- 10.1.1 Components and their interactions.- 10.1.2 Ports and interconnections.- 10.1.3 Elements of a specification.- 10.2 A transport service specification.- 10.2.1 Ports and interaction primitives.- 10.2.2 Local rules for a service access point.- 10.2.3 Specification of the service provider component.- 10.3 Step-wise refinement of specifications.- 10.3.1 The internal structure of components: examples.- 10.3.2 Comments on component substructure.- 10.3.3 Port refinements.- References.- Annex: Possible approaches to stepwise refinement, protocol specification and implementation.- Annex 1: A general transition model for protocols and communication services (G.v. Bochmann).- Annex 2: Development and structure of an X.25 implementation (G.v. Bochmann and J. Tankoano).- Annex 3: Structured specification of communicating systems (G.v. Bochmann and M. Raynal).

[1]  Leslie Lamport,et al.  Reaching Agreement in the Presence of Faults , 1980, JACM.

[2]  Tony Hoare,et al.  Hierarchical Program Structures , 1972 .

[3]  Keith A. Bartlett,et al.  A note on reliable full-duplex transmission over half-duplex links , 1969, Commun. ACM.

[4]  Algirdas Avizienis,et al.  Fault-Tolerant Computing-Progress, Problems and Prospects , 1977, IFIP Congress.

[5]  Niklaus Wirth,et al.  Toward a discipline of real-time programming , 1977, CACM.

[6]  Gregor von Bochmann,et al.  Formal Methods in Communication Protocol Design , 1980, IEEE Trans. Commun..

[7]  Wilfried G. PROBST,et al.  Operating system design with computer network communication protocols , 1977, SIGCOMM.

[8]  Richard C. Holt,et al.  Project SUE as a learning experience , 1972, AFIPS '72 (Fall, part I).

[9]  Daniel A. Menascé,et al.  Locking and Deadlock Detection in Distributed Data Bases , 1979, IEEE Transactions on Software Engineering.

[10]  Richard M. Karp,et al.  Parallel Program Schemata , 1969, J. Comput. Syst. Sci..

[11]  Donald Watts Davies,et al.  Communication Networks for Computers , 1973 .

[12]  Gary J. Nutt,et al.  Macro E-Nets for Representation of Parallel Systems , 1973, IEEE Transactions on Computers.

[13]  Robert M. Keller,et al.  Formal verification of parallel programs , 1976, CACM.

[14]  Thomas P. Blumer,et al.  A Formal Specification Technique and Implementation Method for Protocols , 1982, Comput. Networks.

[15]  Arthur J. Bernstein,et al.  Interprocess communication facilities for network operating systems , 1974, Computer.

[16]  P. Brinch-Hansen,et al.  The programming language Concurrent Pascal , 1975 .

[17]  Edward A. Ashcroft,et al.  Proving Assertions about Parallel Programs , 1975, J. Comput. Syst. Sci..

[18]  John V. Guttag,et al.  Abstract data types and the development of data structures , 1977, CACM.

[19]  Barry D. Wessler,et al.  Computer network development to achieve resource sharing , 1899, AFIPS '70 (Spring).

[20]  Gregor von Bochmann Distributed Synchronization and Regularity , 1979, Comput. Networks.

[21]  Niklaus Wirth,et al.  Modula: A language for modular multiprogramming , 1977, Softw. Pract. Exp..

[22]  David A. Farber,et al.  Network security via dynamic process renaming , 1975 .

[23]  Robert E. Kahn,et al.  Resource-sharing computer communications networks , 1972 .

[24]  Friedrich H. Vogt,et al.  X 25 Based Process - Process Communication , 1978, Comput. Networks.

[25]  Gordon Bell,et al.  Ethernet: Distributed Packet Switching for Local Computer Networks , 1976 .

[26]  Robert H Thomas,et al.  A Solution to the Update Problem for Multiple Copy Data Bases which uses Distributed Control , 1976 .

[27]  William Ewing Riddle,et al.  The modeling and analysis of supervisory systems , 1972 .

[28]  Michel Gien,et al.  A File Transfer Protocol (FTP) , 1978, Comput. Networks.

[29]  Franklin F. Kuo,et al.  Addressing and Directory Systems for Large Computer Mail Systems , 1980 .

[30]  Per Brinch Hansen,et al.  The nucleus of a multiprogramming system , 1970, CACM.

[31]  Louis Pouzin,et al.  Presentation and major design aspects of the CYCLADES computer network , 1973, DATACOMM '73.

[32]  Jonathan B. Postel,et al.  The arpanet telnet protocol: Its purpose, principles, implementation, and impact on host operating system design , 1977, SIGCOMM.

[33]  Gregor von Bochmann Standards issues in data communications , 1977 .

[34]  D. L. A. Barber The role and nature of a virtual terminal , 1977, CCRV.

[35]  Nixon Waterman Sunshine. , 1903 .

[36]  C. Jard,et al.  An approach to testing specifications , 1983, SIGSOFT '83.

[37]  H. Hecht,et al.  Fault-Tolerant Software for Real-Time Applications , 1976, CSUR.

[38]  Daniel Schwabe Formal specification and verification of a connection establishment protocol , 1981, SIGCOMM.

[39]  Colin Whitby-Strevens Towards the performance evaluation of distributed computing systems , 1978, COMPSAC.

[40]  Harry Rudin,et al.  Automated Protocol Validation: One Chain of Development , 1978, Comput. Networks.

[41]  David Lorge Parnas,et al.  Concurrent control with “readers” and “writers” , 1971, CACM.

[42]  Philip A. Bernstein,et al.  Concurrency Control in Distributed Database Systems , 1986, CSUR.

[43]  James Martin,et al.  Teleprocessing Network Organization , 1969 .

[44]  James L. Peterson,et al.  A Comparison of Models of Parallel Computation , 1974, IFIP Congress.

[45]  Edsger W. Dijkstra,et al.  Guarded commands, nondeterminacy and formal derivation of programs , 1975, Commun. ACM.

[46]  James Martin,et al.  Systems analysis for data transmission , 1972 .

[47]  Gregor von Bochmann,et al.  Development and Structure of an X.25 Implementation , 1979, IEEE Transactions on Software Engineering.

[48]  Peter J. Denning,et al.  Operating Systems Principles for Data Flow Networks , 1978, Computer.

[49]  Brent Hailpern,et al.  Verifying network protocols using temporal logic , 1980 .

[50]  Gregor von Bochmann,et al.  A Unified Method for the Specification and Verification of Protocols , 1977, IFIP Congress.

[51]  Gregor von Bochmann A General Transition Model for Protocols and Communication Services , 1980, IEEE Trans. Commun..

[52]  George G. Robertson,et al.  Accent: A communication oriented network operating system kernel , 1981, SOSP.

[53]  Bernd E. Wolfinger,et al.  Simulation of a Local Computer Network Architecture Applying a Unified Modeling System , 1982, Comput. Networks.

[54]  Robin Milner,et al.  A Calculus of Communicating Systems , 1980, Lecture Notes in Computer Science.

[55]  Gilles Kahn,et al.  The Semantics of a Simple Language for Parallel Programming , 1974, IFIP Congress.

[56]  J. G. Fletcher,et al.  An Architecture for Support of Network Operating System Services , 1980, Comput. Networks.

[57]  Brian Randell,et al.  System structure for software fault tolerance , 1975, IEEE Transactions on Software Engineering.

[58]  Roy H. Campbell,et al.  The specification of process synchronization by path expressions , 1974, Symposium on Operating Systems.

[59]  A. M. Rybczynski,et al.  Datapac X.25 service characteristics , 1977, SIGCOMM.

[60]  Roger M. Needham,et al.  Using encryption for authentication in large networks of computers , 1978, CACM.

[62]  Jean-Pierre Verjus,et al.  Toward Autonomous Descriptions of Synchronization Modules , 1977, IFIP Congress.

[63]  Michel Gien,et al.  The Implementation of an End to End Protocol by EIN Centres: A Survey and Comparison , 1976, ICCC.

[64]  Gregor von Bochmann,et al.  Finite State Description of Communication Protocols , 1978, Comput. Networks.

[65]  David Lorge Parnas,et al.  Using traces to write abstract specifications for software modules , 1977 .

[66]  Brian Randell,et al.  Consistent State Restoration in Distributed Systems , 1977 .

[67]  Peter Schicker The Computer Based Mail Environment - An Overview , 1981, Comput. Networks.

[68]  Edsger W. Dijkstra,et al.  Self-stabilizing systems in spite of distributed control , 1974, CACM.

[69]  Yoshifumi Masunaga A Probabilistic Automaton Model of the NRM, HDX HDLC Procedure , 1978, Comput. Networks.

[70]  Philip Enslow,et al.  Multiprocessor Organization—a Survey , 1977, CSUR.