RPC

Design choice

  • Clean semantics
  • Efficiency
  • Generality

Difference

  • No shared address space
    • Linked List

Structure

RPCRuntime is for packet-level communications.

Lupine is for generating the stub code for packing and unpacking arguments and results, and for dispatching to the correct procedure for an incoming call on in the server-stub.

Binding

  • Naming
  • Locating with Grapevine database
  • Bind once, use uid for later calls
  • Authentication at binding time (authenticate server)

Connection

Connection is a shared state information between an activity on a calling machine and the RPCRuntime pacakge on the server machine.

Call identifier: [machine id, process] + sequence number

Stateful vs Stateless

Process Management

  • Few context switches.
  • Idle process handle incoming packets, save the process creation cost.