Network Working Group M. Banan Request for Comments: 2188 Neda Category: Informational M. Taylor AWS J. Cheng AWS September 1997 AT&T/Neda's Efficient Short Remote Operations (ESRO) Protocol Specification Version 1.2 Status of this Memo This memo provides information for the Internet community. It does not specify an Internet standard of any kind. Distribution of this memo is unlimited. IESG Note This protocol has not had the benefit of IETF Working Group review, but a cursory examination reveals several issues which may be significant issues for scalability. A site considering deployment should conduct a careful analysis to ensure they understand the potential impacts. Abstract This document specifies the service model, the notation and protocol for Efficient Short Remote Operations (ESRO). The ESRO service is similar to and is consistent with other Remote Procedure Call services. The emphasis of ESRO service definition and the ESRO protocol is on efficiency. ESRO is designed specifically with wireless network (e.g., CDPD) usage in mind. ESRO protocol provides reliable connectionless remote operation services on top of UDP (or any other non-reliable connectionless transport service) with minimum overhead. ESRO protocol supports segmentation and reassembly, concatenation and separation as well as multiplexing for service users (applications). ESRO allows for trade-offs between efficiency and reliability by specifying both 2-way hand-shake and 3-way hand-shake based protocols. Encoding mechanisms for presentation of the parameters of remote operations are outside the scope of this document. But, identification (tagging) of the encoding mechanism in use (e.g., XDR, Banan, et. al Informational [Page 1] RFC 2188 ESRO September 1997 BER, PER) is supported by ESRO protocol. A variety of applications can use the ESRO protocol. Some early applications using ESRO include efficient short message submission and delivery, credit card authorization and white pages lookup. Banan, et. al Informational [Page 2] RFC 2188 ESRO September 1997 Contents 1 INTRODUCTION 4 1.1 Relationship To Existing Remote Operation Services . 5 1.1.1 ESRO and RPC . . . . . . . . . 5 1.1.2 ESRO and ROSE . . . . . . . . . 5 1.2 Overview of ESROS . . . . . . . . . 5 1.3 The Remote Operation Model . . . . . . . 6 2 ESRO SERVICE DEFINITIONS 8 2.1 Acknowledged Result Service Mode . . . . . . 9 2.1.1 Performer side . . . . . . . . . 9 2.1.2 Invoker side . . . . . . . . . 11 2.2 Non-acknowledged Result . . . . . . . . 11 2.2.1 Performer side . . . . . . . . . 12 2.2.2 Invoker side . . . . . . . . . 12 2.3 Serialized Use of ESRO Services . . . . . . 12 2.3.1 Invoker . . . . . . . . . . 12 2.3.2 Performer . . . . . . . . . . 12 2.4 ESROS-INVOKE Service . . . . . . . . . 13 2.4.1 Operation-value . . . . . . . . 13 2.4.2 Performer-address . . . . . . . . 14 2.4.3 Invoker-address . . . . . . . . 14 2.4.4 Invoke-argument-encoding-type . . . . . 15 2.4.5 Invoke-argument . . . . . . . . 15 2.4.6 Invoke-ID . . . . . . . . . . 15 2.4.7 Failure-value . . . . . . . . . 16 2.5 ESROS-RESULT Service . . . . . . . . . 16 2.5.1 Result-argument-encoding-type . . . . . 16 2.5.2 Result-argument . . . . . . . . 17 2.5.3 Invoke-ID . . . . . . . . . . 17 2.5.4 Failure-value . . . . . . . . . 18 2.6 ESROS-ERROR Service . . . . . . . . . 18 2.6.1 Error-value . . . . . . . . . 18 2.6.2 Error-argument-encoding-type . . . . . 19 2.6.3 Error-argument . . . . . . . . . 19 2.6.4 Invoke-ID . . . . . . . . . . 20 2.6.5 Failure-value . . . . . . . . . 20 2.7 ESROS-FAILURE Service . . . . . . . . 20 2.7.1 Failure-value . . . . . . . . . 21 2.7.2 Invoke-ID . . . . . . . . . . 21 3 ESRO SERVICE NOTATION 21 3.1 ES-OPERATION Notation . . . . . . . . 22 3.2 Mapping of ESROS Notation . . . . . . . 22 3.2.1 Invocation of an Operation . . . . . . 22 3.2.2 Reply of an Operation . . . . . . . 22 4 REMOTE OPERATIONS PROTOCOL 23 4.1 Overview of the Protocol . . . . . . . . 23 4.1.1 Service Provision (Invoker User) . . . . 24 Banan, et. al Informational [Page 3] RFC 2188 ESRO September 1997 4.1.2 Service Provision (Performer User) . . . . 24 4.2 Protocol Procedures . . . . . . . . . 25 4.2.1 Service Access Point (SAP) Bind Procedure . . 25 4.2.2 Invoke Service Procedure . . . . . . 25 4.2.3 Invoke ID Assignment Procedure . . . . . 25 4.2.4 Functional Unit Selection Procedure . . . 26 4.3 Connectionless PDU Transfer For Small PDUs . . . 26 4.3.1 Overview . . . . . . . . . . 26 4.3.2 3-Way Handshake Functional Unit . . . . 28 4.3.3 2-Way Handshake Functional Unit . . . . 35 4.3.4 Segmentation and Reassembly . . . . . 40 4.4 Structure and Encoding of ESROS PDUs . . . . . 43 4.4.1 ESRO-INVOKE-PDU Format . . . . . . . 43 4.4.2 ESRO-RESULT-PDU Format . . . . . . . 45 4.4.3 ESRO-ERROR-PDU Format . . . . . . . 46 4.4.4 ESRO-ACK-PDU Format . . . . . . . 47 4.4.5 ESRO-FAILURE-PDU Format . . . . . . 47 4.4.6 ESRO-INVOKE-SEGMENTED-PDU Format . . . . 48 4.4.7 ESRO-RESULT-SEGMENTED-PDU Format . . . . 50 4.4.8 ESRO-ERROR-SEGMENTED-PDU Format . . . . 51 4.5 Concatenation and Separation . . . . . . . 52 4.5.1 Procedures . . . . . . . . . . 53 4.5.2 ESRO-CONCATENATED-PDU format . . . . . 53 4.6 ES Remote Operations Protocol Parameters . . . . 54 4.6.1 PDU size . . . . . . . . . . 54 4.6.2 Timers . . . . . . . . . . . 55 4.6.3 Use of lower layers . . . . . . . 56 5 ACKNOWLEDGMENTS . . . . . . . . . . . . 56 6 SECURITY CONSIDERATIONS . . . . . . . . . . 56 7 AUTHORS' ADDRESSES . . . . . . . . . . . 56 1 INTRODUCTION Efficient Short Remote Operations (ESRO) provide an efficent mechanism for realization of Remote Procedure Call. This document specifies many aspects of ESRO including: o Service Model o Service Primitves o A Notation for user of the Service o Confirmed Connectionless Protocol (based on a 3-way hand-shake) o Unconfirmed Connectionless Protocol (based on a 2-way hand-shake) Banan, et. al Informational [Page 4] RFC 2188 ESRO September 1997 1.1 Relationship To Existing Remote Operation Services The overall model of ESRO is similar to and consistent with many existing protocols. ESRO's distinguishing characteristic is efficiency. A brief comparison of ESRO and Remote Procedure Calls [7] and Remote Operation Service Elements [1] follows. 1.1.1 ESRO and RPC Remote Procedure Call (RPC) is specified in [7] (RFC-1831) and [6] (RFC-1833). RPC specifications define a remote procedure model that is essentially same as ESRO. RPC's notation uses a syntax quite different from that of ESRO. RPC can rely on a connection oriented or connectionless transport mechanism. When using the connectionless mechanism, the retransmission and reliability issues are considered beyond the scope of the RPC specification. RPC is usually used in combination with External Data Representation, XDR [8] (RFC-1832). 1.1.2 ESRO and ROSE ROSE is specified in [1] and [2]. The service definition for ESRO Service (ESROS) specified in this document is similar ROSE's Notation. The Notation specified in this document for ESROS is similar ROSE's Notation. The ESRO protocol specified in this document is very different from the ROSE protocol [2]. The operation model for ESRO Service (ESROS) is based on Remote Operations Services Element (ROSE) in [1]. In ESROS model both entities can invoke operations. ESRO protocols can accomplish short operations with much less overhead than ROSE. 1.2 Overview of ESROS ESROS provides a service which supports interaction of applications based on a remote operation model. A Remote Operation is invoked by one entity; the other entity attempts to perform the Remote Operation and then reports the outcome of the attempt. The ESROS protocol is designed such that it could support many applications. Banan, et. al Informational [Page 5] RFC 2188 ESRO September 1997 1.3 The Remote Operation Model ESROS provides for performance of operations between two peer sublayers. Users of the ESROS assume the roles of invoker and performer which invoke and perform the operations respectively. An ESROS-User can assume both roles and be an invoker for some operations and be a performer for other operations. The performer is expected to report either the result of the operation or an error. A result reply is sent to the invoker if the operation is successful, and an error reply is sent if the operation is unsuccessful. If the performer is unreachable, the ESROS sends a failure indication primitive to the invoker. Operations are asynchronous and the invoker may continue to invoke further operations without waiting for a reply. Synchronous or serialized operations are also supported as a subset and a special case of asynchronous service. By default the ESRO service provider on both invoker and performer sides supports the asynchronous operation invocation. However, if one side is to support only serialized (synchronous) mode, it should be in agreement with the peer side. ESROS has no authentication mechanism. Authentication is the responsibility of the performer (which is outside of the scope of ESROS) and the performer is not expected to honor the invoker when it is not authenticated. The ESROS operation model is represented in Figure 1. In this example, the ESROS User on the left is the Invoker and the ESROS User on the right is the Performer. The Provider is the entity providing a service to the layer above it. Banan, et. al Informational [Page 6] RFC 2188 ESRO September 1997 ESROS ------------------- ------------------- ESROS User | Layer above ESROS | | Layer above ESROS | User (Invoker) | | | | (Performer) ------------------- ------------------- ^ | | ^ | | | | v | | v ESROS ------------------- ------------------- ESROS Provider | ESROS | | ESROS | Provider ------------------- ------------------- | | | | | | ------------------- ------------------- | UDP | | UDP | ------------------- ------------------- _ _/ _ _/ _ . _/ _ . .* . _/ . * .* . * . * Figure 1: ES Remote Operation Model Banan, et. al Informational [Page 7] RFC 2188 ESRO September 1997 Invoker Performer ESRO SAP ESRO SAP | | | | ESROS-INVOKE.req. | | ESROS-INVOKE.ind. -------->-----------| |-------->--------- | | ESROS-INVOKE-P.conf.| | --------<-----------| | | | | | | | ESROS-RESULT.ind. | | ESROS-RESULT.req. --------<-----------| |--------<--------- | | | | ESROS-RESULT.conf. | |-------->--------- | | | | ESROS-ERROR.ind. | | ESROS-ERROR.req. --------<-----------| |--------<--------- | | | | ESROS-ERROR.conf. | |-------->--------- | | | | | | | | ESROS-FAILURE.ind. | | ESROS-FAILURE.ind. --------<-----------| |-------->--------- | | Figure 2: Time sequence diagram for ESRO services 2 ESRO SERVICE DEFINITIONS ESRO service primitives are illustrated in Figure 2, Table 1 and Table 2. The description of services and primitives comes in the following sections. ESROS-User accesses ESRO services through Efficient Short Remote Operations Service Access Point (ESRO-SAP) as shown in Figure 2. The RESULT.request, ERROR.request and FAILURE.indication service primitives can be implemented in two different modes: