INTERNET-DRAFT                                         Stephen X. Nahm
June 16, 1996                                          Sun Microsystems

        RPC: Remote Procedure Call Protocol Specification Version 2

                      draft-ietf-oncrpc-remote-00.txt


ABSTRACT

This document describes the ONC Remote Procedure Call (ONC RPC Version 2)
protocol as it is currently deployed and accepted.  "ONC" stands for "Open
Network Computing".

STATUS OF THIS MEMO

This document is an Internet-Draft.  Internet-Drafts are working documents
of the Internet Engineering Task Force (IETF), its areas, and its working
groups.  Note that other groups may also distribute working documents as
Internet-Drafts.

Internet-Drafts are draft documents valid for a maximum of six months.
This Internet-Draft expires on December 16, 1996.  Internet-Drafts may be
updated, replaced, or obsoleted by other documents at any time. It is not
appropriate to use Internet-Drafts as reference material or to cite them
other than as "work in progress."

To learn the current status of any Internet-Draft, please check the
"1id-abstracts.txt" listing contained in the Internet-Drafts Shadow
Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe), munnari.oz.au
(Pacific Rim), ds.internic.net (US East Coast), or ftp.isi.edu (US West Coast).

Distribution of this memo is unlimited.























Expires: December 16, 1996                                 [Page 1]





INTERNET-DRAFT   Remote Procedure Call Protocol Version 2        16-June-96


CONTENTS

   1. INTRODUCTION
   2. TERMINOLOGY
   3. THE RPC MODEL
   4. TRANSPORTS AND SEMANTICS
   5. BINDING AND RENDEZVOUS INDEPENDENCE
   6. AUTHENTICATION
   7. RPC PROTOCOL REQUIREMENTS
   7.1 RPC Programs and Procedures
   7.2 Authentication
   7.3 Program Number Assignment
   7.4 Other Uses of the RPC Protocol
   7.4.1 Batching
   7.4.2 Broadcast Remote Procedure Calls
   8. THE RPC MESSAGE PROTOCOL
   9. AUTHENTICATION PROTOCOLS
   9.1 Null Authentication
   10. RECORD MARKING STANDARD
   11. THE RPC LANGUAGE
   11.1 An Example Service Described in the RPC Language
   11.2 The RPC Language Specification
   11.3 Syntax Notes
   12. SECURITY CONSIDERATIONS
   13. APPENDIX A: SYSTEM AUTHENTICATION
   14. REFERENCES
   15. AUTHOR'S ADDRESS





























Expires: December 16, 1996                                 [Page 2]





INTERNET-DRAFT   Remote Procedure Call Protocol Version 2        16-June-96


1. INTRODUCTION

This document specifies version two of the message protocol used in ONC
Remote Procedure Call (RPC).  The message protocol is specified with the
External Data Representation (XDR) language [10].  This document assumes
that the reader is familiar with XDR.  It does not attempt to justify
remote procedure calls systems or describe their use.  The paper by Birrell
and Nelson [1] is recommended as an excellent background for the remote
procedure call concept.

2. TERMINOLOGY

This document discusses clients, calls, servers, replies, services,
programs, procedures, and versions.  Each remote procedure call has two
sides: an active client side that makes the call to a server, which sends
back a reply.  A network service is a collection of one or more remote
programs.  A remote program implements one or more remote procedures; the
procedures, their parameters, and results are documented in the specific
program's protocol specification.  A server may support more than one
version of a remote program in order to be compatible with changing
protocols.

For example, a network file service may be composed of two programs.  One
program may deal with high-level applications such as file system access
control and locking.  The other may deal with low-level file input and
output and have procedures like "read" and "write".  A client of the
network file service would call the procedures associated with the two
programs of the service on behalf of the client.

The terms client and server only apply to a particular transaction; a
particular hardware entity (host) or software entity (process or program)
could operate in both roles at different times.  For example, a program
that supplies remote execution service could also be a client of a network
file service.






















Expires: December 16, 1996                                 [Page 3]





INTERNET-DRAFT   Remote Procedure Call Protocol Version 2        16-June-96


3. THE RPC MODEL

The ONC RPC protocol is based on the remote procedure call model, which is
similar to the local procedure call model.  In the local case, the caller
places arguments to a procedure in some well- specified location (such as a
register window).  It then transfers control to the procedure, and
eventually regains control.  At that point, the results of the procedure
are extracted from the well- specified location, and the caller continues
execution.

The remote procedure call model is similar.  One thread of control
logically winds through two processes: the caller's process, and a server's
process.  The caller process first sends a call message to the server
process and waits (blocks) for a reply message.  The call message includes
the procedure's parameters, and the reply message includes the procedure's
results.  Once the reply message is received, the results of the procedure
are extracted, and caller's execution is resumed.

On the server side, a process is dormant awaiting the arrival of a call
message.  When one arrives, the server process extracts the procedure's
parameters, computes the results, sends a reply message, and then awaits
the next call message.

In this model, only one of the two processes is active at any given time.
However, this model is only given as an example.  The ONC RPC protocol
makes no restrictions on the concurrency model implemented, and others are
possible.  For example, an implementation may chooï¼­e.  For example, an im