From: Song Xue (speedsx_at_hotmail.com)
Date: Wed Jan 28 2004 - 00:43:01 PST
The paper "Implementing Remote Procedure calls" describes the overall structure of the RPC mechanism, the facilities for binding RPC clients, the transport level communication protocol, and some performance measurements.
The program structure of the authors RPC is based on the concept of stubs. When making a remote call, five pieces of program are involved: the user, the user-stub, the RPC runtime, the server-stub, and the server. When user wishes to make a remote call, it is processed by a corresponding procedure in user-stub, which packs the call together with parameters into one or more packets and transfers reliably to the callee machine. Upon receiving the packets, the RPC runtime at callee decodes them into a local procedure call into callee. Meanwhile, caller is suspended waiting for the result packets. Upon receiving it, the caller's RPC runtime unpack and return the control to the caller routine.
RPC Runtime is a standard part of the system. The user and server are written as part of the distributed application. The user-stub and server-stub are automatically generated. This generation is specified by use of Mesa interface modules. As a result, the programmer does not need to build detailed communication-related code.
Two mechanisms facilitate the binding of RPC calls, naming and location. The name of an interface consists of a type and an instance. Grapevine distributed database is used to store the locations.
At packet level, RPC defines the semantics and the guarantees that are given to calls. It is guaranteed that if the call returns to the user then the procedure in thee server has been invoked precisely once. Otherwise, an exception is reported to the user and the procedure will have been invoked either once or not at all - the user is not told which. If an exception is reported, the user does not know whether the server has crashed or whether there is a problem in the communication network. Provided the RPC Runtime on the server machine is still responding, there is no upper bound on how long the caller will wait for results; that is, RPC will abort a call if there is a communication breakdown or a crash but not if the server code deadlocks or loops. This is identical to the semantics of local procedure calls.
The RPC package and protocol include facilities for providing encryption-based security for calls. Callers are given a guarantee of the identity of the callee, and vice versa. Full end-to-end encryption of calls and results is provided.
This archive was generated by hypermail 2.1.6 : Wed Jan 28 2004 - 00:43:10 PST