Sprite RPC and xSprite

The protocols described here are a result of decomposing the Sprite RPC protocol developed at Berkeley. A description of the basic Sprite RPC protocol can be found in [#!Welch86!#]. Sprite RPC implements the basic Birrell-Nelson[#!Birrell84!#] remote procedure call protocol. A partial and simplified pictorial representation of our modular implementation of Sprite RPC (xSprite) is given in Figure 1. This graph provides a super-set of the semantics found in Sprite RPC but cannot interoperate with Sprite RPC. xSprite differs from Sprite RPC in that it can be used over the Internet and it supports very large messages. More complete descriptions of xSprite can be found in [#!Hutchinson89sosp!#][#!OMalley92tocs!#].

Figure: The xSprite Protocol Graph
\begin{figure}\centering
\leavevmode\hbox{
\epsfxsize =2.0in \epsfbox{omalley-fig1.ps}}
\end{figure}

xSprite consists of the following protocols CHAN, BLAST, VSIZE, and VMUX. xSprite uses the Ethernet and the standard Internet protocol suite to deliver packets. CHAN implements the basic Birrell-Nelson RPC mechanism. BLAST implements an optimistic blast algorithm to send large messages between hosts connected via a LAN. VSIZE dynamically selects a transport subgraph based upon the size of the outgoing message. VMUX statically selects a transport subgraph based on the address of the target machine. If the target machine is reachable on the local net the Internet protocols are bypassed. This graph uses the Ethernet (ETH) to send short packets locally, BLAST to send medium packets locally, TCP to send very large packets locally, IP to send short packets across the Internet, and TCP to send large packets over the Internet. The protocol graphs under all the transport protocols are ignored for simplicity.