From: Steve Arnold (steve.arnold4_at_verizon.net)
Date: Sun Feb 01 2004 - 18:42:28 PST
In this paper, Birrell and Nelson present an end-to-end system for
implementing RPC, as the field was viewed in 1983. Their experiment was
performed inside Xerox on the "Cedar" programming system. They wanted to
provide a system that was practical and encouraged use of distributed
systems, looking much, to the programmer, like a regular programmer's
interface.
In their implementation, they basically have the concept of a user and a
server, each which contains a copy of the RPCRuntime. They have a utility
that then generates a stub for each available interface. Using a Grapevine
database, callees can export their interfaces and store information about
the interface. A caller can then import that interface by reading from the
database. Once it has this information, it can bind to the interface.
Much emphasis was given on the protocol for networking data between the
caller and the callee. They basically optimized for a single packet where
all interface and arguments are stuffed into. The ack of this send function
is just the result of the RPC. Of course, this isn't flexible enough for all
cases, so they also had to allow for larger transfers. This requires much
more handshaking between the user and server.
In their performance tests, they find that the performance is a whole order
of magnitude worse than local calls. However, this may be acceptable.
I'm guessing that since this paper was assigned, it was one of the first
influential papers in RPC. Advances in networks would naturally call for
some sort of RPC system to exist. I did find it interesting that they had to
re-invent the network protocol, which, I would hope at this time, would not
be necessary. This paper was easy to read and made me aware of many issues I
was not before aware of.
This archive was generated by hypermail 2.1.6 : Sun Feb 01 2004 - 18:41:38 PST