home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-11-01 | 65.9 KB | 1,628 lines |
-
-
-
-
-
-
- Network Working Group P. Furniss
- Request for Comments: 1698 Consultant
- Category: Informational October 1994
-
-
- Octet Sequences for Upper-Layer OSI
- to Support Basic Communications Applications
-
- Status of this Memo
-
- This memo provides information for the Internet community. This memo
- does not specify an Internet standard of any kind. Distribution of
- this memo is unlimited.
-
- Abstract
-
- This document states particular octet sequences that comprise the OSI
- upper-layer protocols (Session, Presentation and ACSE) when used to
- support applications with "basic communications requirements". These
- include OSI application protocols such as X.400 P7 and Directory
- Access Protocol, and "migrant" protocols, originally defined for use
- over other transports.
-
- As well as the octet sequences which are the supporting layer headers
- (and trailers) around the application data, this document includes
- some tutorial material on the OSI upper layers.
-
- An implementation that sends the octet sequences given here, and
- interprets the equivalent protocol received, will be able to
- interwork with an implementation based on the base standard, when
- both are being used to support an appropriate application protocol.
-
- Table of Contents
-
- 1. Introduction ...................................................2
- 2. General ........................................................3
- 2.1 Subdivisions of "basic communication applications" ...........3
- 2.2 Conformance and interworking .................................5
- 2.3 Relationship to other documents ..............................5
- 3. Contexts and titles ............................................6
- 3.1 The concepts of abstract and transfer syntax .................6
- 3.2 Use of presentation context by cookbook applications..........7
- 3.3 Processing Presentation-context-definition-list ..............8
- 3.4 Application context ..........................................9
- 3.5 APtitles and AEqualifiers ....................................9
- 4. What has to be sent and received ..............................10
- 4.1 Sequence of OSI protocol data units used ....................10
- 4.2 Which OSI fields are used ...................................12
-
-
-
- Furniss [Page 1]
-
- RFC 1698 ThinOSI Upper-Layers Cookbook October 1994
-
-
- 4.3 Encoding methods and length fields ..........................14
- 4.3.1 Session items .............................................14
- 4.3.2 ASN.1/BER items (Presentation and ACSE) ...................14
- 4.4 BER Encoding of values for primitive datatypes ..............15
- 4.5 Unnecessary constructed encodings ...........................16
- 5. Notation ......................................................16
- 6. Octet sequences ...............................................17
- 6.1 Connection request message ..................................17
- 6.2 Successful reply to connection setup ........................20
- 6.3 Connection rejection ........................................22
- 6.4 Data-phase TSDU .............................................23
- 6.5 Closedown - release request ................................24
- 6.6 Closedown - release response ................................25
- 6.7 Deliberate abort ............................................25
- 6.8 Provider abort ..............................................27
- 6.9 Abort accept ................................................27
- 7. References ....................................................27
- 8. Other notes ...................................................28
- 9. Security Considerations .......................................29
- 10. Author's Address .............................................29
-
- 1. Introduction
-
- The upper-layer protocols of the OSI model are large and complex,
- mostly because the protocols they describe are rich in function and
- options. However, for support of most applications, only a limited
- portion of the function is needed. An implementation that is not
- intended to be a completely general platform does not need to
- implement all the features. Further, it need not reflect the
- structuring of the OSI specifications - the layer of the OSI model
- are purely abstract.
-
- This document presents the protocol elements required by the OSI
- upper layers when supporting a connection-oriented application with
- only basic communication requirements - that is to create a
- connection, optionally negotiate the data representation,
- send/receive data, close a connection and abort a connection.
- Optionally, data may be sent on the connection establishment, closing
- and abort messages.
-
- In this document, the protocol elements needed are given in terms of
- the octet sequences that comprise the 'envelope' around the
- application data. The envelope and its enclosing data form a
- Transport Service Data Unit (TSDU) that can be passed via the OSI
- Transport Service [ISO8072] (which in turn may be supported as
- specified in [RFC1006] or any class of the OSI Transport Protocol
- [ISO8073]).
-
-
-
-
- Furniss [Page 2]
-
- RFC 1698 ThinOSI Upper-Layers Cookbook October 1994
-
-
- The octet sequences to be sent and the description of the alternative
- forms that may be received are equivalent to an informal re-
- specification of the relevant parts of the upper-layer protocols.
- The "relevant parts" are determined by the requirements of the
- supported applications (this is a reflexive definition! - if
- application Z needs something that is not here, it is not supported).
- The formal specifications remain the base standards, the appropriate
- profiles and the requirements of the application. However, an
- implementation based on this document will be able to interwork with
- an implementation based directly on the full standards when both are
- supporting a basic communication application. The "full"
- implementation will exhibit only part of its potential behaviour,
- since the application will only invoke part.
-
- In addition to the octet sequences, the document includes some
- tutorial material.
-
- 2. General
-
- 2.1 Subdivisions of "basic communication applications"
-
- Distinctions can be made within the "basic communication
- applications", as defined above, based on how much use they make of
- the OSI upper-layer services, and thus how much of the protocol
- described in this memo will be used to support a particular
- application. One distinction is:
-
- a) whether application data is sent on the connection
- establishment, close and abort, or only during "date phase"
- on an established connection; OR
-
- b) whether the application data is of only one kind (abstract
- syntax) and one format (transfer syntax) or more than one
- (i.e., how much use is made of the Presentation layer syntax
- negotiation and identification features)
-
- Further distinctions are possible, but in this memo, elements of
- protocol needed (or not needed) by four groups of "basic
- communications application" are identified. All groups have "basic
- communications requirements" in requiring only connection, data
- transfer and (perhaps) orderly release of connection. The four groups
- are:
-
- Group I: applications which send data only on an established
- connection, and use a single abstract and transfer syntax.
-
-
-
-
-
-
- Furniss [Page 3]
-
- RFC 1698 ThinOSI Upper-Layers Cookbook October 1994
-
-
- Group II: applications which send data on connection
- establishment and release and use a single abstract and transfer
- syntax.
-
- Group III: applications that send data of only one kind (one
- abstract syntax) on the connection, but which have more than one
- format (transfer syntax) specified (they use the Presentation
- context negotiation facility).
-
- Group IV: applications that will send data of several kinds on the
- connection (and which much therefore distinguish on each write
- which kind is being sent).
-
- Group III applications are equivalent to Group I (or possibly Group
- II) after the establishment exchange has negotiated the particular
- transfer syntax that will be used on the connection.
-
- Possible examples of the Groups are:
-
- Group I: Application protocols designed for use over transport-
- level protocols. Typically these are non-OSI protocols "migrated"
- to an OSI environment. X Window System protocol is an example.
-
- Group II: OSI-originated protocols with simple requirements,
- including many of the ROSE-based ones, such as Directory Access
- Protocol.
-
- Group III: Protocols that can be treated as Group I, but for
- which more than one encoding of the data is known, such as a
- standardised one and a system-specific one - all implementations
- understand the standard encoding, but Presentation layer
- negotiation allows like-implementations to use their internal
- encoding for transfer, without loss of general interworking. The
- same could apply to OSI protocols.
-
- Group IV: OSI protocols with multiple abstract syntaxes (but with
- each individual message from a single abstract syntax) that do
- not use any of the special Session functional units - X.400 P7 is
- an example.
-
- Some of the OSI protocols that are not included are those that use
- more than one abstract syntax in a single message (such as FTAM or
- Transaction Processing) or use Session functional units (RTSE-based
- protocols, Virtual Terminal).
-
-
-
-
-
-
-
- Furniss [Page 4]
-
- RFC 1698 ThinOSI Upper-Layers Cookbook October 1994
-
-
- 2.2 Conformance and interworking
-
- The protocol elements specified in this memo correspond to the kernel
- functional units of Session, Presentation and ACSE, and the duplex
- functional unit of Session.
-
- The octet sequences given below are derived from the specifications
- in the International Standards for the protocols Session [ISO8327],
- Presentation [ISO8822] and ACSE [ISO8650]. The intention of this memo
- is to summarise those specifications, as applicable to the supported
- application groups, so that an implementation could be developed
- without direct reference to the original standards, but capable of
- interworking with implementations that had made direct reference. The
- OSI standards (especially Presentation) allow considerable
- flexibility in the encoding of the protocol data units. Accordingly,
- this memo defines particular octet sequences to be sent, and
- describes the variations that can be expected in data received from
- an implementation based directly on the OSI standards, rather than on
- this cookbook. It is intended that an implementation that sends these
- sequences and that is capable of interpreting the variations
- described will be fully able to interwork with an implementation
- based directly on the OSI standards. An implementation that is only
- capable of interpreting the octet sequences specified in this memo
- for transmission may not be able to interwork with standards-based
- implementations.
-
- The intent is to be able to interwork with conformant implementations
- in support of the relevant application (or group of applications).
- Some of the OSI standards have conformance requirements that go
- beyond that necessary for successful interworking, including
- detection of invalid protocol. Tests for conformance sometimes go
- beyond the strict conformance requirements of the standard.
- Consequently an implementation based on this memo may or may not be
- able to formally claim conformance to the International Standard. It
- may be able to legitimately claim conformance, but fail a conformance
- test, if the test is over-specified. (Efforts are being made to
- correct this, but in the meantime, the target is interworking with
- conformant implementations.)
-
- 2.3 Relationship to other documents
-
- The flexibility allowed in the Session, Presentation and ACSE
- standards is restricted in the Common Upper-Layer Requirements Part 1
- [CULR-1]). This is a proposed International Standardised Profile
- (pdISP 11188-1) that can be assumed to be obeyed by most
- implementations. This memo applies the restrictions of CULR-1,
- especially where these concern maximum sizes of fields and the
- like.Points where advantage is taken of a CULR-1 limitation are
-
-
-
- Furniss [Page 5]
-
- RFC 1698 ThinOSI Upper-Layers Cookbook October 1994
-
-
- noted.
-
- Additional parts of CULR are under development. Part 3 [CULR-3]
- covers the protocol elements needed for "basic communications
- applications", and is being developed in (informal) liaison with this
- memo. CULR-3 is presented as a normal profile, largely consisting of
- prescribed answers to the questions in the PICS (Protocol
- Implementation Conformance Statement) of the three protocols. CULR-3
- does not make the distinction between the four Groups. An
- implementation of this memo (at least if it supported Group IV) would
- be able to claim conformance to CULR-3, with the possible exception
- of any more-than-interworking conformance requirements inherited by
- CULR-3 from the base standards.
-
- An extension [XTI/mOSI] to the X/Open Transport Interface [XTI] is
- shortly to be published as a preliminary specification. This defines
- an API to the OSI upper-layers, again as appropriate to a basic
- communications application. XTI/mOSI would be usable as an interface
- to support applications in groups I, II and III, and possibly group
- IV.
-
- 3. Contexts and titles
-
- 3.1 The concepts of abstract and transfer syntax
-
- OSI includes the concepts of "abstract syntax" and "transfer syntax".
- These are terms for the content (abstract syntax) and format "on-
- the-line" (transfer syntax) of the protocol elements. The combination
- of an abstract syntax and transfer syntax is called a presentation
- context.
-
- Application protocols devised explicitly under OSI auspices have used
- ASN.1 for the definition of the abstract syntax, and nearly all use
- the Basic Encoding Rules applied to the ASN.1 to define the transfer
- syntax. However, there is no such requirement in OSI in general or in
- OSI Presentation, and still less is there any requirement to change
- the representation of existing application protocols to ASN.1 (for
- their definition) or BER (for their transmission). It is not
- generally realised (even in OSI circles) that all communicating
- applications, in all environments, are using some form of these,
- although under different names and without the explicit
- identification that the OSI Presentation provides. OSI separates the
- identification of the content and format of the data from the
- addressing.
-
- Formal specifications of non-OSI application protocols (such as
- TELNET, FTP, X Windows System) generally do not use ASN.1, but will
- invariably be found to define abstract and transfer syntaxes. For a
-
-
-
- Furniss [Page 6]
-
- RFC 1698 ThinOSI Upper-Layers Cookbook October 1994
-
-
- less formalised protocol used between similar systems, the abstract
- syntax may be defined simply in programming language structures, and
- the transfer syntax determined by how some compiler represents this
- in memory.
-
- The OSI Presentation protocol requires that "names" be assigned to
- the abstract and transfer syntaxes of the application data that is
- carried. The names are always object identifiers ("oid"): globally
- unique names assigned hierarchically. Presentation supports the
- negotiation of a transfer syntax for a particular abstract syntax -
- several can be offered and one selected.
-
- This transfer syntax negotiation facility may be especially useful
- for non-ASN.1 syntaxes where there is more than one representation
- available (perhaps differing in byte-ordering or character code). In
- such a case, on the connection establishment, all of the transfer
- syntaxes supported by the initiator are offered, and any one of these
- accepted by the responder, at its own choice. If the two systems
- share some "native" format they can negotiate that, avoiding
- transformation into and out of a more general format that is used for
- interworking with unlike systems. The same applies to an ASN.1-
- defined abstract syntax, but in practice non-BER encodings of ASN.1
- are rare.
-
- 3.2 Use of presentation context by cookbook applications
-
- An application protocol not originally specified with OSI
- Presentation in mind (a "migrant" protocol) will not normally need to
- identify the abstract and transfer syntaxes being used - they are
- known by some other means (effectively inferred from the addressing).
- A generic (anonymous, if you like) name for both syntaxes can be used
- and [CULR-3] defines object identifiers for "anonymous" abstract and
- transfer syntax names (currently called "default", but this is
- expected to change).
-
- In some cases object identifier names will be assigned for the
- syntaxes of a migrant application protocol. If these exist, they
- should be used. However, since the processing required will be the
- same, it will be legitimate to offer both the generic and specific
- names, with the responder accepting the specific (if it knew it) and
- the generic if the specific were not known - this will provide a
- migration option if names are assigned to the syntaxes after
- implementations are deployed using the generic names.
-
- For abstract syntaxes defined in ASN.1 object identifier names will
- have been assigned to the abstract syntax with the specification.
- This name MUST be used to identify the abstract syntax. The transfer
- syntax will most often be the Basic Encoding Rules (BER) object id,
-
-
-
- Furniss [Page 7]
-
- RFC 1698 ThinOSI Upper-Layers Cookbook October 1994
-
-
- but alternatives (e.g., Packed Encoding Rules) are possible.
-
- For group III and group IV applications, specific object identifier
- names must be used for all the abstract and transfer syntaxes. If
- these names are not assigned with the specification (e.g., if the
- specification not in ASN.1) they can be assigned by whoever needs
- them - ideally the "owner" of the syntax specification.
-
- 3.3 Processing Presentation-context-definition-list
-
- In Presentation context negotiation on connection establishment the
- initiator sends a list (the presentation context definition list) of
- the abstract syntaxes it intends to use, each with a list of transfer
- syntaxes. Each presentation context also has an integer identifier.
- To build the reply, a responder has to examine this list and work out
- which of the offered presentation contexts will be accepted and which
- (single) transfer syntax for each. The responder sends back the reply
- field, the Presentation-context-definition-result-list, in the accept
- message. The result list contains the same number of result items as
- the definition-list proposed presentation-contexts. They are matched
- by position, not by the identifiers (which are not present in the
- result- list). An acceptance also includes the transfer syntax
- accepted (as there can be several offered). This can be copied from
- the definition list.
-
- For the group I, group II and group III cases, only the ACSE and one
- application-data P-context will be used and all other contexts
- rejected. For the group IV case, several presentation contexts will
- be accepted.
-
- However, even for group I applications there may be synonyms for an
- application-data Presentation-context. Unknown synonyms are rejected.
- The reply shown in 6.2 includes a rejection (It can therefore not be
- the reply to the connection request shown in 6.1, since that has only
- two items in the definition list.)
-
- In all cases, the connection responder must identify and keep the
- presentation context identifiers (called pcid's here) for all the
- accepted presentation contexts. These are integers (odd integers, in
- this case). CULR-1 limits them to no greater than 32767, but they
- will usually be <= 255 (so taking up one octet).
-
- A presentation context is sometimes used (i.e., data is sent using
- it) before the negotiation is complete. As will be seen in section 6,
- in these cases, the transfer syntax name sometimes appears with the
- integer identifier.
-
-
-
-
-
- Furniss [Page 8]
-
- RFC 1698 ThinOSI Upper-Layers Cookbook October 1994
-
-
- 3.4 Application context
-
- The Association Control Service Element also exchanges the name
- (another Object Identifier) of the application context, which
- identifies what the communication is all about, again independently
- of the naming and addressing. As for the syntaxes, although some
- name must be present in the protocol, a generic name can be used for
- applications that do not have a specific name assigned. (This will
- almost certainly be a group I application - if a specific name is
- assigned, it must be used.) The only negotiation allowed is that the
- reply may be different from that sent by the initiator. CULR-3
- provides a generic application context name (i.e., assigns an object
- identifier).
-
- 3.5 APtitles and AEqualifiers
-
- In addition to the addressing constructs (transport address and
- possibly session and presentation selectors), the communicating
- application entities have names - Application-Entity titles
- (AEtitle). These are carried by ACSE as two fields -the
- Application-process titles (APtitle) and the Application-entity
- qualifier (AEqualifier). The AEtitle is compound, and the APtitle
- consists of all but the last element, which is the AEqualifier. (This
- explanation can be run backwards). There are two non-equivalent
- forms. AP-titles and AE-titles can be Directory Name or an Object
- Identifier. AE-qualifiers can be Relative Distinguished Name (RDN) or
- an integer - the forms must match, since the AE-qualifier is the last
- component of the AP-title. In practice, the Directory form is likely
- to be the only one seen for a while.
-
- Use of the these names is rather variable. This cookbook proposes
- that implementations should be able to handle any value for the
- partner's names, and set (as initiator) its own names. This is
- primarily to facilitate OSI:non-OSI relaying (e.g., X/osi:X/tcp),
- allowing the names of the end-system to be carried to the relay,
- where they can be converted into hostnames, and the lower-layer
- address determined. OSI assumes that name-to-address lookup is
- possible (via the Directory or other means), but does not assume
- address-to-name will work. Thus the calling AE-title is needed if the
- responder is to know who the initiator is. However, most protocols
- work perfectly well without these names being included.
-
- As for their encoding, a RDN will almost always be a single attribute
- value assertion, with the attribute defined either by the Directory
- standard [ISO9594 = X.500], or in [Internet/Cosine Schema] [RFC1274].
- Using the notation defined below, the encoding of an RDN using a
- Directory-defined standard attribute is:
-
-
-
-
- Furniss [Page 9]
-
- RFC 1698 ThinOSI Upper-Layers Cookbook October 1994
-
-
- 31 80 {1 - RDN, [SET OF]
- 30 80 {2 - AttributeValueAssertion, [SEQUENCE]
- 06 03 5504yy -- OID identifying an attribute named in
- -- the Directory standard
- -- which one is determined by yy
- 13 La xxxxxx -- [Printable string]
- -- could be T61 string, with tag 14
- 00 00 }2 - end of AVA
- 00 00 }1 - end of RDN
-
- The most likely attributes for an RDN have the following hex values
- for yy.
-
- CommonName 03
- Country 06
- Locality 07
- State/Province 08
- Organisation 0A
- OrganisationUnit 0B
-
- For non-Directory attributes, the object id name must be substituted
- (thus changing the immediately preceding length)
-
- If there are multiple attribute value assertions in the RDN, the
- group between {2 and 2} is repeated (with different attributes).
- Order is not significant.
-
- The encoding of a [Directory] Name for the AP-titles is the RDNs
- (high- order first) within
-
- 30 80 {1 - [SEQUENCE] Name
- -- put the RDN encodings here
- 00 00 }1
-
- An Object Identifier AP-title is encoded as a primitive (see below),
- with the "universal" tag for an object identifier, which is 6. The
- integer AE-qualifier uses the universal tag for an integer, which is
- 2.
-
- 4. What has to be sent and received
-
- 4.1 Sequence of OSI protocol data units used
-
- OSI defines its facilities in terms of services but these are
- abstract constructs (they do not have to correspond to procedure
- calls) - the significant thing is the transmission of the resulting
- protocol data unit (PDU). The PDU at each layer carries (as user
- data) the PDU of the layer above. The different layers follow
-
-
-
- Furniss [Page 10]
-
- RFC 1698 ThinOSI Upper-Layers Cookbook October 1994
-
-
- different conventions for naming the pdus. This section gives an
- overview of the sequence of PDUs exchanged - the details of these are
- given in section 6.
-
- The requirements of the application are to create a connection
- (strictly an association for the application-layer in OSI, but called
- a connection here), to send and receive data and to close the
- connection. The PDUs used are thus:
-
- To create connection:
-
- First create transport-level connection
-
- Initiator sends the message defined in 6.1, which is Session
- CONNECT carrying Presentation CONNECT request [CP] carrying
- ACSE A-ASSOCIATE request [AARQ] optionally carrying application
- data.
-
- Responder replies with the message defined in 6.2, which is
- Session ACCEPT carrying Presentation CONNECT response [CPA]
- carrying ACSE response [AARE] optionally carrying application
- data.
-
- - If the responder rejects the attempt, the reply will be Session
- REJECT. This is defined in 6.3, where the REJECT carries no
- user data. A received REJECT may carry Presentation, ACSE and
- application data, although 6.3 shows only how to reject at
- Session level..
-
- To send/receive data on an connection
-
- send the message defined in 6.4, which is an empty Session
- GIVE-TOKEN followed by Session S-DATA carrying Presentation P-
- DATA [TD] containing the application data (The GIVE-TOKEN is
- just two octets required by Session for some backwards
- compatibility.)
-
- To close connection gracefully
-
- One side sends the message defined in 6.5, which is Session
- FINISH carrying P-RELEASE request carrying A-RELEASE request
- [RLRQ] optionally carrying application data (This side may now
- receive, but not send data.)
-
- The other side replies with the message defined in 6.6, which
- is Session DISCONNECT carrying P-RELEASE response carrying A-
- RELEASE response [RLRE] optionally carrying application data
-
-
-
-
- Furniss [Page 11]
-
- RFC 1698 ThinOSI Upper-Layers Cookbook October 1994
-
-
- First side disconnects transport connection on receiving the
- reply
-
- To close connection abruptly but also send application data
-
- Send the message defined in 6.7, which is Session ABORT
- carrying Presentation U-ABORT [ARU] carry ACSE U-ABORT [ABRT]
- carrying application data (delivery not guaranteed)
-
- On receiving Session ABORT, disconnect transport
-
- To close connection abruptly
-
- - Either send the message defined in 6.8, which is Session ABORT
- carrying nothing;
-
- Or, just disconnect at transport level
-
- A group I application is assumed (by definition) not to send data on
- the establishment and release exchanges, a group II application will.
-
- It would be possible to use the abort-with-data facility with a group
- I to send a (possibly non-standardised) error message for diagnostic
- purposes.
-
- A special rule is used if a release collision occurs (i.e., FINISH+P-
- RELEASE+RLRQ received after sending the same): the side that
- initiated the original upper-layer connection waits and the other
- side replies with the DISCONNECT etc.
-
- 4.2 Which OSI fields are used
-
- There are a number of fields (parameters) in the pdus involved. These
- can be categorised by what is needed to support applications (of a
- particular Group) in general - a field may be "useful", "send-only",
- "fixed", "fixed with default", "internal" or "not important". Even
- those that are not important may be received from another
- implementation, but since the application has no use for them, they
- can be ignored. If an implementation is intended to support only a
- particular application, it may be able to downgrade the "useful" to
- "not important".
-
- The text below describes the processing that is required for each
- category and which fields are in each category.
-
- "Useful" - when sending, an implementation of general use should be
- able to set any (legal) value of these fields (via the upper
- interface from the application or via some configuration or lookup
-
-
-
- Furniss [Page 12]
-
- RFC 1698 ThinOSI Upper-Layers Cookbook October 1994
-
-
- mechanism) and SHOULD pass received values for the Calling values to
- the application (for specific applications, these fields may be
- either required or unnecessary.)
-
- AARQ:
-
- Called application-process title
- Called application-entity qualifier
- Calling application-process title
- Calling application-entity qualifier
-
- "Send-only" - to interwork, the implementation must be able to set
- any value of these, but can ignore any received value. Both are octet
- strings.
-
- Presentation selector (up to 4 octets, limited by CULR-1)
- Session selector (up to 16 octets, limited by base standard)
-
- "Fixed" (constant for all applications)
-
- abstract and transfer syntax identifiers for presentation context
- for ACSE Version numbers - 2 for session, 1 for Presentation
- and ACSE
-
- "Fixed with default" - the value is specific to the application. For
- non-ASN.1 abstract syntaxes (group I or group II only) applications,
- the anonymous values assigned by the OIW minimal OSI profile [CULR-3]
- can be used. The CULR-3 default application context can be used where
- a proper context name is neither available nor needed.
-
- Application context
- CULR-3 default is {1 0 11188 3 3}
- Abstract syntax identifier for application data
- CULR-3 anonymous name is {1 0 11188 3 1 1}
- Transfer syntax identifier for application data
- CULR-3 anonymous name is {1 0 11188 3 2 1}
-
- "Internal" - an arbitrary value can be sent; a received value must be
- stored for use in sending.
-
- Presentation context identifiers for ACSE and the application
- data (always odd integers)
-
- "Not important" - for interworking, any legal received value for the
- other fields must be received (i.e., the pdu is parsed successfully),
- but can then be ignored. There is no requirement (in this cookbook)
- to check the existence, value or internal format of these fields.
-
-
-
-
- Furniss [Page 13]
-
- RFC 1698 ThinOSI Upper-Layers Cookbook October 1994
-
-
- All other fields (which includes a large number of session
- fields)
-
- 4.3 Encoding methods and length fields
-
- Both Session and ASN.1/BER [ISO8824, ISO8825] use a type-length-value
- structure for their encodings, but different ones. Presentation
- protocol and ACSE protocol use the ASN.1/BER encoding and
- consequently a Presentation PDU containing an ACSE PDU can be
- constructed or parsed as if it were a single structure.
-
- All the protocols contain pdu fields with a compound structure. If
- one of these is being ignored it may be necessary (for BER, not
- session) to determine the lengths of its components to find the
- length of the ignored field.
-
- Many of the lengths in the specification below will vary, dependent
- on the values of the fields.
-
- 4.3.1 Session items
-
- The type field of a session item is always a single octet.
-
- For session items, given a particular length, there is no
- flexibility:
-
- If the length is less than 255, represent as one octet
-
- If the length is greater, represent as three octets, first is
- 0xFF, next two are the length, high-order octet first.
-
- (Some "real" implementations are known to use the second encoding in
- all cases. This is wrong, but should only concern conformance
- testers.)
-
- 4.3.2 ASN.1/BER items (Presentation and ACSE)
-
- The type field for ASN.1-BER is the tag. Although it is possible for
- large tags (>30) to be multi-octet, there are no large tags in the
- protocols involved in this memo. Bit 6 (0x20) of the tag octet is 1
- if the item is constructed (i.e., the value is itself one or more
- ASN.1 BER items) or 0 if it is primitive.
-
- There is considerable flexibility, at senders option, in how lengths
- are represented in BER. There are three forms: short, long and
- indefinite.
-
- Short (usable only if the length is less than 127) : one octet
-
-
-
- Furniss [Page 14]
-
- RFC 1698 ThinOSI Upper-Layers Cookbook October 1994
-
-
- Long (usable for *any* length) : first octet has the top bit set,
- the rest is a count of how many octets are holding the length
- value; that many subsequent octets hold the length. A long length
- may use more than the minimum number of octets (so 0x8400000001
- is a valid representation of length 1)
-
- Indefinite (usable only for the length of a compound field) : the
- single octet is 0x80, then one or more items (their tag-length-
- values) and finally two octets of 0x00 (equivalent to tag and
- length of zero).
-
- To be able to interwork generally, an implementation must be able to
- handle any of these forms when receiving.
-
- The encodings specified in the octet sequences below use indefinite
- length for all constructed items with a few exceptions. This slightly
- increases the number of octets sent, but means that the length of a
- varying field (e.g., user data, or a varying object identifier)
- affects only the length of the item itself, and not the enclosing
- lengths. It is thus possible to use the octet sequences as templates
- interspersed by the varying fields.
-
- It is important to note that this choice of indefinite (which is
- equivalent to the "Canonical Encoding Rules" variant of BER) applies
- only to the Presentation and ACSE protocols themselves. It does not
- apply to ASN.1/BER encoded application data. The processing required
- of application data may suggest alternative "best" options.
-
- 4.4 BER Encoding of values for primitive datatypes
-
- The following ASN.1 primitive datatypes are used in the thinosi
- stack.
-
- Integers are encoded in twos-complement, high-order first. Unlike
- lengths, they must be encoded in the minimum number of octets (no
- leading 00 padding).
-
- Object Identifiers have a rather peculiar, but compressed encoding:
-
- Combine the first two integers of the OID into one element by
- multiplying the first (always 0, 1 or 2) by 40, and add the
- second.
-
- Each element (that one, and each subsequent integer in the OID
- taken on its own), is a taken as a binary number and divided into
- 7-bit "bytes". This is apportioned into bits 1-7 of the minimum
- number of octets. Bit 8 is one for all octets of the sequence
- except the last. (This means that elements of less than 127 are
-
-
-
- Furniss [Page 15]
-
- RFC 1698 ThinOSI Upper-Layers Cookbook October 1994
-
-
- single octet integers.)
-
- Printable Strings - as if in ISO 646 (ASCII)
-
- OCTET STRING - just put the octets there
-
- 4.5 Unnecessary constructed encodings
-
- BER allows the sender to break some items (such as OCTET STRINGS,
- character strings) into several pieces (i.e., as constructed
- encoding) or send them as primitive. CULR-1 requires that this is
- only done to one level. The pieces of both OCTET STRING and character
- string are tagged as if they were OCTET STRING - they have the tag
- 04. This memo does not include any of these optional constructions,
- but they may be received in interworking.
-
- 5. Notation
-
- The constructs are shown in their tag - length - value form. All
- numbers are in hexadecimal. Comments are preceded by a '-' character.
- Multiple '-' mean the comment is more than just information.
-
- The tag column contains one of:
-
- single fixed octets.
-
- * in the tag field indicates one or more pdu fields (possibly
- constructed) that may be received but are not sent. If received
- they can be ignored.
-
- ! indicates the tag is defined elsewhere.
-
- . is a place holder for the column.
-
- ? preceding the tag value indicates that the field is not always
- present - the comment will explain.
-
- The length column contains one of
-
- explicit value
-
- Ls - a length according to session rules which depends on the
- total size of the value (usually constructed)
-
- La - a length according to BER rules
-
- . is a placeholder
-
-
-
-
- Furniss [Page 16]
-
- RFC 1698 ThinOSI Upper-Layers Cookbook October 1994
-
-
- yy is exactly one octet (i.e., one hex digit per y) holding part
- of the length
-
- The value column contains one of
-
- the hex value
-
- xxxxxx - value of varying length (sometimes constructed)
-
- {n - (n = number) the start of a constructed value
-
- n - (n=number) the end of the constructed value with the
- corresponding number. (The number is sometimes omitted on the
- innermost nest of construction)
-
- yy - as part of a value - a variable value, each y represents one
- hex digit
-
- ? a value, possibly constructed that may be received but is not
- sent. It may be ignored if received
-
- Note that all presentation lengths may be received in one of the
- alternative forms. All constructed lengths are shown in indefinite
- form. If a received length is definite, the corresponding end item
- (which will be shown here as 00 00 }n) will become . . }n.
-
- In the comments, the notation {n} refers to the constructed item
- bracketed by the {n, }n fields.
-
- 6. Octet sequences
-
- 6.1 Connection request message
-
- - CONNECT SPDU
- 0D Ls {1 - "SI" value for CONNECT = 13
- * Ls ? - Connection Identifier
- 05 06 {2 - Connect/Accept Item
- 13 01 00 - protocol options (probably mandatory)
- * Ls ?
-
- 16 01 02 -- version number (bottom bit = v1, next bit =v2.
- -- may get offers of either or both
- * Ls ?
- 14 02 0002 - Session User Requirements (functional units)
- - Id (20), length (always 2), duplex fu only.
- -- On receipt, other bits may be set
- -- check that the 2 bit is set
- * Ls ? - we do not send any Calling Session Selector
-
-
-
- Furniss [Page 17]
-
- RFC 1698 ThinOSI Upper-Layers Cookbook October 1994
-
-
- ?34 Ls xxxx -- Called Session Selector (i.e., the other end's)
- -- up to 16 octets - you must set what the other
- -- side demands. - May be anything characters,
- -- binary etc.
- - {3} disappeared in editing
- C1 Ls {4 -- User Data, Identifier=193. if length is > 512,
- -- then identifier is 194 (hex C2) instead
- - CP - P-CONNECT-RI PPDU. Everything below is in ASN.1 BER
- 31 80 {5 - [SET]
- --- Mode-selector (the {6} group) could possibly
- --- come after everything else {7}
- --- This will probably only be done by
- --- evil-minded conformance testers
- A0 80 {6 - Mode-selector [0] IMPLICIT SET
- 80 01 01 - [0] IMPLICIT INTEGER {normalmode(1)}
- 00 00 }6
- A2 La {7 - [2] unnamed IMPLICIT SEQUENCE
- * La ?
- ?82 La xxxx - [2] Called-presentation-selector
- - CULR says maximum length is 4
- -- must be what the other side wants
- A4 80 {8 - [4] Presentation-context-definition-list
- --- items (the outer SEQUENCEs) within the {8} list may
- --- be in any order.
- 30 80 {9 - [SEQUENCE]
- 02 01 01 -- Defines pcid for ACSE; received value will be
- -- a one or two octet odd integer
- 06 04 52010001 - [OID] for ACSE abstract syntax
- 30 80 { - [SEQUENCE]
- 06 02 5101 - [OID] Transfer syntax name is BER
- 00 00 } - end t-s list
- 00 00 }9 - end acse pctx defn
- 30 80 {10 - [SEQUENCE]
- 02 01 03 -- [INTEGER] Defines pcid for application data;
- -- received value will be a one or two octet odd
- -- integer
- 06 La xxxxxx - [OID] object identifier name of application
- - abstract syntax (if CULR-3 default is used, this
- - line is 06 06 28D734030101)
- 30 80 {11
- 06 La xxxxxx - [OID] t-s name for application data
- - (if CULR-3 default is used, this line is
- - 06 06 28D734030201)
- -- will be several of these if multiple t-s offered
- -- (application is Group III)
- -- all will have the same tag 06
- 00 00 }11 - end transfer syntax list for application p-ctx
- 00 00 }10 - end application pctx definition
-
-
-
- Furniss [Page 18]
-
- RFC 1698 ThinOSI Upper-Layers Cookbook October 1994
-
-
- -- if multiple presentation contexts are offered, (Group
- -- IV), the {10} SEQUENCE will repeat appropriately
- -- if multiple contexts are to be accepted, all the
- -- pcid's must be remembered
- 00 00 }8 - end of p-ctx-def-list
- * La ?
- 61 80 {12 - [APPLICATION 1] User-data - Fully-encoded
- 30 80 {13 - [SEQUENCE] PDV-list
- 02 01 01 -- [INTEGER], value is acse pcid
- A0 80 {14 - [0] Single-ASN1
- - ACSE A-ASSOCIATE request APDU - AARQ
- 60 80 {15 - [APPLICATION 0] - AARQ
- * La ? - protocol version defaults to 1 (only one defined)
- A1 80 { - [1] Application-context
- 06 La xxxxxx -- object identifier name of application context
- - (if CULR-3 default is used, this line is
- - 06 05 28D7340303)
- 00 00 }
- -- Called application process title {16} and application
- -- entity qualifier may or may not be needed (see 3.4)
- ?A2 80 {16 - [2] Called Application-Process title
- ?! La xxxxxx -- see 3.5 - either a Directory Name or an oid
- ?00 00 }16 - end Called APtitle
- ?A3 80 {17 - [3] Called Application-Entity Qualifier
- ?! La xxxxxx -- see 3.5
- ?00 00 }17
- * La ?
- Calling AP-title and AE-qualifier may or may not be needed.
- ?A6 80 {18 - [6] Calling Application-Process title
- ?! La xxxxxx -- see 3.5
- ?00 00 }18
- ?A7 80 {19 - [7] Calling Application-Entity Qualifier
- ?! La xxxxxx -- see 3.5
- ?00 00 }19
- * La ?
- -- the user information field may or may not be required
- -- (not required for Group I)
- ?BE 80 {20 - [30] IMPLICIT SEQUENCE
- ?28 80 {21 - [EXTERNAL]
- ?06 La xxxxxx -- [OID] This is the oid identifying the transfer
- -- syntax used for the user data.
- -- It is (almost certainly) required even if only
- -- one transfer syntax was proposed.
- ?02 01 03 - [INTEGER] this is the pcid for the application
- - data
- ?A0 La xxxxxx -- [0] single-ASN.1-type - the application data
- -- (see paragraph at end of this section below}
- ?00 00 }21 - end of EXTERNAL
-
-
-
- Furniss [Page 19]
-
- RFC 1698 ThinOSI Upper-Layers Cookbook October 1994
-
-
- -- conceivably there may be several EXTERNALS, probably in
- -- different presentation contexts (different pcids)
- ?00 00 }20 - end of user information field
- 00 00 }15 - end of AARQ
- 00 00 }14 - end of single-ASN-type
- 00 00 }13 - end of PDV-list
- 00 00 }12 - end of Presentation User-data
- 00 00 }7 - end of third element of CP-type SET
- 00 00 }5 - end of CP-type
-
- The application data carried in the EXTERNAL is shown (as A0 La xxxx)
- assuming it is a single-ASN.1 type, which it often will be for group
- II (since these tend to be OSI applications). The xxxx will be the
- BER encoding of the application pdu (probably something like Z-BIND
- or Y- INITIALIZE). The length may be indefinite.
-
- If the application data is not a single ASN.1 type, but is an octet-
- aligned value, the A0 La xxxx is replaced by 81 La xxxx, where xxxx
- is the value. In this case the length must be definite (unless an
- "unnecessary" constructed encoding is used.)
-
- Identical considerations apply to the other EXTERNALs carried in the
- ACSE pdus.
-
- 6.2 Successful reply to connection setup
-
- If the connection attempt is successful, the following is sent to the
- initiator on a T-DATA.
-
- 0E Ls {1 - ACCEPT SPDU
- * Ls ?
- 05 06 {2 - Connect/Accept Item
- 13 01 00 - Protocol Options
- * Ls ?
- 16 01 02 - version number (this shows version 2 only)
- -- if version 2 was not offered, omit all of {2}
- * Ls ?
- 14 02 0002 - Session User Requirements (functional units)
- - duplex fu only (kernel is automatic)
- * Ls ?
- C1 Ls {3 -- User Data.
- - CPA - P-CONNECT response
- 31 80 {4 - [SET]
- -- again, Mode-selector could come at the end
- A0 80 { - Mode-selector [0]
- 80 01 01 - normal mode - [0], length=1, value=1
- 00 00 }
- A2 80 {5 - [2] SEQUENCE (unnamed)
-
-
-
- Furniss [Page 20]
-
- RFC 1698 ThinOSI Upper-Layers Cookbook October 1994
-
-
- * La ?
- A5 80 {6 - [5] P-context-definition-result-list
- -- following result items are in the order
- -- corresponding to the pctx-definition-list in
- -- the connect
- -- this example assumes that was ACSE, user, rubbish
- -- with rubbish rejected
- 30 80 {7 - [SEQUENCE] result item for acse
- 80 01 00 -- [0] result, value 0 is acceptance
- 81 02 5101 - [1] accepted transfer syntax name = BER
- - note that this has an implicit tag, not 06
- 00 00 }7 - end result item for acse p-ctx
-
- 30 80 {8 - [SEQUENCE] result item for application-data pctx
- 80 01 00 - [0] value 0 is acceptance
- 81 La xxxxxx - [1] oid for transfer syntax, as on definition list
- -- if there were several (groupIII) , the one you
- -- liked most
- 00 00 }8 - end result item for app-data p-ctx
- 00 00 }6 - end p-ctx-def-result-list
- * La ?
- 61 80 {10 - [APPLICATION 1] User-data, Fully-encoded
-
- 30 80 {11 - [SEQUENCE] PDV-list
- 02 01 01 -- [INTEGER] value is pcid for ACSE, as stored from
- -- the pctx-definition-list on the P-CONNECT
- -- request
- A0 80 {12 - [0] single-ASN1-type
- - A-ASSOCIATE response APDU - AARE
- 61 80 {13 - [APPLICATION 1] identifies AARE
- * La ?
- A1 80 {14 - [1] Application-context
- 06 La xxxxxx - [OID] name of application context
- - usually the same as on AARQ, can differ
- 00 00 }14
- A2 03 {15 - [2] result
- 02 01 00 - [INTEGER] value 0 means accepted
- 00 00 }15
- A3 80 {16 - [3] result-source-diagnostic
- - (curiously, a non-optional field)
- A1 80 {17 - [1] acse-service-user
- 02 01 00 - [INTEGER] value 0 = null ! (why no implicit tag)
- 00 00 }17 - end acse-service-user
- 00 00 }16 - end result source diagnostic
- * La ?
- -- the user information field may or may not be required
- - (not used for Group I)
- ?BE 80 {20 - [30] IMPLICIT SEQUENCE
-
-
-
- Furniss [Page 21]
-
- RFC 1698 ThinOSI Upper-Layers Cookbook October 1994
-
-
- ?28 80 {21 - [EXTERNAL]
- -- the transfer-syntax oid is not present this time
- ?02 01 03 - [INTEGER] this is the pcid for the application
- - data
- ?A0 La xxxx -- [0] single-ASN1-type (see note at end of 6.1)
- ?00 00 }21 - end of EXTERNAL
- -- conceivably there may be several EXTERNALS, probably in
- -- different presentation contexts (different pcids)
- ?00 00 }20 - end of user information field
- 00 00 }13 - end AARE
- 00 00 }12 - end single-asn1-type
- 00 00 }11 - end PDV-list
- 00 00 }10 - end Presn user-data
- 00 00 }5 - end [2] implicit sequence in cpa
- 00 00 }4 - end CPA-type set
-
- The following sequence are the octets need to reject a presentation
- context that was offered in the presentation-context-definition-list.
- Since the result-list matches the definition list by position, it is
- placed at the corresponding point within {6} (e.g., it would come
- immediately after {8}, if the rejected context was the third one.
-
- -- next SEQUENCE is a rejection of a pctx
- 30 80 {9 - [SEQUENCE] result item for a rejected pctx
- 80 01 02 -- [0] result, value 2 is provider rejection
- 82 01 00 - [2] reason, value 0 is reason-not-specified
- -- there are other reasons, but let's keep it
- -- simple
- 00 00 }9 - end result item for rejected pctx
-
- 6.3 Connection rejection
-
- Refusal is at session-level, but by session user, with no reason
- given. This is a compromise avoiding making unfounded accusations of
- (session) protocol misbehaviour. If the implementation finds it does
- not like the received message, it is not essential to attempt to
- communicate with the partner why, though this may be helpful if the
- reason is correctly identified. (In most cases, a wise implementor
- will make sure an error message goes somewhere or other).
-
- 0C 03 {1 - REFUSE SPDU
- * Ls ?
- 32 01 00 - rejected by SS-user, no reason
-
- The far-end may send interesting things explaining why you are not
- getting interworking. If this is a session reason, the reason code
- will one octet between 81 and 86. If the rejection is higher than
- session, this will be carried on S-REFUSE (so first octet is still
-
-
-
- Furniss [Page 22]
-
- RFC 1698 ThinOSI Upper-Layers Cookbook October 1994
-
-
- 0C) and the higher pdu will appear as part of the reason code, which
- will start with 02. (The only remaining code is 01 = user
- congestion.)
-
- 6.4 Data-phase TSDU
-
- This is the core of the skinny stack. The lengths shown use a
- particular set of choices for indefinite and definite lengths that
- means that the application data length only affects one field. Making
- the two earlier indefinite lengths definite would require more
- calculation - adding 4 octets after the application data is assumed
- to be quicker. This header is also designed to be 20 octets long,
- thus maintaining 4-byte alignment between transport and application
- buffers. Implementations are recommended to use this encoding. It is
- possible to rapidly match incoming data against it - if there is no
- mismatch until the length field, the location of the beginning of the
- data can be determined without further analysis.
-
- SPDUs
- 01 00 . - S-GIVE-TOKEN - required by basic concatenation
- - but no parameters
- 01 00 . - S-DATA - no parameters - what follows is User
- - Information, not User Data, so is not included in
- - the SPDU length fields
- - P-DATA PPDU - TD (why TD ? Typed-data id TTD !)
- 61 80 {1 - User-data [APPLICATION 1]
- 30 80 {2 - [SEQUENCE] PDV-list
- 02 01 03 - [INTEGER] pcid for application data, P-CONNECT PPDU
- - remembered by both sides
- 81 83yyyyyy xxxxxx -- [1] octet-aligned presentation data value(s)
- -- length of length (3 octets) then three octets yyyyyy
- -- for the length of the user data xxxxxx
- 00 00 }2 - End-of-contents for end of PDV-list
- 00 00 }1 - End-of-contents for end of Presentation User-data
-
- If the application data is in ASN.1, and a single ASN.1 value is
- being sent on the TSDU, the same header can be used except for the
- tag on the presentation data values, which becomes A0 (= [0],
- constructed).
-
- If there are multiple data values to be sent, this header can be
- expanded in several ways:
-
- a) if there are several ASN.1 values from the same
- presentation context, they can be concatenated and
- treated as an octet-aligned value (using the header
- as shown above, with tag 81 (or A1 - I think its
- primitive) or each ASN.1 value can be an item
-
-
-
- Furniss [Page 23]
-
- RFC 1698 ThinOSI Upper-Layers Cookbook October 1994
-
-
- (tagged A0), one after the other
-
- b) if the data values are from different presentation
- contexts (group IV), each is in its own {2} group
- within the {1}.
-
- On receipt, for the simple octet-aligned case, the data value may
- itself have a constructed encoding - this will make the tag A1, and
- it will contain elements each tagged 04 (OCTET STRING). According to
- CULR- 1, these elements are primitive (otherwise they would be 24 of
- course).
-
- 6.5 Closedown - release request
-
- When all is done, and you want to close down gracefully, send this on
- T-DATA.
-
- - FINISH SPDU
- 09 10 {1 - 9 identifies FINISH
- * Ls ? - No Transport Disconnect item
- - default is release Transport-connection
- C1 0E {2 - User data (code 193)
- - P-RELEASE req/ind PPDU (has no name)
- 61 80 {3 - [APPLICATION 1], user data, fully-encoded
- 30 80 {4 - [SEQUENCE] PDV-list
- 02 01 01 -- pcid for ACSE, remembered from setup
- A0 80 {5 - [0] single asn.1-type
- - A-RELEASE request APDU - RLRQ
- 62 80 {6 - [APPLICATION 2] identifies RLRQ
- 80 01 00 - [0] reason, value 0 means normal
- * La ?
- -- the user information field may or may not be required
- - ( not required for Group I)
- ?BE 80 {7 - [30] IMPLICIT SEQUENCE
- ?28 80 {8 - [EXTERNAL]
- -- the transfer-syntax oid is not present this time
- ?02 01 03 - [INTEGER] this is the pcid for the application
- - data
- ?A0 La xxxxx -- [0] single-ASN.1-type application data
- -- (see note at end of 6.1)
- ?00 00 }8 - end of EXTERNAL
- -- conceivably there may be several EXTERNALS, probably in
- -- different presentation contexts (different pcids)
- ?00 00 }7 - end of user information field
- 00 00 }6 - end of RLRQ
- 00 00 }5 - end of single asn.1-type
- 00 00 }4 - end of PDV-list
- 00 00 }3 - end of Presentation User-data
-
-
-
- Furniss [Page 24]
-
- RFC 1698 ThinOSI Upper-Layers Cookbook October 1994
-
-
- 6.6 Closedown - release response
-
- On receiving a FINISH, you send this to tell the other end it is all
- over
-
- - Session DISCONNECT SPDU
- 0A Ls {1 - SI=10, DISCONNECT
- C1 Ls {2 - User data
- - P-RELEASE rsp PPDU
- 61 80 {3 - [APPLICATION 1], user data, fully-encoded
- 30 80 {4 - [SEQUENCE] PDV-list
- 02 01 01 -- [INTEGER] pcid for ACSE, remembered from setup
- A0 80 {5 - [0] single asn.1-type
- - A-RELEASE response APDU - RLRE
- 63 80 {6 - [APPLICATION 3] identifies RLRE
- 80 01 00 - [0] reason, value 0 means normal
- * La ?
- -- the user information field may or may not be required
- - (not required for Group I)
- ?BE 80 {7 - [30] IMPLICIT SEQUENCE
- ?28 80 {8 - [EXTERNAL]
- -- the transfer-syntax oid is not present this time
- ?02 01 03 - [INTEGER] this is the pcid for the application
- - data
- ?A0 La xxxxx -- [0] single-ASN.1-type application data
- -- (see note at end of 6.1)
- ?00 00 }8 - end of EXTERNAL
- -- conceivably there may be several EXTERNALS, probably in
- -- different presentation contexts (different pcids)
- ?00 00 }7 - end of user information field
- 00 00 }6 - end of RLRE
- 00 00 }5 - end of single asn.1-type
- 00 00 }4 - end of PDV-list
- 00 00 }3 - end of Presentation userdata
-
- 6.7 Deliberate abort
-
- It is not clear whether this is any use - just clearing the Transport
- connection will be more effective. It goes on T-DATA, but asks for
- the far-side to close the T-connection.
-
- - Session ABORT SPDU
- 19 Ls {1 - SI of 25 is ABORT
- 11 01 03 - Transport Disconnect PV, code 17
- -- value = '...00011'b means please
- -- release T-conn, user abort
- * Ls ?
- C1 11 {2 - Session User Data
-
-
-
- Furniss [Page 25]
-
- RFC 1698 ThinOSI Upper-Layers Cookbook October 1994
-
-
- - P-U-ABORT PPDU - ARU
- A0 80 {3 - [0] implicit sequence for normal mode
- A0 80 {4 - [0] presentation-context-identifier-list
- 30 80 {5 - [SEQUENCE]
- 02 01 01 - [INTEGER]pcid for ACSE
- 06 02 5101 - [OID] for acse transfer syntax = BER
- 00 00 }5
- -- there will be one {6} group for each application
- -- presentation context that is used in this message
- -- if there is no user data, the {6} group can be
- -- omitted
- 30 80 {6
- 02 01 03 - [INTEGER] pcid for application data
- 06 La xxxxxx - [OID] transfer syntax for application data
- 00 00 }6
- 00 00 }4 - end of presentation-context-identifier-list
- 61 80 {7 - [APPLICATION 1], user data, fully-encoded
- 30 80 {8 - [SEQUENCE] PDV-list
- 02 01 01 - [INTEGER] pcid for ACSE as on CP PPDU
- A0 05 {9 - [0] single asn.1-type
- - A-ABORT APDU - ABRT
- 64 80 {10 - [APPLICATION 4] identifies ABRT
- 80 01 01 - [0] value 1 is acse-service-provider
- -- the user information field may or may not be required
- ?BE 80 {11 - [30] IMPLICIT SEQUENCE
- ?28 80 {12 - [EXTERNAL]
- -- the transfer-syntax oid is not present this time
- -- (according to CULR-1)
- ?02 01 03 - [INTEGER] this is the pcid for the application
- - data
- ?A0 La xxxxx -- [0] single-ASN.1-type application data
- -- (see note at end of 6.1)
- ?00 00 }12 - end of EXTERNAL
- -- conceivably there may be several EXTERNALS, probably in
- -- different presentation contexts (different pcids)
- ?00 00 }11 - end of user information field
- 00 00 }10 - end of ABRT
- 00 00 }9 - end of single asn.1-type
- 00 00 }8 - end of PDV-list
- 00 00 }7 - end of Presentation user-data
- 00 00 }3 - end of ARU-PPDU
-
-
-
-
-
-
-
-
-
-
- Furniss [Page 26]
-
- RFC 1698 ThinOSI Upper-Layers Cookbook October 1994
-
-
- 6.8 Provider abort
-
- Generated when an internal error occurs (i.e., something has gone
- mildly (?) wrong in the cookbook implementation). Rather than accuse
- anyone of protocol errors, we just abort at session.
-
- ABORT SPDU
- 19 03 {1 - SI=25 = ABORT SPDU
- 11 01 09 - Transport Disconnect PV, code 17
- -- value = '...01001'b release T-conn
- -- no reason
- * Ls ?
-
- 6.9 Abort accept
-
- If a Session abort (of any kind) is sent, it is possible that the
- far-end will send back an abort accept. If this happens, disconnect
- the transport. (The abort messages above do not propose that the
- transport connection be reused, and in this case, an abort accept is
- just the far-end passing the transport-disconnect initiative back.)
- This session message need never be sent - just disconnect transport
- on receiving an abort.
-
- ABORT ACCEPT SPDU
- 1A 00 . - SI=26 = ABORT ACCEPT SPDU, no parameters
-
- 7. References
-
- [CULR-1] ISO/IEC DISP 11188-1 - Information Technology -
- International Standardised Profile - Common Upper Layer Requirements
- - Part 1: Basic Connection oriented requirements (DISP ballot ends
- June 1994).
-
- [CULR-3] Draft of Common Upper-layer requirements - Part 3: Minimal
- OSI upper layers facilities (A later draft will be proposed as ISP
- 11188/3).
-
- [ISO8072] Information processing systems - Open Systems
- Interconnection - Transport service definition; ISO, 1986.
-
- [ISO8073] Information processing systems - Open Systems
- Interconnection - Transport protocol specification; ISO, 1986.
-
- [ISO8326] Information processing systems - Open Systems
- Interconnection - Basic connection oriented session service
- definition; ISO, 1987 (or review copy of revised text = ISO/IEC
- JTC1/SC21 N4657, April 1990).
-
-
-
-
- Furniss [Page 27]
-
- RFC 1698 ThinOSI Upper-Layers Cookbook October 1994
-
-
- [ISO8327] Information processing systems - Open Systems
- Interconnection - Basic connection oriented session protocol
- specification; ISO, 1987 (or review copy of revised text = ISO/IEC
- JTC1/SC21 N4656, April 1990).
-
- [ISO8649] Information processing systems - Open Systems
- Interconnection - Service definition for the Association Control
- Service Element; ISO, 1989.
-
- [ISO8650] Information processing systems - Open Systems
- Interconnection - Protocol specification for the Association Control
- Service Element; ISO, 1989.
-
- [ISO8822] Information processing systems - Open Systems
- Interconnection - Connection-oriented presentation service
- definition; ISO, 1989.
-
- [ISO8823] Information processing systems - Open Systems
- Interconnection - Connection-oriented presentation protocol
- specification; ISO, 1989.
-
- [ISO8824] Information technology - Open Systems Interconnection -
- Specification of Abstract Syntax Notation One (ASN.1), ISO/IEC 1990.
-
- [ISO8825] Information technology - Open Systems Interconnection -
- Specification of Basic Encoding Rules for Abstract Syntax Notation
- One, ISO/IEC 1990.
-
- [RFC1006] Rose, M., and D. Cass, "ISO Transport Services on Top of
- the TCP", STD 35, RFC 1006, Northrop Research and Technology Center,
- May 1987.
-
- [ISO9594] Information technology - Open Systems Interconnection - The
- Directory; ISO/IEC, 1990.
-
- [RFC 1274] Barker, P., and S. Kille, "The COSINE and Internet X.500
- Schema", RFC 1274, University College London, November 1991.
-
- 8. Other Notes
-
- The Session, Presentation and ACSE standards have been the subject of
- considerable amendment since their first publication. The only one
- that is significant to this cookbook is Session addendum 2, which
- specifies session version 2 and unlimited user data. New editions of
- these standards, incorporating all the amendments, will be published
- during 1994.
-
-
-
-
-
- Furniss [Page 28]
-
- RFC 1698 ThinOSI Upper-Layers Cookbook October 1994
-
-
- The coding choices made in the cookbook are (nearly) those made by
- the "Canonical Encoding Rules", which are a form of Basic Encoding
- Rules with no optionality, specified in the new edition of ISO/IEC
- 8825. A defect report has been proposed against Presentation and
- ACSE, suggesting that a note to the protocol specifications recommend
- use of the canonical encoding options when sending, and then
- optimising for this on receipt.
-
- 9. Security Considerations
-
- Security issues are not discussed in this memo.
-
- 10. Author's Address
-
- Peter Furniss
- Peter Furniss Consultants
- 58 Alexandra Crescent
- Bromley, Kent BR1 4EX
- UK
-
- Phone & Fax +44 81 313 1833
- EMail: P.Furniss@ulcc.ac.uk
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Furniss [Page 29]
-
-