Implementing Remote Procedure Calls

Andrew D. Birrell and Bruce J. Nelson

Presented by Gary Huang


Paper Summary

The goals of the paper are to make distributed computation (i.e. RPC) easy, to make RPC communication efficient, and to provide secure communication with RPC.

The paper first introduces the RPC mechanism and  the structure of implementing RPC.  Caller invokes a remote procedure and gets suspended.  Parameters are passed across the network to the Callee.  Callee executes the procedure and produce results.  Results are passed back to the caller and caller resumes execution.  The RPC structure involves five pieces: the user, the user-stud, the RPC communications package (RPCRuntime), the server-stub, and the server.

The key concept of the paper is Binding.  The caller binds to the callee by specifying something to uniquely identify the callee (Naming in this case) and the callee’s location.
But first the caller must find out what callees are available to handle the request at the time of the procedure call. This is accomplished by a database lookup.  When a callee wishes to export an interface (make it available to callers), it stores information about its interface in a network accessible database.  The caller can then find the server callee in a database lookup by specifying a particular instance of the desired interface type and receiving location information about that instance, or by specifying the type of the interface and receiving a list of instances that implement that type, and then iterating through them to find an available match.

The RPC transport protocol contains Identifiers specifying caller, callee and call, requested procedure and procedure arguments, procedure results, acknowledgements of received packets, and exception information.  Also the paper introduces two calls, Simple Calls and Complicated Calls.  The differences of two calls are that Complicated Calls require an acknowledgement for each packet sent.  In Complicated calls, the caller may send additional packets when the callee is timeout or encounters a communication failure.  Complicated Calls can send packets with large contents.

Finally, the paper mentions the exception handling of RPC, the processes with optimizations and data security.  The remote call acts just like a local call, propagating any exceptions back to the caller and any handlers that may be waiting there to catch them.  Callee can transmit an exception instead of result packet.  Exception packet is handled as new call packet.  A server callee maintains a pool of available server processes to handle incoming requests.  One of optimizations is reduce the number of process switches involved in a call.  For the security, encryption is applied from end to end and Grapevine (a database system) can be used as an authentication server.

The authors concluded that the RPC package was fully and successfully implemented and in use by Cedar programmers.


Discussion Recap

Here are some points discussed in the class:

1) Was there any attempt in constructing an asynchronous remote procedure call, which seems to be a probable solution to increase parallelism in a distributed system? 

In this paper, the authors didn't mention any idea about asynchronous remote procedure call.  However, in modern RPC, Asynchronous RPC has been developed in order to achieve supporting parallel process, increasing throughput, and more powerful means of communication.

2) For the packet-level transport protocol, why did the authors use PUP instead of TCP or UDP?

PUP is PARC Universal Protocol.  PUP was developed at Xerox's Palo Alto Research Center in the mid-1970s. PUP originally ran on the experimental three-megabits per second (mbps) Ethernet, the precursor to the IEEE 802.3 and Ethernet standards. The protocol is still used today by some Xerox workstations. The Cisco Systems routers support routing the PUP and provide a minimal set of PUP host functions, primarily the PUP Echo server and client. PUP packets can be routed over all Cisco-supported media. The Cisco PUP implementation uses the PUP GWINFO routing protocol to maintain routing information across a PUP network. 

3) Maybe security wasn't a huge concern.  Are encryption and playback protection good enough.?

In fact, the authors had considered security as a huge concern.  Besides encryption end to end, they used Grapevine as an authentication system.


List of Submitted Questions

Here is the link for these questions, which the classmates sent to me.


 

Presentation Slides

Here is the link for a PowerPoint file < cs508-paper-11-presentation.ppt >