Lecture Notes for CS 537

Introduction to remote procedure calls, 19 February 2002


  1. introduction

    1. low-level client-server transport is hard

    2. client-server protocol design is hard

    3. start piling on abstractions to get middleware

    4. the remote procedure call is a key abstraction for middleware - publish-subscribe, callbacks

  2. the subroutine call-return model

    1. procedural abstraction

    2. the implementation-interface separation - the caller needs the interface, not the implementation

    3. elements - single threaded, argument passing, value return

  3. the rpc model

    1. exploit the subroutine call-return model - familiar, understood, useful

    2. the subroutine call-return model extends easily to client-server computing - client is caller; server is called

    3. the subroutine call-return model is embedded in a transport protocol - only the specific payloads are left to the designer

      1. well, almost - error semantics, data semantics, infrastructure issues

    4. division into pieces can be delayed until late in the design

  4. sun's onc rpc

    1. defined by sun - RFCs rfc 1057, and rfc 1831; others include osf dce (microsoft com-dom), java rmi

    2. remote program - the server; like non-static file scope in c-c++

      1. externally visible procedures - the remote procedures

      2. static global data - shared in the server

      3. remote programs are single threaded - serialized

    3. server identification

      1. remote programs are identified by 32-bit unsigned numbers assigned by some authority - sun, local management, ad-hoc

      2. each remore procedure is numbered from 1 by the rpc software

      3. rpc assigns version numbers to remote programs

    4. transport level

      1. choice of udp or tcp

      2. rpc reliatility under udp

        1. timeout retransmission with retry limits

        2. doesn't provide semantically meaningful reliability

      3. weak communication semantics under udp

        1. error - can't say anything; zero or more calls

        2. no error - at least one call

        3. idempotent operations and repeated exeuctions

        4. exactly one semantics is expensive and hard

    5. locating remote programs

      1. a client has host id and a remote program id, needs a port number

      2. the rpc port mapper - a per-host server; called rpcbind these days

      3. host-resident remote programs allocate a port and register with the local port mapper - program number, protocol port number, version

      4. clients query the remote port mapper for the protocol port number

  5. corba rpc

    1. the object request broker (orb) is the run-time system

    2. the internet inter-object protocol (iiop) allows inter-orb communication

  6. rpc problems

    1. asymmetric communications - streaming media

    2. asynchronous communicaions - void returns, telnet


This page last modified on 26 February 2002.