home *** CD-ROM | disk | FTP | other *** search
/ Handbook of Infosec Terms 2.0 / Handbook_of_Infosec_Terms_Version_2.0_ISSO.iso / text / rfcs / rfc1085.txt < prev    next >
Text File  |  1996-05-07  |  64KB  |  994 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group                                            M. Rose Request for Comments: 1085                                           TWG                                                            December 1988 
  8.  
  9.                         ISO Presentation Services                     on top of TCP/IP-based internets 
  10.  
  11. Status of this Memo 
  12.  
  13.    This memo proposes a standard for the Internet community.    Distribution of this memo is unlimited. 
  14.  
  15. 1. Introduction 
  16.  
  17.    [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. 
  18.  
  19. 2. Terminology 
  20.  
  21.    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. 
  22.  
  23.    Although no substitute for the "correct" definitions given in the    appropriate ISO documents, here is a short summary of the terms used    herein. 
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  Rose                                                            [Page 1] 
  30.  RFC 1085               ISO Presentation Services           December 1988 
  31.  
  32.        Application Context:          The collection of application service elements which          cooperatively interact within an application-entity. 
  33.  
  34.       Application Service Element:          A standardized mechanism, defined by both a service and a          protocol, which provides a well-defined capability, e.g., 
  35.  
  36.          ROSE -  the Remote Operations Service Element,                  which orchestrates the invocation of "total"                  operations between application-entities [ISO9066/2]. 
  37.  
  38.          ACSE -  the Association Control Service Element,                  which manages associations between application                  entities [ISO8650]. 
  39.  
  40.       Object Identifier:          An ordered set of integers, used for authoritative          identification. 
  41.  
  42.       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. 
  43.  
  44.       Protocol Data Unit (PDU):          A data object exchanged between service providers. 
  45.  
  46.       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. 
  47.  
  48.          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]. 
  49.  
  50. 3. Scope 
  51.  
  52.    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 
  53.  
  54.  
  55.  
  56. Rose                                                            [Page 2] 
  57.  RFC 1085               ISO Presentation Services           December 1988 
  58.  
  59.     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: 
  60.  
  61.        +------------------------------------------------------------+       |                                                            |       |                     Application-Entity                     |       |                                                            |       |    +------+              +------+              +------+    |       |    | ACSE |              | ROSE |              | DSE  |    |       |    +------+              +------+              +------+    |       |                                                            |       +------------------------------------------------------------+       |                                                            |       |                Presentation Services                       |       |                                                            |       |    P-CONNECT         P-RELEASE         P-DATA              |       |                      P-U-ABORT                             |       |                      P-P-ABORT                             |       |                                                            |       +------------------------------------------------------------+ 
  62.  
  63.     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. 
  64.  
  65.    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. 
  66.  
  67. 4. Approach 
  68.  
  69.    The approach proposed by this memo relies on the following    architectural nuances: 
  70.  
  71.  
  72.  
  73.  
  74.  
  75. Rose                                                            [Page 3] 
  76.  RFC 1085               ISO Presentation Services           December 1988 
  77.  
  78.       - the TCP is a stream-oriented transport protocol 
  79.  
  80.      - ASN.1 objects, when represented as a stream of octets are        self-delimiting 
  81.  
  82.      - The ISO presentation service permits the exchange of ASN.1        objects 
  83.  
  84.      - The ACSE and ROSE require the following presentation        facilities: 
  85.  
  86.            The Connection Establishment Facility 
  87.  
  88.            The Connection Termination Facility 
  89.  
  90.            The Information Transfer Facility (P-DATA            service only) 
  91.  
  92.      - The majority of the parameters used by the services which        provide these facilities can be "hard-wired" to avoid        negotiation 
  93.  
  94.    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. 
  95.  
  96.    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: 
  97.  
  98.     +-----------+                                       +-----------+    |  PS-user  |                                       |  PS-user  |    +-----------+                                       +-----------+         |                                                     |         | PS interface                           PS interface |         |  [ISO8822]                                          |         |                                                     |    +----------+   ISO Presentation Services on the TCP  +----------+    |  client  |-----------------------------------------|  server  |    +----------+              (this memo)                +----------+         |                                                     |         | TCP interface                         TCP interface |         |  [RFC793]                                           |         |                                                     | 
  99.  
  100.  
  101.  
  102.  Rose                                                            [Page 4] 
  103.  RFC 1085               ISO Presentation Services           December 1988 
  104.  
  105.     In greater detail, the "client" and "server" boxes implement the    protocol described in this memo.  Each box contains three modules: 
  106.  
  107.       - a dispatch module, which provides the presentation services         interface, 
  108.  
  109.       - 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 
  110.  
  111.       - a network module, which manages a TCP connection. 
  112.  
  113.    The software architecture used to model a network entity using this    approach is as follows: 
  114.  
  115.     +---------+    +----------+                                   +-----+    |         |    |          |  output +---------------+  input  |  n  |    |         |    |          |<--------| de-serializer |<--------|  e  |    |         |    |          |   queue +---------------+  queue  |  t  |    | PS-user |----| dispatch |                                   |  w  |    |         |    |          |  input  +---------------+ output  |  o  |    |         |    |          |-------->|   serializer  |-------->|  r  |    |         |    |          |  queue  +---------------+ queue   |  k  |    +---------+    +----------+                                   +-----+ 
  116.  
  117.                                  |---- serialization module ----| 
  118.  
  119.     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. 
  120.  
  121. 5. Fundamental Parameters 
  122.  
  123.    There are certain parameters which are used by the presentation    service and are defined here. 
  124.  
  125.       1. Presentation address: 
  126.  
  127.       The structure of a presentation address is presented in Addendum 3       to [ISO7498].  This memo interprets a presentation address as an 
  128.  
  129.  
  130.  
  131. Rose                                                            [Page 5] 
  132.  RFC 1085               ISO Presentation Services           December 1988 
  133.  
  134.        ordered-tuple containing: 
  135.  
  136.          - one or more network addresses          - a transport selector          - a session selector          - a presentation selector 
  137.  
  138.       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. 
  139.  
  140.       A network address is interpreted as containing three components: 
  141.  
  142.          - a 32-bit IP address 
  143.  
  144.          - 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" 
  145.  
  146.          - a 16-bit port number 
  147.  
  148.       As a consequence of these interpretations, any application-entity       residing in the network can be identified by its network address. 
  149.  
  150.       2. Presentation context list 
  151.  
  152.       A list of one or more presentation contexts.  Each presentation       context has three components: 
  153.  
  154.          - a presentation context identifier (PCI), an integer 
  155.  
  156.          - an abstract syntax name, an object identifier 
  157.  
  158.          - an abstract transfer name, an object identifier 
  159.  
  160.       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). 
  161.  
  162.       In addition, if the presentation context list appears in a       "result" list (e.g., the Presentation context result list 
  163.  
  164.  
  165.  
  166. Rose                                                            [Page 6] 
  167.  RFC 1085               ISO Presentation Services           December 1988 
  168.  
  169.        parameter for the P-CONNECT service), a fourth component is       present: 
  170.  
  171.          - an acceptance indicator 
  172.  
  173.       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. 
  174.  
  175.       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. 
  176.  
  177.       3. User data 
  178.  
  179.       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. 
  180.  
  181.       4. Quality of Service 
  182.  
  183.       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. 
  184.  
  185.       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. 
  186.  
  187.       5. Version of Session Service 
  188.  
  189.       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. 
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  Rose                                                            [Page 7] 
  196.  RFC 1085               ISO Presentation Services           December 1988 
  197.  
  198.  6. Choice of Transport Service 
  199.  
  200.    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. 
  201.  
  202.    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. 
  203.  
  204.    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. 
  205.  
  206.    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 
  207.  
  208.            low-quality means LOW-QUALITY! 
  209.  
  210.    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. 
  211.  
  212.    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 
  213.  
  214.  
  215.  
  216. Rose                                                            [Page 8] 
  217.  RFC 1085               ISO Presentation Services           December 1988 
  218.  
  219.     modified accordingly. 
  220.  
  221. 7. Connection Establishment 
  222.  
  223.    The Connection Establishment facility consists of one service, the    P-CONNECT service. 
  224.  
  225. 7.1. The P-CONNECT Service 
  226.  
  227.    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. 
  228.  
  229.    If the udp-based service is selected, then a presentation connection    is formed which should be used infrequently and will have minimal    reliability characteristics. 
  230.  
  231.    For our purposes, the P-CONNECT service: 
  232.  
  233.       - requests TCP or UDP resources, 
  234.  
  235.       - builds a fixed defined context set, and 
  236.  
  237.       - exchanges initial user data. 
  238.  
  239.    Following are the interpretation of and the defaults assigned to the    parameters of the P-CONNECT service: 
  240.  
  241.       1. Calling Presentation Address 
  242.  
  243.         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. 
  244.  
  245.       2. Called Presentation Address 
  246.  
  247.         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). 
  248.  
  249.  
  250.  
  251.  Rose                                                            [Page 9] 
  252.  RFC 1085               ISO Presentation Services           December 1988 
  253.  
  254.        3. Responding Presentation Address 
  255.  
  256.         This parameter is identical to the value of the Called         Presentation Address parameter of the P-CONNECT.INDICATION         primitive. 
  257.  
  258.       4. Multiple defined Contexts 
  259.  
  260.         Always TRUE.  Note that this parameter is present only in the         DIS version of the presentation service. 
  261.  
  262.       5. Presentation context definition list 
  263.  
  264.       Two contexts are defined: 
  265.  
  266.       PCI     Abstract Syntax Name            Abstract Transfer Name       ---     --------------------            ----------------------        1      specific to the application     "iso asn.1 abstract                                               transfer"                                               1.0.8825 
  267.  
  268.        3      "acse pci version 1"            "iso asn.1 abstract                                               transfer"               2.2.1.0.0                       1.0.8825 
  269.  
  270.       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: 
  271.  
  272.        3      "acse pci version 1"            "asn.1 basic encoding"               2.2.1.0.1                       2.1.1 
  273.  
  274.       6. Presentation context result list 
  275.  
  276.         Identical to the Presentation context definition list with the         addition that the acceptance indicator for both contexts is         "accepted". 
  277.  
  278.       7. Default Context Name 
  279.  
  280.         None. 
  281.  
  282.       8. Default Context Result 
  283.  
  284.         Not applicable. 
  285.  
  286.  
  287.  
  288.  
  289.  
  290.  Rose                                                           [Page 10] 
  291.  RFC 1085               ISO Presentation Services           December 1988 
  292.  
  293.        9. Quality of Service 
  294.  
  295.         The element "transport-mapping" takes the value "tcp-based" or         "udp-based".  In the future the range of values may be extended. 
  296.  
  297.       10. Presentation Requirements 
  298.  
  299.         None (the kernel functional unit is always used). 
  300.  
  301.       11. Session Requirements 
  302.  
  303.         Full duplex. 
  304.  
  305.       12. Initial synchronization point serial number 
  306.  
  307.         None. 
  308.  
  309.       13. Initial Assignment of tokens 
  310.  
  311.         None. 
  312.  
  313.       14. Session connection identifier 
  314.  
  315.         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. 
  316.  
  317.         user data:        a local string encoded as a T.61 string                           using ASN.1, e.g., given string "gonzo": 
  318.  
  319.                           14     05     67   6f   6e   7a   6f                           tag  length   "g"  "o"  "n"  "z"  "o" 
  320.  
  321.         common data:      a universal time encoding using ASN.1, e.g.,                           given time "880109170845": 
  322.  
  323.                           17     0c     38   38   30   31   30   ...                           tag  length   "8"  "8"  "0"  "1"  "0"  ... 
  324.  
  325.         additional data:  any string encoded as a T.61 string using ASN.1                           (optional) 
  326.  
  327.         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. 
  328.  
  329.  
  330.  
  331. Rose                                                           [Page 11] 
  332.  RFC 1085               ISO Presentation Services           December 1988 
  333.  
  334.        15. User Data 
  335.  
  336.         A single ASN.1 object is present, the appropriate A-ASSOCIATE         PDU, carried in presentation context 3. 
  337.  
  338.       16. Result 
  339.  
  340.         One of the following values: acceptance, user-rejection,         provider-rejection (transient), or provider-rejection         (permanent). 
  341.  
  342. 8. Connection Termination 
  343.  
  344.    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 
  345.  
  346.    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. 
  347.  
  348.    If the udp-based service is selected, then any data in transit may be    discarded. 
  349.  
  350.       For our purposes, the P-RELEASE service: 
  351.  
  352.       - waits for the serialization module to drain, 
  353.  
  354.       - sends release user data, and 
  355.  
  356.       - releases TCP or UDP resources 
  357.  
  358.    Following are the interpretation of and the defaults assigned to the    parameters of the P-RELEASE service: 
  359.  
  360.       1. Result 
  361.  
  362.         Release accepted. 
  363.  
  364.       2. User data 
  365.  
  366.         A single ASN.1 object is present, the appropriate A-RELEASE PDU, 
  367.  
  368.  
  369.  
  370.  
  371.  
  372.  Rose                                                           [Page 12] 
  373.  RFC 1085               ISO Presentation Services           December 1988 
  374.  
  375.  8.2. The P-U-ABORT Service 
  376.  
  377.    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. 
  378.  
  379.       For our purposes, the P-U-ABORT service: 
  380.  
  381.       - flushes the serialization module, 
  382.  
  383.       - sends abort user data, and 
  384.  
  385.       - releases TCP or UDP resources 
  386.  
  387.    Following are the interpretation of and the defaults assigned to the    parameters of the P-U-ABORT service: 
  388.  
  389.       1. Presentation context identifier list 
  390.  
  391.         Contained in the ASN.1 objects, if any, that are delivered as         user data. 
  392.  
  393.       2. User data 
  394.  
  395.         A single ASN.1 object is present, an A-ABORT PDU, carried in         presentation context 3.  8.3. The P-P-ABORT Service 
  396.  
  397.    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. 
  398.  
  399.       For our purposes, the P-P-ABORT service: 
  400.  
  401.       - flushes the serialization module, and 
  402.  
  403.       - releases TCP or UDP resources 
  404.  
  405.    Following are the interpretation of and the defaults assigned to the    parameters of the P-P-ABORT service. 
  406.  
  407.  
  408.  
  409.  Rose                                                           [Page 13] 
  410.  RFC 1085               ISO Presentation Services           December 1988 
  411.  
  412.        1. Provider reason 
  413.  
  414.         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. 
  415.  
  416.       2. Abort data 
  417.  
  418.         None. 
  419.  
  420. 9. Information Transfer 
  421.  
  422.    Although the Information Transfer facility consists of many services,    only one, the P-DATA service, is provided by this memo. 
  423.  
  424. 9.1. The P-DATA Service 
  425.  
  426.    This services provides the service user with a data transfer    capability.  This service has effects which are sequenced and non-    destructive. 
  427.  
  428.    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. 
  429.  
  430.    For our purposes, the P-DATA service: 
  431.  
  432.               - sends user data 
  433.  
  434.    Following are the interpretation of and the defaults assigned to the    parameters of the P-DATA service: 
  435.  
  436.       1. User data 
  437.  
  438.         A single ASN.1 object is present, a remote operations APDU,         carried in presentation context 1. 
  439.  
  440. 10. Elements of Procedure 
  441.  
  442.    The service provider is in one of the following states: 
  443.  
  444.            IDLE, WAIT1, WAIT2, DATA, WAIT3, or WAIT4 
  445.  
  446.         The possible events are: 
  447.  
  448.            PS-user         P-CONNECT.REQUEST 
  449.  
  450.  
  451.  
  452. Rose                                                           [Page 14] 
  453.  RFC 1085               ISO Presentation Services           December 1988 
  454.  
  455.                             P-CONNECT.RESPONSE                            P-RELEASE.REQUEST                            P-RELEASE.RESPONSE                            P-DATA.REQUEST                            P-U-ABORT.REQUEST 
  456.  
  457.            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(**) 
  458.  
  459.          The possible actions are: 
  460.  
  461.            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 
  462.  
  463.            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(**) 
  464.  
  465.            (*)   tcp-based service only            (**)  udp-based service only 
  466.  
  467. 10.1. Elements of Procedure specific to the tcp-based service 
  468.  
  469.    The provider maintains the following information for each    presentation connection: 
  470.  
  471.       - a local designator for the PS-user 
  472.  
  473.  
  474.  
  475.  Rose                                                           [Page 15] 
  476.  RFC 1085               ISO Presentation Services           December 1988 
  477.  
  478.        - a local designator for a TCP connection 
  479.  
  480.       - the state of the connection (e.g., IDLE, WAIT1, and so on) 
  481.  
  482.    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. 
  483.  
  484.    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. 
  485.  
  486.    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. 
  487.  
  488. 10.2. Elements of Procedure specific to the udp-based service 
  489.  
  490.    The provider maintains the following information for each    presentation connection: 
  491.  
  492.       - a local designator for the PS-user 
  493.  
  494.       - the 32-bit IP address and 16-bit UDP port number of the         initiating host 
  495.  
  496.       - the 32-bit IP address and 16-bit UDP port number of the         responding host 
  497.  
  498.       - the session connection identifier used to establish the         presentation connection 
  499.  
  500.  
  501.  
  502.  Rose                                                           [Page 16] 
  503.  RFC 1085               ISO Presentation Services           December 1988 
  504.  
  505.        - a local designator for an UDP endpoint 
  506.  
  507.       - the state of the connection (e.g., IDLE, WAIT1, and so on) 
  508.  
  509.       - a retransmission counter 
  510.  
  511.    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. 
  512.  
  513.    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. 
  514.  
  515. 10.3. State Transitions 
  516.  
  517.    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. 
  518.  
  519.    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. 
  520.  
  521.    Finally, if the udp-based service is selected, then CL-UserData PDUs    are exchanged by the provider instead of UserData PDUs. 
  522.  
  523.                                      IDLE state 
  524.  
  525.         Event:     P-CONNECT.REQUEST primitive issued 
  526.  
  527.    Based on the quality of service parameter and the list of network    addresses in the called presentation address parameter, the provider 
  528.  
  529.  
  530.  
  531. Rose                                                           [Page 17] 
  532.  RFC 1085               ISO Presentation Services           December 1988 
  533.  
  534.     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. 
  535.  
  536.    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.) 
  537.  
  538.    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. 
  539.  
  540.    Regardless, the user data parameter is placed in a ConnectRequest    PDU, which is put on the input queue for the serializer. 
  541.  
  542.    For the udp-based service, the provider sets the retransmission    counter to a small value (e.g., 2), and now starts a small timer. 
  543.  
  544.    Regardless, the provider enters the WAIT1 state. 
  545.  
  546.          Event:     ConnectRequest PDU received 
  547.  
  548.    The provider issues the P-CONNECT.INDICATION primitive and enters the    WAIT2 state. 
  549.  
  550.          Event:     any other PDU received 
  551.  
  552.    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. 
  553.  
  554.                                      WAIT1 state 
  555.  
  556.         Event:     P-U-ABORT.REQUEST primitive issued 
  557.  
  558.    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. 
  559.  
  560.  
  561.  
  562. Rose                                                           [Page 18] 
  563.  RFC 1085               ISO Presentation Services           December 1988 
  564.  
  565.          Event:     ConnectResponse PDU received 
  566.  
  567.    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. 
  568.  
  569.          Event:     user-initiated Abort PDU received 
  570.  
  571.    The provider issues the P-U-ABORT.INDICATION primitive and enters the    IDLE state. 
  572.  
  573.          Event:     any other PDU received 
  574.  
  575.    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. 
  576.  
  577.          Event:     timer expires 
  578.  
  579.    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. 
  580.  
  581.                                      WAIT2 state 
  582.  
  583.         Event:     P-CONNECT.RESPONSE primitive issued 
  584.  
  585.    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. 
  586.  
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595. Rose                                                           [Page 19] 
  596.  RFC 1085               ISO Presentation Services           December 1988 
  597.  
  598.          Event:     P-U-ABORT.REQUEST primitive issued 
  599.  
  600.    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. 
  601.  
  602.          Event:     user-initiated Abort PDU received 
  603.  
  604.    The provider issues the P-U-ABORT.INDICATION primitive and enters the    IDLE state. 
  605.  
  606.          Event:     any other PDU received 
  607.  
  608.    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. 
  609.  
  610.                                      DATA state 
  611.  
  612.         Event:     P-DATA.REQUEST primitive issued 
  613.  
  614.    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. 
  615.  
  616.          Event:     P-RELEASE.REQUEST primitive issued 
  617.  
  618.    The user data parameter is placed in a ReleaseRequest PDU, which is    put on the input queue for the serializer. 
  619.  
  620.    For the udp-based service, the provider sets the retransmission    counter to a small value (e.g., 2), and now starts a small timer. 
  621.  
  622.    Regardless, the provider enters the WAIT3 state. 
  623.  
  624.          Event:     P-U-ABORT.REQUEST primitive issued 
  625.  
  626.    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. 
  627.  
  628.  
  629.  
  630.  
  631.  
  632. Rose                                                           [Page 20] 
  633.  RFC 1085               ISO Presentation Services           December 1988 
  634.  
  635.          Event:     UserData PDU received 
  636.  
  637.    The provider issues the P-DATA.INDICATION primitive and remains in    the DATA state. 
  638.  
  639.          Event:     ReleaseRequest PDU received 
  640.  
  641.    The provider issues the P-RELEASE.INDICATION primitive, and enters    the WAIT4 state. 
  642.  
  643.          Event:     user-initiated Abort PDU received 
  644.  
  645.    The provider issues the P-U-ABORT.INDICATION primitive and enters     the IDLE state. 
  646.  
  647.          Event:     any other PDU received 
  648.  
  649.    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. 
  650.  
  651.                                      WAIT3 state 
  652.  
  653.         Event:     P-U-ABORT.REQUEST primitive issued 
  654.  
  655.    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. 
  656.  
  657.          Event:     ReleaseResponse PDU received 
  658.  
  659.    For the udp-based service, the timer is cancelled.  The provider    issues the P-RELEASE.CONFIRMATION primitive and enters the IDLE    state. 
  660.  
  661.          Event:     user-initiated Abort PDU received 
  662.  
  663.    The provider issues the P-U-ABORT.INDICATION primitive and enters the    IDLE state. 
  664.  
  665.  
  666.  
  667.  
  668.  
  669. Rose                                                           [Page 21] 
  670.  RFC 1085               ISO Presentation Services           December 1988 
  671.  
  672.          Event:     any other PDU received 
  673.  
  674.    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. 
  675.  
  676.          Event:     timer expires 
  677.  
  678.    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. 
  679.  
  680.                                      WAIT4 state 
  681.  
  682.         Event:     P-RELEASE.RESPONSE primitive issued 
  683.  
  684.    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. 
  685.  
  686.         Event:     P-U-ABORT.REQUEST primitive issued 
  687.  
  688.    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. 
  689.  
  690.          Event:     user-initiated Abort PDU received 
  691.  
  692.    The provider issues the P-U-ABORT.INDICATION primitive and enters the    IDLE state. 
  693.  
  694.          Event:     any other PDU received 
  695.  
  696.    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. 
  697.  
  698.  
  699.  
  700.  
  701.  
  702. Rose                                                           [Page 22] 
  703.  RFC 1085               ISO Presentation Services           December 1988 
  704.  
  705.  11. Directory Services 
  706.  
  707.    Although not properly part of the presentation service, this memo    assumes and specifies a minimal Directory service capability for use    by the application-entity. 
  708.  
  709.    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. 
  710.  
  711.    The structure of presentation addresses were defined in Section 5. 
  712.  
  713.    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. 
  714.  
  715.    This memo requires the following mapping rules: 
  716.  
  717.       1.  The service name for an OSI application-entity using the       mechanisms proposed by this memo is: 
  718.  
  719.               <designator> "-" <qualifier> 
  720.  
  721.       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., 
  722.  
  723.               "gonzo.twg.com-mgmtinfobase" 
  724.  
  725.       2.  Any locally defined mapping rules may be used to map the       service designation into an application-entity title. 
  726.  
  727.       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: 
  728.  
  729.          -the 32-bit IP address resolved from the <designator> portion           of the service name, 
  730.  
  731.          - a set indicating which transport services are available 
  732.  
  733.  
  734.  
  735. Rose                                                           [Page 23] 
  736.  RFC 1085               ISO Presentation Services           December 1988 
  737.  
  738.             at the IP address, 
  739.  
  740.          - the 16-bit port number resolved from the <qualifier>            portion of the service name (using the Assigned Numbers            document), and 
  741.  
  742.          - optionally, a presentation selector, which is an            uninterpreted sequence of octets. 
  743.  
  744.    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. 
  745.  
  746.    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. 
  747.  
  748.    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. 
  749.  
  750. 12. Remarks 
  751.  
  752.    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. 
  753.  
  754.    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. 
  755.  
  756.  
  757.  
  758.  
  759.  
  760. Rose                                                           [Page 24] 
  761.  RFC 1085               ISO Presentation Services           December 1988 
  762.  
  763.  13. Acknowledgements 
  764.  
  765.    Several individuals contributed to the technical quality of this    memo: 
  766.  
  767.            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 
  768.  
  769. 14. References 
  770.  
  771.      [ISO7498]  Information Processing Systems - Open Systems                 Interconnection, "Basic Reference Model", October, 1984. 
  772.  
  773.      [ISO8509]  Information Processing Systems - Open Systems                 Interconnection, " Service Conventions". 
  774.  
  775.      [ISO8650]  Information Processing Systems - Open Systems                 Interconnection, " Protocol Specification for the                 Association Control Service Element (Final Text                 of DIS 8650)", January, 1988. 
  776.  
  777.      [ISO8822]  Information Processing Systems - Open Systems                 Interconnection, " Connection Oriented Presentation                 Service Definition (Final Text of DIS 8822)",                 April, 1988. 
  778.  
  779.      [ISO8823]  Information Processing Systems - Open Systems                 Interconnection, " Connection Oriented Presentation                 Protocol Specification (Final Text of DIS 8822)",                 April, 1988. 
  780.  
  781.      [ISO8824]  Information Processing Systems - Open Systems                 Interconnection, " Specification of Abstract Syntax                 Notation One (ASN.1)", December, 1987. 
  782.  
  783.      [ISO8825]  Information Processing Systems - Open Systems                 Interconnection, "Specification of basic encoding rules                 for Abstract Syntax Notation One (ASN.1)",                 December, 1987. 
  784.  
  785.      [ISO9072/2]  Information Processing Systems - Text Communication                   MOTIS, " Remote Operations Part 2: Protocol 
  786.  
  787.  
  788.  
  789. Rose                                                           [Page 25] 
  790.  RFC 1085               ISO Presentation Services           December 1988 
  791.  
  792.                    Specification (Working Document for DIS 9072/2)",                   November, 1987. 
  793.  
  794.      [RFC768]  Postel, J., "User Datagram Protocol", RFC 768, USC/ISI,                28 August 1980. 
  795.  
  796.      [RFC791]  Postel, J., "Internet Protocol - DARPA Internet Program                Protocol Specification", RFC 791, USC/ISI,                September 1981. 
  797.  
  798.      [RFC793]  Postel, J., "Transmission Control Protocol - DARPA                Internet Program Protocol Specification", RFC 793,                USC/ISI, September 1981. 
  799.  
  800.      [RFC1006]  Rose, M., and D. Cass, "ISO Transport 1 on Top of the                 TCP Version: 3", Northrop Research and Technology                 Center, May 1987. 
  801.  
  802. Appendix A: 
  803.  
  804. Abstract Syntax Definitions 
  805.  
  806.    RFC1085-PS DEFINITIONS ::= 
  807.  
  808.    BEGIN 
  809.  
  810.    PDUs ::=            CHOICE {                connectRequest                    ConnectRequest-PDU, 
  811.  
  812.                connectResponse                    ConnectResponse-PDU, 
  813.  
  814.                releaseRequest                    ReleaseRequest-PDU, 
  815.  
  816.                releaseResponse                    ReleaseResponse-PDU, 
  817.  
  818.                abort                    Abort-PDU, 
  819.  
  820.                userData                    UserData-PDU, 
  821.  
  822.                cL-userData                    CL-UserData-PDU 
  823.  
  824.  
  825.  
  826. Rose                                                           [Page 26] 
  827.  RFC 1085               ISO Presentation Services           December 1988 
  828.  
  829.             } 
  830.  
  831.  
  832.  
  833.    -- connect request PDU 
  834.  
  835.    ConnectRequest-PDU ::=        [0]            IMPLICIT SEQUENCE {                version[0]          -- version-1 corresponds to to this                                       memo                    IMPLICIT INTEGER { version-1(0) }, 
  836.  
  837.                reference                    SessionConnectionIdentifier, 
  838.  
  839.                calling                    PresentationSelector                    OPTIONAL, 
  840.  
  841.                called[2]                    IMPLICIT PresentationSelector                    OPTIONAL, 
  842.  
  843.                asn[3]              -- the ASN for PCI #1                    IMPLICIT OBJECT IDENTIFIER, 
  844.  
  845.                user-data                    UserData-PDU            } 
  846.  
  847.    SessionConnectionIdentifier ::=        [0]            SEQUENCE {                callingSSUserReference                    T61String, 
  848.  
  849.                commonReference                    UTCTime, 
  850.  
  851.                additionalReferenceInformation[0]                    IMPLICIT T61String                    OPTIONAL            } 
  852.  
  853.    PresentationSelector ::=        [1]            IMPLICIT OCTET STRING 
  854.  
  855.  
  856.  
  857. Rose                                                           [Page 27] 
  858.  RFC 1085               ISO Presentation Services           December 1988 
  859.  
  860.     -- connect response PDU 
  861.  
  862.    ConnectResponse-PDU ::=        [1]            IMPLICIT SEQUENCE {                reference           -- present only in the udp-based                                    -- service                    SessionConnectionIdentifier                    OPTIONAL, 
  863.  
  864.                responding                    PresentationSelector                    OPTIONAL, 
  865.  
  866.                reason[2]           -- present only if the connection                                    -- was rejected                    IMPLICIT Rejection-reason                    OPTIONAL, 
  867.  
  868.                user-data           -- present only if reason is absent                                    -- OR has the                                    -- value rejected-by-responder                    UserData-PDU                    OPTIONAL            } 
  869.  
  870.    Rejection-reason ::=            INTEGER {                rejected-by-responder(0)                called-presentation-address-unknown(1),                local-limit-exceeded(3),                protocol-version-not-supported(4),            } 
  871.  
  872.     -- release request PDU 
  873.  
  874.    ReleaseRequest-PDU ::=        [2]            IMPLICIT SEQUENCE {                reference           -- present only in the udp-based                                    -- service                    SessionConnectionIdentifier                    OPTIONAL, 
  875.  
  876.                user-data                    UserData-PDU            } 
  877.  
  878.  
  879.  
  880. Rose                                                           [Page 28] 
  881.  RFC 1085               ISO Presentation Services           December 1988 
  882.  
  883.     -- release response PDU 
  884.  
  885.    ReleaseResponse-PDU ::=        [3]            IMPLICIT SEQUENCE {                reference           -- present only in the udp-based                                    -- service                    SessionConnectionIdentifier                    OPTIONAL, 
  886.  
  887.                user-data                    UserData-PDU            } 
  888.  
  889.    -- abort PDU 
  890.  
  891.    Abort-PDU ::=        [4]            SEQUENCE {                reference           -- present only in the udp-based                                    -- service                    SessionConnectionIdentifier                    OPTIONAL, 
  892.  
  893.                user-data   -- MAY BE present on user-initiated abort                    UserData-PDU                    OPTIONAL, 
  894.  
  895.                reason[1]   -- ALWAYS present on provider-initiated abort                    IMPLICIT Abort-reason                    OPTIONAL            } 
  896.  
  897.    Abort-reason ::=            INTEGER {                unspecified(0),                unrecognized-ppdu(1),                unexpected-ppdu(2),                unrecognized-ppdu-parameter(4),                invalid-ppdu-parameter(5),                reference-mismatch(9)            } 
  898.  
  899.     -- data PDU 
  900.  
  901.    UserData-PDU ::=        [5]                         -- this is the ASN.1 object 
  902.  
  903.  
  904.  
  905. Rose                                                           [Page 29] 
  906.  RFC 1085               ISO Presentation Services           December 1988 
  907.  
  908.             ANY                     -- if it is a top-level PDU, it                                    -- is in PCI #1, otherwise PCI #3 
  909.  
  910.     -- data PDU for the udp-based service 
  911.  
  912.    CL-UserData-PDU ::=        [6]            IMPLICIT SEQUENCE {                reference                    SessionConnectionIdentifier, 
  913.  
  914.                user-data[0]                -- this is the ASN.1 object                    ANY                     -- it is always in PCI #1            } 
  915.  
  916.    END 
  917.  
  918. Appendix B: 
  919.  
  920. Example of Serialization 
  921.  
  922.     Consider the following call to ROSE: 
  923.  
  924.            RO-INVOKE (operation number      = 5                       operation class       = synchronous                       argument              = NONE                       invocation identifier = 1                       linked invocation id. = NONE                       priority              = 0)                .REQUEST 
  925.  
  926.    Ultimately, ROSE will use the P-DATA service: 
  927.  
  928.            P-DATA (user data = {                                  1,        -- this is the PCI                                  {         -- this is the ASN.1 object                                     invokeID 1,                                     operation-value 5,                                     argument {}                                  }                                })                .REQUEST 
  929.  
  930.    The presentation provider will construct a UserData PDU and send this    via the transport connection: 
  931.  
  932.  
  933.  
  934.  Rose                                                           [Page 30] 
  935.  RFC 1085               ISO Presentation Services           December 1988 
  936.  
  937.        [5] {             {               1,               5,               {}             }           } 
  938.  
  939.    Applying the basic encoding rules for ASN.1, we have an stream of 12    octets. 
  940.  
  941.       a5  0a                                       [5]       tag len 
  942.  
  943.       a0  08                               [0]       tag len       02  01  01           invokeID 1       tag len value 
  944.  
  945.       02  01  05           operation-value 5       tag len value 
  946.  
  947.       30  00                       argument NULL       tag len 
  948.  
  949.    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! 
  950.  
  951. Appendix C: 
  952.  
  953. Determination of Network Called Address 
  954.  
  955.    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. 
  956.  
  957.    The policy distinguishes between "underlying failures" and 
  958.  
  959.  
  960.  
  961. Rose                                                           [Page 31] 
  962.  RFC 1085               ISO Presentation Services           December 1988 
  963.  
  964.     "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. 
  965.  
  966.    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. 
  967.  
  968.    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. 
  969.  
  970. Author's Address: 
  971.  
  972.    Marshall Rose    The Wollongong Group    1129 San Antonio Road    Palo Alto, CA 94303 
  973.  
  974.    Phone: (415) 962-7100 
  975.  
  976.    EMail: mrose@TWG.COM 
  977.  
  978.  
  979.  
  980.  
  981.  
  982.  
  983.  
  984.  
  985.  
  986.  
  987.  
  988.  
  989.  
  990.  
  991.  
  992.  Rose                                                           [Page 32] 
  993.  
  994.