|
|
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:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.