Annotation of 43BSDReno/contrib/isode-beta/doc/rfcs/rfc1085.txt, revision 1.1.1.1

1.1       root        1: 
                      2: 
                      3: 
                      4: 
                      5: 
                      6: 
                      7: Network Working Group                                            M. Rose
                      8: Request for Comments: 1085                                           TWG
                      9:                                                            December 1988
                     10: 
                     11: 
                     12:                        ISO Presentation Services
                     13:                     on top of TCP/IP-based internets
                     14: 
                     15: Status of this Memo
                     16: 
                     17:    This memo proposes a standard for the Internet community.
                     18:    Distribution of this memo is unlimited.
                     19: 
                     20: 1. Introduction
                     21: 
                     22:    [RFC1006] describes a mechanism for providing the ISO transport
                     23:    service on top of the Transmission Control Protocol (TCP) [RFC793]
                     24:    and Internet Protocol (IP) [RFC791].  Once this method is applied,
                     25:    one may implement "real" ISO applications on top of TCP/IP-based
                     26:    internets, by simply implementing OSI session, presentation, and
                     27:    application services on top of the transport service access point
                     28:    which is provided on top of the TCP.  Although straight-forward,
                     29:    there are some environments in which the richness provided by the OSI
                     30:    application layer is desired, but it is nonetheless impractical to
                     31:    implement the underlying OSI infrastructure (i.e., the presentation,
                     32:    session, and transport services on top of the TCP).  This memo
                     33:    describes an approach for providing "stream-lined" support of OSI
                     34:    application services on top of TCP/IP-based internets for such
                     35:    constrained environments.
                     36: 
                     37: 2. Terminology
                     38: 
                     39:    In as much as this memo is concerned primarily with concepts defined
                     40:    in the framework of Open Systems Interconnection (OSI) as promulgated
                     41:    by the International Organization for Standardization (ISO), the
                     42:    terminology used herein is intended to be entirely consistent within
                     43:    that domain of discourse.  This perspective is being taken despite
                     44:    the expressed intent of implementing the mechanism proposed by this
                     45:    memo in the Internet and other TCP/IP-based internets.  For those
                     46:    more familiar with the terminology used in this latter domain, the
                     47:    author is apologetic but unyielding.
                     48: 
                     49:    Although no substitute for the "correct" definitions given in the
                     50:    appropriate ISO documents, here is a short summary of the terms used
                     51:    herein.
                     52: 
                     53: 
                     54: 
                     55: 
                     56: 
                     57: 
                     58: Rose                                                            [Page 1]
                     59: 
                     60: RFC 1085               ISO Presentation Services           December 1988
                     61: 
                     62: 
                     63:       Application Context:
                     64:          The collection of application service elements which
                     65:          cooperatively interact within an application-entity.
                     66: 
                     67:       Application Service Element:
                     68:          A standardized mechanism, defined by both a service and a
                     69:          protocol, which provides a well-defined capability, e.g.,
                     70: 
                     71:          ROSE -  the Remote Operations Service Element,
                     72:                  which orchestrates the invocation of "total"
                     73:                  operations between application-entities [ISO9066/2].
                     74: 
                     75:          ACSE -  the Association Control Service Element,
                     76:                  which manages associations between application
                     77:                  entities [ISO8650].
                     78: 
                     79:       Object Identifier:
                     80:          An ordered set of integers, used for authoritative
                     81:          identification.
                     82: 
                     83:       Presentation Service:
                     84:          A set of facilities used to manage a connection between two
                     85:          application-entities.  The fundamental responsibility of the
                     86:          presentation service is to maintain transfer syntaxes which
                     87:          are used to serialize application protocol data units for
                     88:          transmission on the network and subsequent de-serialization
                     89:          for reception.
                     90: 
                     91:       Protocol Data Unit (PDU):
                     92:          A data object exchanged between service providers.
                     93: 
                     94:       Serialization:
                     95:          The process of applying an abstract transfer notation to an
                     96:          object described using abstract syntax notation one (ASN.1)
                     97:          [ISO8824] in order to produce a stream of octets.
                     98:          De-serialization is the inverse process.
                     99: 
                    100:          It is assumed that the reader is familiar with terminology
                    101:          pertaining to the reference model [ISO7498], to the service
                    102:          conventions in the model [ISO8509], and to the
                    103:          connection-oriented presentation service [ISO8822].
                    104: 
                    105: 3. Scope
                    106: 
                    107:    The mechanism proposed by this memo is targeted for a particular
                    108:    class of OSI applications, namely those entities whose application
                    109:    context contains only an Association Control Service Element (ACSE)
                    110:    and a Remote Operations Service Element (ROSE).  In addition, a
                    111: 
                    112: 
                    113: 
                    114: Rose                                                            [Page 2]
                    115: 
                    116: RFC 1085               ISO Presentation Services           December 1988
                    117: 
                    118: 
                    119:    Directory Services Element (DSE) is assumed for use by the
                    120:    application-entity, but only in a very limited sense.  The
                    121:    organization of such an entity is as follows:
                    122: 
                    123: 
                    124:       +------------------------------------------------------------+
                    125:       |                                                            |
                    126:       |                     Application-Entity                     |
                    127:       |                                                            |
                    128:       |    +------+              +------+              +------+    |
                    129:       |    | ACSE |              | ROSE |              | DSE  |    |
                    130:       |    +------+              +------+              +------+    |
                    131:       |                                                            |
                    132:       +------------------------------------------------------------+
                    133:       |                                                            |
                    134:       |                Presentation Services                       |
                    135:       |                                                            |
                    136:       |    P-CONNECT         P-RELEASE         P-DATA              |
                    137:       |                      P-U-ABORT                             |
                    138:       |                      P-P-ABORT                             |
                    139:       |                                                            |
                    140:       +------------------------------------------------------------+
                    141: 
                    142: 
                    143:    The mechanism proposed by this memo is not applicable to entities
                    144:    whose application context is more extensive (e.g., contains a
                    145:    Reliable Transfer Service Element).  The mechanism proposed by this
                    146:    memo could be modified to support additional elements.  However, such
                    147:    extensions would, at this time, merely serve to defeat the purpose of
                    148:    providing the minimal software infrastructure required to run the
                    149:    majority of OSI applications.
                    150: 
                    151:    The motivation for this memo was initially derived from a requirement
                    152:    to run the ISO Common Management Information Protocol (CMIP) in
                    153:    TCP/IP-based internets.  In its current definition, CMIP uses
                    154:    precisely the application service elements provided for herein.  It
                    155:    may be desirable to offer CMIP users a quality of service different
                    156:    than the one offered by a connection with a high-quality level of
                    157:    reliability.  This would permit a reduced utilization of connection-
                    158:    related resources.  This memo proposes a mechanism to implement this
                    159:    less robust -- and less costly -- quality of service.
                    160: 
                    161: 4. Approach
                    162: 
                    163:    The approach proposed by this memo relies on the following
                    164:    architectural nuances:
                    165: 
                    166: 
                    167: 
                    168: 
                    169: 
                    170: Rose                                                            [Page 3]
                    171: 
                    172: RFC 1085               ISO Presentation Services           December 1988
                    173: 
                    174: 
                    175:      - the TCP is a stream-oriented transport protocol
                    176: 
                    177:      - ASN.1 objects, when represented as a stream of octets are
                    178:        self-delimiting
                    179: 
                    180:      - The ISO presentation service permits the exchange of ASN.1
                    181:        objects
                    182: 
                    183:      - The ACSE and ROSE require the following presentation
                    184:        facilities:
                    185: 
                    186:            The Connection Establishment Facility
                    187: 
                    188:            The Connection Termination Facility
                    189: 
                    190:            The Information Transfer Facility (P-DATA
                    191:            service only)
                    192: 
                    193:      - The majority of the parameters used by the services which
                    194:        provide these facilities can be "hard-wired" to avoid
                    195:        negotiation
                    196: 
                    197:    In principle, these nuances suggest that a "cheap" emulation of the
                    198:    ISO presentation services could be implemented by simply serializing
                    199:    ASN.1 objects over a TCP connection.  This approach is precisely what
                    200:    is proposed by this memo.
                    201: 
                    202:    Given this perspective, this memo details how the essential features
                    203:    of the ISO presentation service may be maintained while using a
                    204:    protocol entirely different from the one given in [ISO8823]. The
                    205:    overall composition proposed by this memo is as follows:
                    206: 
                    207: 
                    208:    +-----------+                                       +-----------+
                    209:    |  PS-user  |                                       |  PS-user  |
                    210:    +-----------+                                       +-----------+
                    211:         |                                                     |
                    212:         | PS interface                           PS interface |
                    213:         |  [ISO8822]                                          |
                    214:         |                                                     |
                    215:    +----------+   ISO Presentation Services on the TCP  +----------+
                    216:    |  client  |-----------------------------------------|  server  |
                    217:    +----------+              (this memo)                +----------+
                    218:         |                                                     |
                    219:         | TCP interface                         TCP interface |
                    220:         |  [RFC793]                                           |
                    221:         |                                                     |
                    222: 
                    223: 
                    224: 
                    225: 
                    226: Rose                                                            [Page 4]
                    227: 
                    228: RFC 1085               ISO Presentation Services           December 1988
                    229: 
                    230: 
                    231:    In greater detail, the "client" and "server" boxes implement the
                    232:    protocol described in this memo.  Each box contains three modules:
                    233: 
                    234:       - a dispatch module, which provides the presentation services
                    235:         interface,
                    236: 
                    237:       - a serialization module, containing a serializer, which takes
                    238:         an ASN.1 object and applies the encoding rules of [ISO8825]
                    239:         to produce a stream of octets, and a de-serializer, which
                    240:         performs the inverse operation, and
                    241: 
                    242:       - a network module, which manages a TCP connection.
                    243: 
                    244:    The software architecture used to model a network entity using this
                    245:    approach is as follows:
                    246: 
                    247: 
                    248:    +---------+    +----------+                                   +-----+
                    249:    |         |    |          |  output +---------------+  input  |  n  |
                    250:    |         |    |          |<--------| de-serializer |<--------|  e  |
                    251:    |         |    |          |   queue +---------------+  queue  |  t  |
                    252:    | PS-user |----| dispatch |                                   |  w  |
                    253:    |         |    |          |  input  +---------------+ output  |  o  |
                    254:    |         |    |          |-------->|   serializer  |-------->|  r  |
                    255:    |         |    |          |  queue  +---------------+ queue   |  k  |
                    256:    +---------+    +----------+                                   +-----+
                    257: 
                    258:                                  |---- serialization module ----|
                    259: 
                    260: 
                    261:    The ISO presentation layer is concerned primarily with the
                    262:    negotiation of transfer syntaxes in addition to the transformation to
                    263:    and from transfer syntax.  However, using the mechanism proposed by
                    264:    this memo, no negotiation component will be employed.  This memo
                    265:    specifies the fixed contexts which exist over each presentation
                    266:    connection offered.  This memo further specifies other constants
                    267:    which are used in order to eliminate the need for presentation layer
                    268:    negotiation.
                    269: 
                    270: 5. Fundamental Parameters
                    271: 
                    272:    There are certain parameters which are used by the presentation
                    273:    service and are defined here.
                    274: 
                    275:       1. Presentation address:
                    276: 
                    277:       The structure of a presentation address is presented in Addendum 3
                    278:       to [ISO7498].  This memo interprets a presentation address as an
                    279: 
                    280: 
                    281: 
                    282: Rose                                                            [Page 5]
                    283: 
                    284: RFC 1085               ISO Presentation Services           December 1988
                    285: 
                    286: 
                    287:       ordered-tuple containing:
                    288: 
                    289:          - one or more network addresses
                    290:          - a transport selector
                    291:          - a session selector
                    292:          - a presentation selector
                    293: 
                    294:       Each selector is an uninterpreted octet string of possibly zero
                    295:       length.  The mechanism proposed in this memo completely ignores
                    296:       the values of these selectors.  Note however that the value of the
                    297:       presentation selector is preserved by the provider.
                    298: 
                    299:       A network address is interpreted as containing three components:
                    300: 
                    301:          - a 32-bit IP address
                    302: 
                    303:          - a set indicating which transport services are available
                    304:            at the IP address  (currently only two members are defined:
                    305:            TCP and UDP; as experience is gained, other transport
                    306:            services may be added); as a local matter, if a member is
                    307:            present it may have an "intensity" associated with it:
                    308:            either "possibly present" or "definitely present"
                    309: 
                    310:          - a 16-bit port number
                    311: 
                    312:       As a consequence of these interpretations, any application-entity
                    313:       residing in the network can be identified by its network address.
                    314: 
                    315:       2. Presentation context list
                    316: 
                    317:       A list of one or more presentation contexts.  Each presentation
                    318:       context has three components:
                    319: 
                    320:          - a presentation context identifier (PCI), an integer
                    321: 
                    322:          - an abstract syntax name, an object identifier
                    323: 
                    324:          - an abstract transfer name, an object identifier
                    325: 
                    326:       The range of values these components may take is severely
                    327:       restricted by this memo.  In particular, exactly two contexts are
                    328:       defined: one for association control and the other for the
                    329:       specific application service element which is being carried as ROS
                    330:       APDUs (see the section on connection establishment for the precise
                    331:       values).
                    332: 
                    333:       In addition, if the presentation context list appears in a
                    334:       "result" list (e.g., the Presentation context result list
                    335: 
                    336: 
                    337: 
                    338: Rose                                                            [Page 6]
                    339: 
                    340: RFC 1085               ISO Presentation Services           December 1988
                    341: 
                    342: 
                    343:       parameter for the P-CONNECT service), a fourth component is
                    344:       present:
                    345: 
                    346:          - an acceptance indicator
                    347: 
                    348:       which indicates if the context was accepted by both the service
                    349:       provider and the remote peer.  If the context was not accept, a
                    350:       brief reason, such as "abstract syntax not supported" is given.
                    351: 
                    352:       For the novice reader, one might think of the abstract syntax
                    353:       notation as defining the vocabulary of some language, that is, it
                    354:       lists the words which can be spoken.  In contrast, the abstract
                    355:       transfer notation defines the pronunciation of the language.
                    356: 
                    357:       3. User data
                    358: 
                    359:       User data passes through the presentation service interface as
                    360:       ASN.1 objects (in a locally defined form).  Associated with each
                    361:       object is a presentation context identifier.  The PCI
                    362:       distinguishes the context for which the data is intended.  The
                    363:       range of values the PCI may take is severely restricted by this
                    364:       memo.  Exactly one of two contexts must always be used: either the
                    365:       value for the ACSE presentation context or the value for the ROSE.
                    366: 
                    367:       4. Quality of Service
                    368: 
                    369:       Quality of service is a collection of "elements".  Each element
                    370:       denotes some characteristics of the communication, e.g., desired
                    371:       throughput, and some value in an arbitrary unit of measure.  For
                    372:       our purposes, only one quality of service element is interpreted,
                    373:       "transport-mapping".  Currently, the "transport-mapping" element
                    374:       takes on one of two values: "tcp-based" or "udp-based".  At
                    375:       present, the two values may also be referred to as "high-quality"
                    376:       or "low-quality", respectively.
                    377: 
                    378:       As experience is gained, other values may be added.  These values
                    379:       would correspond directly to the new transport services which are
                    380:       listed in the network address.
                    381: 
                    382:       5. Version of Session Service
                    383: 
                    384:       Some application service elements (e.g., the ACSE) invoke
                    385:       different procedures based on the (negotiated) version of the
                    386:       session service available.  Implementations of this memo always
                    387:       indicate that session service version 2 has been negotiated.
                    388: 
                    389: 
                    390: 
                    391: 
                    392: 
                    393: 
                    394: Rose                                                            [Page 7]
                    395: 
                    396: RFC 1085               ISO Presentation Services           December 1988
                    397: 
                    398: 
                    399: 6. Choice of Transport Service
                    400: 
                    401:    Discussion thus far has centered along the use of the TCP as the
                    402:    underlying transport protocol.  However, it has also been noted that
                    403:    it may be desirable to permit a quality of service with less
                    404:    reliability in order to take advantage of some other characteristic
                    405:    of the transport service.
                    406: 
                    407:    The introduction of this service has several profound impacts on the
                    408:    model, and it is beyond the scope of this memo to enumerate these
                    409:    impacts.  However, this memo does propose a mechanism by which such a
                    410:    facility is implemented.
                    411: 
                    412:    To begin, we use the quality of service parameter for the P-CONNECT
                    413:    service to select an underlying transport service.  Only one element
                    414:    is currently interpreted, "transport-mapping" which takes the value
                    415:    "tcp-based" or "udp-based".  If the value is "tcp-based", then the
                    416:    presentation provider will use TCP as the underlying transport
                    417:    service. If, however, the value of "transport-mapping" is "udp-
                    418:    based", then the presentation provider will use the UDP instead.
                    419: 
                    420:    The User Datagram Protocol (UDP) [RFC768] is used to implement the
                    421:    udp-based service.  Very few transport-level facilities are placed on
                    422:    top of the UDP service, i.e., it is not the intent of this memo to
                    423:    "re-invent" the facilities in the TCP.  Hence, It is critical to
                    424:    understand that
                    425: 
                    426:            low-quality means LOW-QUALITY!
                    427: 
                    428:    Because the UDP is a packet-oriented protocol, it is necessary to
                    429:    slightly redefine the role of the serialization module.  For the
                    430:    serializer, we say that each top-level ASN.1 object placed on the
                    431:    input queue will form a single UDP datagram on the output queue which
                    432:    is given to the network.  Similarly, for the de-serializer, we say
                    433:    that each UDP datagram placed on the input queue from the network
                    434:    will form a single top-level ASN.1 object placed on the output queue.
                    435:    The term "top-level ASN.1 object" refers, of course, to the protocol
                    436:    data units being exchanged by the presentation providers.
                    437: 
                    438:    It should be noted that in its current incarnation, this memo permits
                    439:    the choice of two different transport protocols, e.g., the TCP or the
                    440:    UDP.  However, as experience is gained and as other transport
                    441:    protocols are deployed (e.g., the VMTP), then future incarnations of
                    442:    this memo will permit these transport protocols to be used.  This is
                    443:    a three step process: first, the set of transport services defined
                    444:    for the network address is updated; second, a corresponding value is
                    445:    added to the range of the quality of service element "transport-
                    446:    mapping"; and, third, the following sections of this memo are
                    447: 
                    448: 
                    449: 
                    450: Rose                                                            [Page 8]
                    451: 
                    452: RFC 1085               ISO Presentation Services           December 1988
                    453: 
                    454: 
                    455:    modified accordingly.
                    456: 
                    457: 7. Connection Establishment
                    458: 
                    459:    The Connection Establishment facility consists of one service, the
                    460:    P-CONNECT service.
                    461: 
                    462: 7.1. The P-CONNECT Service
                    463: 
                    464:    This service is used to bring two identified application-entities
                    465:    into communication.  Its successful use results in a presentation
                    466:    connection, with an initial defined context set, being established
                    467:    between then.  This connection is available for their subsequent
                    468:    communication.  This is a confirmed service whose effects are
                    469:    sequenced and non-destructive.
                    470: 
                    471:    If the udp-based service is selected, then a presentation connection
                    472:    is formed which should be used infrequently and will have minimal
                    473:    reliability characteristics.
                    474: 
                    475:    For our purposes, the P-CONNECT service:
                    476: 
                    477:       - requests TCP or UDP resources,
                    478: 
                    479:       - builds a fixed defined context set, and
                    480: 
                    481:       - exchanges initial user data.
                    482: 
                    483:    Following are the interpretation of and the defaults assigned to the
                    484:    parameters of the P-CONNECT service:
                    485: 
                    486:       1. Calling Presentation Address
                    487: 
                    488:         This is a presentation address.  Although the ISO presentation
                    489:         service states that this parameter is mandatory, in practice, a
                    490:         local implementation rule may be used to determine an
                    491:         "ephemeral" address to use.
                    492: 
                    493:       2. Called Presentation Address
                    494: 
                    495:         This is a presentation address.  Note that when issuing the P-
                    496:         CONNECT.REQUEST primitive, this parameter may contain more than
                    497:         one network address.  In the P-CONNECT.INDICATION primitive
                    498:         however, only one network address, the one actually used to
                    499:         establish the presentation connection, is present.  (Appendix C
                    500:         describes a strategy which might be used to determine the actual
                    501:         network address).
                    502: 
                    503: 
                    504: 
                    505: 
                    506: Rose                                                            [Page 9]
                    507: 
                    508: RFC 1085               ISO Presentation Services           December 1988
                    509: 
                    510: 
                    511:       3. Responding Presentation Address
                    512: 
                    513:         This parameter is identical to the value of the Called
                    514:         Presentation Address parameter of the P-CONNECT.INDICATION
                    515:         primitive.
                    516: 
                    517:       4. Multiple defined Contexts
                    518: 
                    519:         Always TRUE.  Note that this parameter is present only in the
                    520:         DIS version of the presentation service.
                    521: 
                    522:       5. Presentation context definition list
                    523: 
                    524:       Two contexts are defined:
                    525: 
                    526:       PCI     Abstract Syntax Name            Abstract Transfer Name
                    527:       ---     --------------------            ----------------------
                    528:        1      specific to the application     "iso asn.1 abstract
                    529:                                               transfer"
                    530:                                               1.0.8825
                    531: 
                    532:        3      "acse pci version 1"            "iso asn.1 abstract
                    533:                                               transfer"
                    534:               2.2.1.0.0                       1.0.8825
                    535: 
                    536:       The abstract syntax and transfer names for the ACSE PCI are for
                    537:       use with the DIS version of association control.  If the IS
                    538:       version is being used, then this PCI is used instead:
                    539: 
                    540:        3      "acse pci version 1"            "asn.1 basic encoding"
                    541:               2.2.1.0.1                       2.1.1
                    542: 
                    543:       6. Presentation context result list
                    544: 
                    545:         Identical to the Presentation context definition list with the
                    546:         addition that the acceptance indicator for both contexts is
                    547:         "accepted".
                    548: 
                    549:       7. Default Context Name
                    550: 
                    551:         None.
                    552: 
                    553:       8. Default Context Result
                    554: 
                    555:         Not applicable.
                    556: 
                    557: 
                    558: 
                    559: 
                    560: 
                    561: 
                    562: Rose                                                           [Page 10]
                    563: 
                    564: RFC 1085               ISO Presentation Services           December 1988
                    565: 
                    566: 
                    567:       9. Quality of Service
                    568: 
                    569:         The element "transport-mapping" takes the value "tcp-based" or
                    570:         "udp-based".  In the future the range of values may be extended.
                    571: 
                    572:       10. Presentation Requirements
                    573: 
                    574:         None (the kernel functional unit is always used).
                    575: 
                    576:       11. Session Requirements
                    577: 
                    578:         Full duplex.
                    579: 
                    580:       12. Initial synchronization point serial number
                    581: 
                    582:         None.
                    583: 
                    584:       13. Initial Assignment of tokens
                    585: 
                    586:         None.
                    587: 
                    588:       14. Session connection identifier
                    589: 
                    590:         Unlike the "real" presentation service, depending on the quality
                    591:         of service selected, this parameter may have great significance
                    592:         to presentation provider.  Hence, the following format of the
                    593:         session connection identifier is mandated by this memo.
                    594: 
                    595:         user data:        a local string encoded as a T.61 string
                    596:                           using ASN.1, e.g., given string "gonzo":
                    597: 
                    598:                           14     05     67   6f   6e   7a   6f
                    599:                           tag  length   "g"  "o"  "n"  "z"  "o"
                    600: 
                    601:         common data:      a universal time encoding using ASN.1, e.g.,
                    602:                           given time "880109170845":
                    603: 
                    604:                           17     0c     38   38   30   31   30   ...
                    605:                           tag  length   "8"  "8"  "0"  "1"  "0"  ...
                    606: 
                    607:         additional data:  any string encoded as a T.61 string using ASN.1
                    608:                           (optional)
                    609: 
                    610:         As a local convention, the presentation provider may disregard
                    611:         the first two octets of each data component for transmission on
                    612:         the network as when the session connection identifier is
                    613:         represented with ASN.1, the tag and length octets will be added
                    614:         anyway.
                    615: 
                    616: 
                    617: 
                    618: Rose                                                           [Page 11]
                    619: 
                    620: RFC 1085               ISO Presentation Services           December 1988
                    621: 
                    622: 
                    623:       15. User Data
                    624: 
                    625:         A single ASN.1 object is present, the appropriate A-ASSOCIATE
                    626:         PDU, carried in presentation context 3.
                    627: 
                    628:       16. Result
                    629: 
                    630:         One of the following values: acceptance, user-rejection,
                    631:         provider-rejection (transient), or provider-rejection
                    632:         (permanent).
                    633: 
                    634: 8. Connection Termination
                    635: 
                    636:    The Connection Termination facility consists of three services, the
                    637:    P-RELEASE, P-U-ABORT, and P-P-ABORT services.
                    638: 
                    639: 8.1. The P-RELEASE Service
                    640: 
                    641:    This service provides the service user with access to a negotiated
                    642:    release facility.  This service has effects which are sequenced and
                    643:    non-destructive.  Either presentation user is permitted to request
                    644:    this service.  However, in the event of collision, a provider-
                    645:    initiated abort procedure will be invoked.
                    646: 
                    647:    If the udp-based service is selected, then any data in transit may be
                    648:    discarded.
                    649: 
                    650:       For our purposes, the P-RELEASE service:
                    651: 
                    652:       - waits for the serialization module to drain,
                    653: 
                    654:       - sends release user data, and
                    655: 
                    656:       - releases TCP or UDP resources
                    657: 
                    658:    Following are the interpretation of and the defaults assigned to the
                    659:    parameters of the P-RELEASE service:
                    660: 
                    661:       1. Result
                    662: 
                    663:         Release accepted.
                    664: 
                    665:       2. User data
                    666: 
                    667:         A single ASN.1 object is present, the appropriate A-RELEASE PDU,
                    668: 
                    669: 
                    670: 
                    671: 
                    672: 
                    673: 
                    674: Rose                                                           [Page 12]
                    675: 
                    676: RFC 1085               ISO Presentation Services           December 1988
                    677: 
                    678: 
                    679: 8.2. The P-U-ABORT Service
                    680: 
                    681:    This service can be used by either presentation user to force the
                    682:    release of a presentation connection at any time and have the
                    683:    correspondent presentation user informed of this termination.  This
                    684:    service has effects which are not sequenced with respect to preceding
                    685:    service invocations and may be destructive.  It does not require the
                    686:    agreement of both service users.
                    687: 
                    688:       For our purposes, the P-U-ABORT service:
                    689: 
                    690:       - flushes the serialization module,
                    691: 
                    692:       - sends abort user data, and
                    693: 
                    694:       - releases TCP or UDP resources
                    695: 
                    696:    Following are the interpretation of and the defaults assigned to the
                    697:    parameters of the P-U-ABORT service:
                    698: 
                    699:       1. Presentation context identifier list
                    700: 
                    701:         Contained in the ASN.1 objects, if any, that are delivered as
                    702:         user data.
                    703: 
                    704:       2. User data
                    705: 
                    706:         A single ASN.1 object is present, an A-ABORT PDU, carried in
                    707:         presentation context 3.
                    708: 
                    709: 8.3. The P-P-ABORT Service
                    710: 
                    711:    This service is the means by which the service provider may indicate
                    712:    the termination of the presentation connection for reasons internal
                    713:    to the service provider.  This service has effects which are not
                    714:    sequenced with respect to preceding service invocations.  The
                    715:    execution of this service disrupts any other concurrently active
                    716:    service and may thus be destructive.
                    717: 
                    718:       For our purposes, the P-P-ABORT service:
                    719: 
                    720:       - flushes the serialization module, and
                    721: 
                    722:       - releases TCP or UDP resources
                    723: 
                    724:    Following are the interpretation of and the defaults assigned to the
                    725:    parameters of the P-P-ABORT service.
                    726: 
                    727: 
                    728: 
                    729: 
                    730: Rose                                                           [Page 13]
                    731: 
                    732: RFC 1085               ISO Presentation Services           December 1988
                    733: 
                    734: 
                    735:       1. Provider reason
                    736: 
                    737:         An integer code detailing why the connection was aborted. Codes
                    738:         include, but are not limited to: invalid PPDU parameter,
                    739:         unexpected PPDU, unrecognized PPDU, and specified reason.
                    740: 
                    741:       2. Abort data
                    742: 
                    743:         None.
                    744: 
                    745: 9. Information Transfer
                    746: 
                    747:    Although the Information Transfer facility consists of many services,
                    748:    only one, the P-DATA service, is provided by this memo.
                    749: 
                    750: 9.1. The P-DATA Service
                    751: 
                    752:    This services provides the service user with a data transfer
                    753:    capability.  This service has effects which are sequenced and non-
                    754:    destructive.
                    755: 
                    756:    If the udp-based service is selected, then there is an upper-bound on
                    757:    the size of the serialized ASN.1 objects which may be transmitted.
                    758:    This limit, imposed by the UDP, is 65536 octets.  As a practical
                    759:    matter, it is probably a good idea to keep datagrams less than or
                    760:    equal to 536 octets in size.
                    761: 
                    762:    For our purposes, the P-DATA service:
                    763: 
                    764:               - sends user data
                    765: 
                    766:    Following are the interpretation of and the defaults assigned to the
                    767:    parameters of the P-DATA service:
                    768: 
                    769:       1. User data
                    770: 
                    771:         A single ASN.1 object is present, a remote operations APDU,
                    772:         carried in presentation context 1.
                    773: 
                    774: 10. Elements of Procedure
                    775: 
                    776:    The service provider is in one of the following states:
                    777: 
                    778:            IDLE, WAIT1, WAIT2, DATA, WAIT3, or WAIT4
                    779: 
                    780:         The possible events are:
                    781: 
                    782:            PS-user         P-CONNECT.REQUEST
                    783: 
                    784: 
                    785: 
                    786: Rose                                                           [Page 14]
                    787: 
                    788: RFC 1085               ISO Presentation Services           December 1988
                    789: 
                    790: 
                    791:                            P-CONNECT.RESPONSE
                    792:                            P-RELEASE.REQUEST
                    793:                            P-RELEASE.RESPONSE
                    794:                            P-DATA.REQUEST
                    795:                            P-U-ABORT.REQUEST
                    796: 
                    797:            network         TCP closed or errored(*)
                    798:                            receive ConnectRequest PDU
                    799:                            receive ConnectResponse PDU
                    800:                            receive ReleaseRequest PDU
                    801:                            receive ReleaseResponse PDU
                    802:                            receive UserData(*) or CL-UserData(**) PDU
                    803:                            receive user-initiated Abort PDU
                    804:                            receive provider-initiated Abort PDU
                    805:                            timer expires(**)
                    806: 
                    807: 
                    808:         The possible actions are:
                    809: 
                    810:            PS-user         P-CONNECT.INDICATION
                    811:                            P-CONNECT.CONFIRMATION
                    812:                            P-RELEASE.INDICATION
                    813:                            P-RELEASE.CONFIRMATION
                    814:                            P-DATA.INDICATION
                    815:                            P-U-ABORT.INDICATION
                    816:                            P-P-ABORT.INDICATION
                    817: 
                    818:            network         open TCP(*)
                    819:                            close TCP(*)
                    820:                            send ConnectRequest PDU
                    821:                            send ConnectResponse PDU
                    822:                            send ReleaseRequest PDU
                    823:                            send ReleaseResponse PDU
                    824:                            send UserData(*) or CL-UserData(**) PDU
                    825:                            send user-initiated Abort PDU
                    826:                            send provider-initiated Abort PDU
                    827:                            set timer(**)
                    828: 
                    829:            (*)   tcp-based service only
                    830:            (**)  udp-based service only
                    831: 
                    832: 10.1. Elements of Procedure specific to the tcp-based service
                    833: 
                    834:    The provider maintains the following information for each
                    835:    presentation connection:
                    836: 
                    837:       - a local designator for the PS-user
                    838: 
                    839: 
                    840: 
                    841: 
                    842: Rose                                                           [Page 15]
                    843: 
                    844: RFC 1085               ISO Presentation Services           December 1988
                    845: 
                    846: 
                    847:       - a local designator for a TCP connection
                    848: 
                    849:       - the state of the connection (e.g., IDLE, WAIT1, and so on)
                    850: 
                    851:    Upon receiving an event from the network, the provider finds the
                    852:    associated presentation connection.  Matching is done by simply
                    853:    comparing local designators for the TCP connection.  Whenever a
                    854:    connection remains in or returns to the IDLE state, any associated
                    855:    resources, such as an attachment to a local TCP port, are released.
                    856: 
                    857:    In the procedures which follow, outgoing PDUs are "placed on the
                    858:    input queue for the serializer".  This has a different meaning
                    859:    depending on the type of PDU being enqueued.  If the PDU is not an
                    860:    abort PDU (user-initiated or provider-initiated), then the PDU is
                    861:    simply appended to the input queue regardless of the number of PDUs
                    862:    present.  If however, the PDU is an abort PDU, then the provider
                    863:    checks the size of the input queue.  If the input queue is non-empty
                    864:    or if the serializer is busy transmitting to the network, then the
                    865:    abort PDU is discarded, and the serializer is flushed, aborting any
                    866:    output to the network in progress.  However, if the input queue is
                    867:    empty, then the Abort PDU is appended to the queue, and a small timer
                    868:    started.  If the timer expires before the PDU has been serialized and
                    869:    transmitted, then the serializer is flushed, aborting any output to
                    870:    the network in progress.
                    871: 
                    872:    Further, in general, whenever the TCP connection is closed (either
                    873:    locally by the provider, or remotely by the network) or has errored,
                    874:    the serializer is flushed.  The one exception to this is if a
                    875:    ReleaseResponse PDU is being serialized and transmitted to the
                    876:    network.  In this case, the provider will not close the TCP
                    877:    connection until after the serializer has finished.
                    878: 
                    879: 10.2. Elements of Procedure specific to the udp-based service
                    880: 
                    881:    The provider maintains the following information for each
                    882:    presentation connection:
                    883: 
                    884:       - a local designator for the PS-user
                    885: 
                    886:       - the 32-bit IP address and 16-bit UDP port number of the
                    887:         initiating host
                    888: 
                    889:       - the 32-bit IP address and 16-bit UDP port number of the
                    890:         responding host
                    891: 
                    892:       - the session connection identifier used to establish the
                    893:         presentation connection
                    894: 
                    895: 
                    896: 
                    897: 
                    898: Rose                                                           [Page 16]
                    899: 
                    900: RFC 1085               ISO Presentation Services           December 1988
                    901: 
                    902: 
                    903:       - a local designator for an UDP endpoint
                    904: 
                    905:       - the state of the connection (e.g., IDLE, WAIT1, and so on)
                    906: 
                    907:       - a retransmission counter
                    908: 
                    909:    Upon receiving an event from the network, the provider finds the
                    910:    associated presentation connection.  Matching is done on the basis of
                    911:    addresses, ports, and the session connection identifier (i.e., two
                    912:    different presentation connections may differ only in their session
                    913:    connection identifier).  If no presentation connection can be found,
                    914:    then for the purposes of discussion, it may be assumed that a
                    915:    "vanilla" presentation connection is created and initialized to the
                    916:    IDLE state.  Further, whenever a connection remains in or returns to
                    917:    the IDLE state, any associated resources, such as an attachment to a
                    918:    local UDP port, are released.
                    919: 
                    920:    In the procedures which follow, outgoing PDUs are "placed on the
                    921:    input queue for the serializer".  This means that the ASN.1 object is
                    922:    serialized and the resulting sequence of octets is sent as a single
                    923:    UDP datagram.
                    924: 
                    925: 10.3. State Transitions
                    926: 
                    927:    Following are the rules for transitioning states.  If an event
                    928:    associated with a user-generated primitive is omitted, then it is an
                    929:    interface error for the user to issue that primitive in the given
                    930:    state.  Each state considers all possible incoming PDUs.
                    931: 
                    932:    We assume that for the tcp-based service, that some entity starts a
                    933:    passive TCP open.  When the passive open completes, the entity, using
                    934:    some local rule, locates a PS-user to be associated with the incoming
                    935:    presentation connection.  This presentation connection is then placed
                    936:    in the IDLE state.  The entity then continues listening for other
                    937:    passive opens to complete.  The mechanisms associated with this
                    938:    entity are entirely a local matter, the concept of this listener is
                    939:    introduced solely as a modeling artifact.
                    940: 
                    941:    Finally, if the udp-based service is selected, then CL-UserData PDUs
                    942:    are exchanged by the provider instead of UserData PDUs.
                    943: 
                    944: 
                    945:                                     IDLE state
                    946: 
                    947:         Event:     P-CONNECT.REQUEST primitive issued
                    948: 
                    949:    Based on the quality of service parameter and the list of network
                    950:    addresses in the called presentation address parameter, the provider
                    951: 
                    952: 
                    953: 
                    954: Rose                                                           [Page 17]
                    955: 
                    956: RFC 1085               ISO Presentation Services           December 1988
                    957: 
                    958: 
                    959:    selects an address for the use of the presentation connection.  The
                    960:    method for making this determination is a local matter.  (Appendix C
                    961:    discusses a strategy which might be used.)  For the discussion that
                    962:    follows, we assume that a network address supporting the desired
                    963:    quality of service has been determined.
                    964: 
                    965:    Based on the network address chosen from the called presentation
                    966:    address parameter, the provider selects a compatible network address
                    967:    from the calling presentation address parameter.  The provider
                    968:    attaches itself to the port associated with this network address.
                    969:    (By local determination, this address need not be used, and an
                    970:    "ephemeral" port may be chosen by the provider.)
                    971: 
                    972:    For the tcp-based service, the provider attempts to establish a TCP
                    973:    connection to the network address listed in the called presentation
                    974:    address.  If the connection can not be established, the P-
                    975:    CONNECT.CONFIRMATION(-) primitive is issued with a reason of
                    976:    provider-rejection, and the provider remains in the IDLE state.
                    977: 
                    978:    Regardless, the user data parameter is placed in a ConnectRequest
                    979:    PDU, which is put on the input queue for the serializer.
                    980: 
                    981:    For the udp-based service, the provider sets the retransmission
                    982:    counter to a small value (e.g., 2), and now starts a small timer.
                    983: 
                    984:    Regardless, the provider enters the WAIT1 state.
                    985: 
                    986: 
                    987:         Event:     ConnectRequest PDU received
                    988: 
                    989:    The provider issues the P-CONNECT.INDICATION primitive and enters the
                    990:    WAIT2 state.
                    991: 
                    992: 
                    993:         Event:     any other PDU received
                    994: 
                    995:    If the PDU is not an Abort PDU, the provider constructs a provider-
                    996:    initiated Abort PDU, which is put on the input queue for the
                    997:    serializer.  Regardless, the provider remains in the IDLE state.
                    998: 
                    999: 
                   1000:                                     WAIT1 state
                   1001: 
                   1002:         Event:     P-U-ABORT.REQUEST primitive issued
                   1003: 
                   1004:    The user data parameter is placed in an Abort PDU, which is put on
                   1005:    the input queue for the serializer.  The provider enters the IDLE
                   1006:    state.
                   1007: 
                   1008: 
                   1009: 
                   1010: Rose                                                           [Page 18]
                   1011: 
                   1012: RFC 1085               ISO Presentation Services           December 1988
                   1013: 
                   1014: 
                   1015:         Event:     ConnectResponse PDU received
                   1016: 
                   1017:    For the udp-based service, the timer is cancelled.  If the PDU
                   1018:    indicates rejection, the P-CONNECT.CONFIRMATION(-) primitive is
                   1019:    issued and the provider enters the IDLE state.  Otherwise, the P-
                   1020:    CONNECT.CONFIRMATION(+) primitive is issued and the provider enters
                   1021:    the DATA state.
                   1022: 
                   1023: 
                   1024:         Event:     user-initiated Abort PDU received
                   1025: 
                   1026:    The provider issues the P-U-ABORT.INDICATION primitive and enters the
                   1027:    IDLE state.
                   1028: 
                   1029: 
                   1030:         Event:     any other PDU received
                   1031: 
                   1032:    If the PDU not an Abort PDU, the provider constructs a provider-
                   1033:    initiated Abort PDU, which is put on the input queue for the
                   1034:    serializer.  Regardless, The provider issues the P-P-ABORT.INDICATION
                   1035:    primitive and enters the the IDLE state.
                   1036: 
                   1037: 
                   1038:         Event:     timer expires
                   1039: 
                   1040:    The provider decrements the retransmission counter.  If the resulting
                   1041:    value is less than or equal to zero, the provider issues the P-
                   1042:    CONNECT.CONFIRMATION(-) primitive and enters the IDLE state.
                   1043:    Otherwise, a ConnectRequest PDU is put on the input queue for the
                   1044:    serializer, the small timer is started again, and the provider
                   1045:    remains in the WAIT1 state.
                   1046: 
                   1047: 
                   1048:                                     WAIT2 state
                   1049: 
                   1050:         Event:     P-CONNECT.RESPONSE primitive issued
                   1051: 
                   1052:    The user data parameter is placed in a ConnectResponse PDU, which is
                   1053:    put on the input queue for the serializer.  If the result parameter
                   1054:    had the value user-rejection, the provider enters the IDLE state.
                   1055:    Otherwise if the parameter had the value acceptance, the provider
                   1056:    enters the DATA state.
                   1057: 
                   1058: 
                   1059: 
                   1060: 
                   1061: 
                   1062: 
                   1063: 
                   1064: 
                   1065: 
                   1066: Rose                                                           [Page 19]
                   1067: 
                   1068: RFC 1085               ISO Presentation Services           December 1988
                   1069: 
                   1070: 
                   1071:         Event:     P-U-ABORT.REQUEST primitive issued
                   1072: 
                   1073:    The user data parameter is placed in an Abort PDU, which is put on
                   1074:    the input queue for the serializer.  The provider enters the IDLE
                   1075:    state.
                   1076: 
                   1077: 
                   1078:         Event:     user-initiated Abort PDU received
                   1079: 
                   1080:    The provider issues the P-U-ABORT.INDICATION primitive and enters the
                   1081:    IDLE state.
                   1082: 
                   1083: 
                   1084:         Event:     any other PDU received
                   1085: 
                   1086:    If the PDU is not an Abort PDU, the provider constructs a provider-
                   1087:    initiated Abort PDU, which is put on the input queue for the
                   1088:    serializer.  Regardless, The provider issues the P-P-ABORT.INDICATION
                   1089:    primitive and enters the the IDLE state.
                   1090: 
                   1091: 
                   1092:                                     DATA state
                   1093: 
                   1094:         Event:     P-DATA.REQUEST primitive issued
                   1095: 
                   1096:    The user data parameter is placed in a UserData PDU, which is put on
                   1097:    the input queue for the serializer.  The provider remains in the DATA
                   1098:    state.
                   1099: 
                   1100: 
                   1101:         Event:     P-RELEASE.REQUEST primitive issued
                   1102: 
                   1103:    The user data parameter is placed in a ReleaseRequest PDU, which is
                   1104:    put on the input queue for the serializer.
                   1105: 
                   1106:    For the udp-based service, the provider sets the retransmission
                   1107:    counter to a small value (e.g., 2), and now starts a small timer.
                   1108: 
                   1109:    Regardless, the provider enters the WAIT3 state.
                   1110: 
                   1111: 
                   1112:         Event:     P-U-ABORT.REQUEST primitive issued
                   1113: 
                   1114:    The user data parameter is placed in an Abort PDU, which is put on
                   1115:    the input queue for the serializer.  The provider enters the IDLE
                   1116:    state.
                   1117: 
                   1118: 
                   1119: 
                   1120: 
                   1121: 
                   1122: Rose                                                           [Page 20]
                   1123: 
                   1124: RFC 1085               ISO Presentation Services           December 1988
                   1125: 
                   1126: 
                   1127:         Event:     UserData PDU received
                   1128: 
                   1129:    The provider issues the P-DATA.INDICATION primitive and remains in
                   1130:    the DATA state.
                   1131: 
                   1132: 
                   1133:         Event:     ReleaseRequest PDU received
                   1134: 
                   1135:    The provider issues the P-RELEASE.INDICATION primitive, and enters
                   1136:    the WAIT4 state.
                   1137: 
                   1138: 
                   1139:         Event:     user-initiated Abort PDU received
                   1140: 
                   1141:    The provider issues the P-U-ABORT.INDICATION primitive and enters
                   1142:     the IDLE state.
                   1143: 
                   1144: 
                   1145:         Event:     any other PDU received
                   1146: 
                   1147:    If the PDU is not an Abort PDU, the provider constructs a provider-
                   1148:    initiated Abort PDU, which is put on the input queue for the
                   1149:    serializer.  Regardless, the provider issues the P-P-ABORT.INDICATION
                   1150:    primitive and enters the the IDLE state.
                   1151: 
                   1152: 
                   1153:                                     WAIT3 state
                   1154: 
                   1155:         Event:     P-U-ABORT.REQUEST primitive issued
                   1156: 
                   1157:    The user data parameter is placed in an Abort PDU, which is put on
                   1158:    the input queue for the serializer.  The provider enters the IDLE
                   1159:    state.
                   1160: 
                   1161: 
                   1162:         Event:     ReleaseResponse PDU received
                   1163: 
                   1164:    For the udp-based service, the timer is cancelled.  The provider
                   1165:    issues the P-RELEASE.CONFIRMATION primitive and enters the IDLE
                   1166:    state.
                   1167: 
                   1168: 
                   1169:         Event:     user-initiated Abort PDU received
                   1170: 
                   1171:    The provider issues the P-U-ABORT.INDICATION primitive and enters the
                   1172:    IDLE state.
                   1173: 
                   1174: 
                   1175: 
                   1176: 
                   1177: 
                   1178: Rose                                                           [Page 21]
                   1179: 
                   1180: RFC 1085               ISO Presentation Services           December 1988
                   1181: 
                   1182: 
                   1183:         Event:     any other PDU received
                   1184: 
                   1185:    If the PDU is not an Abort PDU, the provider constructs a provider-
                   1186:    initiated Abort PDU, which is put on the input queue for the
                   1187:    serializer.  Regardless, the provider issues the P-P-ABORT.INDICATION
                   1188:    primitive and enters the the IDLE state.
                   1189: 
                   1190: 
                   1191:         Event:     timer expires
                   1192: 
                   1193:    The provider decrements the retransmission counter.  If the resulting
                   1194:    value is less than or equal to zero, the provider constructs a
                   1195:    provider-initiated Abort PDU, which is put on the input queue for the
                   1196:    serializer.  It then issues the P-P-ABORT.INDICATION primitive and
                   1197:    enters the IDLE state.  Otherwise, a ReleaseRequest PDU is put on the
                   1198:    input queue for the serializer, the small timer is started again, and
                   1199:    the provider remains in the WAIT3 state.
                   1200: 
                   1201: 
                   1202:                                     WAIT4 state
                   1203: 
                   1204:         Event:     P-RELEASE.RESPONSE primitive issued
                   1205: 
                   1206:    The user data parameter is placed in a ReleaseResponse PDU, which is
                   1207:    put on the input queue for the serializer.  The provider now enters
                   1208:    the IDLE state.
                   1209: 
                   1210:         Event:     P-U-ABORT.REQUEST primitive issued
                   1211: 
                   1212:    The user data parameter is placed in an Abort PDU, which is put on
                   1213:    the input queue for the serializer.  The provider now enters the IDLE
                   1214:    state.
                   1215: 
                   1216: 
                   1217:         Event:     user-initiated Abort PDU received
                   1218: 
                   1219:    The provider issues the P-U-ABORT.INDICATION primitive and enters the
                   1220:    IDLE state.
                   1221: 
                   1222: 
                   1223:         Event:     any other PDU received
                   1224: 
                   1225:    If the PDU is not an Abort PDU, the provider constructs a provider-
                   1226:    initiated Abort PDU, which is put on the input queue for the
                   1227:    serializer.  Regardless, the provider issues the P-P-ABORT.INDICATION
                   1228:    primitive and enters the the IDLE state.
                   1229: 
                   1230: 
                   1231: 
                   1232: 
                   1233: 
                   1234: Rose                                                           [Page 22]
                   1235: 
                   1236: RFC 1085               ISO Presentation Services           December 1988
                   1237: 
                   1238: 
                   1239: 11. Directory Services
                   1240: 
                   1241:    Although not properly part of the presentation service, this memo
                   1242:    assumes and specifies a minimal Directory service capability for use
                   1243:    by the application-entity.
                   1244: 
                   1245:    The function of the Directory Service Element is to provide two
                   1246:    mappings: first, a service name is mapped into an application entity
                   1247:    title, which is a global handle on the service; and, second, the
                   1248:    application-entity title is mapped onto a presentation address.
                   1249: 
                   1250:    The structure of presentation addresses were defined in Section 5.
                   1251: 
                   1252:    The structure of application-entity titles is less solidly agreed
                   1253:    upon at the present time.  Since objects of this type are not
                   1254:    interpreted by the presentation service, this memo does not specify
                   1255:    their structure.  If the DIS version of association control is being
                   1256:    used, then use of an OBJECT IDENTIFIER will suffice.  If the IS
                   1257:    version is being employed, then application-entity titles consist of
                   1258:    two parts: an application-process title and an application-entity
                   1259:    qualifier.  It is suggested that the AP-Title use an OBJECT
                   1260:    IDENTIFIER and that the AE-Qualifier use NULL.
                   1261: 
                   1262:    This memo requires the following mapping rules:
                   1263: 
                   1264:       1.  The service name for an OSI application-entity using the
                   1265:       mechanisms proposed by this memo is:
                   1266: 
                   1267:               <designator> "-" <qualifier>
                   1268: 
                   1269:       where <designator> is a string denoting either domain name or a
                   1270:       32-bit IP address, and <qualifier> is a string denoting the type
                   1271:       of application-entity desired, e.g.,
                   1272: 
                   1273:               "gonzo.twg.com-mgmtinfobase"
                   1274: 
                   1275:       2.  Any locally defined mapping rules may be used to map the
                   1276:       service designation into an application-entity title.
                   1277: 
                   1278:       3.  The application-entity title is then mapped into a
                   1279:       presentation address, with uninterpreted transport, session, and
                   1280:       presentation selectors, and one or more network addresses, each
                   1281:       containing:
                   1282: 
                   1283:          -the 32-bit IP address resolved from the <designator> portion
                   1284:           of the service name,
                   1285: 
                   1286:          - a set indicating which transport services are available
                   1287: 
                   1288: 
                   1289: 
                   1290: Rose                                                           [Page 23]
                   1291: 
                   1292: RFC 1085               ISO Presentation Services           December 1988
                   1293: 
                   1294: 
                   1295:            at the IP address,
                   1296: 
                   1297:          - the 16-bit port number resolved from the <qualifier>
                   1298:            portion of the service name (using the Assigned Numbers
                   1299:            document), and
                   1300: 
                   1301:          - optionally, a presentation selector, which is an
                   1302:            uninterpreted sequence of octets.
                   1303: 
                   1304:    The method by which the mappings are obtained are straight-forward.
                   1305:    The directory services element employs the Domain Name System along
                   1306:    with a local table which may be used to resolve the address employing
                   1307:    local rules.
                   1308: 
                   1309:    In the simplest of implementations, the DNS is used to map the
                   1310:    <designator> to an IP address, and to fill-in the set of transport
                   1311:    services available at the IP address.  The port number is found in a
                   1312:    local table derived from the current Assigned Numbers document.
                   1313:    Finally, the presentation selector is empty.
                   1314: 
                   1315:    A more ambitious implementation would use a local table to perhaps
                   1316:    provide a presentation selector.  This would be useful, e.g., in
                   1317:    "proxy" connections.  The network address would resolve to the proxy
                   1318:    agent for the non-IP device, and the presentation selector would
                   1319:    indicate to the proxy agent the particular non-IP device desired.
                   1320:    This implies, of course, that the local table and the proxy agent
                   1321:    bilaterally agree as to the interpretation of each presentation
                   1322:    selector.
                   1323: 
                   1324: 12. Remarks
                   1325: 
                   1326:    To begin, if one really wanted to implement ISO applications in a
                   1327:    TCP/IP-based network, then the method proposed by [RFC1006] is the
                   1328:    preferred method for achieving this.  However, in a constrained
                   1329:    environment, where it is necessary to host an application layer
                   1330:    entity with a minimal amount of underlying OSI infrastructure, this
                   1331:    memo proposes an alternative mechanism.  It should be noted that an
                   1332:    OSI application realized using this approach can be moved directly to
                   1333:    an [RFC1006]-based environment with no modifications.
                   1334: 
                   1335:    A key motivation therefore is to minimize the size of the alternate
                   1336:    underling infrastructure specified by this memo.  As more and more
                   1337:    presentation services functionality is added, the method proposed
                   1338:    herein would begin to approximate the ISO presentation protocol.
                   1339:    Since this in contrary to the key motivation, featurism must be
                   1340:    avoided at all costs.
                   1341: 
                   1342: 
                   1343: 
                   1344: 
                   1345: 
                   1346: Rose                                                           [Page 24]
                   1347: 
                   1348: RFC 1085               ISO Presentation Services           December 1988
                   1349: 
                   1350: 
                   1351: 13. Acknowledgements
                   1352: 
                   1353:    Several individuals contributed to the technical quality of this
                   1354:    memo:
                   1355: 
                   1356:            Karl Auerbach, Epilogue Technologies
                   1357:            Joseph Bannister, Unisys
                   1358:            Amatzia Ben-Artzi, Sytek
                   1359:            Stephen Dunford, Unisys
                   1360:            Lee Labarre, MITRE
                   1361:            Keith McCloghrie, The Wollongong Group
                   1362:            Jim Robertson, Bridge Communications
                   1363:            Glenn Trewitt, Stanford University
                   1364: 
                   1365: 14. References
                   1366: 
                   1367:      [ISO7498]  Information Processing Systems - Open Systems
                   1368:                 Interconnection, "Basic Reference Model", October, 1984.
                   1369: 
                   1370:      [ISO8509]  Information Processing Systems - Open Systems
                   1371:                 Interconnection, " Service Conventions".
                   1372: 
                   1373:      [ISO8650]  Information Processing Systems - Open Systems
                   1374:                 Interconnection, " Protocol Specification for the
                   1375:                 Association Control Service Element (Final Text
                   1376:                 of DIS 8650)", January, 1988.
                   1377: 
                   1378:      [ISO8822]  Information Processing Systems - Open Systems
                   1379:                 Interconnection, " Connection Oriented Presentation
                   1380:                 Service Definition (Final Text of DIS 8822)",
                   1381:                 April, 1988.
                   1382: 
                   1383:      [ISO8823]  Information Processing Systems - Open Systems
                   1384:                 Interconnection, " Connection Oriented Presentation
                   1385:                 Protocol Specification (Final Text of DIS 8822)",
                   1386:                 April, 1988.
                   1387: 
                   1388:      [ISO8824]  Information Processing Systems - Open Systems
                   1389:                 Interconnection, " Specification of Abstract Syntax
                   1390:                 Notation One (ASN.1)", December, 1987.
                   1391: 
                   1392:      [ISO8825]  Information Processing Systems - Open Systems
                   1393:                 Interconnection, "Specification of basic encoding rules
                   1394:                 for Abstract Syntax Notation One (ASN.1)",
                   1395:                 December, 1987.
                   1396: 
                   1397:      [ISO9072/2]  Information Processing Systems - Text Communication
                   1398:                   MOTIS, " Remote Operations Part 2: Protocol
                   1399: 
                   1400: 
                   1401: 
                   1402: Rose                                                           [Page 25]
                   1403: 
                   1404: RFC 1085               ISO Presentation Services           December 1988
                   1405: 
                   1406: 
                   1407:                   Specification (Working Document for DIS 9072/2)",
                   1408:                   November, 1987.
                   1409: 
                   1410:      [RFC768]  Postel, J., "User Datagram Protocol", RFC 768, USC/ISI,
                   1411:                28 August 1980.
                   1412: 
                   1413:      [RFC791]  Postel, J., "Internet Protocol - DARPA Internet Program
                   1414:                Protocol Specification", RFC 791, USC/ISI,
                   1415:                September 1981.
                   1416: 
                   1417:      [RFC793]  Postel, J., "Transmission Control Protocol - DARPA
                   1418:                Internet Program Protocol Specification", RFC 793,
                   1419:                USC/ISI, September 1981.
                   1420: 
                   1421:      [RFC1006]  Rose, M., and D. Cass, "ISO Transport 1 on Top of the
                   1422:                 TCP Version: 3", Northrop Research and Technology
                   1423:                 Center, May 1987.
                   1424: 
                   1425: Appendix A:
                   1426: 
                   1427: Abstract Syntax Definitions
                   1428: 
                   1429:    RFC1085-PS DEFINITIONS ::=
                   1430: 
                   1431:    BEGIN
                   1432: 
                   1433:    PDUs ::=
                   1434:            CHOICE {
                   1435:                connectRequest
                   1436:                    ConnectRequest-PDU,
                   1437: 
                   1438:                connectResponse
                   1439:                    ConnectResponse-PDU,
                   1440: 
                   1441:                releaseRequest
                   1442:                    ReleaseRequest-PDU,
                   1443: 
                   1444:                releaseResponse
                   1445:                    ReleaseResponse-PDU,
                   1446: 
                   1447:                abort
                   1448:                    Abort-PDU,
                   1449: 
                   1450:                userData
                   1451:                    UserData-PDU,
                   1452: 
                   1453:                cL-userData
                   1454:                    CL-UserData-PDU
                   1455: 
                   1456: 
                   1457: 
                   1458: Rose                                                           [Page 26]
                   1459: 
                   1460: RFC 1085               ISO Presentation Services           December 1988
                   1461: 
                   1462: 
                   1463:            }
                   1464: 
                   1465: 
                   1466: 
                   1467:    -- connect request PDU
                   1468: 
                   1469:    ConnectRequest-PDU ::=
                   1470:        [0]
                   1471:            IMPLICIT SEQUENCE {
                   1472:                version[0]          -- version-1 corresponds to to this
                   1473:                                       memo
                   1474:                    IMPLICIT INTEGER { version-1(0) },
                   1475: 
                   1476:                reference
                   1477:                    SessionConnectionIdentifier,
                   1478: 
                   1479:                calling
                   1480:                    PresentationSelector
                   1481:                    OPTIONAL,
                   1482: 
                   1483:                called[2]
                   1484:                    IMPLICIT PresentationSelector
                   1485:                    OPTIONAL,
                   1486: 
                   1487:                asn[3]              -- the ASN for PCI #1
                   1488:                    IMPLICIT OBJECT IDENTIFIER,
                   1489: 
                   1490:                user-data
                   1491:                    UserData-PDU
                   1492:            }
                   1493: 
                   1494:    SessionConnectionIdentifier ::=
                   1495:        [0]
                   1496:            SEQUENCE {
                   1497:                callingSSUserReference
                   1498:                    T61String,
                   1499: 
                   1500:                commonReference
                   1501:                    UTCTime,
                   1502: 
                   1503:                additionalReferenceInformation[0]
                   1504:                    IMPLICIT T61String
                   1505:                    OPTIONAL
                   1506:            }
                   1507: 
                   1508:    PresentationSelector ::=
                   1509:        [1]
                   1510:            IMPLICIT OCTET STRING
                   1511: 
                   1512: 
                   1513: 
                   1514: Rose                                                           [Page 27]
                   1515: 
                   1516: RFC 1085               ISO Presentation Services           December 1988
                   1517: 
                   1518: 
                   1519:    -- connect response PDU
                   1520: 
                   1521:    ConnectResponse-PDU ::=
                   1522:        [1]
                   1523:            IMPLICIT SEQUENCE {
                   1524:                reference           -- present only in the udp-based
                   1525:                                    -- service
                   1526:                    SessionConnectionIdentifier
                   1527:                    OPTIONAL,
                   1528: 
                   1529:                responding
                   1530:                    PresentationSelector
                   1531:                    OPTIONAL,
                   1532: 
                   1533:                reason[2]           -- present only if the connection
                   1534:                                    -- was rejected
                   1535:                    IMPLICIT Rejection-reason
                   1536:                    OPTIONAL,
                   1537: 
                   1538:                user-data           -- present only if reason is absent
                   1539:                                    -- OR has the
                   1540:                                    -- value rejected-by-responder
                   1541:                    UserData-PDU
                   1542:                    OPTIONAL
                   1543:            }
                   1544: 
                   1545:    Rejection-reason ::=
                   1546:            INTEGER {
                   1547:                rejected-by-responder(0)
                   1548:                called-presentation-address-unknown(1),
                   1549:                local-limit-exceeded(3),
                   1550:                protocol-version-not-supported(4),
                   1551:            }
                   1552: 
                   1553: 
                   1554:    -- release request PDU
                   1555: 
                   1556:    ReleaseRequest-PDU ::=
                   1557:        [2]
                   1558:            IMPLICIT SEQUENCE {
                   1559:                reference           -- present only in the udp-based
                   1560:                                    -- service
                   1561:                    SessionConnectionIdentifier
                   1562:                    OPTIONAL,
                   1563: 
                   1564:                user-data
                   1565:                    UserData-PDU
                   1566:            }
                   1567: 
                   1568: 
                   1569: 
                   1570: Rose                                                           [Page 28]
                   1571: 
                   1572: RFC 1085               ISO Presentation Services           December 1988
                   1573: 
                   1574: 
                   1575:    -- release response PDU
                   1576: 
                   1577:    ReleaseResponse-PDU ::=
                   1578:        [3]
                   1579:            IMPLICIT SEQUENCE {
                   1580:                reference           -- present only in the udp-based
                   1581:                                    -- service
                   1582:                    SessionConnectionIdentifier
                   1583:                    OPTIONAL,
                   1584: 
                   1585:                user-data
                   1586:                    UserData-PDU
                   1587:            }
                   1588: 
                   1589:    -- abort PDU
                   1590: 
                   1591:    Abort-PDU ::=
                   1592:        [4]
                   1593:            SEQUENCE {
                   1594:                reference           -- present only in the udp-based
                   1595:                                    -- service
                   1596:                    SessionConnectionIdentifier
                   1597:                    OPTIONAL,
                   1598: 
                   1599:                user-data   -- MAY BE present on user-initiated abort
                   1600:                    UserData-PDU
                   1601:                    OPTIONAL,
                   1602: 
                   1603:                reason[1]   -- ALWAYS present on provider-initiated abort
                   1604:                    IMPLICIT Abort-reason
                   1605:                    OPTIONAL
                   1606:            }
                   1607: 
                   1608:    Abort-reason ::=
                   1609:            INTEGER {
                   1610:                unspecified(0),
                   1611:                unrecognized-ppdu(1),
                   1612:                unexpected-ppdu(2),
                   1613:                unrecognized-ppdu-parameter(4),
                   1614:                invalid-ppdu-parameter(5),
                   1615:                reference-mismatch(9)
                   1616:            }
                   1617: 
                   1618: 
                   1619:    -- data PDU
                   1620: 
                   1621:    UserData-PDU ::=
                   1622:        [5]                         -- this is the ASN.1 object
                   1623: 
                   1624: 
                   1625: 
                   1626: Rose                                                           [Page 29]
                   1627: 
                   1628: RFC 1085               ISO Presentation Services           December 1988
                   1629: 
                   1630: 
                   1631:            ANY                     -- if it is a top-level PDU, it
                   1632:                                    -- is in PCI #1, otherwise PCI #3
                   1633: 
                   1634: 
                   1635:    -- data PDU for the udp-based service
                   1636: 
                   1637:    CL-UserData-PDU ::=
                   1638:        [6]
                   1639:            IMPLICIT SEQUENCE {
                   1640:                reference
                   1641:                    SessionConnectionIdentifier,
                   1642: 
                   1643:                user-data[0]                -- this is the ASN.1 object
                   1644:                    ANY                     -- it is always in PCI #1
                   1645:            }
                   1646: 
                   1647:    END
                   1648: 
                   1649: Appendix B:
                   1650: 
                   1651: Example of Serialization
                   1652: 
                   1653: 
                   1654:    Consider the following call to ROSE:
                   1655: 
                   1656:            RO-INVOKE (operation number      = 5
                   1657:                       operation class       = synchronous
                   1658:                       argument              = NONE
                   1659:                       invocation identifier = 1
                   1660:                       linked invocation id. = NONE
                   1661:                       priority              = 0)
                   1662:                .REQUEST
                   1663: 
                   1664:    Ultimately, ROSE will use the P-DATA service:
                   1665: 
                   1666:            P-DATA (user data = {
                   1667:                                  1,        -- this is the PCI
                   1668:                                  {         -- this is the ASN.1 object
                   1669:                                     invokeID 1,
                   1670:                                     operation-value 5,
                   1671:                                     argument {}
                   1672:                                  }
                   1673:                                })
                   1674:                .REQUEST
                   1675: 
                   1676:    The presentation provider will construct a UserData PDU and send this
                   1677:    via the transport connection:
                   1678: 
                   1679: 
                   1680: 
                   1681: 
                   1682: Rose                                                           [Page 30]
                   1683: 
                   1684: RFC 1085               ISO Presentation Services           December 1988
                   1685: 
                   1686: 
                   1687:       [5] {
                   1688:             {
                   1689:               1,
                   1690:               5,
                   1691:               {}
                   1692:             }
                   1693:           }
                   1694: 
                   1695:    Applying the basic encoding rules for ASN.1, we have an stream of 12
                   1696:    octets.
                   1697: 
                   1698:       a5  0a                                       [5]
                   1699:       tag len
                   1700: 
                   1701:       a0  08                               [0]
                   1702:       tag len
                   1703:       02  01  01           invokeID 1
                   1704:       tag len value
                   1705: 
                   1706:       02  01  05           operation-value 5
                   1707:       tag len value
                   1708: 
                   1709:       30  00                       argument NULL
                   1710:       tag len
                   1711: 
                   1712:    Of course, in actual use, the argument would not be NONE and this
                   1713:    could be expected to dominate the size of the UserData PDU.  However,
                   1714:    it is worth nothing that the overhead of the encoding mechanism used
                   1715:    is on the order of 10 octets, hardly a staggering amount!
                   1716: 
                   1717: Appendix C:
                   1718: 
                   1719: Determination of Network Called Address
                   1720: 
                   1721:    As described in Section 10, when the P-CONNECT.REQUEST primitive is
                   1722:    issued the presentation provider must determine which of the network
                   1723:    addresses present in the called presentation address parameter to use
                   1724:    for the presentation connection.  The first step in this
                   1725:    determination is to examine the quality of service parameter and
                   1726:    consider only those network addresses which support the corresponding
                   1727:    transport service.  In practice, it is likely that each network
                   1728:    address will support exactly the same transport services, so using
                   1729:    quality of service as a discriminant will either permit all or none
                   1730:    or the network addresses present to be selected.  This appendix
                   1731:    describes a local policy which might be employed when deciding which
                   1732:    network address to use.
                   1733: 
                   1734:    The policy distinguishes between "underlying failures" and
                   1735: 
                   1736: 
                   1737: 
                   1738: Rose                                                           [Page 31]
                   1739: 
                   1740: RFC 1085               ISO Presentation Services           December 1988
                   1741: 
                   1742: 
                   1743:    "connection establishment failures".  An "underlying failure" occurs
                   1744:    when, using the desired transport service, the initiating
                   1745:    presentation provider is unable to contact the responding
                   1746:    presentation provider.  For the tcp-based service, this means that a
                   1747:    TCP connection could not be established for some reason.  For the
                   1748:    udp-based service, it means that a response was not received before
                   1749:    final time-out.  In contrast, a "connection establishment failure"
                   1750:    occurs when the responding presentation provider can be contacted,
                   1751:    but the presentation connection is rejected by either the
                   1752:    presentation provider or the correspondent presentation user.
                   1753: 
                   1754:    The policy is simple: starting with the first network address
                   1755:    present, attempt the connection procedure.  If the procedure fails
                   1756:    due to an "underlying failure", then the next network address in the
                   1757:    list is tried.  This process is repeated until either an underlying
                   1758:    connection is established or all network addresses are exhausted.
                   1759:    If, however, a "connection establishment failure" occurs, then the
                   1760:    presentation provider immediately indicates this failure to the
                   1761:    presentation user and no further network addresses are considered.
                   1762: 
                   1763:    Note that this is only one conformant policy of many.  For example,
                   1764:    the presentation provider may wish to order network addresses based
                   1765:    on the "intensity" associated with the members present in the set of
                   1766:    transport services for each network address.
                   1767: 
                   1768: Author's Address:
                   1769: 
                   1770:    Marshall Rose
                   1771:    The Wollongong Group
                   1772:    1129 San Antonio Road
                   1773:    Palo Alto, CA 94303
                   1774: 
                   1775:    Phone: (415) 962-7100
                   1776: 
                   1777:    EMail: [email protected]
                   1778: 
                   1779: 
                   1780: 
                   1781: 
                   1782: 
                   1783: 
                   1784: 
                   1785: 
                   1786: 
                   1787: 
                   1788: 
                   1789: 
                   1790: 
                   1791: 
                   1792: 
                   1793: 
                   1794: Rose                                                           [Page 32]
                   1795: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.