From: Joanna Muench (joannam_at_spro.net)
Date: Sun Feb 01 2004 - 16:18:34 PST
Birrell and Nelson (1984) describe a package supporting remote procedure
calls across a network. While not the first attempt to implement RPC,
the ideas contained in their paper form the basis of currently
implemented RPC systems.
The goals of their initial system were to make distributed computing
easy, implement an efficient communication protocol and provide secure
communication. To achieve the first goal, they made a fundamental design
decision to make a RPC as similar as possible as a local procedure call.
This principle strongly influence many design decisions, such as not
having a time-out mechanism.
Like any system, most decisions were about trade-offs. Communications
are optimized for simple calls, cases where all the arguments fit into a
single packet buffer. The communication protocol is arranged so that a
new call cannot be initiated until the results of the preceding call
have been received. While this may not be the optimal design for speed,
it does remove the needs for additional consistency checks. Another
trade-off is providing notification for every argument package. This
creates a significant extra packets for arguments too large to fit in a
single packet, but allows simpler and faster response for single packets
which are presumed to be the majority of the traffic.
While listed as an important feature, the authors deferred discussion of
security to a later paper. I had hoped that would be the Grapevine paper
we were assigned to read, unfortunately that doesn't seem to be the
case.
This was a very interesting paper to read, especially given the
widespread use of RPC's today through tools such as CORBA. Unfortunately
the performance results were all fairly theoretical, and I would be
interested in reading about how the system actually performed under an
active network and the size of packets that a system under full use
would actually transmit.
This archive was generated by hypermail 2.1.6 : Sun Feb 01 2004 - 16:14:58 PST