Implementing Remote Procedure Calls

Implementing Remote Procedure Calls

February 1984 | ANDREW D. BIRRELL and BRUCE JAY NELSON
This paper describes the design and implementation of a remote procedure call (RPC) facility, focusing on the challenges and decisions involved in creating such a system. The authors, Andrew D. Birrell and Bruce Jay Nelson, present their approach to RPC, emphasizing efficiency, simplicity, and the ability to handle distributed computing. The paper outlines the overall structure of their RPC mechanism, including the binding of clients to servers, the transport-level communication protocol, and performance considerations. The RPC mechanism is based on the concept of stubs, which are used to facilitate communication between clients and servers. The system is designed to be efficient and to minimize the load on server machines, especially when handling multiple clients. The authors describe the use of a distributed database called Grapevine for managing bindings and locating servers. This database allows for efficient and reliable lookup of server addresses, even in the presence of network failures. The paper also discusses the design of the transport-level communication protocol, which is optimized for RPC communication. The protocol is designed to minimize the elapsed real-time between initiating a call and receiving results, and to handle both simple and complex calls efficiently. The authors emphasize the importance of minimizing the overhead of communication, especially in environments with high numbers of clients. The paper addresses several key issues in the design of an RPC system, including the semantics of calls in the presence of machine and communication failures, the integration of remote calls into existing programming systems, and the provision of data integrity and security. The authors also discuss the use of process management in their system, emphasizing the importance of keeping process creation and swapping costs low. The paper concludes with a discussion of the use of exceptions in RPC, the handling of communication failures, and the overall effectiveness of the RPC system in supporting distributed computing. The authors highlight the importance of making RPC communication as easy to use as local procedure calls, while also ensuring efficiency and reliability. The paper provides a comprehensive overview of the design and implementation of their RPC system, highlighting the key decisions and considerations that were made in the process.This paper describes the design and implementation of a remote procedure call (RPC) facility, focusing on the challenges and decisions involved in creating such a system. The authors, Andrew D. Birrell and Bruce Jay Nelson, present their approach to RPC, emphasizing efficiency, simplicity, and the ability to handle distributed computing. The paper outlines the overall structure of their RPC mechanism, including the binding of clients to servers, the transport-level communication protocol, and performance considerations. The RPC mechanism is based on the concept of stubs, which are used to facilitate communication between clients and servers. The system is designed to be efficient and to minimize the load on server machines, especially when handling multiple clients. The authors describe the use of a distributed database called Grapevine for managing bindings and locating servers. This database allows for efficient and reliable lookup of server addresses, even in the presence of network failures. The paper also discusses the design of the transport-level communication protocol, which is optimized for RPC communication. The protocol is designed to minimize the elapsed real-time between initiating a call and receiving results, and to handle both simple and complex calls efficiently. The authors emphasize the importance of minimizing the overhead of communication, especially in environments with high numbers of clients. The paper addresses several key issues in the design of an RPC system, including the semantics of calls in the presence of machine and communication failures, the integration of remote calls into existing programming systems, and the provision of data integrity and security. The authors also discuss the use of process management in their system, emphasizing the importance of keeping process creation and swapping costs low. The paper concludes with a discussion of the use of exceptions in RPC, the handling of communication failures, and the overall effectiveness of the RPC system in supporting distributed computing. The authors highlight the importance of making RPC communication as easy to use as local procedure calls, while also ensuring efficiency and reliability. The paper provides a comprehensive overview of the design and implementation of their RPC system, highlighting the key decisions and considerations that were made in the process.
Reach us at info@study.space
[slides and audio] Implementing remote procedure calls