UL efficiency ideas

Peter Furniss <cziwprf@pluto.ulcc.ac.uk> Sat, 18 December 1993 21:29 UTC

Received: from ietf.nri.reston.va.us by IETF.CNRI.Reston.VA.US id aa03071; 18 Dec 93 16:29 EST
Received: from CNRI.RESTON.VA.US by IETF.CNRI.Reston.VA.US id aa03067; 18 Dec 93 16:29 EST
Received: from sun2.nsfnet-relay.ac.uk by CNRI.Reston.VA.US id aa09972; 18 Dec 93 16:29 EST
Via: uk.ac.ulcc.vmsfe; Sat, 18 Dec 1993 21:29:55 +0000
Via: UK.AC.ULCC.PLUTO; Fri, 17 Dec 93 17:00 GMT
Sender: ietf-archive-request@IETF.CNRI.Reston.VA.US
From: Peter Furniss <cziwprf@pluto.ulcc.ac.uk>
Message-Id: <26429.9312171659@pluto.ulcc.ac.uk>
Subject: UL efficiency ideas
To: thinosi@ulcc.ac.uk
Date: Fri, 17 Dec 1993 16:59:58 +0000
Reply-To: P.Furniss@ulcc.ac.uk
X-Mailer: ELM [version 2.3 PL11]
X-Orig-Sender: thinosi-request@ulcc.ac.uk
X-ULCC-Sequence: 128
X-ULCC-Recipient: ietf-archive%us.va.reston.cnri@uk.ac.nsfnet-relay

OSI Upper layer efficiency

Peter Furniss
 (P.Furniss@ulcc.ac.uk  Phone & fax : +44 81 313 1833)
17 December 1993

1 First points

1.1 What do you mean "inefficient"

An essential in considering OSI upper-layer efficiency is to get clear what 
the requirements are - in what sense are the present protocols 
unacceptable and what functions of the present protocols need to be 
retained. Obviously there will be more than one answer but some of the 
measures of inefficiency are:

	a) OSI UL protocols are large and complex and therefore 
implementations have to be  large and complex
	b) The division into the layers makes implementations inefficient
	c) The protocols require the transmission of more bits than 
necessary

The first two of these are untrue, and the present minimal OSI/thinosi work 
has been largely an attempt to clarify this. A slogan for the thinosi work 
was that the OSI upper-layer protocols were lightweight protocols specified 
in heavyweight documents, and that the solution was to implement the 
protocols not the documents ! Like most slogans, this is a simplification. 
The important point is that, for a particular purpose (e.g. for support of a 
particular component in a distributed application) there is no need to 
include in the implementation parts of the protocols that are not used. The 
more tightly restricted the range of function, the simpler the 
implementation can be. It will still be conformant (though it may possibly 
have trouble with over-zealous, simple-minded conformance requirements) 
and will interwork fully, in its defined role, with more comprehensive 
implementations.

The problem of division into layers is a red herring. It was never a 
requirement that the (upper) OSI layers should correspond to parts of an 
implementation. Since ACSE, Presentation and Session have a one-to-
one mapping between services, and, in OSI, Session (for example) is 
never used on its own, there is no point in having a separate session 
interface. Although, for historical reasons, some early implementations do 
have distinct layers, at least  some more recent ones are integrated.

<<<
The third inefficiency measure is certainly true in part, but there is 
ambiguity in the words "than necessary" - necessary for what. 
Consideration of this aspect needs to keep in mind the distinction between 
two possible paths:

	PATH A) If the requirement includes the ability to interwork or inter-
negotiate with implementations of existing protocols, there is no possiblity 
of not sending or understanding "irrelevant" bits. The other end (knowing 
only the old protocol) needs or sends those bits because the old 
specification told it to. The new implementation must do what the old one 
was told to.

	PATH B) If there is not a requirement for interworking, there is no 
need to be constrained by the old protocol. The new protocol need only 
include the features and encodings that are needed by the new, disjoint, 
interworking community.

This distinction is fundamental to any possible improvements in efficiency 
that changes the protocol. If interworking with the installed base (or even 
the pre-specified, but not yet installed OSI base) is required, various 
"unnecessary" baggage must be present. We can try to reduce this 
baggage, but some will remain. (There may be a lot of such baggage - 
most of the peculiarities of OSI Session are due to maintaining 
compatibility with earlier specifications)

Conversely, if interworking is not needed, we can start with a (nearly) 
blank sheet of paper. Whether what we write is then OSI is however a 
moot point. There needs to be a careful consideration of which facilities of 
the existing OSI upper-layers are needed and which can be dropped.

1.2 Which protocols

The term "upper-layer OSI protocols" is itself ambiguous. Sometimes it 
used to mean ACSE, Presentation and Session - the protocols that are 
used directly or indirectly by application-layer protocols (the fact that ACSE 
is itself nominally in the application-layer adds to this confusion). 
Sometimes it means everything above transport, including the application 
layer protocols. This ambiguity is retained in this paper! Most of the 
discussion concerns the supporting upper-layers (sometimes referred to as 
A/P/S ) at least some of it can be applied to application protocols proper. 
2 Minimal OSI/ thinosi

The minimal OSI and thinosi activities in OIW/EWOS, X/Open and the 
IETF have all been concerned with defining particular use of the upper-
layer protocols as they are currently defined. The intent was to lead to 
implementations that would be fully able to interwork with existing 
implementations - following path A above. This limited the degree of novel 
standardisation that was possible at the protocol level (but not at the API 
level of XTI/mOSI). In particular, the interworking requirement means that 
a mOSI implementation must be able to interpret any of the alternative 
valid encodings that might be sent to it by another system. However, this is 
minimised by

	a) restricting the range of applications that mOSI is expected to 
support
	b) not requiring accurate analysis of invalid received protocol

Limiting the range of applications means the mOSI implementation need 
not concern itself with parts of the upper-layer protocols that are defined in 
the standard but will not occur in practice. This is just regular profiling as is 
implicit in the dependency requirements of any application layer standard. 
It is indeed implicit in any of profile or application dependency requirement 
that if you are only going to support application XYZ, you only need to 
have implemented the supporting features that it needs. 

Not requiring accurate analysis of invalid protocol is a counter to the 
tendency in the protocols (rarely) and conformance tests to do this. This 
requirement makes little sense for an upper-layer protocol - it can be 
assumed that the transport layer is accurately delivering what was sent, 
and so an error detection and reporting capability is essentially attempting 
to make all implementations conformance test each other. If one of the 
implementations is sending invalid protocol, then interworking has already 
broken down. Useful open interworking requires the sending of valid 
protocol and the interpretation of any valid received protocol. Error 
detection may be useful in resolving failures to interwork, but is not 
needed for success.

In implementation terms for mOSI, omitting the requirement for error 
detection is particular important for fields of the supporting protocol that 
are "irrelevant" to the supported application. If, for example, an application 
makes no use of the called invocation identifier in the ACSE AARQ (A-
ASSOCIATE request), the parsing of the AARQ can just skip over the field 
while looking for whatever fields are relevant.

The thinosi proposals also include recommendations for which options are 
followed in encoding the Presentation and ACSE protocols. The thinosi 
"cookbook" recommends that constructed encodings use the indefinite 
form. This choice was made because it limits (to one) how many of the 
length fields must be adjusted around an enclosed field of whose length 
varies. For example, with a stream of connectionless A-UNIT-DATA pdus, 
all with the same naming, addressing and context parameters but an 
embedded user data field which differs in length use of the indefinite form 
means the header apart from the length field itself remains constant and 
the user-data field will always start at the same offset. The interworking 
requirement however means that a receiver must be able to accept any of 
the variants that it may receive - the cookbook just recommends, it cannot 
require. (The cookbook recommendations have also been proposed for 
inclusion, via the defect process, in the Presentation and ACSE 
connection-oriented and connectionless protocol standards).

3 Skinny stack and application layer protocols

In part the mOSI/thinosi work grew out of the X Windows System over OSI 
"skinny stack" specification (EWOS ETG 13) and implementation. (The 
term "skinny stack", which really only applied to the implementation, was 
found to cause trouble because it could be understood to mean less 
protocol, which it was not or less implementation, which it was). The 
extension to minimal OSI - that is to the OSI upper-layers in support of 
basic communications applications that made only minor use of those 
layers - is only one of the possible extensions. The essential skinny stack 
ideas - implement only what you must for the purpose at hand, forget layer 
boundaries, pre-encode to send, match against patterns to decode - can 
be applied to application protocols as well. In fact, this has the possibility 
of simplifying the implementation even further. For an application protocol 
that uses the ASN.1/BER encoding, the entire 
Presentation+ACSE+Application pdu combination can be treated as a unit 
(Session has different "encoding rules"). It will be known for sure which of 
the fields of the PDUs are "relevant" and which can be ignored. (Whereas 
for mOSI, several fields remain user options).

A skinny stack implementation of an application protocol and its supporting 
stack will be very much smaller than one that uses a generalised stack. It 
will be an effective solution for very small systems that use only one or a 
few application protocols - and the more restricted the systems use of the 
protocol, the greater the benefits. For systems that use many application 
protocols it may be less useful, as each application would include its own 
Session, Presentation and ACSE implementations. This probably would 
not be harmful to performance (on any measure), but might complicate 
managment and maintenance. 

<<<
The advantages of this path are that no new protocol specification is 
needed for the supporting layers (or the application layer, if an appropriate 
specification exists - CMIP and MMS are obvious examples). Distributed 
systems with a large number of small, special-purpose components and 
relatively few larger, multi-purpose systems (controllers or managers in 
workstations) could use skinny stacks in the small components and off-
the-shelf general purpose software in the larger. The ability of the skinny 
stacks to interpret *any* valid encoding for their application would make it 
unnecessary to have special purpose communication software in the 
workstation.

If formal conformance testing was required for all the components (for 
regulatory reasons, rather than just to make sure they worked effectively) it 
might be necessary to fix the over-zealous tests so they checked only 
what was needed, rather than what would be appropriate in a general-
purpose implementation. This would probably be most easily achieved by 
presenting a draft operational requirement - once it is clear that what is 
wanted is a test that a light switch sends and understands conformant 
session protocol, testers will have a well-defined target.
4 Reducing the bandwidth - path A

Thinosi/mOSI did not attempt to reduce bandwidth at all, but to reduce 
code size and running time. The encoding choices were made with that in 
mind. Alternative choices can be made with the intent of minimising the 
size of the PDUs transmitted but keeping within the interworking 
requirement of conformance to the existing protocol specifications.

The intent here is reduce the "irrelevant" bits that are sent. Which are 
irrelevant will, of course, depend on the requirements of the application - in 
particular whether the upper-layer naming and addressing elements are 
needed, how many presentation contexts are involved, whether 
application data is carried on the ACSE services. As an example, we will 
consider an application that is "sole user" (apart from ACSE) of an 
application association, with a single presentation context and that does 
not send user-data on ACSE. This is one of the forms of a "Basic 
Communications Application" in the mOSI sense. Using the encodings 
recommended in the thinosi cookbook (and the "default" object identifiers 
of CULR-3), the cost in octets of for the upper-layer pci is

a) using the thinosi encodings (which use indefinite length for all 
constructed values)

			Session	Presentation	ACSE		Total

Connect-request	16		82		15		113
Connect-accept	16		57		32		105
Data			4		16		-		20
Release-request	4		15		7		26
Release-response	4		15		7		26
A-abort *		7		33		6		47
S-abort		5		-		-		5

(* with no user data on abort, this is pretty pointless - with user data the
 numbers become 4+ 46+19=65)

b) If we change all of the encodings to definite length, we save all the end-
of-contents. This saves us some octets at the cost of processing time. 
Since there is no user-data on the ACSE services, all the lengths are less 
than 127 and so take up a single octet.

			Session	Presentation	ACSE		Total

Connect-request	16		60		11		87
Connect-accept	16		43		22		81
Data *			4		6+3 lengths	-		13 to 19
Release-request	4		9		5		18
Release-response	4		9		5		18
A-abort		7		21		4		33
S-abort		5		-		-		5

P-DATA is rather complicated because the overhead is affected by the 
size of the data. There are three nested contstructions around the data. 
The 4+16=20 figure in the thinosi encodings is two indefinite lengths (1 
header and 2 trailer octets each) and a long definite (length of length = 3, 
and three length value octets), which gives a fixed length header of 16 
octets and can handle data lengths upto 16 million. Using definite lengths, 
if the user data is less than 120 and short form definite lengths are used 
for all three constructions, the total header length becomes 4+6+3*1=13. If 
the length is between 128 and 247, definite lengths of two octets (1+1) will 
give a total of 4+6+3*2 = 16. If the length is between 256 and 65535, each 
definite length will take three octets, giving a total of 4+6+3*3 = 19. (User 
data lengths just below 128 and 256 give intermediate totals, as the 
various nested lengths switch to the next longer form).

The figures in this table are probably the most useful baseline for further 
consideration.

Some possible further reductions will now be considered:

c) Use simple, not full encoding.

If the application's abstract syntax imports all of ACSEs, and defines a 
transfer syntax for the combination (details of how to state this are left as 
an exercise), the presentation context can be omitted and the combination 
proposed (no, demanded, there is no negotiation) as the default context. 
Simple encoding is then used in data phase.

The price for this is removal of any possibility of transfer syntax 
negotiation. More seriously for interworking, it is of questionable validity. 
Although some implementations are believed to use (or attempt to use) the 
default context in this way, it is in contradiction to the Presentation 
standard. 

What would be legitimate, though also unlikely to be useful for 
interworking, would be to have the merged a-s and t-s, but put them in the 
presentation context definition list, not as default context. This means 
there is a single element in the defined context set, in which case simple 
encoding in data phase is usable, but you could still negotiate a transfer 
syntax.

The disadvantage of this is that it has consumed ACSE into the 
applications abstract syntax. Although this was intended to be possible 
according to the ACSE specification, it has not been generally recognised, 
and implementations do not currently handle syntaxes that incorporate 
ACSE. Getting the combined syntax specification right would not be easy 
either.

These numbers assume the definite lengths form.

			Session	Presentation	ACSE		Total

Connect-request	16		27		11		54
Connect-accept	16		11		22		49
Data			4		2		-		6
Release-request	4		2		5		11
Release-response	4		2		5		11
A-abort		7		4		4		15
S-abort		5		-		-		5


d) Session version 1

Since there is no user data on the acse primitives, and we are not using 
the naming fields of acse, we could live with the 512 user-data limit from 
session version 1. This cuts down the session elements of the connect 
exchange from 16 to 8. (That's right - 8 octets to communicate 1 bit - 
because version number is inside the optional connect/accept item, but 
that has a mandatory element "protocol options". (see the answer to 
question 1))

This will interwork happily, but as responder might receive version 2 (+ big 
aetitle ?) connect requests.

e) Typed data

Using Session TYPED-DATA, instead of S-DATA saves two octets on the 
data message. (You don't need the spurious GIVE-TOKEN. DATA and 
TYPED-DATA are mis-named - they should be called TOKEN-
CONTROLLED-DATA and DATA respectively. See the answer to question 
1) This will interwork happily - it is only the perversity of mappings that stop 
it being normal.

This gives, as the best figures while maintaining interworking, using 
definite lengths, session version1 and typed data, for small, but "Fully-
encoded" P-DATA user data:

			Session	Presentation	ACSE		Total

Connect-request	8		60		11		79
Connect-accept	8		43		22		81
Data 			2		9		-		13
Release-request	4		9		5		18
Release-response	4		9		5		18
A-abort		7		21		4		33
S-abort		5		-		-		5

5 But what do the upper-layers do for us

Before examining further alternatives it is worth considering what A/P/S 
protocols offer as added value on top of transport. It is these features that 
need to be incorporated in any alternative protocol, or rejected as being 
unnecessary for a particular requirement. The following features 
deliberately use inexact language and (sometimes) avoid technical terms 
as it is the effective role, not the specified function that is important:

a) The first octet of each session pdu identifies what part of the 
conversation is being sent - ie which of the rows of tables above is 
received 

b) Session and presentation connects include selectors that can be used 
for upper-layer routing.

c) Presentation is primarily concerned with presentation context - the 
identification and negotiation of the abstract and transfer syntax of the 
application data. There are several aspects to this:

	i) the presentation context identification of each piece of application 
data allows different message types (APDUs) to be distinguished, without 
fear of ambiguity, even if the representation of two messages from 
different sets (abstract syntaxes) happens to be the same
	ii) the presentation context identification can (usually) be used to 
distinguish separate streams of dialogue - because each stream will 
usually be using a separate set of message types
	iii) abstract syntax negotiation states/agrees which sets of message 
types will be used on the association
	iv) transfer syntax negotiation (for each particular presentation 
context) allows alternative representations of the same message to be 
offered

d) Presentation provides bracketing around the encodings of application 
data, so they need not contain their own length fields

e) ACSE provides naming fields (AP-title, AE-qualifier and invocation 
identifiers) that can be location-independent

f) ACSE carries an application context that identifies what the 
communication will be about, and what should be assumed about the 
intents and capabilities of the partners.

g) ACSE identifies which of its APDUs is being used (they all have 
different tags)

h) With its recent extension, ACSE can carry security information

j) All three protocols have facilities for version negotiation and, in the 
connect-request, extensibility rules that allow old implementations to 
ignore fields they do not recognise

Of these features:
	a) Something will always be needed to distinguish broad categories 
of message that all travel on the same supporting service (in this case, on 
T-DATA)
	b) The upper-layer selectors are redundant if the upper-layer 
implementation is integrated
	c) i) will only be necessary when there are multiple abstract 
syntaxes - but, since ACSE is considered to be in the application layer, 
there always are. 

	c) ii) works provided all the ASEs involved are different, but 
becomes rather complicated otherwise. Something that is not concerned 
with message type identification is needed for the general case of 
identifying the appropriate recipient of a message. Assuming that what the 
message type is tells you who it is for does not always work (try sending 
an anonymous birthday card to twins!)

	c) iii) and f) : The application and presentation contexts have some 
overlap of function. Since an application context definition identifies which 
ASEs, and thus which sets of message types, will be involved, c) iii) can 
be no more than a parameterisation of the application context, and will 
usually be unecessary.

	c) iv) is probably the most useful feature of the upper-layers, and 
the least used at present As is described below, it offers considerable 
scope for extensible, conformant optimisation in the processing OR the 
transmission of application protocols.

	d) Anything whose encoding is not self-delimiting will require this 
feature - conversely, if the supporting layers provide the feature, it need 
not be duplicated in the application protocol (i.e. the application protocol 
need not be self-delimiting)

	e) The ability to carry the names of the communicating entities 
explicitly, rather than inferring them from the addressing (via reverse 
lookup) is likely to be needed generally, but cannot always achieve what is 
hoped for. It cannot be relied on for effective authentication of the sender, 
though it can give a weak identification. Depending on how fast directory 
updates take place, it may allow a subsequent return call to the same 
entity on a different lower layer address. But it certainly does allow an un-
authenticated assertion of who the other party is.

	f) In a particular instance, an application context will either be 
completely redundant or absolutely essential! Often the entity that is 
listening on a particular lower layer address will only support one 
application context. If a call is made to that address, the only advantage in 
communicating the application context explicitly is to identify "wrong 
numbers". In other cases, the entity may be capable of several different 
things, and the application context is needed to tell it what the call is 
about.

	g) Since each ACSE APDU has (at present) a unique mapping to 
Session, this is redundant. However, if different ACSE APDUs could travel 
on the same immediately supporting service, the distinction is needed - in 
fact it has taken on part of the role of the session SI field in a). 

	h) Where needed, and perhaps especialy combined with the 
naming fields, carriage of security information will be vital

	j) Inventing a non-extensible protocol can be expected to be the 
last action of a doomed design team

5.2 On transfer syntax negotiation

Although all (?) OSI-originated protocols to date use ASN.1 and Basic 
Encoding Rules, Presentation was designed to allow multiple transfer 
syntax's (bits on the line) for a particular abstract syntax (set of 
messages).  Presentation is also intended to be just as happy with non 
ASN.1 abstract syntax's. (ASN.1 can be said to have the same 
relationship to abstract syntax notations as PL/I to programming 
languages - it is not the only, not the first and could be bettered). "Non-
OSI" application protocols will often not distinguish their abstract and 
transfer syntax's, but the distinction is usually possible.

<<<
What Presentation does allow is for alternative transfer syntax's to be 
offered by an association initiator, alongside a standard transfer syntax. 
Thus, for an ASN.1-defined application protocol, BER will usually be 
mandatory for support. But an implementation can also offer, say Packed 
Encoding Rules, or an internally-convenient representation known only to 
clones. If the responder recognises the alternative, it accepts that and the 
subsequent exchanges use the alternative encoding, at the saving of 
bandwidth (for PER) or processing time. If the responder does not support 
the alternative, it will negotiate to BER, and communication will succeed, 
at greater expense. It is important to realise that the alternative encoding 
does not require universal standardisation - the use of Object Identifiers to 
name transfer syntax's means the "registration" of the syntax can be 
devolved to any body. If the efficiency required is in bandwidth, the 
registration of a special-purpose, application-dependent highly-
compressed encoding, that took account of which messages were most 
frequently transmitted would be possible.

On this last idea, it is perhaps worth pointing out that the Presentation 
protocol does *not* perform the encoding and decoding functions between 
the local and transmitted forms of the application data. Although many 
implementations offer a "Presentation interface" along with tools for 
ASN.1/BER encoding and decoding, and the Presentation texts often talk 
as if the encoding were done in layer 6, all the Presentation protocol does 
is identify what is being sent and (often) how long it is. Placement of 
function that is assigned to the Presentation layer need bear no 
relationship, in a real system, to which part of the implementation performs 
that function. (This is just a specific case of the general rule that the OSI 
layer boundaries divide only documents, not parts of real systems)

6 Where have we got to so far

A recap of which parts of the problem space have been dealt with (with 
luck):

a) If the requirement is for general-purpose multi-application OSI with open 
interworking, but there is inefficiency because the implementations 
available are capable of more than is needed, and structured on the 
pattern of the Reference Model 
	-> demand implementations of the protocols not the documents

b) If the inefficiency is because conformance requirements are over-
rigorous
	-> explain to the conformance testers they are strangling the OSI 
goose and it will not lay any eggs of any metal if it is dead

c) If the application includes single-purpose, limited systems for which 
even efficient, general-purpose implementations are too large, but they are 
to interwork with general-purpose OSI systems
	-> use a special-purpose implementation, cut to the bone

d) If the encoding of the application protocol is too large for comfort, but 
general interworking is desired
	-> specify a compressed encoding and offer it as an alternative in 
context negotiation

What has not been dealt with:

e) The octet overhead of A/P/S is excessive for the bandwidth available - 
80 octets is too much for the environment

7 Reducing the bandwidth - path B

<<<
Applying the distinction stated at the beginning, if you cannot afford to 
send 80 octets on the connect exchange, you cannot do OSI as it is today. 
New upper-layer protocols can be devised to support OSI application 
protocols, but they will not interwork with existing OSI implementations and 
are not "OSI" in any useful sense at the moment. Similarly, new protocols 
that fitted into a (revised or unchanged) OSI model could be devised.

If such a new protocol achieved International Standard status, its inclusion 
in OSI would presumably depend on the title of the Standard ! However, 
one should beware of new "versions" of protocols that are really 
completely separate protocols but are described in the same document. 
Presentation and ACSE X.410 mode versus normal mode cannot 
internegotiate and support disjoint sets of applications. Although they 
share some PDU formats, putting them in one document gains nothing 
technically.

However, if the bandwidth restriction is so severe that the loss of general 
interworking is a price that must be paid, it is worth considering how to 
minimise the loss and maximise the gain. It is assumed that the bandwidth 
restrictions apply only to a part of the future OSI network - that we are 
concerned with particular links rather than rewriting OSI for everybody 
(because that would be rewriting OSI for nobody)

The application situations where bandwidth restrictions are severe can 
perhaps be considered in various groups:
	a) The application communication is entirely, and always, over 
bandwidth restricted links between special systems
	b) The application communication is partly over restricted links, but 
can be relayed on to  "normal" systems
	c) The application communication is usually over restricted links 
between special systems, but will sometimes directly involve "normal" 
systems

Specific examples, all over a limited bandwidth air-ground link, might be
	a) air traffic control messages 
	b) rebooking onward flight reservations using OSI TP, initiated from 
aircraft, but ending at the main booking systems transaction monitor
	c) file transfer to pick up local weather information to the aircraft - 
but some out-of-the-way places still have old (1993) implementations - 
transfer rate in this case will be poor, and may not work - but if everyone is 
lucky it is better than nothing.

The distinction between these categories are in the possible solutions. 
Clearly if the last, c), is to use normal negotiation, the connection offer 
must be something that follows the existing formats - so it will have to be 
at least 80 octets. After that, if it turns out to be a new version, minimised 
encodings are possible.

<<<
At the other extreme, for case a), there is relatively little requirement for 
true "openness" in connection (this is quite distinct from openness in 
supply of equipment). Rather than send a set of independent parameters 
(equivalent to the context and syntax names of normal OSI), pre-defined 
sets of options and combinations could be identified, either by short 
integers or object identifiers. All that needs to be communicated on the 
connect message is that this approach is being followed, and which of the 
sets of messages will be used, plus perhaps a few bits for extensibility (or 
functional unit negotiation). Using short integers would either cause big 
arguments about the code space (and need a central registry) or be limited 
to bilateral significance. Object identifiers would be general (essentially 
these would super-application contexts) but slightly more expensive. Even 
the AE-titles could be abbreviated to be references to some distributed 
table, or by assumption of a regular form.

This method in its simplest form does not provide the general negotiation 
features of present-day Presentation. Such negotiation could be added (a 
list of super-application-contexts, or a syntax that allowed wild-carding in 
the object identifier), but, as always, negotiation costs some bandwidth.

The remaining case, b), implies that the semantics that are expected at the 
eventual "normal" system are at least implicit on the limited bandwidth link, 
although this could be achieved by an application gateway/protocol 
converter. This could use the super-application-context on the limited side, 
and convert it into the normal form before passing it to the regular system.

If an approach of this kind (for a)) is followed, it will probably be wise to 
make it possible to distinguish the message from any present day Session 
- so the first octet should not be the same as any of the present Session 
SI values. May I start the bidding at 65.

8 Interworking

(just a clarification - not part of the main thing)

The terms "interworking" and (version) negotiation are sometimes used in 
different senses, leading to considerable confusion. This section attempts 
to define the term as used in this document.

When referring to interworking between a new and an old "flavour" of a 
protocol (be they termed versions, options, sets of functional units or 
whatever), it is understood here to refer to the possibility of interoperation 
in support of a real (end-user) application whose requirements make it 
possible to use the old and the new, and where the initiator would like to 
use the new, but the responder supports only the old.

Interworking excludes cases where the application (or service user) can 
only be supported by the new version. If the application needs features of 
the new version, it can only be invoked where supported by the new. The 
association/connection establishment will only offer the new version.

Negotiation (of "flavour") only makes sense where the application can use 
either version, but the new version is in some sense preferable - thus 
between implementations supporting both versions the new will be used, 
but the old version can be used if one partner only supports that. In this 
case, with a typical connection-oriented establishment phase, an initiator 
capable of both will offer both, and a responder knowing only the old will 
force the exchanges to the old. This may require the initiator to behave 
(more or less) differently to the way it would behave if using the new 
version. This may or may not be detectable to the user, but somehow the 
work of the application will (with luck) be achievable.

Negotiation is not considered to include directory look-up to find out which 
version a potential responder will support.

One mechanism to achieve interworking is to try to use different versions 
until success is achieved. This cannot generally be considered negotiation. 
However, it could be regarded as a limited form of negotiation if the old 
version includes in its specification a specific response to an attempt to 
use the new version. An example of this is in Session where the 
requirements of CULR-1 (9.2.1) - all session version 1 implementations 
"should" respond to CN SPDU (connect) offering version 2 only with an RF 
SPDU (refuse) indicating that version 2 is not supported. This would allow 
an attempt to connect using version 2 only (perhaps with a 5000 octet user 
data parameter) to be rejected, but the initiator could try again with version 
1 - but only if application permitted the user data to be postponed to the 
data phase or not sent. This could be called "fail-and-retry" negotiation. It 
is important to note that without the CULR-1 requirement on the old 
(version 1 only) implementation, this would not work. Repeated attempts to 
establish using alternative versions without such hints are not negotiation.

Interworking excludes cases where the "application" is a tester or harness 
that is deliberately probing the protocol implementation to see if it can tell 
which version is in use. Testing may show that two implementations can 
be expected to have difficulty interworking for real. It is inappropriate to 
refer to interworking in the communications between the tester and the 
implementation under test (except when referring to a supporting layer - an 
tester for an application-layer protocol built on TP0/CONS cannot 
interwork directly with an IUT built on TP4/CLNS, but that is a problem of 
transport-layer interworking).



9 Some stray thoughts

These points do not have a home at present, but I am loath to chuck them 
out.

Much of the "excess" overhead in the connect exchange is for extensibility 
and to make clear that you are NOT using some element you could have 
done (e.g. the sequence around the (usually) single transfer syntax is a 
pain, but is how you state you are not offering to negotiate it). 

ACSE could be shortened by greater use of implicit tags and defaults (the 
accept is especially grotesque)

The first message of a connection MUST be extensible. PER is not very 
good at this.
UL efficiency	1	Peter Furniss