Difference between revisions of "RFC1085"

From RFC-Wiki
imported>Admin
(Created page with " Network Working Group M. RoseRequest for Comments: 1085 TWG ...")
 
Line 5: Line 5:
  
  
Network Working Group                                            M. RoseRequest for Comments: 1085                                          TWG                                                       December 1988
+
Network Working Group                                            M. Rose
 +
Request for Comments: 1085                                          TWG
 +
                                                          December 1988
 +
 
 +
 
 +
                      ISO Presentation Services
 +
                    on top of TCP/IP-based internets
  
                    ISO Presentation Services                on top of TCP/IP-based internets
 
 
Status of this Memo
 
Status of this Memo
This memo proposes a standard for the Internet community.Distribution of this memo is unlimited.
 
== Introduction ==
 
  
[RFC1006] describes a mechanism for providing the ISO transport
+
  This memo proposes a standard for the Internet community.
service on top of the Transmission Control Protocol (TCP) [RFC793]
+
  Distribution of this memo is unlimited.
and Internet Protocol (IP) [RFC791].  Once this method is applied,
+
 
one may implement "real" ISO applications on top of TCP/IP-based
+
1. Introduction
internets, by simply implementing OSI session, presentation, and
+
 
application services on top of the transport service access point
+
  [RFC1006] describes a mechanism for providing the ISO transport
which is provided on top of the TCP.  Although straight-forward,
+
  service on top of the Transmission Control Protocol (TCP) [RFC793]
there are some environments in which the richness provided by the OSI
+
  and Internet Protocol (IP) [RFC791].  Once this method is applied,
application layer is desired, but it is nonetheless impractical to
+
  one may implement "real" ISO applications on top of TCP/IP-based
implement the underlying OSI infrastructure (i.e., the presentation,
+
  internets, by simply implementing OSI session, presentation, and
session, and transport services on top of the TCP).  This memo
+
  application services on top of the transport service access point
describes an approach for providing "stream-lined" support of OSI
+
  which is provided on top of the TCP.  Although straight-forward,
application services on top of TCP/IP-based internets for such
+
  there are some environments in which the richness provided by the OSI
constrained environments.
+
  application layer is desired, but it is nonetheless impractical to
 +
  implement the underlying OSI infrastructure (i.e., the presentation,
 +
  session, and transport services on top of the TCP).  This memo
 +
  describes an approach for providing "stream-lined" support of OSI
 +
  application services on top of TCP/IP-based internets for such
 +
  constrained environments.
 +
 
 +
2. Terminology
 +
 
 +
  In as much as this memo is concerned primarily with concepts defined
 +
  in the framework of Open Systems Interconnection (OSI) as promulgated
 +
  by the International Organization for Standardization (ISO), the
 +
  terminology used herein is intended to be entirely consistent within
 +
  that domain of discourse.  This perspective is being taken despite
 +
  the expressed intent of implementing the mechanism proposed by this
 +
  memo in the Internet and other TCP/IP-based internets.  For those
 +
  more familiar with the terminology used in this latter domain, the
 +
  author is apologetic but unyielding.
 +
 
 +
  Although no substitute for the "correct" definitions given in the
 +
  appropriate ISO documents, here is a short summary of the terms used
 +
  herein.
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
Rose                                                            [Page 1]
 +
 
 +
RFC 1085              ISO Presentation Services          December 1988
 +
 
 +
 
 +
      Application Context:
 +
        The collection of application service elements which
 +
        cooperatively interact within an application-entity.
 +
 
 +
      Application Service Element:
 +
        A standardized mechanism, defined by both a service and a
 +
        protocol, which provides a well-defined capability, e.g.,
 +
 
 +
        ROSE -  the Remote Operations Service Element,
 +
                which orchestrates the invocation of "total"
 +
                operations between application-entities [ISO9066/2].
 +
 
 +
        ACSE -  the Association Control Service Element,
 +
                which manages associations between application
 +
                entities [ISO8650].
 +
 
 +
      Object Identifier:
 +
        An ordered set of integers, used for authoritative
 +
        identification.
 +
 
 +
      Presentation Service:
 +
        A set of facilities used to manage a connection between two
 +
        application-entities.  The fundamental responsibility of the
 +
        presentation service is to maintain transfer syntaxes which
 +
        are used to serialize application protocol data units for
 +
        transmission on the network and subsequent de-serialization
 +
        for reception.
 +
 
 +
      Protocol Data Unit (PDU):
 +
        A data object exchanged between service providers.
 +
 
 +
      Serialization:
 +
        The process of applying an abstract transfer notation to an
 +
        object described using abstract syntax notation one (ASN.1)
 +
        [ISO8824] in order to produce a stream of octets.
 +
        De-serialization is the inverse process.
 +
 
 +
        It is assumed that the reader is familiar with terminology
 +
        pertaining to the reference model [ISO7498], to the service
 +
        conventions in the model [ISO8509], and to the
 +
        connection-oriented presentation service [ISO8822].
 +
 
 +
3. Scope
 +
 
 +
  The mechanism proposed by this memo is targeted for a particular
 +
  class of OSI applications, namely those entities whose application
 +
  context contains only an Association Control Service Element (ACSE)
 +
  and a Remote Operations Service Element (ROSE).  In addition, a
 +
 
 +
 
 +
 
 +
Rose                                                            [Page 2]
 +
 
 +
RFC 1085              ISO Presentation Services          December 1988
 +
 
 +
 
 +
  Directory Services Element (DSE) is assumed for use by the
 +
  application-entity, but only in a very limited sense.  The
 +
  organization of such an entity is as follows:
 +
 
 +
 
 +
      +------------------------------------------------------------+
 +
      |                                                            |
 +
      |                    Application-Entity                    |
 +
      |                                                            |
 +
      |    +------+              +------+              +------+    |
 +
      |    | ACSE |              | ROSE |              | DSE  |    |
 +
      |    +------+              +------+              +------+    |
 +
      |                                                            |
 +
      +------------------------------------------------------------+
 +
      |                                                            |
 +
      |                Presentation Services                      |
 +
      |                                                            |
 +
      |    P-CONNECT        P-RELEASE        P-DATA              |
 +
      |                      P-U-ABORT                            |
 +
      |                      P-P-ABORT                            |
 +
      |                                                            |
 +
      +------------------------------------------------------------+
 +
 
  
== Terminology ==
+
  The mechanism proposed by this memo is not applicable to entities
 +
  whose application context is more extensive (e.g., contains a
 +
  Reliable Transfer Service Element).  The mechanism proposed by this
 +
  memo could be modified to support additional elements.  However, such
 +
  extensions would, at this time, merely serve to defeat the purpose of
 +
  providing the minimal software infrastructure required to run the
 +
  majority of OSI applications.
  
In as much as this memo is concerned primarily with concepts defined
+
  The motivation for this memo was initially derived from a requirement
in the framework of Open Systems Interconnection (OSI) as promulgated
+
  to run the ISO Common Management Information Protocol (CMIP) in
by the International Organization for Standardization (ISO), the
+
  TCP/IP-based internets.  In its current definition, CMIP uses
terminology used herein is intended to be entirely consistent within
+
  precisely the application service elements provided for herein.  It
that domain of discourse.  This perspective is being taken despite
+
  may be desirable to offer CMIP users a quality of service different
the expressed intent of implementing the mechanism proposed by this
+
  than the one offered by a connection with a high-quality level of
memo in the Internet and other TCP/IP-based internets.  For those
+
  reliability.  This would permit a reduced utilization of connection-
more familiar with the terminology used in this latter domain, the
+
  related resources.  This memo proposes a mechanism to implement this
author is apologetic but unyielding.
+
  less robust -- and less costly -- quality of service.
  
Although no substitute for the "correct" definitions given in the
+
4. Approach
appropriate ISO documents, here is a short summary of the terms used
 
herein.
 
  
 +
  The approach proposed by this memo relies on the following
 +
  architectural nuances:
  
  
Line 48: Line 168:
  
  
 +
Rose                                                            [Page 3]
  
 +
RFC 1085              ISO Presentation Services          December 1988
  
  Application Context:
 
      The collection of application service elements which
 
      cooperatively interact within an application-entity.
 
  
  Application Service Element:
+
    - the TCP is a stream-oriented transport protocol
      A standardized mechanism, defined by both a service and a
 
      protocol, which provides a well-defined capability, e.g.,
 
  
      ROSE - the Remote Operations Service Element,
+
    - ASN.1 objects, when represented as a stream of octets are
              which orchestrates the invocation of "total"
+
      self-delimiting
              operations between application-entities [ISO9066/2].
 
  
      ACSE - the Association Control Service Element,
+
    - The ISO presentation service permits the exchange of ASN.1
              which manages associations between application
+
      objects
              entities [ISO8650].
 
  
  Object Identifier:
+
    - The ACSE and ROSE require the following presentation
      An ordered set of integers, used for authoritative
+
      facilities:
      identification.
 
  
  Presentation Service:
+
          The Connection Establishment Facility
      A set of facilities used to manage a connection between two
 
      application-entities.  The fundamental responsibility of the
 
      presentation service is to maintain transfer syntaxes which
 
      are used to serialize application protocol data units for
 
      transmission on the network and subsequent de-serialization
 
      for reception.
 
  
  Protocol Data Unit (PDU):
+
          The Connection Termination Facility
      A data object exchanged between service providers.
 
  
  Serialization:
+
          The Information Transfer Facility (P-DATA
      The process of applying an abstract transfer notation to an
+
          service only)
      object described using abstract syntax notation one (ASN.1)
 
      [ISO8824] in order to produce a stream of octets.
 
      De-serialization is the inverse process.
 
  
      It is assumed that the reader is familiar with terminology
+
    - The majority of the parameters used by the services which
      pertaining to the reference model [ISO7498], to the service
+
      provide these facilities can be "hard-wired" to avoid
      conventions in the model [ISO8509], and to the
+
      negotiation
      connection-oriented presentation service [ISO8822].
 
  
== Scope ==
+
  In principle, these nuances suggest that a "cheap" emulation of the
 +
  ISO presentation services could be implemented by simply serializing
 +
  ASN.1 objects over a TCP connection.  This approach is precisely what
 +
  is proposed by this memo.
  
The mechanism proposed by this memo is targeted for a particular
+
  Given this perspective, this memo details how the essential features
class of OSI applications, namely those entities whose application
+
  of the ISO presentation service may be maintained while using a
context contains only an Association Control Service Element (ACSE)
+
  protocol entirely different from the one given in [ISO8823]. The
and a Remote Operations Service Element (ROSE).  In addition, a
+
  overall composition proposed by this memo is as follows:
  
  
 +
  +-----------+                                      +-----------+
 +
  |  PS-user  |                                      |  PS-user  |
 +
  +-----------+                                      +-----------+
 +
        |                                                    |
 +
        | PS interface                          PS interface |
 +
        |  [ISO8822]                                          |
 +
        |                                                    |
 +
  +----------+  ISO Presentation Services on the TCP  +----------+
 +
  |  client  |-----------------------------------------|  server  |
 +
  +----------+              (this memo)                +----------+
 +
        |                                                    |
 +
        | TCP interface                        TCP interface |
 +
        |  [RFC793]                                          |
 +
        |                                                    |
  
  
  
Directory Services Element (DSE) is assumed for use by the
 
application-entity, but only in a very limited sense.  The
 
organization of such an entity is as follows:
 
  
 +
Rose                                                            [Page 4]
  
  +------------------------------------------------------------+
+
RFC 1085              ISO Presentation Services           December 1988
  |                                                            |
 
  |                    Application-Entity                    |
 
  |                                                            |
 
  |    +------+              +------+              +------+    |
 
  |    | ACSE |              | ROSE |              | DSE  |    |
 
  |    +------+              +------+              +------+    |
 
  |                                                            |
 
  +------------------------------------------------------------+
 
  |                                                            |
 
  |                Presentation Services                       |
 
  |                                                            |
 
  |    P-CONNECT        P-RELEASE        P-DATA              |
 
  |                      P-U-ABORT                            |
 
  |                      P-P-ABORT                            |
 
  |                                                            |
 
  +------------------------------------------------------------+
 
  
  
The mechanism proposed by this memo is not applicable to entities
+
  In greater detail, the "client" and "server" boxes implement the
whose application context is more extensive (e.g., contains a
+
  protocol described in this memo.  Each box contains three modules:
Reliable Transfer Service Element).  The mechanism proposed by this
 
memo could be modified to support additional elementsHowever, such
 
extensions would, at this time, merely serve to defeat the purpose of
 
providing the minimal software infrastructure required to run the
 
majority of OSI applications.
 
  
The motivation for this memo was initially derived from a requirement
+
      - a dispatch module, which provides the presentation services
to run the ISO Common Management Information Protocol (CMIP) in
+
        interface,
TCP/IP-based internets.  In its current definition, CMIP uses
 
precisely the application service elements provided for herein.  It
 
may be desirable to offer CMIP users a quality of service different
 
than the one offered by a connection with a high-quality level of
 
reliability.  This would permit a reduced utilization of connection-
 
related resources.  This memo proposes a mechanism to implement this
 
less robust -- and less costly -- quality of service.
 
  
== Approach ==
+
      - a serialization module, containing a serializer, which takes
 +
        an ASN.1 object and applies the encoding rules of [ISO8825]
 +
        to produce a stream of octets, and a de-serializer, which
 +
        performs the inverse operation, and
  
The approach proposed by this memo relies on the following
+
      - a network module, which manages a TCP connection.
architectural nuances:
 
  
 +
  The software architecture used to model a network entity using this
 +
  approach is as follows:
  
  
 +
  +---------+    +----------+                                  +-----+
 +
  |        |    |          |  output +---------------+  input  |  n  |
 +
  |        |    |          |<--------| de-serializer |<--------|  e  |
 +
  |        |    |          |  queue +---------------+  queue  |  t  |
 +
  | PS-user |----| dispatch |                                  |  w  |
 +
  |        |    |          |  input  +---------------+ output  |  o  |
 +
  |        |    |          |-------->|  serializer  |-------->|  r  |
 +
  |        |    |          |  queue  +---------------+ queue  |  k  |
 +
  +---------+    +----------+                                  +-----+
  
 +
                                |---- serialization module ----|
  
  
 +
  The ISO presentation layer is concerned primarily with the
 +
  negotiation of transfer syntaxes in addition to the transformation to
 +
  and from transfer syntax.  However, using the mechanism proposed by
 +
  this memo, no negotiation component will be employed.  This memo
 +
  specifies the fixed contexts which exist over each presentation
 +
  connection offered.  This memo further specifies other constants
 +
  which are used in order to eliminate the need for presentation layer
 +
  negotiation.
  
  - the TCP is a stream-oriented transport protocol
+
5. Fundamental Parameters
  
  - ASN.1 objects, when represented as a stream of octets are
+
  There are certain parameters which are used by the presentation
    self-delimiting
+
  service and are defined here.
  
  - The ISO presentation service permits the exchange of ASN.1
+
      1. Presentation address:
    objects
 
  
  - The ACSE and ROSE require the following presentation
+
      The structure of a presentation address is presented in Addendum 3
    facilities:
+
      to [ISO7498].  This memo interprets a presentation address as an
  
        The Connection Establishment Facility
 
  
        The Connection Termination Facility
 
  
        The Information Transfer Facility (P-DATA
+
Rose                                                            [Page 5]
        service only)
 
  
  - The majority of the parameters used by the services which
+
RFC 1085              ISO Presentation Services          December 1988
    provide these facilities can be "hard-wired" to avoid
 
    negotiation
 
  
In principle, these nuances suggest that a "cheap" emulation of the
 
ISO presentation services could be implemented by simply serializing
 
ASN.1 objects over a TCP connection.  This approach is precisely what
 
is proposed by this memo.
 
  
Given this perspective, this memo details how the essential features
+
      ordered-tuple containing:
of the ISO presentation service may be maintained while using a
 
protocol entirely different from the one given in [ISO8823]. The
 
overall composition proposed by this memo is as follows:
 
  
 +
        - one or more network addresses
 +
        - a transport selector
 +
        - a session selector
 +
        - a presentation selector
  
+-----------+                                      +-----------+
+
      Each selector is an uninterpreted octet string of possibly zero
| PS-user  |                                      |  PS-user  |
+
      length. The mechanism proposed in this memo completely ignores
+-----------+                                      +-----------+
+
      the values of these selectors. Note however that the value of the
    |                                                    |
+
      presentation selector is preserved by the provider.
    | PS interface                          PS interface |
 
    |  [ISO8822]                                          |
 
    |                                                    |
 
+----------+  ISO Presentation Services on the TCP  +----------+
 
|  client  |-----------------------------------------|  server  |
 
+----------+              (this memo)                +----------+
 
    |                                                    |
 
    | TCP interface                        TCP interface |
 
    | [RFC793]                                          |
 
    |                                                    |
 
  
 +
      A network address is interpreted as containing three components:
  
 +
        - a 32-bit IP address
  
 +
        - a set indicating which transport services are available
 +
          at the IP address  (currently only two members are defined:
 +
          TCP and UDP; as experience is gained, other transport
 +
          services may be added); as a local matter, if a member is
 +
          present it may have an "intensity" associated with it:
 +
          either "possibly present" or "definitely present"
  
 +
        - a 16-bit port number
  
 +
      As a consequence of these interpretations, any application-entity
 +
      residing in the network can be identified by its network address.
  
In greater detail, the "client" and "server" boxes implement the
+
      2. Presentation context list
protocol described in this memo. Each box contains three modules:
 
  
  - a dispatch module, which provides the presentation services
+
      A list of one or more presentation contexts.  Each presentation
    interface,
+
      context has three components:
  
  - a serialization module, containing a serializer, which takes
+
        - a presentation context identifier (PCI), an integer
    an ASN.1 object and applies the encoding rules of [ISO8825]
 
    to produce a stream of octets, and a de-serializer, which
 
    performs the inverse operation, and
 
  
  - a network module, which manages a TCP connection.
+
        - an abstract syntax name, an object identifier
  
The software architecture used to model a network entity using this
+
        - an abstract transfer name, an object identifier
approach is as follows:
 
  
 +
      The range of values these components may take is severely
 +
      restricted by this memo.  In particular, exactly two contexts are
 +
      defined: one for association control and the other for the
 +
      specific application service element which is being carried as ROS
 +
      APDUs (see the section on connection establishment for the precise
 +
      values).
  
+---------+    +----------+                                  +-----+
+
      In addition, if the presentation context list appears in a
|        |    |          |  output +---------------+  input  |  n  |
+
      "result" list (e.g., the Presentation context result list
|        |    |          |<--------| de-serializer |<--------|  e |
 
|        |    |          |  queue +---------------+  queue  |  t  |
 
| PS-user |----| dispatch |                                  |  w  |
 
|        |    |          |  input  +---------------+ output  |  o  |
 
|        |    |          |-------->|  serializer  |-------->|  r  |
 
|        |    |          |  queue  +---------------+ queue  |  k  |
 
+---------+    +----------+                                  +-----+
 
  
                              |---- serialization module ----|
 
  
  
The ISO presentation layer is concerned primarily with the
+
Rose                                                            [Page 6]
negotiation of transfer syntaxes in addition to the transformation to
 
and from transfer syntax.  However, using the mechanism proposed by
 
this memo, no negotiation component will be employed.  This memo
 
specifies the fixed contexts which exist over each presentation
 
connection offered.  This memo further specifies other constants
 
which are used in order to eliminate the need for presentation layer
 
negotiation.
 
  
== Fundamental Parameters ==
+
RFC 1085              ISO Presentation Services          December 1988
  
There are certain parameters which are used by the presentation
 
service and are defined here.
 
  
  1. Presentation address:
+
      parameter for the P-CONNECT service), a fourth component is
 +
      present:
  
  The structure of a presentation address is presented in Addendum 3
+
        - an acceptance indicator
  to [ISO7498].  This memo interprets a presentation address as an
 
  
 +
      which indicates if the context was accepted by both the service
 +
      provider and the remote peer.  If the context was not accept, a
 +
      brief reason, such as "abstract syntax not supported" is given.
  
 +
      For the novice reader, one might think of the abstract syntax
 +
      notation as defining the vocabulary of some language, that is, it
 +
      lists the words which can be spoken.  In contrast, the abstract
 +
      transfer notation defines the pronunciation of the language.
  
 +
      3. User data
  
 +
      User data passes through the presentation service interface as
 +
      ASN.1 objects (in a locally defined form).  Associated with each
 +
      object is a presentation context identifier.  The PCI
 +
      distinguishes the context for which the data is intended.  The
 +
      range of values the PCI may take is severely restricted by this
 +
      memo.  Exactly one of two contexts must always be used: either the
 +
      value for the ACSE presentation context or the value for the ROSE.
  
  ordered-tuple containing:
+
      4. Quality of Service
  
       - one or more network addresses
+
       Quality of service is a collection of "elements".  Each element
       - a transport selector
+
      denotes some characteristics of the communication, e.g., desired
       - a session selector
+
      throughput, and some value in an arbitrary unit of measure.  For
       - a presentation selector
+
      our purposes, only one quality of service element is interpreted,
 +
       "transport-mapping".  Currently, the "transport-mapping" element
 +
      takes on one of two values: "tcp-based" or "udp-based".  At
 +
       present, the two values may also be referred to as "high-quality"
 +
       or "low-quality", respectively.
  
  Each selector is an uninterpreted octet string of possibly zero
+
      As experience is gained, other values may be addedThese values
  lengthThe mechanism proposed in this memo completely ignores
+
      would correspond directly to the new transport services which are
  the values of these selectors.  Note however that the value of the
+
      listed in the network address.
  presentation selector is preserved by the provider.
 
  
  A network address is interpreted as containing three components:
+
      5. Version of Session Service
  
       - a 32-bit IP address
+
       Some application service elements (e.g., the ACSE) invoke
 +
      different procedures based on the (negotiated) version of the
 +
      session service available.  Implementations of this memo always
 +
      indicate that session service version 2 has been negotiated.
  
      - a set indicating which transport services are available
 
        at the IP address  (currently only two members are defined:
 
        TCP and UDP; as experience is gained, other transport
 
        services may be added); as a local matter, if a member is
 
        present it may have an "intensity" associated with it:
 
        either "possibly present" or "definitely present"
 
  
      - a 16-bit port number
 
  
  As a consequence of these interpretations, any application-entity
 
  residing in the network can be identified by its network address.
 
  
  2. Presentation context list
 
  
  A list of one or more presentation contexts.  Each presentation
 
  context has three components:
 
  
      - a presentation context identifier (PCI), an integer
+
Rose                                                            [Page 7]
  
      - an abstract syntax name, an object identifier
+
RFC 1085              ISO Presentation Services          December 1988
  
      - an abstract transfer name, an object identifier
 
  
  The range of values these components may take is severely
+
6. Choice of Transport Service
  restricted by this memo.  In particular, exactly two contexts are
 
  defined: one for association control and the other for the
 
  specific application service element which is being carried as ROS
 
  APDUs (see the section on connection establishment for the precise
 
  values).
 
  
   In addition, if the presentation context list appears in a
+
   Discussion thus far has centered along the use of the TCP as the
   "result" list (e.g., the Presentation context result list
+
   underlying transport protocol. However, it has also been noted that
 +
  it may be desirable to permit a quality of service with less
 +
  reliability in order to take advantage of some other characteristic
 +
  of the transport service.
  
 +
  The introduction of this service has several profound impacts on the
 +
  model, and it is beyond the scope of this memo to enumerate these
 +
  impacts.  However, this memo does propose a mechanism by which such a
 +
  facility is implemented.
  
 +
  To begin, we use the quality of service parameter for the P-CONNECT
 +
  service to select an underlying transport service.  Only one element
 +
  is currently interpreted, "transport-mapping" which takes the value
 +
  "tcp-based" or "udp-based".  If the value is "tcp-based", then the
 +
  presentation provider will use TCP as the underlying transport
 +
  service. If, however, the value of "transport-mapping" is "udp-
 +
  based", then the presentation provider will use the UDP instead.
  
 +
  The User Datagram Protocol (UDP) [RFC768] is used to implement the
 +
  udp-based service.  Very few transport-level facilities are placed on
 +
  top of the UDP service, i.e., it is not the intent of this memo to
 +
  "re-invent" the facilities in the TCP.  Hence, It is critical to
 +
  understand that
  
 +
          low-quality means LOW-QUALITY!
  
   parameter for the P-CONNECT service), a fourth component is
+
   Because the UDP is a packet-oriented protocol, it is necessary to
   present:
+
  slightly redefine the role of the serialization module.  For the
 +
  serializer, we say that each top-level ASN.1 object placed on the
 +
  input queue will form a single UDP datagram on the output queue which
 +
  is given to the network.  Similarly, for the de-serializer, we say
 +
  that each UDP datagram placed on the input queue from the network
 +
  will form a single top-level ASN.1 object placed on the output queue.
 +
  The term "top-level ASN.1 object" refers, of course, to the protocol
 +
   data units being exchanged by the presentation providers.
  
      - an acceptance indicator
+
  It should be noted that in its current incarnation, this memo permits
 +
  the choice of two different transport protocols, e.g., the TCP or the
 +
  UDP.  However, as experience is gained and as other transport
 +
  protocols are deployed (e.g., the VMTP), then future incarnations of
 +
  this memo will permit these transport protocols to be used.  This is
 +
  a three step process: first, the set of transport services defined
 +
  for the network address is updated; second, a corresponding value is
 +
  added to the range of the quality of service element "transport-
 +
  mapping"; and, third, the following sections of this memo are
  
  which indicates if the context was accepted by both the service
 
  provider and the remote peer.  If the context was not accept, a
 
  brief reason, such as "abstract syntax not supported" is given.
 
  
  For the novice reader, one might think of the abstract syntax
 
  notation as defining the vocabulary of some language, that is, it
 
  lists the words which can be spoken.  In contrast, the abstract
 
  transfer notation defines the pronunciation of the language.
 
  
  3. User data
+
Rose                                                            [Page 8]
  
  User data passes through the presentation service interface as
+
RFC 1085              ISO Presentation Services          December 1988
  ASN.1 objects (in a locally defined form).  Associated with each
 
  object is a presentation context identifier.  The PCI
 
  distinguishes the context for which the data is intended.  The
 
  range of values the PCI may take is severely restricted by this
 
  memo.  Exactly one of two contexts must always be used: either the
 
  value for the ACSE presentation context or the value for the ROSE.
 
  
  4. Quality of Service
 
  
   Quality of service is a collection of "elements".  Each element
+
   modified accordingly.
  denotes some characteristics of the communication, e.g., desired
 
  throughput, and some value in an arbitrary unit of measure.  For
 
  our purposes, only one quality of service element is interpreted,
 
  "transport-mapping".  Currently, the "transport-mapping" element
 
  takes on one of two values: "tcp-based" or "udp-based".  At
 
  present, the two values may also be referred to as "high-quality"
 
  or "low-quality", respectively.
 
  
  As experience is gained, other values may be added.  These values
+
7. Connection Establishment
  would correspond directly to the new transport services which are
 
  listed in the network address.
 
  
   5. Version of Session Service
+
   The Connection Establishment facility consists of one service, the
 +
  P-CONNECT service.
  
  Some application service elements (e.g., the ACSE) invoke
+
7.1. The P-CONNECT Service
  different procedures based on the (negotiated) version of the
 
  session service available.  Implementations of this memo always
 
  indicate that session service version 2 has been negotiated.
 
  
 +
  This service is used to bring two identified application-entities
 +
  into communication.  Its successful use results in a presentation
 +
  connection, with an initial defined context set, being established
 +
  between then.  This connection is available for their subsequent
 +
  communication.  This is a confirmed service whose effects are
 +
  sequenced and non-destructive.
  
 +
  If the udp-based service is selected, then a presentation connection
 +
  is formed which should be used infrequently and will have minimal
 +
  reliability characteristics.
  
 +
  For our purposes, the P-CONNECT service:
  
 +
      - requests TCP or UDP resources,
  
 +
      - builds a fixed defined context set, and
  
 +
      - exchanges initial user data.
  
 +
  Following are the interpretation of and the defaults assigned to the
 +
  parameters of the P-CONNECT service:
  
== Choice of Transport Service ==
+
      1. Calling Presentation Address
  
Discussion thus far has centered along the use of the TCP as the
+
        This is a presentation address.  Although the ISO presentation
underlying transport protocol.  However, it has also been noted that
+
        service states that this parameter is mandatory, in practice, a
it may be desirable to permit a quality of service with less
+
        local implementation rule may be used to determine an
reliability in order to take advantage of some other characteristic
+
        "ephemeral" address to use.
of the transport service.
 
  
The introduction of this service has several profound impacts on the
+
      2. Called Presentation Address
model, and it is beyond the scope of this memo to enumerate these
 
impacts.  However, this memo does propose a mechanism by which such a
 
facility is implemented.
 
  
To begin, we use the quality of service parameter for the P-CONNECT
+
        This is a presentation address.  Note that when issuing the P-
service to select an underlying transport service. Only one element
+
        CONNECT.REQUEST primitive, this parameter may contain more than
is currently interpreted, "transport-mapping" which takes the value
+
        one network addressIn the P-CONNECT.INDICATION primitive
"tcp-based" or "udp-based"If the value is "tcp-based", then the
+
        however, only one network address, the one actually used to
presentation provider will use TCP as the underlying transport
+
        establish the presentation connection, is present.  (Appendix C
service. If, however, the value of "transport-mapping" is "udp-
+
        describes a strategy which might be used to determine the actual
based", then the presentation provider will use the UDP instead.
+
        network address).
  
The User Datagram Protocol (UDP) [RFC768] is used to implement the
 
udp-based service.  Very few transport-level facilities are placed on
 
top of the UDP service, i.e., it is not the intent of this memo to
 
"re-invent" the facilities in the TCP.  Hence, It is critical to
 
understand that
 
  
        low-quality means LOW-QUALITY!
 
  
Because the UDP is a packet-oriented protocol, it is necessary to
 
slightly redefine the role of the serialization module.  For the
 
serializer, we say that each top-level ASN.1 object placed on the
 
input queue will form a single UDP datagram on the output queue which
 
is given to the network.  Similarly, for the de-serializer, we say
 
that each UDP datagram placed on the input queue from the network
 
will form a single top-level ASN.1 object placed on the output queue.
 
The term "top-level ASN.1 object" refers, of course, to the protocol
 
data units being exchanged by the presentation providers.
 
  
It should be noted that in its current incarnation, this memo permits
+
Rose                                                            [Page 9]
the choice of two different transport protocols, e.g., the TCP or the
 
UDP.  However, as experience is gained and as other transport
 
protocols are deployed (e.g., the VMTP), then future incarnations of
 
this memo will permit these transport protocols to be used.  This is
 
a three step process: first, the set of transport services defined
 
for the network address is updated; second, a corresponding value is
 
added to the range of the quality of service element "transport-
 
mapping"; and, third, the following sections of this memo are
 
  
 +
RFC 1085              ISO Presentation Services          December 1988
  
  
 +
      3. Responding Presentation Address
  
 +
        This parameter is identical to the value of the Called
 +
        Presentation Address parameter of the P-CONNECT.INDICATION
 +
        primitive.
  
modified accordingly.
+
      4. Multiple defined Contexts
  
== Connection Establishment ==
+
        Always TRUE.  Note that this parameter is present only in the
 +
        DIS version of the presentation service.
  
The Connection Establishment facility consists of one service, the
+
      5. Presentation context definition list
P-CONNECT service.
 
  
=== The P-CONNECT Service ===
+
      Two contexts are defined:
  
This service is used to bring two identified application-entities
+
      PCI    Abstract Syntax Name            Abstract Transfer Name
into communication. Its successful use results in a presentation
+
      ---    --------------------            ----------------------
connection, with an initial defined context set, being established
+
      1      specific to the application     "iso asn.1 abstract
between then.  This connection is available for their subsequent
+
                                              transfer"
communication. This is a confirmed service whose effects are
+
                                              1.0.8825
sequenced and non-destructive.
 
  
If the udp-based service is selected, then a presentation connection
+
      3      "acse pci version 1"            "iso asn.1 abstract
is formed which should be used infrequently and will have minimal
+
                                              transfer"
reliability characteristics.
+
              2.2.1.0.0                      1.0.8825
  
For our purposes, the P-CONNECT service:
+
      The abstract syntax and transfer names for the ACSE PCI are for
 +
      use with the DIS version of association control.  If the IS
 +
      version is being used, then this PCI is used instead:
  
  - requests TCP or UDP resources,
+
      3      "acse pci version 1"            "asn.1 basic encoding"
 +
              2.2.1.0.1                      2.1.1
  
  - builds a fixed defined context set, and
+
      6. Presentation context result list
  
  - exchanges initial user data.
+
        Identical to the Presentation context definition list with the
 +
        addition that the acceptance indicator for both contexts is
 +
        "accepted".
  
Following are the interpretation of and the defaults assigned to the
+
      7. Default Context Name
parameters of the P-CONNECT service:
 
  
  1. Calling Presentation Address
+
        None.
  
    This is a presentation address.  Although the ISO presentation
+
      8. Default Context Result
    service states that this parameter is mandatory, in practice, a
 
    local implementation rule may be used to determine an
 
    "ephemeral" address to use.
 
  
  2. Called Presentation Address
+
        Not applicable.
  
    This is a presentation address.  Note that when issuing the P-
 
    CONNECT.REQUEST primitive, this parameter may contain more than
 
    one network address.  In the P-CONNECT.INDICATION primitive
 
    however, only one network address, the one actually used to
 
    establish the presentation connection, is present.  (Appendix C
 
    describes a strategy which might be used to determine the actual
 
    network address).
 
  
  
Line 473: Line 560:
  
  
 +
Rose                                                          [Page 10]
  
  3. Responding Presentation Address
+
RFC 1085              ISO Presentation Services          December 1988
  
    This parameter is identical to the value of the Called
 
    Presentation Address parameter of the P-CONNECT.INDICATION
 
    primitive.
 
  
  4. Multiple defined Contexts
+
      9. Quality of Service
  
    Always TRUENote that this parameter is present only in the
+
        The element "transport-mapping" takes the value "tcp-based" or
    DIS version of the presentation service.
+
        "udp-based"In the future the range of values may be extended.
  
  5. Presentation context definition list
+
      10. Presentation Requirements
  
  Two contexts are defined:
+
        None (the kernel functional unit is always used).
  
  PCI    Abstract Syntax Name            Abstract Transfer Name
+
      11. Session Requirements
  ---    --------------------            ----------------------
 
    1      specific to the application    "iso asn.1 abstract
 
                                          transfer"
 
                                          1.0.8825
 
  
    3      "acse pci version 1"            "iso asn.1 abstract
+
        Full duplex.
                                          transfer"
 
          2.2.1.0.0                      1.0.8825
 
  
  The abstract syntax and transfer names for the ACSE PCI are for
+
      12. Initial synchronization point serial number
  use with the DIS version of association control. If the IS
 
  version is being used, then this PCI is used instead:
 
  
    3      "acse pci version 1"            "asn.1 basic encoding"
+
        None.
          2.2.1.0.1                      2.1.1
 
  
  6. Presentation context result list
+
      13. Initial Assignment of tokens
  
    Identical to the Presentation context definition list with the
+
        None.
    addition that the acceptance indicator for both contexts is
 
    "accepted".
 
  
  7. Default Context Name
+
      14. Session connection identifier
  
    None.
+
        Unlike the "real" presentation service, depending on the quality
 +
        of service selected, this parameter may have great significance
 +
        to presentation provider.  Hence, the following format of the
 +
        session connection identifier is mandated by this memo.
  
  8. Default Context Result
+
        user data:        a local string encoded as a T.61 string
 +
                          using ASN.1, e.g., given string "gonzo":
  
    Not applicable.
+
                          14    05    67  6f  6e  7a  6f
 +
                          tag  length  "g"  "o"  "n"  "z"  "o"
  
 +
        common data:      a universal time encoding using ASN.1, e.g.,
 +
                          given time "880109170845":
  
 +
                          17    0c    38  38  30  31  30  ...
 +
                          tag  length  "8"  "8"  "0"  "1"  "0"  ...
  
 +
        additional data:  any string encoded as a T.61 string using ASN.1
 +
                          (optional)
  
 +
        As a local convention, the presentation provider may disregard
 +
        the first two octets of each data component for transmission on
 +
        the network as when the session connection identifier is
 +
        represented with ASN.1, the tag and length octets will be added
 +
        anyway.
  
  
  
 +
Rose                                                          [Page 11]
  
  9. Quality of Service
+
RFC 1085              ISO Presentation Services          December 1988
  
    The element "transport-mapping" takes the value "tcp-based" or
 
    "udp-based".  In the future the range of values may be extended.
 
  
  10. Presentation Requirements
+
      15. User Data
  
    None (the kernel functional unit is always used).
+
        A single ASN.1 object is present, the appropriate A-ASSOCIATE
 +
        PDU, carried in presentation context 3.
  
  11. Session Requirements
+
      16. Result
  
    Full duplex.
+
        One of the following values: acceptance, user-rejection,
 +
        provider-rejection (transient), or provider-rejection
 +
        (permanent).
  
  12. Initial synchronization point serial number
+
8. Connection Termination
  
    None.
+
  The Connection Termination facility consists of three services, the
 +
  P-RELEASE, P-U-ABORT, and P-P-ABORT services.
  
  13. Initial Assignment of tokens
+
8.1. The P-RELEASE Service
  
    None.
+
  This service provides the service user with access to a negotiated
 +
  release facility.  This service has effects which are sequenced and
 +
  non-destructive.  Either presentation user is permitted to request
 +
  this service.  However, in the event of collision, a provider-
 +
  initiated abort procedure will be invoked.
  
   14. Session connection identifier
+
   If the udp-based service is selected, then any data in transit may be
 +
  discarded.
  
    Unlike the "real" presentation service, depending on the quality
+
      For our purposes, the P-RELEASE service:
    of service selected, this parameter may have great significance
 
    to presentation provider.  Hence, the following format of the
 
    session connection identifier is mandated by this memo.
 
  
    user data:        a local string encoded as a T.61 string
+
      - waits for the serialization module to drain,
                      using ASN.1, e.g., given string "gonzo":
 
  
                      14    05    67  6f  6e  7a  6f
+
      - sends release user data, and
                      tag  length  "g"  "o"  "n"  "z"  "o"
 
  
    common data:      a universal time encoding using ASN.1, e.g.,
+
      - releases TCP or UDP resources
                      given time "880109170845":
 
  
                      17    0c    38  38  30  31  30  ...
+
  Following are the interpretation of and the defaults assigned to the
                      tag  length  "8"  "8"  "0"  "1"  "0"  ...
+
  parameters of the P-RELEASE service:
  
    additional data:  any string encoded as a T.61 string using ASN.1
+
      1. Result
                      (optional)
 
  
    As a local convention, the presentation provider may disregard
+
        Release accepted.
    the first two octets of each data component for transmission on
 
    the network as when the session connection identifier is
 
    represented with ASN.1, the tag and length octets will be added
 
    anyway.
 
  
 +
      2. User data
  
 +
        A single ASN.1 object is present, the appropriate A-RELEASE PDU,
  
  
  
  15. User Data
 
  
    A single ASN.1 object is present, the appropriate A-ASSOCIATE
 
    PDU, carried in presentation context 3.
 
  
  16. Result
 
  
    One of the following values: acceptance, user-rejection,
+
Rose                                                          [Page 12]
    provider-rejection (transient), or provider-rejection
 
    (permanent).
 
  
== Connection Termination ==
+
RFC 1085              ISO Presentation Services          December 1988
  
The Connection Termination facility consists of three services, the
 
P-RELEASE, P-U-ABORT, and P-P-ABORT services.
 
  
=== The P-RELEASE Service ===
+
8.2. The P-U-ABORT Service
  
This service provides the service user with access to a negotiated
+
  This service can be used by either presentation user to force the
release facility.  This service has effects which are sequenced and
+
  release of a presentation connection at any time and have the
non-destructive.  Either presentation user is permitted to request
+
  correspondent presentation user informed of this termination.  This
this service.  However, in the event of collision, a provider-
+
  service has effects which are not sequenced with respect to preceding
initiated abort procedure will be invoked.
+
  service invocations and may be destructiveIt does not require the
 +
  agreement of both service users.
  
If the udp-based service is selected, then any data in transit may be
+
      For our purposes, the P-U-ABORT service:
discarded.
 
  
  For our purposes, the P-RELEASE service:
+
      - flushes the serialization module,
  
  - waits for the serialization module to drain,
+
      - sends abort user data, and
  
  - sends release user data, and
+
      - releases TCP or UDP resources
  
   - releases TCP or UDP resources
+
   Following are the interpretation of and the defaults assigned to the
 +
  parameters of the P-U-ABORT service:
  
Following are the interpretation of and the defaults assigned to the
+
      1. Presentation context identifier list
parameters of the P-RELEASE service:
 
  
  1. Result
+
        Contained in the ASN.1 objects, if any, that are delivered as
 +
        user data.
  
    Release accepted.
+
      2. User data
  
  2. User data
+
        A single ASN.1 object is present, an A-ABORT PDU, carried in
 +
        presentation context 3.
  
    A single ASN.1 object is present, the appropriate A-RELEASE PDU,
+
8.3. The P-P-ABORT Service
  
 +
  This service is the means by which the service provider may indicate
 +
  the termination of the presentation connection for reasons internal
 +
  to the service provider.  This service has effects which are not
 +
  sequenced with respect to preceding service invocations.  The
 +
  execution of this service disrupts any other concurrently active
 +
  service and may thus be destructive.
  
 +
      For our purposes, the P-P-ABORT service:
  
 +
      - flushes the serialization module, and
  
 +
      - releases TCP or UDP resources
  
 +
  Following are the interpretation of and the defaults assigned to the
 +
  parameters of the P-P-ABORT service.
  
  
  
=== The P-U-ABORT Service ===
 
  
This service can be used by either presentation user to force the
+
Rose                                                          [Page 13]
release of a presentation connection at any time and have the
 
correspondent presentation user informed of this termination.  This
 
service has effects which are not sequenced with respect to preceding
 
service invocations and may be destructive.  It does not require the
 
agreement of both service users.
 
  
  For our purposes, the P-U-ABORT service:
+
RFC 1085              ISO Presentation Services          December 1988
  
  - flushes the serialization module,
 
  
  - sends abort user data, and
+
      1. Provider reason
  
  - releases TCP or UDP resources
+
        An integer code detailing why the connection was aborted. Codes
 +
        include, but are not limited to: invalid PPDU parameter,
 +
        unexpected PPDU, unrecognized PPDU, and specified reason.
  
Following are the interpretation of and the defaults assigned to the
+
      2. Abort data
parameters of the P-U-ABORT service:
 
  
  1. Presentation context identifier list
+
        None.
  
    Contained in the ASN.1 objects, if any, that are delivered as
+
9. Information Transfer
    user data.
 
  
   2. User data
+
   Although the Information Transfer facility consists of many services,
 +
  only one, the P-DATA service, is provided by this memo.
  
    A single ASN.1 object is present, an A-ABORT PDU, carried in
+
9.1. The P-DATA Service
    presentation context 3.
 
  
=== The P-P-ABORT Service ===
+
  This services provides the service user with a data transfer
 +
  capability.  This service has effects which are sequenced and non-
 +
  destructive.
  
This service is the means by which the service provider may indicate
+
  If the udp-based service is selected, then there is an upper-bound on
the termination of the presentation connection for reasons internal
+
  the size of the serialized ASN.1 objects which may be transmitted.
to the service providerThis service has effects which are not
+
  This limit, imposed by the UDP, is 65536 octetsAs a practical
sequenced with respect to preceding service invocations.  The
+
  matter, it is probably a good idea to keep datagrams less than or
execution of this service disrupts any other concurrently active
+
  equal to 536 octets in size.
service and may thus be destructive.
 
  
   For our purposes, the P-P-ABORT service:
+
   For our purposes, the P-DATA service:
  
  - flushes the serialization module, and
+
              - sends user data
  
   - releases TCP or UDP resources
+
   Following are the interpretation of and the defaults assigned to the
 +
  parameters of the P-DATA service:
  
Following are the interpretation of and the defaults assigned to the
+
      1. User data
parameters of the P-P-ABORT service.
 
  
 +
        A single ASN.1 object is present, a remote operations APDU,
 +
        carried in presentation context 1.
  
 +
10. Elements of Procedure
  
 +
  The service provider is in one of the following states:
  
 +
          IDLE, WAIT1, WAIT2, DATA, WAIT3, or WAIT4
  
 +
        The possible events are:
  
  1. Provider reason
+
          PS-user        P-CONNECT.REQUEST
  
    An integer code detailing why the connection was aborted. Codes
 
    include, but are not limited to: invalid PPDU parameter,
 
    unexpected PPDU, unrecognized PPDU, and specified reason.
 
  
  2. Abort data
 
  
    None.
+
Rose                                                          [Page 14]
  
== Information Transfer ==
+
RFC 1085              ISO Presentation Services          December 1988
  
Although the Information Transfer facility consists of many services,
 
only one, the P-DATA service, is provided by this memo.
 
  
=== The P-DATA Service ===
+
                          P-CONNECT.RESPONSE
 +
                          P-RELEASE.REQUEST
 +
                          P-RELEASE.RESPONSE
 +
                          P-DATA.REQUEST
 +
                          P-U-ABORT.REQUEST
  
This services provides the service user with a data transfer
+
          network        TCP closed or errored(*)
capability.  This service has effects which are sequenced and non-
+
                          receive ConnectRequest PDU
destructive.
+
                          receive ConnectResponse PDU
 +
                          receive ReleaseRequest PDU
 +
                          receive ReleaseResponse PDU
 +
                          receive UserData(*) or CL-UserData(**) PDU
 +
                          receive user-initiated Abort PDU
 +
                          receive provider-initiated Abort PDU
 +
                          timer expires(**)
  
If the udp-based service is selected, then there is an upper-bound on
 
the size of the serialized ASN.1 objects which may be transmitted.
 
This limit, imposed by the UDP, is 65536 octets.  As a practical
 
matter, it is probably a good idea to keep datagrams less than or
 
equal to 536 octets in size.
 
  
For our purposes, the P-DATA service:
+
        The possible actions are:
  
           - sends user data
+
           PS-user         P-CONNECT.INDICATION
 +
                          P-CONNECT.CONFIRMATION
 +
                          P-RELEASE.INDICATION
 +
                          P-RELEASE.CONFIRMATION
 +
                          P-DATA.INDICATION
 +
                          P-U-ABORT.INDICATION
 +
                          P-P-ABORT.INDICATION
  
Following are the interpretation of and the defaults assigned to the
+
          network        open TCP(*)
parameters of the P-DATA service:
+
                          close TCP(*)
 +
                          send ConnectRequest PDU
 +
                          send ConnectResponse PDU
 +
                          send ReleaseRequest PDU
 +
                          send ReleaseResponse PDU
 +
                          send UserData(*) or CL-UserData(**) PDU
 +
                          send user-initiated Abort PDU
 +
                          send provider-initiated Abort PDU
 +
                          set timer(**)
  
  1. User data
+
          (*)  tcp-based service only
 +
          (**)  udp-based service only
  
    A single ASN.1 object is present, a remote operations APDU,
+
10.1. Elements of Procedure specific to the tcp-based service
    carried in presentation context 1.
 
  
== Elements of Procedure ==
+
  The provider maintains the following information for each
 +
  presentation connection:
  
The service provider is in one of the following states:
+
      - a local designator for the PS-user
  
        IDLE, WAIT1, WAIT2, DATA, WAIT3, or WAIT4
 
  
    The possible events are:
 
  
        PS-user        P-CONNECT.REQUEST
 
  
 +
Rose                                                          [Page 15]
  
 +
RFC 1085              ISO Presentation Services          December 1988
  
  
 +
      - a local designator for a TCP connection
  
                        P-CONNECT.RESPONSE
+
      - the state of the connection (e.g., IDLE, WAIT1, and so on)
                        P-RELEASE.REQUEST
 
                        P-RELEASE.RESPONSE
 
                        P-DATA.REQUEST
 
                        P-U-ABORT.REQUEST
 
  
        network         TCP closed or errored(*)
+
  Upon receiving an event from the network, the provider finds the
                        receive ConnectRequest PDU
+
  associated presentation connection.  Matching is done by simply
                        receive ConnectResponse PDU
+
  comparing local designators for the TCP connection.  Whenever a
                        receive ReleaseRequest PDU
+
  connection remains in or returns to the IDLE state, any associated
                        receive ReleaseResponse PDU
+
  resources, such as an attachment to a local TCP port, are released.
                        receive UserData(*) or CL-UserData(**) PDU
 
                        receive user-initiated Abort PDU
 
                        receive provider-initiated Abort PDU
 
                        timer expires(**)
 
  
 +
  In the procedures which follow, outgoing PDUs are "placed on the
 +
  input queue for the serializer".  This has a different meaning
 +
  depending on the type of PDU being enqueued.  If the PDU is not an
 +
  abort PDU (user-initiated or provider-initiated), then the PDU is
 +
  simply appended to the input queue regardless of the number of PDUs
 +
  present.  If however, the PDU is an abort PDU, then the provider
 +
  checks the size of the input queue.  If the input queue is non-empty
 +
  or if the serializer is busy transmitting to the network, then the
 +
  abort PDU is discarded, and the serializer is flushed, aborting any
 +
  output to the network in progress.  However, if the input queue is
 +
  empty, then the Abort PDU is appended to the queue, and a small timer
 +
  started.  If the timer expires before the PDU has been serialized and
 +
  transmitted, then the serializer is flushed, aborting any output to
 +
  the network in progress.
  
    The possible actions are:
+
  Further, in general, whenever the TCP connection is closed (either
 +
  locally by the provider, or remotely by the network) or has errored,
 +
  the serializer is flushed.  The one exception to this is if a
 +
  ReleaseResponse PDU is being serialized and transmitted to the
 +
  network.  In this case, the provider will not close the TCP
 +
  connection until after the serializer has finished.
  
        PS-user        P-CONNECT.INDICATION
+
10.2. Elements of Procedure specific to the udp-based service
                        P-CONNECT.CONFIRMATION
 
                        P-RELEASE.INDICATION
 
                        P-RELEASE.CONFIRMATION
 
                        P-DATA.INDICATION
 
                        P-U-ABORT.INDICATION
 
                        P-P-ABORT.INDICATION
 
  
        network        open TCP(*)
+
  The provider maintains the following information for each
                        close TCP(*)
+
  presentation connection:
                        send ConnectRequest PDU
 
                        send ConnectResponse PDU
 
                        send ReleaseRequest PDU
 
                        send ReleaseResponse PDU
 
                        send UserData(*) or CL-UserData(**) PDU
 
                        send user-initiated Abort PDU
 
                        send provider-initiated Abort PDU
 
                        set timer(**)
 
  
        (*)  tcp-based service only
+
      - a local designator for the PS-user
        (**)  udp-based service only
 
  
=== Elements of Procedure specific to the tcp-based service ===
+
      - the 32-bit IP address and 16-bit UDP port number of the
 +
        initiating host
  
The provider maintains the following information for each
+
      - the 32-bit IP address and 16-bit UDP port number of the
presentation connection:
+
        responding host
  
  - a local designator for the PS-user
+
      - the session connection identifier used to establish the
 +
        presentation connection
  
  
  
  
 +
Rose                                                          [Page 16]
  
 +
RFC 1085              ISO Presentation Services          December 1988
  
  - a local designator for a TCP connection
 
  
  - the state of the connection (e.g., IDLE, WAIT1, and so on)
+
      - a local designator for an UDP endpoint
  
Upon receiving an event from the network, the provider finds the
+
      - the state of the connection (e.g., IDLE, WAIT1, and so on)
associated presentation connection. Matching is done by simply
 
comparing local designators for the TCP connection. Whenever a
 
connection remains in or returns to the IDLE state, any associated
 
resources, such as an attachment to a local TCP port, are released.
 
  
In the procedures which follow, outgoing PDUs are "placed on the
+
      - a retransmission counter
input queue for the serializer".  This has a different meaning
 
depending on the type of PDU being enqueued.  If the PDU is not an
 
abort PDU (user-initiated or provider-initiated), then the PDU is
 
simply appended to the input queue regardless of the number of PDUs
 
present.  If however, the PDU is an abort PDU, then the provider
 
checks the size of the input queue.  If the input queue is non-empty
 
or if the serializer is busy transmitting to the network, then the
 
abort PDU is discarded, and the serializer is flushed, aborting any
 
output to the network in progress.  However, if the input queue is
 
empty, then the Abort PDU is appended to the queue, and a small timer
 
started.  If the timer expires before the PDU has been serialized and
 
transmitted, then the serializer is flushed, aborting any output to
 
the network in progress.
 
  
Further, in general, whenever the TCP connection is closed (either
+
  Upon receiving an event from the network, the provider finds the
locally by the provider, or remotely by the network) or has errored,
+
  associated presentation connection.  Matching is done on the basis of
the serializer is flushed.  The one exception to this is if a
+
  addresses, ports, and the session connection identifier (i.e., two
ReleaseResponse PDU is being serialized and transmitted to the
+
  different presentation connections may differ only in their session
networkIn this case, the provider will not close the TCP
+
  connection identifier).  If no presentation connection can be found,
connection until after the serializer has finished.
+
  then for the purposes of discussion, it may be assumed that a
 +
  "vanilla" presentation connection is created and initialized to the
 +
  IDLE stateFurther, whenever a connection remains in or returns to
 +
  the IDLE state, any associated resources, such as an attachment to a
 +
  local UDP port, are released.
  
=== Elements of Procedure specific to the udp-based service ===
+
  In the procedures which follow, outgoing PDUs are "placed on the
 +
  input queue for the serializer".  This means that the ASN.1 object is
 +
  serialized and the resulting sequence of octets is sent as a single
 +
  UDP datagram.
  
The provider maintains the following information for each
+
10.3. State Transitions
presentation connection:
 
  
   - a local designator for the PS-user
+
   Following are the rules for transitioning states.  If an event
 +
  associated with a user-generated primitive is omitted, then it is an
 +
  interface error for the user to issue that primitive in the given
 +
  state.  Each state considers all possible incoming PDUs.
  
   - the 32-bit IP address and 16-bit UDP port number of the
+
   We assume that for the tcp-based service, that some entity starts a
    initiating host
+
  passive TCP open.  When the passive open completes, the entity, using
 +
  some local rule, locates a PS-user to be associated with the incoming
 +
  presentation connection.  This presentation connection is then placed
 +
  in the IDLE state.  The entity then continues listening for other
 +
  passive opens to complete.  The mechanisms associated with this
 +
  entity are entirely a local matter, the concept of this listener is
 +
  introduced solely as a modeling artifact.
  
   - the 32-bit IP address and 16-bit UDP port number of the
+
   Finally, if the udp-based service is selected, then CL-UserData PDUs
    responding host
+
  are exchanged by the provider instead of UserData PDUs.
  
  - the session connection identifier used to establish the
 
    presentation connection
 
  
 +
                                    IDLE state
  
 +
        Event:    P-CONNECT.REQUEST primitive issued
  
 +
  Based on the quality of service parameter and the list of network
 +
  addresses in the called presentation address parameter, the provider
  
  
  
  - a local designator for an UDP endpoint
+
Rose                                                          [Page 17]
  
  - the state of the connection (e.g., IDLE, WAIT1, and so on)
+
RFC 1085              ISO Presentation Services          December 1988
  
  - a retransmission counter
 
  
Upon receiving an event from the network, the provider finds the
+
  selects an address for the use of the presentation connection.  The
associated presentation connection.  Matching is done on the basis of
+
  method for making this determination is a local matter.  (Appendix C
addresses, ports, and the session connection identifier (i.e., two
+
  discusses a strategy which might be used.)  For the discussion that
different presentation connections may differ only in their session
+
  follows, we assume that a network address supporting the desired
connection identifier). If no presentation connection can be found,
+
  quality of service has been determined.
then for the purposes of discussion, it may be assumed that a
 
"vanilla" presentation connection is created and initialized to the
 
IDLE state.  Further, whenever a connection remains in or returns to
 
the IDLE state, any associated resources, such as an attachment to a
 
local UDP port, are released.
 
  
In the procedures which follow, outgoing PDUs are "placed on the
+
  Based on the network address chosen from the called presentation
input queue for the serializer"This means that the ASN.1 object is
+
  address parameter, the provider selects a compatible network address
serialized and the resulting sequence of octets is sent as a single
+
  from the calling presentation address parameterThe provider
UDP datagram.
+
  attaches itself to the port associated with this network address.
 +
  (By local determination, this address need not be used, and an
 +
  "ephemeral" port may be chosen by the provider.)
  
=== State Transitions ===
+
  For the tcp-based service, the provider attempts to establish a TCP
 +
  connection to the network address listed in the called presentation
 +
  address.  If the connection can not be established, the P-
 +
  CONNECT.CONFIRMATION(-) primitive is issued with a reason of
 +
  provider-rejection, and the provider remains in the IDLE state.
  
Following are the rules for transitioning states.  If an event
+
  Regardless, the user data parameter is placed in a ConnectRequest
associated with a user-generated primitive is omitted, then it is an
+
  PDU, which is put on the input queue for the serializer.
interface error for the user to issue that primitive in the given
 
state.  Each state considers all possible incoming PDUs.
 
  
We assume that for the tcp-based service, that some entity starts a
+
  For the udp-based service, the provider sets the retransmission
passive TCP open.  When the passive open completes, the entity, using
+
  counter to a small value (e.g., 2), and now starts a small timer.
some local rule, locates a PS-user to be associated with the incoming
 
presentation connection. This presentation connection is then placed
 
in the IDLE state. The entity then continues listening for other
 
passive opens to complete.  The mechanisms associated with this
 
entity are entirely a local matter, the concept of this listener is
 
introduced solely as a modeling artifact.
 
  
Finally, if the udp-based service is selected, then CL-UserData PDUs
+
  Regardless, the provider enters the WAIT1 state.
are exchanged by the provider instead of UserData PDUs.
 
  
  
                                IDLE state
+
        Event:    ConnectRequest PDU received
  
    Event:    P-CONNECT.REQUEST primitive issued
+
  The provider issues the P-CONNECT.INDICATION primitive and enters the
 +
  WAIT2 state.
  
Based on the quality of service parameter and the list of network
 
addresses in the called presentation address parameter, the provider
 
  
 +
        Event:    any other PDU received
  
 +
  If the PDU is not an Abort PDU, the provider constructs a provider-
 +
  initiated Abort PDU, which is put on the input queue for the
 +
  serializer.  Regardless, the provider remains in the IDLE state.
  
  
 +
                                    WAIT1 state
  
selects an address for the use of the presentation connection.  The
+
        Event:    P-U-ABORT.REQUEST primitive issued
method for making this determination is a local matter.  (Appendix C
 
discusses a strategy which might be used.)  For the discussion that
 
follows, we assume that a network address supporting the desired
 
quality of service has been determined.
 
  
Based on the network address chosen from the called presentation
+
  The user data parameter is placed in an Abort PDU, which is put on
address parameter, the provider selects a compatible network address
+
  the input queue for the serializer.  The provider enters the IDLE
from the calling presentation address parameter.  The provider
+
  state.
attaches itself to the port associated with this network address.
 
(By local determination, this address need not be used, and an
 
"ephemeral" port may be chosen by the provider.)
 
  
For the tcp-based service, the provider attempts to establish a TCP
 
connection to the network address listed in the called presentation
 
address.  If the connection can not be established, the P-
 
CONNECT.CONFIRMATION(-) primitive is issued with a reason of
 
provider-rejection, and the provider remains in the IDLE state.
 
  
Regardless, the user data parameter is placed in a ConnectRequest
 
PDU, which is put on the input queue for the serializer.
 
  
For the udp-based service, the provider sets the retransmission
+
Rose                                                          [Page 18]
counter to a small value (e.g., 2), and now starts a small timer.
 
  
Regardless, the provider enters the WAIT1 state.
+
RFC 1085              ISO Presentation Services          December 1988
  
  
    Event:    ConnectRequest PDU received
+
        Event:    ConnectResponse PDU received
  
The provider issues the P-CONNECT.INDICATION primitive and enters the
+
  For the udp-based service, the timer is cancelled.  If the PDU
WAIT2 state.
+
  indicates rejection, the P-CONNECT.CONFIRMATION(-) primitive is
 +
  issued and the provider enters the IDLE state.  Otherwise, the P-
 +
  CONNECT.CONFIRMATION(+) primitive is issued and the provider enters
 +
  the DATA state.
  
  
    Event:    any other PDU received
+
        Event:    user-initiated Abort PDU received
  
If the PDU is not an Abort PDU, the provider constructs a provider-
+
  The provider issues the P-U-ABORT.INDICATION primitive and enters the
initiated Abort PDU, which is put on the input queue for the
+
  IDLE state.
serializer.  Regardless, the provider remains in the IDLE state.
 
  
  
                                WAIT1 state
+
        Event:    any other PDU received
  
    Event:    P-U-ABORT.REQUEST primitive issued
+
  If the PDU not an Abort PDU, the provider constructs a provider-
 +
  initiated Abort PDU, which is put on the input queue for the
 +
  serializer.  Regardless, The provider issues the P-P-ABORT.INDICATION
 +
  primitive and enters the the IDLE state.
  
The user data parameter is placed in an Abort PDU, which is put on
 
the input queue for the serializer.  The provider enters the IDLE
 
state.
 
  
 +
        Event:    timer expires
  
 +
  The provider decrements the retransmission counter.  If the resulting
 +
  value is less than or equal to zero, the provider issues the P-
 +
  CONNECT.CONFIRMATION(-) primitive and enters the IDLE state.
 +
  Otherwise, a ConnectRequest PDU is put on the input queue for the
 +
  serializer, the small timer is started again, and the provider
 +
  remains in the WAIT1 state.
  
  
 +
                                    WAIT2 state
  
    Event:    ConnectResponse PDU received
+
        Event:    P-CONNECT.RESPONSE primitive issued
  
For the udp-based service, the timer is cancelled.  If the PDU
+
  The user data parameter is placed in a ConnectResponse PDU, which is
indicates rejection, the P-CONNECT.CONFIRMATION(-) primitive is
+
  put on the input queue for the serializer.  If the result parameter
issued and the provider enters the IDLE state. Otherwise, the P-
+
  had the value user-rejection, the provider enters the IDLE state.
CONNECT.CONFIRMATION(+) primitive is issued and the provider enters
+
  Otherwise if the parameter had the value acceptance, the provider
the DATA state.
+
  enters the DATA state.
  
  
    Event:    user-initiated Abort PDU received
 
  
The provider issues the P-U-ABORT.INDICATION primitive and enters the
 
IDLE state.
 
  
  
    Event:    any other PDU received
 
  
If the PDU not an Abort PDU, the provider constructs a provider-
 
initiated Abort PDU, which is put on the input queue for the
 
serializer.  Regardless, The provider issues the P-P-ABORT.INDICATION
 
primitive and enters the the IDLE state.
 
  
  
    Event:    timer expires
 
  
The provider decrements the retransmission counter.  If the resulting
+
Rose                                                          [Page 19]
value is less than or equal to zero, the provider issues the P-
 
CONNECT.CONFIRMATION(-) primitive and enters the IDLE state.
 
Otherwise, a ConnectRequest PDU is put on the input queue for the
 
serializer, the small timer is started again, and the provider
 
remains in the WAIT1 state.
 
  
 +
RFC 1085              ISO Presentation Services          December 1988
  
                                WAIT2 state
 
  
    Event:    P-CONNECT.RESPONSE primitive issued
+
        Event:    P-U-ABORT.REQUEST primitive issued
  
The user data parameter is placed in a ConnectResponse PDU, which is
+
  The user data parameter is placed in an Abort PDU, which is put on
put on the input queue for the serializer.  If the result parameter
+
  the input queue for the serializer.  The provider enters the IDLE
had the value user-rejection, the provider enters the IDLE state.
+
  state.
Otherwise if the parameter had the value acceptance, the provider
 
enters the DATA state.
 
  
  
 +
        Event:    user-initiated Abort PDU received
  
 +
  The provider issues the P-U-ABORT.INDICATION primitive and enters the
 +
  IDLE state.
  
  
 +
        Event:    any other PDU received
  
 +
  If the PDU is not an Abort PDU, the provider constructs a provider-
 +
  initiated Abort PDU, which is put on the input queue for the
 +
  serializer.  Regardless, The provider issues the P-P-ABORT.INDICATION
 +
  primitive and enters the the IDLE state.
  
  
 +
                                    DATA state
  
 +
        Event:    P-DATA.REQUEST primitive issued
  
 +
  The user data parameter is placed in a UserData PDU, which is put on
 +
  the input queue for the serializer.  The provider remains in the DATA
 +
  state.
  
    Event:    P-U-ABORT.REQUEST primitive issued
 
  
The user data parameter is placed in an Abort PDU, which is put on
+
        Event:    P-RELEASE.REQUEST primitive issued
the input queue for the serializer.  The provider enters the IDLE
 
state.
 
  
 +
  The user data parameter is placed in a ReleaseRequest PDU, which is
 +
  put on the input queue for the serializer.
  
    Event:    user-initiated Abort PDU received
+
  For the udp-based service, the provider sets the retransmission
 +
  counter to a small value (e.g., 2), and now starts a small timer.
  
The provider issues the P-U-ABORT.INDICATION primitive and enters the
+
  Regardless, the provider enters the WAIT3 state.
IDLE state.
 
  
  
    Event:    any other PDU received
+
        Event:    P-U-ABORT.REQUEST primitive issued
  
If the PDU is not an Abort PDU, the provider constructs a provider-
+
  The user data parameter is placed in an Abort PDU, which is put on
initiated Abort PDU, which is put on the input queue for the
+
  the input queue for the serializer.  The provider enters the IDLE
serializer.  Regardless, The provider issues the P-P-ABORT.INDICATION
+
  state.
primitive and enters the the IDLE state.
 
  
  
                                DATA state
 
  
    Event:    P-DATA.REQUEST primitive issued
 
  
The user data parameter is placed in a UserData PDU, which is put on
 
the input queue for the serializer.  The provider remains in the DATA
 
state.
 
  
 +
Rose                                                          [Page 20]
  
    Event:    P-RELEASE.REQUEST primitive issued
+
RFC 1085              ISO Presentation Services          December 1988
  
The user data parameter is placed in a ReleaseRequest PDU, which is
 
put on the input queue for the serializer.
 
  
For the udp-based service, the provider sets the retransmission
+
        Event:    UserData PDU received
counter to a small value (e.g., 2), and now starts a small timer.
 
  
Regardless, the provider enters the WAIT3 state.
+
  The provider issues the P-DATA.INDICATION primitive and remains in
 +
  the DATA state.
  
  
    Event:    P-U-ABORT.REQUEST primitive issued
+
        Event:    ReleaseRequest PDU received
  
The user data parameter is placed in an Abort PDU, which is put on
+
  The provider issues the P-RELEASE.INDICATION primitive, and enters
the input queue for the serializer. The provider enters the IDLE
+
  the WAIT4 state.
state.
 
  
  
 +
        Event:    user-initiated Abort PDU received
  
 +
  The provider issues the P-U-ABORT.INDICATION primitive and enters
 +
    the IDLE state.
  
  
 +
        Event:    any other PDU received
  
 +
  If the PDU is not an Abort PDU, the provider constructs a provider-
 +
  initiated Abort PDU, which is put on the input queue for the
 +
  serializer.  Regardless, the provider issues the P-P-ABORT.INDICATION
 +
  primitive and enters the the IDLE state.
  
    Event:    UserData PDU received
 
  
The provider issues the P-DATA.INDICATION primitive and remains in
+
                                    WAIT3 state
the DATA state.
 
  
 +
        Event:    P-U-ABORT.REQUEST primitive issued
  
    Event:    ReleaseRequest PDU received
+
  The user data parameter is placed in an Abort PDU, which is put on
 +
  the input queue for the serializer.  The provider enters the IDLE
 +
  state.
  
The provider issues the P-RELEASE.INDICATION primitive, and enters
 
the WAIT4 state.
 
  
 +
        Event:    ReleaseResponse PDU received
  
    Event:    user-initiated Abort PDU received
+
  For the udp-based service, the timer is cancelled.  The provider
 +
  issues the P-RELEASE.CONFIRMATION primitive and enters the IDLE
 +
  state.
  
The provider issues the P-U-ABORT.INDICATION primitive and enters
 
the IDLE state.
 
  
 +
        Event:    user-initiated Abort PDU received
  
    Event:    any other PDU received
+
  The provider issues the P-U-ABORT.INDICATION primitive and enters the
 +
  IDLE state.
  
If the PDU is not an Abort PDU, the provider constructs a provider-
 
initiated Abort PDU, which is put on the input queue for the
 
serializer.  Regardless, the provider issues the P-P-ABORT.INDICATION
 
primitive and enters the the IDLE state.
 
  
  
                                WAIT3 state
 
  
    Event:    P-U-ABORT.REQUEST primitive issued
 
  
The user data parameter is placed in an Abort PDU, which is put on
+
Rose                                                          [Page 21]
the input queue for the serializer.  The provider enters the IDLE
 
state.
 
  
 +
RFC 1085              ISO Presentation Services          December 1988
  
    Event:    ReleaseResponse PDU received
 
  
For the udp-based service, the timer is cancelled.  The provider
+
        Event:    any other PDU received
issues the P-RELEASE.CONFIRMATION primitive and enters the IDLE
 
state.
 
  
 +
  If the PDU is not an Abort PDU, the provider constructs a provider-
 +
  initiated Abort PDU, which is put on the input queue for the
 +
  serializer.  Regardless, the provider issues the P-P-ABORT.INDICATION
 +
  primitive and enters the the IDLE state.
  
    Event:    user-initiated Abort PDU received
 
  
The provider issues the P-U-ABORT.INDICATION primitive and enters the
+
        Event:    timer expires
IDLE state.
 
  
 +
  The provider decrements the retransmission counter.  If the resulting
 +
  value is less than or equal to zero, the provider constructs a
 +
  provider-initiated Abort PDU, which is put on the input queue for the
 +
  serializer.  It then issues the P-P-ABORT.INDICATION primitive and
 +
  enters the IDLE state.  Otherwise, a ReleaseRequest PDU is put on the
 +
  input queue for the serializer, the small timer is started again, and
 +
  the provider remains in the WAIT3 state.
  
  
 +
                                    WAIT4 state
  
 +
        Event:    P-RELEASE.RESPONSE primitive issued
  
 +
  The user data parameter is placed in a ReleaseResponse PDU, which is
 +
  put on the input queue for the serializer.  The provider now enters
 +
  the IDLE state.
  
 +
        Event:    P-U-ABORT.REQUEST primitive issued
  
    Event:    any other PDU received
+
  The user data parameter is placed in an Abort PDU, which is put on
 +
  the input queue for the serializer.  The provider now enters the IDLE
 +
  state.
  
If the PDU is not an Abort PDU, the provider constructs a provider-
 
initiated Abort PDU, which is put on the input queue for the
 
serializer.  Regardless, the provider issues the P-P-ABORT.INDICATION
 
primitive and enters the the IDLE state.
 
  
 +
        Event:    user-initiated Abort PDU received
  
    Event:    timer expires
+
  The provider issues the P-U-ABORT.INDICATION primitive and enters the
 +
  IDLE state.
  
The provider decrements the retransmission counter.  If the resulting
 
value is less than or equal to zero, the provider constructs a
 
provider-initiated Abort PDU, which is put on the input queue for the
 
serializer.  It then issues the P-P-ABORT.INDICATION primitive and
 
enters the IDLE state.  Otherwise, a ReleaseRequest PDU is put on the
 
input queue for the serializer, the small timer is started again, and
 
the provider remains in the WAIT3 state.
 
  
 +
        Event:    any other PDU received
  
                                WAIT4 state
+
  If the PDU is not an Abort PDU, the provider constructs a provider-
 +
  initiated Abort PDU, which is put on the input queue for the
 +
  serializer.  Regardless, the provider issues the P-P-ABORT.INDICATION
 +
  primitive and enters the the IDLE state.
  
    Event:    P-RELEASE.RESPONSE primitive issued
 
  
The user data parameter is placed in a ReleaseResponse PDU, which is
 
put on the input queue for the serializer.  The provider now enters
 
the IDLE state.
 
  
    Event:    P-U-ABORT.REQUEST primitive issued
 
  
The user data parameter is placed in an Abort PDU, which is put on
 
the input queue for the serializer.  The provider now enters the IDLE
 
state.
 
  
 +
Rose                                                          [Page 22]
  
    Event:    user-initiated Abort PDU received
+
RFC 1085              ISO Presentation Services          December 1988
  
The provider issues the P-U-ABORT.INDICATION primitive and enters the
 
IDLE state.
 
  
 +
11. Directory Services
  
    Event:    any other PDU received
+
  Although not properly part of the presentation service, this memo
 +
  assumes and specifies a minimal Directory service capability for use
 +
  by the application-entity.
  
If the PDU is not an Abort PDU, the provider constructs a provider-
+
  The function of the Directory Service Element is to provide two
initiated Abort PDU, which is put on the input queue for the
+
  mappings: first, a service name is mapped into an application entity
serializer.  Regardless, the provider issues the P-P-ABORT.INDICATION
+
  title, which is a global handle on the service; and, second, the
primitive and enters the the IDLE state.
+
  application-entity title is mapped onto a presentation address.
  
 +
  The structure of presentation addresses were defined in Section 5.
  
 +
  The structure of application-entity titles is less solidly agreed
 +
  upon at the present time.  Since objects of this type are not
 +
  interpreted by the presentation service, this memo does not specify
 +
  their structure.  If the DIS version of association control is being
 +
  used, then use of an OBJECT IDENTIFIER will suffice.  If the IS
 +
  version is being employed, then application-entity titles consist of
 +
  two parts: an application-process title and an application-entity
 +
  qualifier.  It is suggested that the AP-Title use an OBJECT
 +
  IDENTIFIER and that the AE-Qualifier use NULL.
  
 +
  This memo requires the following mapping rules:
  
 +
      1.  The service name for an OSI application-entity using the
 +
      mechanisms proposed by this memo is:
  
 +
              <designator> "-" <qualifier>
  
 +
      where <designator> is a string denoting either domain name or a
 +
      32-bit IP address, and <qualifier> is a string denoting the type
 +
      of application-entity desired, e.g.,
  
== Directory Services ==
+
              "gonzo.twg.com-mgmtinfobase"
  
Although not properly part of the presentation service, this memo
+
      2.  Any locally defined mapping rules may be used to map the
assumes and specifies a minimal Directory service capability for use
+
      service designation into an application-entity title.
by the application-entity.
 
  
The function of the Directory Service Element is to provide two
+
      3.  The application-entity title is then mapped into a
mappings: first, a service name is mapped into an application entity
+
      presentation address, with uninterpreted transport, session, and
title, which is a global handle on the service; and, second, the
+
      presentation selectors, and one or more network addresses, each
application-entity title is mapped onto a presentation address.
+
      containing:
  
The structure of presentation addresses were defined in Section 5.
+
        -the 32-bit IP address resolved from the <designator> portion
 +
          of the service name,
  
The structure of application-entity titles is less solidly agreed
+
        - a set indicating which transport services are available
upon at the present time.  Since objects of this type are not
 
interpreted by the presentation service, this memo does not specify
 
their structure.  If the DIS version of association control is being
 
used, then use of an OBJECT IDENTIFIER will suffice.  If the IS
 
version is being employed, then application-entity titles consist of
 
two parts: an application-process title and an application-entity
 
qualifier.  It is suggested that the AP-Title use an OBJECT
 
IDENTIFIER and that the AE-Qualifier use NULL.
 
  
This memo requires the following mapping rules:
 
  
  1.  The service name for an OSI application-entity using the
 
  mechanisms proposed by this memo is:
 
  
          <designator> "-" <qualifier>
+
Rose                                                          [Page 23]
  
  where <designator> is a string denoting either domain name or a
+
RFC 1085              ISO Presentation Services          December 1988
  32-bit IP address, and <qualifier> is a string denoting the type
 
  of application-entity desired, e.g.,
 
  
          "gonzo.twg.com-mgmtinfobase"
 
  
  2.  Any locally defined mapping rules may be used to map the
+
          at the IP address,
  service designation into an application-entity title.
 
  
  3.  The application-entity title is then mapped into a
+
        - the 16-bit port number resolved from the <qualifier>
  presentation address, with uninterpreted transport, session, and
+
          portion of the service name (using the Assigned Numbers
  presentation selectors, and one or more network addresses, each
+
          document), and
  containing:
 
  
      -the 32-bit IP address resolved from the <designator> portion
+
        - optionally, a presentation selector, which is an
      of the service name,
+
          uninterpreted sequence of octets.
  
      - a set indicating which transport services are available
+
  The method by which the mappings are obtained are straight-forward.
 +
  The directory services element employs the Domain Name System along
 +
  with a local table which may be used to resolve the address employing
 +
  local rules.
  
 +
  In the simplest of implementations, the DNS is used to map the
 +
  <designator> to an IP address, and to fill-in the set of transport
 +
  services available at the IP address.  The port number is found in a
 +
  local table derived from the current Assigned Numbers document.
 +
  Finally, the presentation selector is empty.
  
 +
  A more ambitious implementation would use a local table to perhaps
 +
  provide a presentation selector.  This would be useful, e.g., in
 +
  "proxy" connections.  The network address would resolve to the proxy
 +
  agent for the non-IP device, and the presentation selector would
 +
  indicate to the proxy agent the particular non-IP device desired.
 +
  This implies, of course, that the local table and the proxy agent
 +
  bilaterally agree as to the interpretation of each presentation
 +
  selector.
  
 +
12. Remarks
  
 +
  To begin, if one really wanted to implement ISO applications in a
 +
  TCP/IP-based network, then the method proposed by [RFC1006] is the
 +
  preferred method for achieving this.  However, in a constrained
 +
  environment, where it is necessary to host an application layer
 +
  entity with a minimal amount of underlying OSI infrastructure, this
 +
  memo proposes an alternative mechanism.  It should be noted that an
 +
  OSI application realized using this approach can be moved directly to
 +
  an [RFC1006]-based environment with no modifications.
  
        at the IP address,
+
  A key motivation therefore is to minimize the size of the alternate
 +
  underling infrastructure specified by this memo.  As more and more
 +
  presentation services functionality is added, the method proposed
 +
  herein would begin to approximate the ISO presentation protocol.
 +
  Since this in contrary to the key motivation, featurism must be
 +
  avoided at all costs.
  
      - the 16-bit port number resolved from the <qualifier>
 
        portion of the service name (using the Assigned Numbers
 
        document), and
 
  
      - optionally, a presentation selector, which is an
 
        uninterpreted sequence of octets.
 
  
The method by which the mappings are obtained are straight-forward.
 
The directory services element employs the Domain Name System along
 
with a local table which may be used to resolve the address employing
 
local rules.
 
  
In the simplest of implementations, the DNS is used to map the
 
<designator> to an IP address, and to fill-in the set of transport
 
services available at the IP address.  The port number is found in a
 
local table derived from the current Assigned Numbers document.
 
Finally, the presentation selector is empty.
 
  
A more ambitious implementation would use a local table to perhaps
+
Rose                                                          [Page 24]
provide a presentation selector.  This would be useful, e.g., in
 
"proxy" connections.  The network address would resolve to the proxy
 
agent for the non-IP device, and the presentation selector would
 
indicate to the proxy agent the particular non-IP device desired.
 
This implies, of course, that the local table and the proxy agent
 
bilaterally agree as to the interpretation of each presentation
 
selector.
 
  
== Remarks ==
+
RFC 1085              ISO Presentation Services          December 1988
  
To begin, if one really wanted to implement ISO applications in a
 
TCP/IP-based network, then the method proposed by [RFC1006] is the
 
preferred method for achieving this.  However, in a constrained
 
environment, where it is necessary to host an application layer
 
entity with a minimal amount of underlying OSI infrastructure, this
 
memo proposes an alternative mechanism.  It should be noted that an
 
OSI application realized using this approach can be moved directly to
 
an [RFC1006]-based environment with no modifications.
 
  
A key motivation therefore is to minimize the size of the alternate
+
13. Acknowledgements
underling infrastructure specified by this memo.  As more and more
 
presentation services functionality is added, the method proposed
 
herein would begin to approximate the ISO presentation protocol.
 
Since this in contrary to the key motivation, featurism must be
 
avoided at all costs.
 
  
 +
  Several individuals contributed to the technical quality of this
 +
  memo:
  
 +
          Karl Auerbach, Epilogue Technologies
 +
          Joseph Bannister, Unisys
 +
          Amatzia Ben-Artzi, Sytek
 +
          Stephen Dunford, Unisys
 +
          Lee Labarre, MITRE
 +
          Keith McCloghrie, The Wollongong Group
 +
          Jim Robertson, Bridge Communications
 +
          Glenn Trewitt, Stanford University
  
 +
14. References
  
 +
    [ISO7498]  Information Processing Systems - Open Systems
 +
                Interconnection, "Basic Reference Model", October, 1984.
  
 +
    [ISO8509]  Information Processing Systems - Open Systems
 +
                Interconnection, " Service Conventions".
  
 +
    [ISO8650]  Information Processing Systems - Open Systems
 +
                Interconnection, " Protocol Specification for the
 +
                Association Control Service Element (Final Text
 +
                of DIS 8650)", January, 1988.
  
== Acknowledgements ==
+
    [ISO8822]  Information Processing Systems - Open Systems
 +
                Interconnection, " Connection Oriented Presentation
 +
                Service Definition (Final Text of DIS 8822)",
 +
                April, 1988.
  
Several individuals contributed to the technical quality of this
+
    [ISO8823]  Information Processing Systems - Open Systems
memo:
+
                Interconnection, " Connection Oriented Presentation
 +
                Protocol Specification (Final Text of DIS 8822)",
 +
                April, 1988.
  
        Karl Auerbach, Epilogue Technologies
+
    [ISO8824]  Information Processing Systems - Open Systems
        Joseph Bannister, Unisys
+
                Interconnection, " Specification of Abstract Syntax
        Amatzia Ben-Artzi, Sytek
+
                Notation One (ASN.1)", December, 1987.
        Stephen Dunford, Unisys
 
        Lee Labarre, MITRE
 
        Keith McCloghrie, The Wollongong Group
 
        Jim Robertson, Bridge Communications
 
        Glenn Trewitt, Stanford University
 
  
== References ==
+
    [ISO8825]  Information Processing Systems - Open Systems
 +
                Interconnection, "Specification of basic encoding rules
 +
                for Abstract Syntax Notation One (ASN.1)",
 +
                December, 1987.
  
  [ISO7498]  Information Processing Systems - Open Systems            Interconnection, "Basic Reference Model", October, 1984.
+
    [ISO9072/2]  Information Processing Systems - Text Communication
  [ISO8509]  Information Processing Systems - Open Systems            Interconnection, " Service Conventions".
+
                  MOTIS, " Remote Operations Part 2: Protocol
  [ISO8650]  Information Processing Systems - Open Systems            Interconnection, " Protocol Specification for the            Association Control Service Element (Final Text            of DIS 8650)", January, 1988.
 
  [ISO8822]  Information Processing Systems - Open Systems            Interconnection, " Connection Oriented Presentation            Service Definition (Final Text of DIS 8822)",            April, 1988.
 
  [ISO8823]  Information Processing Systems - Open Systems            Interconnection, " Connection Oriented Presentation            Protocol Specification (Final Text of DIS 8822)",            April, 1988.
 
  [ISO8824]  Information Processing Systems - Open Systems            Interconnection, " Specification of Abstract Syntax            Notation One (ASN.1)", December, 1987.
 
  [ISO8825]  Information Processing Systems - Open Systems            Interconnection, "Specification of basic encoding rules            for Abstract Syntax Notation One (ASN.1)",            December, 1987.
 
  [ISO9072/2]  Information Processing Systems - Text Communication               MOTIS, " Remote Operations Part 2: Protocol
 
  
  
  
 +
Rose                                                          [Page 25]
 +
 +
RFC 1085              ISO Presentation Services          December 1988
 +
 +
 +
                  Specification (Working Document for DIS 9072/2)",
 +
                  November, 1987.
 +
 +
    [RFC768]  Postel, J., "User Datagram Protocol", RFC 768, USC/ISI,
 +
              28 August 1980.
 +
 +
    [RFC791]  Postel, J., "Internet Protocol - DARPA Internet Program
 +
              Protocol Specification", RFC 791, USC/ISI,
 +
              September 1981.
 +
 +
    [RFC793]  Postel, J., "Transmission Control Protocol - DARPA
 +
              Internet Program Protocol Specification", RFC 793,
 +
              USC/ISI, September 1981.
 +
 +
    [RFC1006]  Rose, M., and D. Cass, "ISO Transport 1 on Top of the
 +
                TCP Version: 3", Northrop Research and Technology
 +
                Center, May 1987.
  
              Specification (Working Document for DIS 9072/2)",              November, 1987.
 
  [RFC768]  Postel, J., "User Datagram Protocol", [[RFC768|RFC 768]], USC/ISI,            28 August 1980.
 
  [RFC791]  Postel, J., "Internet Protocol - DARPA Internet Program            Protocol Specification", [[RFC791|RFC 791]], USC/ISI,            September 1981.
 
  [RFC793]  Postel, J., "Transmission Control Protocol - DARPA            Internet Program Protocol Specification", [[RFC793|RFC 793]],            USC/ISI, September 1981.
 
  [RFC1006]  Rose, M., and D. Cass, "ISO Transport 1 on Top of the            TCP Version: 3", Northrop Research and Technology            Center, May 1987.
 
 
Appendix A:
 
Appendix A:
 +
 
Abstract Syntax Definitions
 
Abstract Syntax Definitions
RFC1085-PS DEFINITIONS ::=
+
 
BEGIN
+
  RFC1085-PS DEFINITIONS ::=
PDUs ::=       CHOICE {           connectRequest               ConnectRequest-PDU,
+
 
            connectResponse               ConnectResponse-PDU,
+
  BEGIN
            releaseRequest               ReleaseRequest-PDU,
+
 
            releaseResponse               ReleaseResponse-PDU,
+
  PDUs ::=
            abort               Abort-PDU,
+
          CHOICE {
            userData               UserData-PDU,
+
              connectRequest
            cL-userData               CL-UserData-PDU
+
                  ConnectRequest-PDU,
 +
 
 +
              connectResponse
 +
                  ConnectResponse-PDU,
 +
 
 +
              releaseRequest
 +
                  ReleaseRequest-PDU,
 +
 
 +
              releaseResponse
 +
                  ReleaseResponse-PDU,
 +
 
 +
              abort
 +
                  Abort-PDU,
 +
 
 +
              userData
 +
                  UserData-PDU,
 +
 
 +
              cL-userData
 +
                  CL-UserData-PDU
  
  
  
 +
Rose                                                          [Page 26]
  
        }
+
RFC 1085              ISO Presentation Services          December 1988
  
  
-- connect request PDU
+
           }
ConnectRequest-PDU ::=    [0]        IMPLICIT SEQUENCE {           version[0]          -- version-1 corresponds to to this                                  memo                IMPLICIT INTEGER { version-1(0) },
 
            reference                SessionConnectionIdentifier,
 
            calling                PresentationSelector                OPTIONAL,
 
            called[2]                IMPLICIT PresentationSelector                OPTIONAL,
 
            asn[3]              -- the ASN for PCI #1                IMPLICIT OBJECT IDENTIFIER,
 
            user-data                UserData-PDU        }
 
SessionConnectionIdentifier ::=    [0]        SEQUENCE {            callingSSUserReference                T61String,
 
            commonReference                UTCTime,
 
            additionalReferenceInformation[0]                IMPLICIT T61String                OPTIONAL        }
 
PresentationSelector ::=    [1]        IMPLICIT OCTET STRING
 
  
  
  
 +
  -- connect request PDU
  
-- connect response PDU
+
  ConnectRequest-PDU ::=
ConnectResponse-PDU ::=   [1]       IMPLICIT SEQUENCE {           reference          -- present only in the udp-based                                -- service                SessionConnectionIdentifier                OPTIONAL,
+
      [0]
            responding               PresentationSelector                OPTIONAL,
+
          IMPLICIT SEQUENCE {
            reason[2]           -- present only if the connection                                -- was rejected                IMPLICIT Rejection-reason                OPTIONAL,
+
               version[0]         -- version-1 corresponds to to this
            user-data          -- present only if reason is absent                                -- OR has the                                -- value rejected-by-responder                UserData-PDU                OPTIONAL        }
+
                                      memo
Rejection-reason ::=        INTEGER {           rejected-by-responder(0)           called-presentation-address-unknown(1),           local-limit-exceeded(3),            protocol-version-not-supported(4),        }
+
                  IMPLICIT INTEGER { version-1(0) },
  
-- release request PDU
+
              reference
ReleaseRequest-PDU ::=    [2]        IMPLICIT SEQUENCE {            reference          -- present only in the udp-based                                -- service                SessionConnectionIdentifier               OPTIONAL,
+
                  SessionConnectionIdentifier,
            user-data                UserData-PDU        }
 
  
 +
              calling
 +
                  PresentationSelector
 +
                  OPTIONAL,
  
 +
              called[2]
 +
                  IMPLICIT PresentationSelector
 +
                  OPTIONAL,
  
 +
              asn[3]              -- the ASN for PCI #1
 +
                  IMPLICIT OBJECT IDENTIFIER,
  
-- release response PDU
+
               user-data
ReleaseResponse-PDU ::=    [3]        IMPLICIT SEQUENCE {            reference          -- present only in the udp-based                                -- service                SessionConnectionIdentifier               OPTIONAL,
+
                  UserData-PDU
            user-data               UserData-PDU        }
+
           }
-- abort PDU
 
Abort-PDU ::=    [4]        SEQUENCE {            reference          -- present only in the udp-based                                -- service                SessionConnectionIdentifier                OPTIONAL,
 
            user-data  -- MAY BE present on user-initiated abort                UserData-PDU               OPTIONAL,
 
            reason[1]  -- ALWAYS present on provider-initiated abort                IMPLICIT Abort-reason                OPTIONAL        }
 
Abort-reason ::=        INTEGER {            unspecified(0),            unrecognized-ppdu(1),            unexpected-ppdu(2),           unrecognized-ppdu-parameter(4),            invalid-ppdu-parameter(5),            reference-mismatch(9)        }
 
  
-- data PDU
+
  SessionConnectionIdentifier ::=
UserData-PDU ::=   [5]                         -- this is the ASN.1 object
+
      [0]
 +
          SEQUENCE {
 +
              callingSSUserReference
 +
                  T61String,
  
 +
              commonReference
 +
                  UTCTime,
  
 +
              additionalReferenceInformation[0]
 +
                  IMPLICIT T61String
 +
                  OPTIONAL
 +
          }
  
 +
  PresentationSelector ::=
 +
      [1]
 +
          IMPLICIT OCTET STRING
  
        ANY                    -- if it is a top-level PDU, it                                -- is in PCI #1, otherwise PCI #3
 
  
-- data PDU for the udp-based service
+
 
CL-UserData-PDU ::=   [6]       IMPLICIT SEQUENCE {           reference               SessionConnectionIdentifier,
+
Rose                                                          [Page 27]
            user-data[0]                -- this is the ASN.1 object               ANY                    -- it is always in PCI #1       }
+
 
END
+
RFC 1085              ISO Presentation Services          December 1988
 +
 
 +
 
 +
  -- connect response PDU
 +
 
 +
  ConnectResponse-PDU ::=
 +
      [1]
 +
          IMPLICIT SEQUENCE {
 +
              reference          -- present only in the udp-based
 +
                                  -- service
 +
                  SessionConnectionIdentifier
 +
                  OPTIONAL,
 +
 
 +
              responding
 +
                  PresentationSelector
 +
                  OPTIONAL,
 +
 
 +
              reason[2]          -- present only if the connection
 +
                                  -- was rejected
 +
                  IMPLICIT Rejection-reason
 +
                  OPTIONAL,
 +
 
 +
              user-data          -- present only if reason is absent
 +
                                  -- OR has the
 +
                                  -- value rejected-by-responder
 +
                  UserData-PDU
 +
                  OPTIONAL
 +
          }
 +
 
 +
  Rejection-reason ::=
 +
          INTEGER {
 +
              rejected-by-responder(0)
 +
              called-presentation-address-unknown(1),
 +
              local-limit-exceeded(3),
 +
              protocol-version-not-supported(4),
 +
          }
 +
 
 +
 
 +
  -- release request PDU
 +
 
 +
  ReleaseRequest-PDU ::=
 +
      [2]
 +
          IMPLICIT SEQUENCE {
 +
              reference          -- present only in the udp-based
 +
                                  -- service
 +
                  SessionConnectionIdentifier
 +
                  OPTIONAL,
 +
 
 +
              user-data
 +
                  UserData-PDU
 +
          }
 +
 
 +
 
 +
 
 +
Rose                                                          [Page 28]
 +
 
 +
RFC 1085              ISO Presentation Services          December 1988
 +
 
 +
 
 +
  -- release response PDU
 +
 
 +
  ReleaseResponse-PDU ::=
 +
      [3]
 +
          IMPLICIT SEQUENCE {
 +
              reference          -- present only in the udp-based
 +
                                  -- service
 +
                  SessionConnectionIdentifier
 +
                  OPTIONAL,
 +
 
 +
              user-data
 +
                  UserData-PDU
 +
          }
 +
 
 +
  -- abort PDU
 +
 
 +
  Abort-PDU ::=
 +
      [4]
 +
          SEQUENCE {
 +
              reference          -- present only in the udp-based
 +
                                  -- service
 +
                  SessionConnectionIdentifier
 +
                  OPTIONAL,
 +
 
 +
              user-data  -- MAY BE present on user-initiated abort
 +
                  UserData-PDU
 +
                  OPTIONAL,
 +
 
 +
              reason[1]  -- ALWAYS present on provider-initiated abort
 +
                  IMPLICIT Abort-reason
 +
                  OPTIONAL
 +
          }
 +
 
 +
  Abort-reason ::=
 +
          INTEGER {
 +
              unspecified(0),
 +
              unrecognized-ppdu(1),
 +
              unexpected-ppdu(2),
 +
              unrecognized-ppdu-parameter(4),
 +
              invalid-ppdu-parameter(5),
 +
              reference-mismatch(9)
 +
          }
 +
 
 +
 
 +
  -- data PDU
 +
 
 +
  UserData-PDU ::=
 +
      [5]                        -- this is the ASN.1 object
 +
 
 +
 
 +
 
 +
Rose                                                          [Page 29]
 +
 
 +
RFC 1085              ISO Presentation Services          December 1988
 +
 
 +
 
 +
          ANY                    -- if it is a top-level PDU, it
 +
                                  -- is in PCI #1, otherwise PCI #3
 +
 
 +
 
 +
  -- data PDU for the udp-based service
 +
 
 +
  CL-UserData-PDU ::=
 +
      [6]
 +
          IMPLICIT SEQUENCE {
 +
              reference
 +
                  SessionConnectionIdentifier,
 +
 
 +
              user-data[0]                -- this is the ASN.1 object
 +
                  ANY                    -- it is always in PCI #1
 +
          }
 +
 
 +
  END
 +
 
 
Appendix B:
 
Appendix B:
 +
 
Example of Serialization
 
Example of Serialization
  
Consider the following call to ROSE:
 
        RO-INVOKE (operation number      = 5                  operation class      = synchronous                  argument              = NONE                  invocation identifier = 1                  linked invocation id. = NONE                  priority              = 0)            .REQUEST
 
Ultimately, ROSE will use the P-DATA service:
 
        P-DATA (user data = {                              1,        -- this is the PCI                              {        -- this is the ASN.1 object                                invokeID 1,                                operation-value 5,                                argument {}                              }                            })            .REQUEST
 
The presentation provider will construct a UserData PDU and send thisvia the transport connection:
 
  
 +
  Consider the following call to ROSE:
  
 +
          RO-INVOKE (operation number      = 5
 +
                      operation class      = synchronous
 +
                      argument              = NONE
 +
                      invocation identifier = 1
 +
                      linked invocation id. = NONE
 +
                      priority              = 0)
 +
              .REQUEST
  
 +
  Ultimately, ROSE will use the P-DATA service:
  
 +
          P-DATA (user data = {
 +
                                1,        -- this is the PCI
 +
                                {        -- this is the ASN.1 object
 +
                                    invokeID 1,
 +
                                    operation-value 5,
 +
                                    argument {}
 +
                                }
 +
                              })
 +
              .REQUEST
 +
 +
  The presentation provider will construct a UserData PDU and send this
 +
  via the transport connection:
 +
 +
 +
 +
 +
Rose                                                          [Page 30]
 +
 +
RFC 1085              ISO Presentation Services          December 1988
 +
 +
 +
      [5] {
 +
            {
 +
              1,
 +
              5,
 +
              {}
 +
            }
 +
          }
 +
 +
  Applying the basic encoding rules for ASN.1, we have an stream of 12
 +
  octets.
 +
 +
      a5  0a                                      [5]
 +
      tag len
 +
 +
      a0  08                              [0]
 +
      tag len
 +
      02  01  01          invokeID 1
 +
      tag len value
 +
 +
      02  01  05          operation-value 5
 +
      tag len value
 +
 +
      30  00                      argument NULL
 +
      tag len
 +
 +
  Of course, in actual use, the argument would not be NONE and this
 +
  could be expected to dominate the size of the UserData PDU.  However,
 +
  it is worth nothing that the overhead of the encoding mechanism used
 +
  is on the order of 10 octets, hardly a staggering amount!
  
  [5] {        {          1,          5,          {}        }      }
 
Applying the basic encoding rules for ASN.1, we have an stream of 12octets.
 
  a5  0a                                      [5]  tag len
 
  a0  08                              [0]  tag len  02  01  01          invokeID 1  tag len value
 
  02  01  05          operation-value 5  tag len value
 
  30  00                      argument NULL  tag len
 
Of course, in actual use, the argument would not be NONE and thiscould be expected to dominate the size of the UserData PDU.  However,it is worth nothing that the overhead of the encoding mechanism usedis on the order of 10 octets, hardly a staggering amount!
 
 
Appendix C:
 
Appendix C:
 +
 
Determination of Network Called Address
 
Determination of Network Called Address
As described in Section 10, when the P-CONNECT.REQUEST primitive isissued the presentation provider must determine which of the networkaddresses present in the called presentation address parameter to usefor the presentation connection.  The first step in thisdetermination is to examine the quality of service parameter andconsider only those network addresses which support the correspondingtransport service.  In practice, it is likely that each networkaddress will support exactly the same transport services, so usingquality of service as a discriminant will either permit all or noneor the network addresses present to be selected.  This appendixdescribes a local policy which might be employed when deciding whichnetwork address to use.
 
The policy distinguishes between "underlying failures" and
 
  
 +
  As described in Section 10, when the P-CONNECT.REQUEST primitive is
 +
  issued the presentation provider must determine which of the network
 +
  addresses present in the called presentation address parameter to use
 +
  for the presentation connection.  The first step in this
 +
  determination is to examine the quality of service parameter and
 +
  consider only those network addresses which support the corresponding
 +
  transport service.  In practice, it is likely that each network
 +
  address will support exactly the same transport services, so using
 +
  quality of service as a discriminant will either permit all or none
 +
  or the network addresses present to be selected.  This appendix
 +
  describes a local policy which might be employed when deciding which
 +
  network address to use.
 +
 +
  The policy distinguishes between "underlying failures" and
  
  
  
"connection establishment failures".  An "underlying failure" occurswhen, using the desired transport service, the initiatingpresentation provider is unable to contact the respondingpresentation provider.  For the tcp-based service, this means that aTCP connection could not be established for some reason.  For theudp-based service, it means that a response was not received beforefinal time-out.  In contrast, a "connection establishment failure"occurs when the responding presentation provider can be contacted,but the presentation connection is rejected by either thepresentation provider or the correspondent presentation user.
+
Rose                                                          [Page 31]
The policy is simple: starting with the first network addresspresent, attempt the connection procedure.  If the procedure failsdue to an "underlying failure", then the next network address in thelist is tried.  This process is repeated until either an underlyingconnection is established or all network addresses are exhausted.If, however, a "connection establishment failure" occurs, then thepresentation provider immediately indicates this failure to thepresentation user and no further network addresses are considered.
+
 
Note that this is only one conformant policy of many.  For example,the presentation provider may wish to order network addresses basedon the "intensity" associated with the members present in the set oftransport services for each network address.
+
RFC 1085              ISO Presentation Services          December 1988
 +
 
 +
 
 +
  "connection establishment failures".  An "underlying failure" occurs
 +
  when, using the desired transport service, the initiating
 +
  presentation provider is unable to contact the responding
 +
  presentation provider.  For the tcp-based service, this means that a
 +
  TCP connection could not be established for some reason.  For the
 +
  udp-based service, it means that a response was not received before
 +
  final time-out.  In contrast, a "connection establishment failure"
 +
  occurs when the responding presentation provider can be contacted,
 +
  but the presentation connection is rejected by either the
 +
  presentation provider or the correspondent presentation user.
 +
 
 +
  The policy is simple: starting with the first network address
 +
  present, attempt the connection procedure.  If the procedure fails
 +
  due to an "underlying failure", then the next network address in the
 +
  list is tried.  This process is repeated until either an underlying
 +
  connection is established or all network addresses are exhausted.
 +
  If, however, a "connection establishment failure" occurs, then the
 +
  presentation provider immediately indicates this failure to the
 +
  presentation user and no further network addresses are considered.
 +
 
 +
  Note that this is only one conformant policy of many.  For example,
 +
  the presentation provider may wish to order network addresses based
 +
  on the "intensity" associated with the members present in the set of
 +
  transport services for each network address.
 +
 
 
Author's Address:
 
Author's Address:
Marshall RoseThe Wollongong Group1129 San Antonio RoadPalo Alto, CA 94303
+
 
Phone: (415) 962-7100
+
  Marshall Rose
+
  The Wollongong Group
 +
  1129 San Antonio Road
 +
  Palo Alto, CA 94303
 +
 
 +
  Phone: (415) 962-7100
 +
 
 +
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
Rose                                                          [Page 32]

Revision as of 22:49, 22 September 2020




Network Working Group M. Rose Request for Comments: 1085 TWG

                                                          December 1988


                      ISO Presentation Services
                   on top of TCP/IP-based internets

Status of this Memo

  This memo proposes a standard for the Internet community.
  Distribution of this memo is unlimited.

1. Introduction

  [RFC1006] describes a mechanism for providing the ISO transport
  service on top of the Transmission Control Protocol (TCP) [RFC793]
  and Internet Protocol (IP) [RFC791].  Once this method is applied,
  one may implement "real" ISO applications on top of TCP/IP-based
  internets, by simply implementing OSI session, presentation, and
  application services on top of the transport service access point
  which is provided on top of the TCP.  Although straight-forward,
  there are some environments in which the richness provided by the OSI
  application layer is desired, but it is nonetheless impractical to
  implement the underlying OSI infrastructure (i.e., the presentation,
  session, and transport services on top of the TCP).  This memo
  describes an approach for providing "stream-lined" support of OSI
  application services on top of TCP/IP-based internets for such
  constrained environments.

2. Terminology

  In as much as this memo is concerned primarily with concepts defined
  in the framework of Open Systems Interconnection (OSI) as promulgated
  by the International Organization for Standardization (ISO), the
  terminology used herein is intended to be entirely consistent within
  that domain of discourse.  This perspective is being taken despite
  the expressed intent of implementing the mechanism proposed by this
  memo in the Internet and other TCP/IP-based internets.  For those
  more familiar with the terminology used in this latter domain, the
  author is apologetic but unyielding.
  Although no substitute for the "correct" definitions given in the
  appropriate ISO documents, here is a short summary of the terms used
  herein.




Rose [Page 1]

RFC 1085 ISO Presentation Services December 1988


     Application Context:
        The collection of application service elements which
        cooperatively interact within an application-entity.
     Application Service Element:
        A standardized mechanism, defined by both a service and a
        protocol, which provides a well-defined capability, e.g.,
        ROSE -  the Remote Operations Service Element,
                which orchestrates the invocation of "total"
                operations between application-entities [ISO9066/2].
        ACSE -  the Association Control Service Element,
                which manages associations between application
                entities [ISO8650].
     Object Identifier:
        An ordered set of integers, used for authoritative
        identification.
     Presentation Service:
        A set of facilities used to manage a connection between two
        application-entities.  The fundamental responsibility of the
        presentation service is to maintain transfer syntaxes which
        are used to serialize application protocol data units for
        transmission on the network and subsequent de-serialization
        for reception.
     Protocol Data Unit (PDU):
        A data object exchanged between service providers.
     Serialization:
        The process of applying an abstract transfer notation to an
        object described using abstract syntax notation one (ASN.1)
        [ISO8824] in order to produce a stream of octets.
        De-serialization is the inverse process.
        It is assumed that the reader is familiar with terminology
        pertaining to the reference model [ISO7498], to the service
        conventions in the model [ISO8509], and to the
        connection-oriented presentation service [ISO8822].

3. Scope

  The mechanism proposed by this memo is targeted for a particular
  class of OSI applications, namely those entities whose application
  context contains only an Association Control Service Element (ACSE)
  and a Remote Operations Service Element (ROSE).  In addition, a


Rose [Page 2]

RFC 1085 ISO Presentation Services December 1988


  Directory Services Element (DSE) is assumed for use by the
  application-entity, but only in a very limited sense.  The
  organization of such an entity is as follows:


     +------------------------------------------------------------+
     |                                                            |
     |                     Application-Entity                     |
     |                                                            |
     |    +------+              +------+              +------+    |
     |    | ACSE |              | ROSE |              | DSE  |    |
     |    +------+              +------+              +------+    |
     |                                                            |
     +------------------------------------------------------------+
     |                                                            |
     |                Presentation Services                       |
     |                                                            |
     |    P-CONNECT         P-RELEASE         P-DATA              |
     |                      P-U-ABORT                             |
     |                      P-P-ABORT                             |
     |                                                            |
     +------------------------------------------------------------+


  The mechanism proposed by this memo is not applicable to entities
  whose application context is more extensive (e.g., contains a
  Reliable Transfer Service Element).  The mechanism proposed by this
  memo could be modified to support additional elements.  However, such
  extensions would, at this time, merely serve to defeat the purpose of
  providing the minimal software infrastructure required to run the
  majority of OSI applications.
  The motivation for this memo was initially derived from a requirement
  to run the ISO Common Management Information Protocol (CMIP) in
  TCP/IP-based internets.  In its current definition, CMIP uses
  precisely the application service elements provided for herein.  It
  may be desirable to offer CMIP users a quality of service different
  than the one offered by a connection with a high-quality level of
  reliability.  This would permit a reduced utilization of connection-
  related resources.  This memo proposes a mechanism to implement this
  less robust -- and less costly -- quality of service.

4. Approach

  The approach proposed by this memo relies on the following
  architectural nuances:



Rose [Page 3]

RFC 1085 ISO Presentation Services December 1988


    - the TCP is a stream-oriented transport protocol
    - ASN.1 objects, when represented as a stream of octets are
      self-delimiting
    - The ISO presentation service permits the exchange of ASN.1
      objects
    - The ACSE and ROSE require the following presentation
      facilities:
          The Connection Establishment Facility
          The Connection Termination Facility
          The Information Transfer Facility (P-DATA
          service only)
    - The majority of the parameters used by the services which
      provide these facilities can be "hard-wired" to avoid
      negotiation
  In principle, these nuances suggest that a "cheap" emulation of the
  ISO presentation services could be implemented by simply serializing
  ASN.1 objects over a TCP connection.  This approach is precisely what
  is proposed by this memo.
  Given this perspective, this memo details how the essential features
  of the ISO presentation service may be maintained while using a
  protocol entirely different from the one given in [ISO8823]. The
  overall composition proposed by this memo is as follows:


  +-----------+                                       +-----------+
  |  PS-user  |                                       |  PS-user  |
  +-----------+                                       +-----------+
       |                                                     |
       | PS interface                           PS interface |
       |  [ISO8822]                                          |
       |                                                     |
  +----------+   ISO Presentation Services on the TCP  +----------+
  |  client  |-----------------------------------------|  server  |
  +----------+              (this memo)                +----------+
       |                                                     |
       | TCP interface                         TCP interface |
       |  [RFC793]                                           |
       |                                                     |



Rose [Page 4]

RFC 1085 ISO Presentation Services December 1988


  In greater detail, the "client" and "server" boxes implement the
  protocol described in this memo.  Each box contains three modules:
     - a dispatch module, which provides the presentation services
       interface,
     - a serialization module, containing a serializer, which takes
       an ASN.1 object and applies the encoding rules of [ISO8825]
       to produce a stream of octets, and a de-serializer, which
       performs the inverse operation, and
     - a network module, which manages a TCP connection.
  The software architecture used to model a network entity using this
  approach is as follows:


  +---------+    +----------+                                   +-----+
  |         |    |          |  output +---------------+  input  |  n  |
  |         |    |          |<--------| de-serializer |<--------|  e  |
  |         |    |          |   queue +---------------+  queue  |  t  |
  | PS-user |----| dispatch |                                   |  w  |
  |         |    |          |  input  +---------------+ output  |  o  |
  |         |    |          |-------->|   serializer  |-------->|  r  |
  |         |    |          |  queue  +---------------+ queue   |  k  |
  +---------+    +----------+                                   +-----+
                                |---- serialization module ----|


  The ISO presentation layer is concerned primarily with the
  negotiation of transfer syntaxes in addition to the transformation to
  and from transfer syntax.  However, using the mechanism proposed by
  this memo, no negotiation component will be employed.  This memo
  specifies the fixed contexts which exist over each presentation
  connection offered.  This memo further specifies other constants
  which are used in order to eliminate the need for presentation layer
  negotiation.

5. Fundamental Parameters

  There are certain parameters which are used by the presentation
  service and are defined here.
     1. Presentation address:
     The structure of a presentation address is presented in Addendum 3
     to [ISO7498].  This memo interprets a presentation address as an


Rose [Page 5]

RFC 1085 ISO Presentation Services December 1988


     ordered-tuple containing:
        - one or more network addresses
        - a transport selector
        - a session selector
        - a presentation selector
     Each selector is an uninterpreted octet string of possibly zero
     length.  The mechanism proposed in this memo completely ignores
     the values of these selectors.  Note however that the value of the
     presentation selector is preserved by the provider.
     A network address is interpreted as containing three components:
        - a 32-bit IP address
        - a set indicating which transport services are available
          at the IP address  (currently only two members are defined:
          TCP and UDP; as experience is gained, other transport
          services may be added); as a local matter, if a member is
          present it may have an "intensity" associated with it:
          either "possibly present" or "definitely present"
        - a 16-bit port number
     As a consequence of these interpretations, any application-entity
     residing in the network can be identified by its network address.
     2. Presentation context list
     A list of one or more presentation contexts.  Each presentation
     context has three components:
        - a presentation context identifier (PCI), an integer
        - an abstract syntax name, an object identifier
        - an abstract transfer name, an object identifier
     The range of values these components may take is severely
     restricted by this memo.  In particular, exactly two contexts are
     defined: one for association control and the other for the
     specific application service element which is being carried as ROS
     APDUs (see the section on connection establishment for the precise
     values).
     In addition, if the presentation context list appears in a
     "result" list (e.g., the Presentation context result list


Rose [Page 6]

RFC 1085 ISO Presentation Services December 1988


     parameter for the P-CONNECT service), a fourth component is
     present:
        - an acceptance indicator
     which indicates if the context was accepted by both the service
     provider and the remote peer.  If the context was not accept, a
     brief reason, such as "abstract syntax not supported" is given.
     For the novice reader, one might think of the abstract syntax
     notation as defining the vocabulary of some language, that is, it
     lists the words which can be spoken.  In contrast, the abstract
     transfer notation defines the pronunciation of the language.
     3. User data
     User data passes through the presentation service interface as
     ASN.1 objects (in a locally defined form).  Associated with each
     object is a presentation context identifier.  The PCI
     distinguishes the context for which the data is intended.  The
     range of values the PCI may take is severely restricted by this
     memo.  Exactly one of two contexts must always be used: either the
     value for the ACSE presentation context or the value for the ROSE.
     4. Quality of Service
     Quality of service is a collection of "elements".  Each element
     denotes some characteristics of the communication, e.g., desired
     throughput, and some value in an arbitrary unit of measure.  For
     our purposes, only one quality of service element is interpreted,
     "transport-mapping".  Currently, the "transport-mapping" element
     takes on one of two values: "tcp-based" or "udp-based".  At
     present, the two values may also be referred to as "high-quality"
     or "low-quality", respectively.
     As experience is gained, other values may be added.  These values
     would correspond directly to the new transport services which are
     listed in the network address.
     5. Version of Session Service
     Some application service elements (e.g., the ACSE) invoke
     different procedures based on the (negotiated) version of the
     session service available.  Implementations of this memo always
     indicate that session service version 2 has been negotiated.




Rose [Page 7]

RFC 1085 ISO Presentation Services December 1988


6. Choice of Transport Service

  Discussion thus far has centered along the use of the TCP as the
  underlying transport protocol.  However, it has also been noted that
  it may be desirable to permit a quality of service with less
  reliability in order to take advantage of some other characteristic
  of the transport service.
  The introduction of this service has several profound impacts on the
  model, and it is beyond the scope of this memo to enumerate these
  impacts.  However, this memo does propose a mechanism by which such a
  facility is implemented.
  To begin, we use the quality of service parameter for the P-CONNECT
  service to select an underlying transport service.  Only one element
  is currently interpreted, "transport-mapping" which takes the value
  "tcp-based" or "udp-based".  If the value is "tcp-based", then the
  presentation provider will use TCP as the underlying transport
  service. If, however, the value of "transport-mapping" is "udp-
  based", then the presentation provider will use the UDP instead.
  The User Datagram Protocol (UDP) [RFC768] is used to implement the
  udp-based service.  Very few transport-level facilities are placed on
  top of the UDP service, i.e., it is not the intent of this memo to
  "re-invent" the facilities in the TCP.  Hence, It is critical to
  understand that
          low-quality means LOW-QUALITY!
  Because the UDP is a packet-oriented protocol, it is necessary to
  slightly redefine the role of the serialization module.  For the
  serializer, we say that each top-level ASN.1 object placed on the
  input queue will form a single UDP datagram on the output queue which
  is given to the network.  Similarly, for the de-serializer, we say
  that each UDP datagram placed on the input queue from the network
  will form a single top-level ASN.1 object placed on the output queue.
  The term "top-level ASN.1 object" refers, of course, to the protocol
  data units being exchanged by the presentation providers.
  It should be noted that in its current incarnation, this memo permits
  the choice of two different transport protocols, e.g., the TCP or the
  UDP.  However, as experience is gained and as other transport
  protocols are deployed (e.g., the VMTP), then future incarnations of
  this memo will permit these transport protocols to be used.  This is
  a three step process: first, the set of transport services defined
  for the network address is updated; second, a corresponding value is
  added to the range of the quality of service element "transport-
  mapping"; and, third, the following sections of this memo are


Rose [Page 8]

RFC 1085 ISO Presentation Services December 1988


  modified accordingly.

7. Connection Establishment

  The Connection Establishment facility consists of one service, the
  P-CONNECT service.

7.1. The P-CONNECT Service

  This service is used to bring two identified application-entities
  into communication.  Its successful use results in a presentation
  connection, with an initial defined context set, being established
  between then.  This connection is available for their subsequent
  communication.  This is a confirmed service whose effects are
  sequenced and non-destructive.
  If the udp-based service is selected, then a presentation connection
  is formed which should be used infrequently and will have minimal
  reliability characteristics.
  For our purposes, the P-CONNECT service:
     - requests TCP or UDP resources,
     - builds a fixed defined context set, and
     - exchanges initial user data.
  Following are the interpretation of and the defaults assigned to the
  parameters of the P-CONNECT service:
     1. Calling Presentation Address
       This is a presentation address.  Although the ISO presentation
       service states that this parameter is mandatory, in practice, a
       local implementation rule may be used to determine an
       "ephemeral" address to use.
     2. Called Presentation Address
       This is a presentation address.  Note that when issuing the P-
       CONNECT.REQUEST primitive, this parameter may contain more than
       one network address.  In the P-CONNECT.INDICATION primitive
       however, only one network address, the one actually used to
       establish the presentation connection, is present.  (Appendix C
       describes a strategy which might be used to determine the actual
       network address).



Rose [Page 9]

RFC 1085 ISO Presentation Services December 1988


     3. Responding Presentation Address
       This parameter is identical to the value of the Called
       Presentation Address parameter of the P-CONNECT.INDICATION
       primitive.
     4. Multiple defined Contexts
       Always TRUE.  Note that this parameter is present only in the
       DIS version of the presentation service.
     5. Presentation context definition list
     Two contexts are defined:
     PCI     Abstract Syntax Name            Abstract Transfer Name
     ---     --------------------            ----------------------
      1      specific to the application     "iso asn.1 abstract
                                             transfer"
                                             1.0.8825
      3      "acse pci version 1"            "iso asn.1 abstract
                                             transfer"
             2.2.1.0.0                       1.0.8825
     The abstract syntax and transfer names for the ACSE PCI are for
     use with the DIS version of association control.  If the IS
     version is being used, then this PCI is used instead:
      3      "acse pci version 1"            "asn.1 basic encoding"
             2.2.1.0.1                       2.1.1
     6. Presentation context result list
       Identical to the Presentation context definition list with the
       addition that the acceptance indicator for both contexts is
       "accepted".
     7. Default Context Name
       None.
     8. Default Context Result
       Not applicable.




Rose [Page 10]

RFC 1085 ISO Presentation Services December 1988


     9. Quality of Service
       The element "transport-mapping" takes the value "tcp-based" or
       "udp-based".  In the future the range of values may be extended.
     10. Presentation Requirements
       None (the kernel functional unit is always used).
     11. Session Requirements
       Full duplex.
     12. Initial synchronization point serial number
       None.
     13. Initial Assignment of tokens
       None.
     14. Session connection identifier
       Unlike the "real" presentation service, depending on the quality
       of service selected, this parameter may have great significance
       to presentation provider.  Hence, the following format of the
       session connection identifier is mandated by this memo.
       user data:        a local string encoded as a T.61 string
                         using ASN.1, e.g., given string "gonzo":
                         14     05     67   6f   6e   7a   6f
                         tag  length   "g"  "o"  "n"  "z"  "o"
       common data:      a universal time encoding using ASN.1, e.g.,
                         given time "880109170845":
                         17     0c     38   38   30   31   30   ...
                         tag  length   "8"  "8"  "0"  "1"  "0"  ...
       additional data:  any string encoded as a T.61 string using ASN.1
                         (optional)
       As a local convention, the presentation provider may disregard
       the first two octets of each data component for transmission on
       the network as when the session connection identifier is
       represented with ASN.1, the tag and length octets will be added
       anyway.


Rose [Page 11]

RFC 1085 ISO Presentation Services December 1988


     15. User Data
       A single ASN.1 object is present, the appropriate A-ASSOCIATE
       PDU, carried in presentation context 3.
     16. Result
       One of the following values: acceptance, user-rejection,
       provider-rejection (transient), or provider-rejection
       (permanent).

8. Connection Termination

  The Connection Termination facility consists of three services, the
  P-RELEASE, P-U-ABORT, and P-P-ABORT services.

8.1. The P-RELEASE Service

  This service provides the service user with access to a negotiated
  release facility.  This service has effects which are sequenced and
  non-destructive.  Either presentation user is permitted to request
  this service.  However, in the event of collision, a provider-
  initiated abort procedure will be invoked.
  If the udp-based service is selected, then any data in transit may be
  discarded.
     For our purposes, the P-RELEASE service:
     - waits for the serialization module to drain,
     - sends release user data, and
     - releases TCP or UDP resources
  Following are the interpretation of and the defaults assigned to the
  parameters of the P-RELEASE service:
     1. Result
       Release accepted.
     2. User data
       A single ASN.1 object is present, the appropriate A-RELEASE PDU,




Rose [Page 12]

RFC 1085 ISO Presentation Services December 1988


8.2. The P-U-ABORT Service

  This service can be used by either presentation user to force the
  release of a presentation connection at any time and have the
  correspondent presentation user informed of this termination.  This
  service has effects which are not sequenced with respect to preceding
  service invocations and may be destructive.  It does not require the
  agreement of both service users.
     For our purposes, the P-U-ABORT service:
     - flushes the serialization module,
     - sends abort user data, and
     - releases TCP or UDP resources
  Following are the interpretation of and the defaults assigned to the
  parameters of the P-U-ABORT service:
     1. Presentation context identifier list
       Contained in the ASN.1 objects, if any, that are delivered as
       user data.
     2. User data
       A single ASN.1 object is present, an A-ABORT PDU, carried in
       presentation context 3.

8.3. The P-P-ABORT Service

  This service is the means by which the service provider may indicate
  the termination of the presentation connection for reasons internal
  to the service provider.  This service has effects which are not
  sequenced with respect to preceding service invocations.  The
  execution of this service disrupts any other concurrently active
  service and may thus be destructive.
     For our purposes, the P-P-ABORT service:
     - flushes the serialization module, and
     - releases TCP or UDP resources
  Following are the interpretation of and the defaults assigned to the
  parameters of the P-P-ABORT service.



Rose [Page 13]

RFC 1085 ISO Presentation Services December 1988


     1. Provider reason
       An integer code detailing why the connection was aborted. Codes
       include, but are not limited to: invalid PPDU parameter,
       unexpected PPDU, unrecognized PPDU, and specified reason.
     2. Abort data
       None.

9. Information Transfer

  Although the Information Transfer facility consists of many services,
  only one, the P-DATA service, is provided by this memo.

9.1. The P-DATA Service

  This services provides the service user with a data transfer
  capability.  This service has effects which are sequenced and non-
  destructive.
  If the udp-based service is selected, then there is an upper-bound on
  the size of the serialized ASN.1 objects which may be transmitted.
  This limit, imposed by the UDP, is 65536 octets.  As a practical
  matter, it is probably a good idea to keep datagrams less than or
  equal to 536 octets in size.
  For our purposes, the P-DATA service:
             - sends user data
  Following are the interpretation of and the defaults assigned to the
  parameters of the P-DATA service:
     1. User data
       A single ASN.1 object is present, a remote operations APDU,
       carried in presentation context 1.

10. Elements of Procedure

  The service provider is in one of the following states:
          IDLE, WAIT1, WAIT2, DATA, WAIT3, or WAIT4
       The possible events are:
          PS-user         P-CONNECT.REQUEST


Rose [Page 14]

RFC 1085 ISO Presentation Services December 1988


                          P-CONNECT.RESPONSE
                          P-RELEASE.REQUEST
                          P-RELEASE.RESPONSE
                          P-DATA.REQUEST
                          P-U-ABORT.REQUEST
          network         TCP closed or errored(*)
                          receive ConnectRequest PDU
                          receive ConnectResponse PDU
                          receive ReleaseRequest PDU
                          receive ReleaseResponse PDU
                          receive UserData(*) or CL-UserData(**) PDU
                          receive user-initiated Abort PDU
                          receive provider-initiated Abort PDU
                          timer expires(**)


       The possible actions are:
          PS-user         P-CONNECT.INDICATION
                          P-CONNECT.CONFIRMATION
                          P-RELEASE.INDICATION
                          P-RELEASE.CONFIRMATION
                          P-DATA.INDICATION
                          P-U-ABORT.INDICATION
                          P-P-ABORT.INDICATION
          network         open TCP(*)
                          close TCP(*)
                          send ConnectRequest PDU
                          send ConnectResponse PDU
                          send ReleaseRequest PDU
                          send ReleaseResponse PDU
                          send UserData(*) or CL-UserData(**) PDU
                          send user-initiated Abort PDU
                          send provider-initiated Abort PDU
                          set timer(**)
          (*)   tcp-based service only
          (**)  udp-based service only

10.1. Elements of Procedure specific to the tcp-based service

  The provider maintains the following information for each
  presentation connection:
     - a local designator for the PS-user



Rose [Page 15]

RFC 1085 ISO Presentation Services December 1988


     - a local designator for a TCP connection
     - the state of the connection (e.g., IDLE, WAIT1, and so on)
  Upon receiving an event from the network, the provider finds the
  associated presentation connection.  Matching is done by simply
  comparing local designators for the TCP connection.  Whenever a
  connection remains in or returns to the IDLE state, any associated
  resources, such as an attachment to a local TCP port, are released.
  In the procedures which follow, outgoing PDUs are "placed on the
  input queue for the serializer".  This has a different meaning
  depending on the type of PDU being enqueued.  If the PDU is not an
  abort PDU (user-initiated or provider-initiated), then the PDU is
  simply appended to the input queue regardless of the number of PDUs
  present.  If however, the PDU is an abort PDU, then the provider
  checks the size of the input queue.  If the input queue is non-empty
  or if the serializer is busy transmitting to the network, then the
  abort PDU is discarded, and the serializer is flushed, aborting any
  output to the network in progress.  However, if the input queue is
  empty, then the Abort PDU is appended to the queue, and a small timer
  started.  If the timer expires before the PDU has been serialized and
  transmitted, then the serializer is flushed, aborting any output to
  the network in progress.
  Further, in general, whenever the TCP connection is closed (either
  locally by the provider, or remotely by the network) or has errored,
  the serializer is flushed.  The one exception to this is if a
  ReleaseResponse PDU is being serialized and transmitted to the
  network.  In this case, the provider will not close the TCP
  connection until after the serializer has finished.

10.2. Elements of Procedure specific to the udp-based service

  The provider maintains the following information for each
  presentation connection:
     - a local designator for the PS-user
     - the 32-bit IP address and 16-bit UDP port number of the
       initiating host
     - the 32-bit IP address and 16-bit UDP port number of the
       responding host
     - the session connection identifier used to establish the
       presentation connection



Rose [Page 16]

RFC 1085 ISO Presentation Services December 1988


     - a local designator for an UDP endpoint
     - the state of the connection (e.g., IDLE, WAIT1, and so on)
     - a retransmission counter
  Upon receiving an event from the network, the provider finds the
  associated presentation connection.  Matching is done on the basis of
  addresses, ports, and the session connection identifier (i.e., two
  different presentation connections may differ only in their session
  connection identifier).  If no presentation connection can be found,
  then for the purposes of discussion, it may be assumed that a
  "vanilla" presentation connection is created and initialized to the
  IDLE state.  Further, whenever a connection remains in or returns to
  the IDLE state, any associated resources, such as an attachment to a
  local UDP port, are released.
  In the procedures which follow, outgoing PDUs are "placed on the
  input queue for the serializer".  This means that the ASN.1 object is
  serialized and the resulting sequence of octets is sent as a single
  UDP datagram.

10.3. State Transitions

  Following are the rules for transitioning states.  If an event
  associated with a user-generated primitive is omitted, then it is an
  interface error for the user to issue that primitive in the given
  state.  Each state considers all possible incoming PDUs.
  We assume that for the tcp-based service, that some entity starts a
  passive TCP open.  When the passive open completes, the entity, using
  some local rule, locates a PS-user to be associated with the incoming
  presentation connection.  This presentation connection is then placed
  in the IDLE state.  The entity then continues listening for other
  passive opens to complete.  The mechanisms associated with this
  entity are entirely a local matter, the concept of this listener is
  introduced solely as a modeling artifact.
  Finally, if the udp-based service is selected, then CL-UserData PDUs
  are exchanged by the provider instead of UserData PDUs.


                                   IDLE state
       Event:     P-CONNECT.REQUEST primitive issued
  Based on the quality of service parameter and the list of network
  addresses in the called presentation address parameter, the provider


Rose [Page 17]

RFC 1085 ISO Presentation Services December 1988


  selects an address for the use of the presentation connection.  The
  method for making this determination is a local matter.  (Appendix C
  discusses a strategy which might be used.)  For the discussion that
  follows, we assume that a network address supporting the desired
  quality of service has been determined.
  Based on the network address chosen from the called presentation
  address parameter, the provider selects a compatible network address
  from the calling presentation address parameter.  The provider
  attaches itself to the port associated with this network address.
  (By local determination, this address need not be used, and an
  "ephemeral" port may be chosen by the provider.)
  For the tcp-based service, the provider attempts to establish a TCP
  connection to the network address listed in the called presentation
  address.  If the connection can not be established, the P-
  CONNECT.CONFIRMATION(-) primitive is issued with a reason of
  provider-rejection, and the provider remains in the IDLE state.
  Regardless, the user data parameter is placed in a ConnectRequest
  PDU, which is put on the input queue for the serializer.
  For the udp-based service, the provider sets the retransmission
  counter to a small value (e.g., 2), and now starts a small timer.
  Regardless, the provider enters the WAIT1 state.


       Event:     ConnectRequest PDU received
  The provider issues the P-CONNECT.INDICATION primitive and enters the
  WAIT2 state.


       Event:     any other PDU received
  If the PDU is not an Abort PDU, the provider constructs a provider-
  initiated Abort PDU, which is put on the input queue for the
  serializer.  Regardless, the provider remains in the IDLE state.


                                   WAIT1 state
       Event:     P-U-ABORT.REQUEST primitive issued
  The user data parameter is placed in an Abort PDU, which is put on
  the input queue for the serializer.  The provider enters the IDLE
  state.


Rose [Page 18]

RFC 1085 ISO Presentation Services December 1988


       Event:     ConnectResponse PDU received
  For the udp-based service, the timer is cancelled.  If the PDU
  indicates rejection, the P-CONNECT.CONFIRMATION(-) primitive is
  issued and the provider enters the IDLE state.  Otherwise, the P-
  CONNECT.CONFIRMATION(+) primitive is issued and the provider enters
  the DATA state.


       Event:     user-initiated Abort PDU received
  The provider issues the P-U-ABORT.INDICATION primitive and enters the
  IDLE state.


       Event:     any other PDU received
  If the PDU not an Abort PDU, the provider constructs a provider-
  initiated Abort PDU, which is put on the input queue for the
  serializer.  Regardless, The provider issues the P-P-ABORT.INDICATION
  primitive and enters the the IDLE state.


       Event:     timer expires
  The provider decrements the retransmission counter.  If the resulting
  value is less than or equal to zero, the provider issues the P-
  CONNECT.CONFIRMATION(-) primitive and enters the IDLE state.
  Otherwise, a ConnectRequest PDU is put on the input queue for the
  serializer, the small timer is started again, and the provider
  remains in the WAIT1 state.


                                   WAIT2 state
       Event:     P-CONNECT.RESPONSE primitive issued
  The user data parameter is placed in a ConnectResponse PDU, which is
  put on the input queue for the serializer.  If the result parameter
  had the value user-rejection, the provider enters the IDLE state.
  Otherwise if the parameter had the value acceptance, the provider
  enters the DATA state.





Rose [Page 19]

RFC 1085 ISO Presentation Services December 1988


       Event:     P-U-ABORT.REQUEST primitive issued
  The user data parameter is placed in an Abort PDU, which is put on
  the input queue for the serializer.  The provider enters the IDLE
  state.


       Event:     user-initiated Abort PDU received
  The provider issues the P-U-ABORT.INDICATION primitive and enters the
  IDLE state.


       Event:     any other PDU received
  If the PDU is not an Abort PDU, the provider constructs a provider-
  initiated Abort PDU, which is put on the input queue for the
  serializer.  Regardless, The provider issues the P-P-ABORT.INDICATION
  primitive and enters the the IDLE state.


                                   DATA state
       Event:     P-DATA.REQUEST primitive issued
  The user data parameter is placed in a UserData PDU, which is put on
  the input queue for the serializer.  The provider remains in the DATA
  state.


       Event:     P-RELEASE.REQUEST primitive issued
  The user data parameter is placed in a ReleaseRequest PDU, which is
  put on the input queue for the serializer.
  For the udp-based service, the provider sets the retransmission
  counter to a small value (e.g., 2), and now starts a small timer.
  Regardless, the provider enters the WAIT3 state.


       Event:     P-U-ABORT.REQUEST primitive issued
  The user data parameter is placed in an Abort PDU, which is put on
  the input queue for the serializer.  The provider enters the IDLE
  state.



Rose [Page 20]

RFC 1085 ISO Presentation Services December 1988


       Event:     UserData PDU received
  The provider issues the P-DATA.INDICATION primitive and remains in
  the DATA state.


       Event:     ReleaseRequest PDU received
  The provider issues the P-RELEASE.INDICATION primitive, and enters
  the WAIT4 state.


       Event:     user-initiated Abort PDU received
  The provider issues the P-U-ABORT.INDICATION primitive and enters
   the IDLE state.


       Event:     any other PDU received
  If the PDU is not an Abort PDU, the provider constructs a provider-
  initiated Abort PDU, which is put on the input queue for the
  serializer.  Regardless, the provider issues the P-P-ABORT.INDICATION
  primitive and enters the the IDLE state.


                                   WAIT3 state
       Event:     P-U-ABORT.REQUEST primitive issued
  The user data parameter is placed in an Abort PDU, which is put on
  the input queue for the serializer.  The provider enters the IDLE
  state.


       Event:     ReleaseResponse PDU received
  For the udp-based service, the timer is cancelled.  The provider
  issues the P-RELEASE.CONFIRMATION primitive and enters the IDLE
  state.


       Event:     user-initiated Abort PDU received
  The provider issues the P-U-ABORT.INDICATION primitive and enters the
  IDLE state.



Rose [Page 21]

RFC 1085 ISO Presentation Services December 1988


       Event:     any other PDU received
  If the PDU is not an Abort PDU, the provider constructs a provider-
  initiated Abort PDU, which is put on the input queue for the
  serializer.  Regardless, the provider issues the P-P-ABORT.INDICATION
  primitive and enters the the IDLE state.


       Event:     timer expires
  The provider decrements the retransmission counter.  If the resulting
  value is less than or equal to zero, the provider constructs a
  provider-initiated Abort PDU, which is put on the input queue for the
  serializer.  It then issues the P-P-ABORT.INDICATION primitive and
  enters the IDLE state.  Otherwise, a ReleaseRequest PDU is put on the
  input queue for the serializer, the small timer is started again, and
  the provider remains in the WAIT3 state.


                                   WAIT4 state
       Event:     P-RELEASE.RESPONSE primitive issued
  The user data parameter is placed in a ReleaseResponse PDU, which is
  put on the input queue for the serializer.  The provider now enters
  the IDLE state.
       Event:     P-U-ABORT.REQUEST primitive issued
  The user data parameter is placed in an Abort PDU, which is put on
  the input queue for the serializer.  The provider now enters the IDLE
  state.


       Event:     user-initiated Abort PDU received
  The provider issues the P-U-ABORT.INDICATION primitive and enters the
  IDLE state.


       Event:     any other PDU received
  If the PDU is not an Abort PDU, the provider constructs a provider-
  initiated Abort PDU, which is put on the input queue for the
  serializer.  Regardless, the provider issues the P-P-ABORT.INDICATION
  primitive and enters the the IDLE state.



Rose [Page 22]

RFC 1085 ISO Presentation Services December 1988


11. Directory Services

  Although not properly part of the presentation service, this memo
  assumes and specifies a minimal Directory service capability for use
  by the application-entity.
  The function of the Directory Service Element is to provide two
  mappings: first, a service name is mapped into an application entity
  title, which is a global handle on the service; and, second, the
  application-entity title is mapped onto a presentation address.
  The structure of presentation addresses were defined in Section 5.
  The structure of application-entity titles is less solidly agreed
  upon at the present time.  Since objects of this type are not
  interpreted by the presentation service, this memo does not specify
  their structure.  If the DIS version of association control is being
  used, then use of an OBJECT IDENTIFIER will suffice.  If the IS
  version is being employed, then application-entity titles consist of
  two parts: an application-process title and an application-entity
  qualifier.  It is suggested that the AP-Title use an OBJECT
  IDENTIFIER and that the AE-Qualifier use NULL.
  This memo requires the following mapping rules:
     1.  The service name for an OSI application-entity using the
     mechanisms proposed by this memo is:
             <designator> "-" <qualifier>
     where <designator> is a string denoting either domain name or a
     32-bit IP address, and <qualifier> is a string denoting the type
     of application-entity desired, e.g.,
             "gonzo.twg.com-mgmtinfobase"
     2.  Any locally defined mapping rules may be used to map the
     service designation into an application-entity title.
     3.  The application-entity title is then mapped into a
     presentation address, with uninterpreted transport, session, and
     presentation selectors, and one or more network addresses, each
     containing:
        -the 32-bit IP address resolved from the <designator> portion
         of the service name,
        - a set indicating which transport services are available


Rose [Page 23]

RFC 1085 ISO Presentation Services December 1988


          at the IP address,
        - the 16-bit port number resolved from the <qualifier>
          portion of the service name (using the Assigned Numbers
          document), and
        - optionally, a presentation selector, which is an
          uninterpreted sequence of octets.
  The method by which the mappings are obtained are straight-forward.
  The directory services element employs the Domain Name System along
  with a local table which may be used to resolve the address employing
  local rules.
  In the simplest of implementations, the DNS is used to map the
  <designator> to an IP address, and to fill-in the set of transport
  services available at the IP address.  The port number is found in a
  local table derived from the current Assigned Numbers document.
  Finally, the presentation selector is empty.
  A more ambitious implementation would use a local table to perhaps
  provide a presentation selector.  This would be useful, e.g., in
  "proxy" connections.  The network address would resolve to the proxy
  agent for the non-IP device, and the presentation selector would
  indicate to the proxy agent the particular non-IP device desired.
  This implies, of course, that the local table and the proxy agent
  bilaterally agree as to the interpretation of each presentation
  selector.

12. Remarks

  To begin, if one really wanted to implement ISO applications in a
  TCP/IP-based network, then the method proposed by [RFC1006] is the
  preferred method for achieving this.  However, in a constrained
  environment, where it is necessary to host an application layer
  entity with a minimal amount of underlying OSI infrastructure, this
  memo proposes an alternative mechanism.  It should be noted that an
  OSI application realized using this approach can be moved directly to
  an [RFC1006]-based environment with no modifications.
  A key motivation therefore is to minimize the size of the alternate
  underling infrastructure specified by this memo.  As more and more
  presentation services functionality is added, the method proposed
  herein would begin to approximate the ISO presentation protocol.
  Since this in contrary to the key motivation, featurism must be
  avoided at all costs.



Rose [Page 24]

RFC 1085 ISO Presentation Services December 1988


13. Acknowledgements

  Several individuals contributed to the technical quality of this
  memo:
          Karl Auerbach, Epilogue Technologies
          Joseph Bannister, Unisys
          Amatzia Ben-Artzi, Sytek
          Stephen Dunford, Unisys
          Lee Labarre, MITRE
          Keith McCloghrie, The Wollongong Group
          Jim Robertson, Bridge Communications
          Glenn Trewitt, Stanford University

14. References

    [ISO7498]  Information Processing Systems - Open Systems
               Interconnection, "Basic Reference Model", October, 1984.
    [ISO8509]  Information Processing Systems - Open Systems
               Interconnection, " Service Conventions".
    [ISO8650]  Information Processing Systems - Open Systems
               Interconnection, " Protocol Specification for the
               Association Control Service Element (Final Text
               of DIS 8650)", January, 1988.
    [ISO8822]  Information Processing Systems - Open Systems
               Interconnection, " Connection Oriented Presentation
               Service Definition (Final Text of DIS 8822)",
               April, 1988.
    [ISO8823]  Information Processing Systems - Open Systems
               Interconnection, " Connection Oriented Presentation
               Protocol Specification (Final Text of DIS 8822)",
               April, 1988.
    [ISO8824]  Information Processing Systems - Open Systems
               Interconnection, " Specification of Abstract Syntax
               Notation One (ASN.1)", December, 1987.
    [ISO8825]  Information Processing Systems - Open Systems
               Interconnection, "Specification of basic encoding rules
               for Abstract Syntax Notation One (ASN.1)",
               December, 1987.
    [ISO9072/2]  Information Processing Systems - Text Communication
                 MOTIS, " Remote Operations Part 2: Protocol


Rose [Page 25]

RFC 1085 ISO Presentation Services December 1988


                 Specification (Working Document for DIS 9072/2)",
                 November, 1987.
    [RFC768]  Postel, J., "User Datagram Protocol", RFC 768, USC/ISI,
              28 August 1980.
    [RFC791]  Postel, J., "Internet Protocol - DARPA Internet Program
              Protocol Specification", RFC 791, USC/ISI,
              September 1981.
    [RFC793]  Postel, J., "Transmission Control Protocol - DARPA
              Internet Program Protocol Specification", RFC 793,
              USC/ISI, September 1981.
    [RFC1006]  Rose, M., and D. Cass, "ISO Transport 1 on Top of the
               TCP Version: 3", Northrop Research and Technology
               Center, May 1987.

Appendix A:

Abstract Syntax Definitions

  RFC1085-PS DEFINITIONS ::=
  BEGIN
  PDUs ::=
          CHOICE {
              connectRequest
                  ConnectRequest-PDU,
              connectResponse
                  ConnectResponse-PDU,
              releaseRequest
                  ReleaseRequest-PDU,
              releaseResponse
                  ReleaseResponse-PDU,
              abort
                  Abort-PDU,
              userData
                  UserData-PDU,
              cL-userData
                  CL-UserData-PDU


Rose [Page 26]

RFC 1085 ISO Presentation Services December 1988


          }


  -- connect request PDU
  ConnectRequest-PDU ::=
      [0]
          IMPLICIT SEQUENCE {
              version[0]          -- version-1 corresponds to to this
                                     memo
                  IMPLICIT INTEGER { version-1(0) },
              reference
                  SessionConnectionIdentifier,
              calling
                  PresentationSelector
                  OPTIONAL,
              called[2]
                  IMPLICIT PresentationSelector
                  OPTIONAL,
              asn[3]              -- the ASN for PCI #1
                  IMPLICIT OBJECT IDENTIFIER,
              user-data
                  UserData-PDU
          }
  SessionConnectionIdentifier ::=
      [0]
          SEQUENCE {
              callingSSUserReference
                  T61String,
              commonReference
                  UTCTime,
              additionalReferenceInformation[0]
                  IMPLICIT T61String
                  OPTIONAL
          }
  PresentationSelector ::=
      [1]
          IMPLICIT OCTET STRING


Rose [Page 27]

RFC 1085 ISO Presentation Services December 1988


  -- connect response PDU
  ConnectResponse-PDU ::=
      [1]
          IMPLICIT SEQUENCE {
              reference           -- present only in the udp-based
                                  -- service
                  SessionConnectionIdentifier
                  OPTIONAL,
              responding
                  PresentationSelector
                  OPTIONAL,
              reason[2]           -- present only if the connection
                                  -- was rejected
                  IMPLICIT Rejection-reason
                  OPTIONAL,
              user-data           -- present only if reason is absent
                                  -- OR has the
                                  -- value rejected-by-responder
                  UserData-PDU
                  OPTIONAL
          }
  Rejection-reason ::=
          INTEGER {
              rejected-by-responder(0)
              called-presentation-address-unknown(1),
              local-limit-exceeded(3),
              protocol-version-not-supported(4),
          }


  -- release request PDU
  ReleaseRequest-PDU ::=
      [2]
          IMPLICIT SEQUENCE {
              reference           -- present only in the udp-based
                                  -- service
                  SessionConnectionIdentifier
                  OPTIONAL,
              user-data
                  UserData-PDU
          }


Rose [Page 28]

RFC 1085 ISO Presentation Services December 1988


  -- release response PDU
  ReleaseResponse-PDU ::=
      [3]
          IMPLICIT SEQUENCE {
              reference           -- present only in the udp-based
                                  -- service
                  SessionConnectionIdentifier
                  OPTIONAL,
              user-data
                  UserData-PDU
          }
  -- abort PDU
  Abort-PDU ::=
      [4]
          SEQUENCE {
              reference           -- present only in the udp-based
                                  -- service
                  SessionConnectionIdentifier
                  OPTIONAL,
              user-data   -- MAY BE present on user-initiated abort
                  UserData-PDU
                  OPTIONAL,
              reason[1]   -- ALWAYS present on provider-initiated abort
                  IMPLICIT Abort-reason
                  OPTIONAL
          }
  Abort-reason ::=
          INTEGER {
              unspecified(0),
              unrecognized-ppdu(1),
              unexpected-ppdu(2),
              unrecognized-ppdu-parameter(4),
              invalid-ppdu-parameter(5),
              reference-mismatch(9)
          }


  -- data PDU
  UserData-PDU ::=
      [5]                         -- this is the ASN.1 object


Rose [Page 29]

RFC 1085 ISO Presentation Services December 1988


          ANY                     -- if it is a top-level PDU, it
                                  -- is in PCI #1, otherwise PCI #3


  -- data PDU for the udp-based service
  CL-UserData-PDU ::=
      [6]
          IMPLICIT SEQUENCE {
              reference
                  SessionConnectionIdentifier,
              user-data[0]                -- this is the ASN.1 object
                  ANY                     -- it is always in PCI #1
          }
  END

Appendix B:

Example of Serialization


  Consider the following call to ROSE:
          RO-INVOKE (operation number      = 5
                     operation class       = synchronous
                     argument              = NONE
                     invocation identifier = 1
                     linked invocation id. = NONE
                     priority              = 0)
              .REQUEST
  Ultimately, ROSE will use the P-DATA service:
          P-DATA (user data = {
                                1,        -- this is the PCI
                                {         -- this is the ASN.1 object
                                   invokeID 1,
                                   operation-value 5,
                                   argument {}
                                }
                              })
              .REQUEST
  The presentation provider will construct a UserData PDU and send this
  via the transport connection:



Rose [Page 30]

RFC 1085 ISO Presentation Services December 1988


     [5] {
           {
             1,
             5,
             {}
           }
         }
  Applying the basic encoding rules for ASN.1, we have an stream of 12
  octets.
     a5  0a                                       [5]
     tag len
     a0  08                               [0]
     tag len
     02  01  01           invokeID 1
     tag len value
     02  01  05           operation-value 5
     tag len value
     30  00                       argument NULL
     tag len
  Of course, in actual use, the argument would not be NONE and this
  could be expected to dominate the size of the UserData PDU.  However,
  it is worth nothing that the overhead of the encoding mechanism used
  is on the order of 10 octets, hardly a staggering amount!

Appendix C:

Determination of Network Called Address

  As described in Section 10, when the P-CONNECT.REQUEST primitive is
  issued the presentation provider must determine which of the network
  addresses present in the called presentation address parameter to use
  for the presentation connection.  The first step in this
  determination is to examine the quality of service parameter and
  consider only those network addresses which support the corresponding
  transport service.  In practice, it is likely that each network
  address will support exactly the same transport services, so using
  quality of service as a discriminant will either permit all or none
  or the network addresses present to be selected.  This appendix
  describes a local policy which might be employed when deciding which
  network address to use.
  The policy distinguishes between "underlying failures" and


Rose [Page 31]

RFC 1085 ISO Presentation Services December 1988


  "connection establishment failures".  An "underlying failure" occurs
  when, using the desired transport service, the initiating
  presentation provider is unable to contact the responding
  presentation provider.  For the tcp-based service, this means that a
  TCP connection could not be established for some reason.  For the
  udp-based service, it means that a response was not received before
  final time-out.  In contrast, a "connection establishment failure"
  occurs when the responding presentation provider can be contacted,
  but the presentation connection is rejected by either the
  presentation provider or the correspondent presentation user.
  The policy is simple: starting with the first network address
  present, attempt the connection procedure.  If the procedure fails
  due to an "underlying failure", then the next network address in the
  list is tried.  This process is repeated until either an underlying
  connection is established or all network addresses are exhausted.
  If, however, a "connection establishment failure" occurs, then the
  presentation provider immediately indicates this failure to the
  presentation user and no further network addresses are considered.
  Note that this is only one conformant policy of many.  For example,
  the presentation provider may wish to order network addresses based
  on the "intensity" associated with the members present in the set of
  transport services for each network address.

Author's Address:

  Marshall Rose
  The Wollongong Group
  1129 San Antonio Road
  Palo Alto, CA 94303
  Phone: (415) 962-7100
  EMail: [email protected]









Rose [Page 32]