Glossary of RPC Terms


This section needs more work, so I'll add to it as I think of things that might be appropriate and useful. I welcome suggestions.
Foreign Function Interface
Many programming environments allow a project to incorporate object code from many different languages, at the least allowing the incorporation of objects produced from C source. Languages like C and C++ typically require that the system linker make the final links to objects from other languages, while others provide more active mediation. LISP and Prolog are languages which typically require this: the loosely typed nature of the languages require that special type checking be inserted in the LISP or Prolog program to allow C functions to be called. The foreign function interface provides a mechanism for the programmer to define the details of the interface needed from a system like LISP to call C functions.

Interface Definition Language
For an interface to be defined consistently on each end of the RPC connection, there needs to be a way to specify the parameters and return types in a way that is independent of the implementation languages used for the applications and servers. This is generally done using a language designed to specify module interfaces in some language-neutral manner. Automated tools are used to translate the specifications into definitions in each language which the interface will be used from, as well as the implementation language. A widely used interface definition language is IDL, developed by the Object Management Group.

Marshalling
This is the process of packing data into a flattened form which can be re-structured later, and is used for transmitting structured information across a network or placing it in a persistent store. The format of the data used by a marshalling procedure is defined carefully to allow complete reconstruction. An example is the specification for the External Data Representation from Sun.

Reliability
The concept of reliability refers to the network transport layer. A transport protocol is said to be reliable if there is some guarantee that a packet will be received so long as delivery is possible. Explicit acknowledgement of receipt is not required of the recipient, but may be useful in some applications. A protocol is unreliable if no such guarantee is made. This reduces overhead in the protocol, but explicit or implicit acknowledgement of receipt is usually appropriate. RPC systems often use an unreliable transport protocol since much can be inferred about the connection based on the continued exchange of calls and returns.

Stub
Using a remote procedure call mechanism transparently requires an actual procedure call be made to activate the RPC system. This call is made to a stub function generated from the interface definition. The stub provides marshalling of the arguments and calls the RPC runtime support to make the actual call. On return from the runtime, the stub re-structures the marshalled result and returns to the caller. It is typically generated from a specification written in an interface definition language.

Transport Protocol
This is the network protocol that simply moves packets across the network. Examples include the Internet Protocol (IP) and Ethernet (ETH).

Go Back to the Operating Systems page.

Go Back to the RPC page.

Fred L. Drake, Jr., fdrake@csgrad.cs.vt.edu