[comp.protocols.iso] X-WINDOWS & OSI

J.Henshall@EDINBURGH.AC.UK (06/06/89)

Things have gone a little quite on the Western Front, so here goes with a wee
poke into the embers of architectural fundamentalism.

What is going to be the outcome of the impending battle of placement of X?
There can be no question of the fundamental importance of the inclusion of X in
the OSI portfolio, but how does it relate to the architectural design?  X
requires a reliable byte stream environment for operation, any other 'higher'
issues being dealt with by it's internal design.  This, sensibly, dictates that
X should be defined as an extended application 'stack' sitting directly on top
of Transport.  The primary arguments for this lie clearly in aspects of
efficiency - reduced overhead in establishment of a window, and in the data
minimisation over the 'wire' during operation - but this will be countered by
the fundamentalist argument, i.e. X can only be seen within OSI as an
application and as such must operated via ACSE.

This is perhaps the best forum for open discussion of the principles at stake
here, so lets have a debate...any takers?

John

colella@EMU.NCSL.NIST.GOV (Richard Colella) (06/07/89)

	What is going to be the outcome of the impending battle of
	placement of X?  There can be no question of the fundamental
	importance of the inclusion of X in the OSI portfolio, but how
	does it relate to the architectural design?  X requires a
	reliable byte stream environment for operation, any other 'higher'
	issues being dealt with by it's internal design.  This, sensibly,
	dictates that X should be defined as an extended application
	'stack' sitting directly on top of Transport.  The primary
	arguments for this lie clearly in aspects of efficiency - reduced
	overhead in establishment of a window, and in the data
	minimisation over the 'wire' during operation - but this
	will be countered by the fundamentalist argument, i.e. X
	can only be seen within OSI as an application and as such
	must operated via ACSE.

>From the practical side, what you are suggesting is that an appropriate
place for X is directly over transport.  There is some work on X in the
POSIX group that has recently started.  The POSIX folks tend to be
less concerned with architectural purity and more oriented towards
things that work.  Maybe that's the way to achieve the goal of X
in the OSI environment.  People will use what works, not necessarily
what is architecturally pure.  I'm not an architectural purist, so
I won't even try to take that one up.

Regards,
Richard

collin@hpindda.HP.COM (Collin Park) (06/09/89)

OK, I'll start with the standard disclaimer, the following opinions are
not necessarily those of anyone but myself; in particular they do not
necessarily represent the opinions of my employer.

Seems to me (not an X expert) that if what X needs is reliable non-
duplicated ordered byte-stream communications, and nothing else 
(e.g., graceful release), then putting it on transport is the way
to go.  There are undoubtedly those who would say, no, that doesn't
preserve the architectural purity of osi.  This is a true statement,
but what does "architectural purity" buy the customer (end user,
sys admin, or application developer)?  Seems to me the surest way
to kill OSI is to require applications that used to run over tcp/ip
to now run over TPx/S/P/ACSE.

I don't know of any good argument to increase the communications
overhead of X-windows by requiring S/P/(and at connection-time, ACSE).
If we don't try to call X an OSI application, then there's no need
that I know of to require that it run in its "proper" place in the
osi architecture.

------------------------------------------------------------------------------
Unless explicitly stated otherwise, opinions expressed above are my
own and do not explicitly reflect those of the Hewlett-Packard Company
or any other person or entity.

collin park			Hewlett-Packard Company
collin%hpda@hplabs.hp.com	19420 Homestead Road -- MS 43LT
				Cupertino, CA  95014  USA

Christian.Huitema@MIRSA.INRIA.FR (06/13/89)

There is currently a proposal on the table, by DEC, using a full suite,
including ACSE and presentation over a full duplex session. To sum it up:

* ACSE is used for connection management operations, e.g. open window
or kill window;

* X-window protocol items are carried as octet strings in an
``unstructured octet string'' presentation context.

This proposal has several advantages over the short sighted approach of
``just using the transport service'':

* it is fully conforming to the architecture,
 
* as a consequence, the client part could be easily implemented on
those systems which provide T & S ``as a single package'', e.g. IBM OSI
offers for mainframes,

* using the presentation service allows for the packing of several
X-requests in a single S (or T) message, which has significant performance benefits.

It is untrue to assert that the use of S + P ``must cost millions of
instruction''. In fact, by taking advantage of the limited number of
session services that can be negociated, it would be possible to
implement the session in an X server with very minimal overhead, e.g.
half a dozen instructions.

I have some reservations on this approach, though. In my opinion, it is
somewhat too ``minimalist'', and a real ``OSI X-Window'' should include
a proper definition of the X protocol in the ASN-1 language; however, I
realize that the time to develop + demonstrate such a tool could be a
bit long, and that its advantages have to be weighted against achieving
an ANSI (then ISO) standard in a short time frame.

Christian Huitema

S.Kille@CS.UCL.AC.UK (Steve Kille) (06/19/89)

Basically agree with all this.  It is clearly useful to map the X thru ASN.1.
Use of ROS would be worth considering.

Another reason for mapping onto ACSE is that it will give natural hooks for
authentication and encryption services, which you would not get from a
mapping onto transport.   X is clearly in need of these services!


Steve

kwe@bu-cs.BU.EDU (kwe@bu-it.bu.edu (Kent W. England)) (06/20/89)

	If X was designed without reference to the OSI model,
including ASN.1, all the Application Layer Service Elements,
Presentation, and Session, what is the use of trying to graft the
model on after the fact?
	Is X being rewritten to comply with OSI or to interoperate
with some other OSI services, like ASN.1?  Why?

	It just sounds awfully peculiar to me.  I thought the model
was for designing new systems, not explaining old ones.  Never occured
to me that that was what the OSI model was for, universal explanation
and interpretation.  :-)

	Kent England, Boston University

mrose@cheetah.nyser.net (Marshall Rose) (06/20/89)

You OSI weenies really need a sanity check (-:

There are two philosophies:
1. put X on top of transport, minimize changes, and optimize performance; or,
2. put X in the application layer, use ROS, et. al., and so on.

I suggest that #1 is something that will work in short order, be relatively
competitive with TCP-based X's and generally be a good thing.  I think that
#2, whilst interesting, is a research project.

/mtr

S.Kille@CS.UCL.AC.UK (Steve Kille) (06/20/89)

Marshall,

John asked about "the right way to map X onto OSI".  I interpreted "right"
in my answer as "correct in terms of OSI".  I'll agree that there are
research aspects to this.

If you have an urgent need to run X over an OSI net, the mapping onto
transport is a sensible short term fix.  I do my work on TCP/IP and X.25(80)
nets.  With the possible exception of X.400, real OSI services are still a
good way down the road.  I see no reason to rush an X/OSI mapping.

Steve

donp@APOLLO.COM (Don Preuss) (06/20/89)

>    If you have an urgent need to run X over an OSI net, the mapping onto
>    transport is a sensible short term fix.  I do my work on TCP/IP and X.25(80)
>    nets.  With the possible exception of X.400, real OSI services are still a
>    good way down the road.  I see no reason to rush an X/OSI mapping.
>    
>    Steve
    
The reason this is coming now, and the reason for the urgency in making a decision
is that there is currently a proposal on running X over OSI in X3H3.6. Since it is
being considered in a standards body, this needs to be discussed. 

At the recent NIST OSI Workshop I held an ad hoc meeting of people interested in this
problem. There was a large attendence from members of the VT sig, plus a few other 
people knowledgeable and/or interested in this. The primary reason I held the meeting
was to get a sense of the workshop on where X should belong, and get some feedback on
the DEC proposal. 

The feeling is that although X will run more quickly and efficiently directly on transport,
and that there will be fewer duplication of services, it should really sit on top of
the OSI stack, and use ACSE and presentation. This will allow future use of 
presentation security, CCR and management features of OSI, in addition to authentication 
and whatever else might creep up.

The only place where a major (compared to transport) performance hit comes when running
over S+P is on OPEN DISPLAY. Instead of just doing a CR, we are using ACSE. However, once
the connection is established, we could use a generic-octect transfer syntax, and for a
very small cost in perfomance, run over presentation.


]	    I have some reservations on this approach [running on S+P] , though. In my opinion, it is
]	somewhat too ``minimalist'', and a real ``OSI X-Window'' should include
]	a proper definition of the X protocol in the ASN-1 language; however, I
]	realize that the time to develop + demonstrate such a tool could be a
]	bit long, and that its advantages have to be weighted against achieving
]	an ANSI (then ISO) standard in a short time frame.
]
]	Christian Huitema

I agree completely. 

donp

Arpa: donp@apollo.com, apollo!donp@eddie.mit.edu
UUCP: ...uunet!mit-eddie!apollo!donp
-------

zweig@p.cs.uiuc.edu (06/24/89)

> Written Jun  9, 1989 by collin@hpindda.HP.COM in comp.protocols.iso
> ---------- "Re: X-WINDOWS & OSI" ----------
>    [stuff omitted]
> I don't know of any good argument to increase the communications
> overhead of X-windows by requiring S/P/(and at connection-time, ACSE).
> If we don't try to call X an OSI application, then there's no need
> that I know of to require that it run in its "proper" place in the
> osi architecture.

Since X (according to what I've gleaned of its innards from talking with
X-hackers) already determines the sorts of things the presentation layer
is concerned with (byte-order, etc.) and basically _contains_ a session-layer
protocol, I don't think I understand the beef on this bone being picked.

Certainly 2 or 3 seconds of ACSE muddling when I open an x-session (assuming
a reasonably bad ACSE implementation) isn't going to be noticed, and once
we're connected the Presentation and Session layers are null.

There is a common misapprehension that "null" protocol layers involve
calling functions and telling them not to do anything and that this can
add substantially to the overhead of communication. Wrongo!

I can give you a half-dozen tricks (one in particular) that can enable a
module up in user space to talk directly to the transport mechanism, while
still "thinking" it's talking to the presentation layer. Delegate the
functionality and use pointers intelligently and null P/S means 0 runtime
overhead. It's not a problem.

The OSI layering is a _conceptual_ layering, not a software-architectural
layering. There's no reason at all that an application can't DMA right to
an ethernet board in an ISO/OSI compliant implementation, so long as the
application is written so that it "thinks" it's interacting with the
appropriate presentation-layer entities. More specifially, the person who
wrote the application-layer entity thinks he's dealing with what he thinks
the presentation layer is; maybe a compiler optimizes away the unnecessary
baggage.....

If you think 7-layers means 7 function calls, 7 buffer-copies, and a 
(Craig?) Partridge in a pear tree, somebody has told you some seriously
incorrect things.

-Johnny Zweig
 University of Illinois at Urbana-Champaign
 Department of Computer Science
--------------------------------Disclaimer:------------------------------------
   Rule 1: Don't believe everything you read.
   Rule 2: Don't believe anything you read.
   Rule 3: There is no Rule 3.
-------------------------------------------------------------------------------

mrose@cheetah.nyser.net (Marshall Rose) (06/25/89)

** FLAME ON **
Thank you so much for pointing out the very obvious (null layers needn't
introduce additional overhead), and the incorrect (you can use null layers
in this situation).
** FLAME OFF **

If the question is: can we define a mapping from X onto ACSE and Presentation?
The answer is yes.  However, we now have to decide what this means exactly.
OSI defines a presentation service and protocol.  If you retain the service
but use a different (e.g., null) protocol, you aren't OSI any more.  Ditto
for session.

To be as-null-as-possible and still use OSI protocols, we can start by
selecting the kernel facilities of the session layer.  These can be
implemented fairly efficiently with only a modest amount of additional burden.
However, at each layer you still have to prepend a header (PCI for you OSI
purists) when data goes down and strip off and interpret the header when the
data comes up the on the other system.  Since session deals with strings of
octets, this can all be handled reasonably.

At the presentation layer, things are more complicated since we must now
introduce an abstract syntax for the data structuctes exchanged by the X-based
applications.  The X11 protocol defines these structures concretely.  So, you
can either define a simple octet string syntax and let the X application do the
work, or you can redefine all the X structures in terms of ASN.1 and let
presentation (conceptually) do the (de-)serialization.  The first alternative,
whilst legal, is probably contrary to the spirit of OSI.  The second
alternative, whilst philosophically correct, is going to be a performance pig.

At the application layer, we note that the X protocol is really an RPC on a
connection-oriented presentation service.  So, to be true to the spirit of
OSI, we should be re-cast the X operations in terms of the ROSE (just as we
recast the X datastructures in terms of ASN.1).  Of course, we needn't use 
ROSE if we just use the existing X framework.  ACSE, per se, isn't such a big
deal, though use of the Directory in order to map application entity names into
presentation addresses, may introduce some additional delay during association
establishment.

In other words, at each layer above transport, you get two choices: wedge the
tried-and-true X way into OSI, or do it the "right" OSI way.  The former will
lead to a system, which, while performant, probably plays overly fast and loose
with the OSI framework.  The latter will lead to a system with interesting
research characteristics.

I prefer a third approach, which is the direct mapping of X onto transport
as an interim measure.  When we have experience building large OSI applications
and have a better understanding of what works and what doesn't, then a thorough
osification of X would be in order.

** FLAME ON **
Next time, before preaching about how efficiently null layers can be realized
in real systems, it would be worthwhile to consider how germane your
proselytizing is for the converation at hand.
** FLAME OFF **

/mtr

karl@asylum.SF.CA.US (Karl Auerbach) (06/25/89)

In article <99600003@p.cs.uiuc.edu> zweig@p.cs.uiuc.edu writes:
>
>Certainly 2 or 3 seconds of ACSE muddling when I open an x-session (assuming
>a reasonably bad ACSE implementation) isn't going to be noticed, and once
>we're connected the Presentation and Session layers are null.

Real ASN.1 encoding and decoding is not a null function.  Unless you make
some serious restrictions, it can be a real CPU burner -- not just at
the start end end of the session, but for every byte transferred.

Are you suggesting going half way and doing ACSE but not a real ASN.1
revision of X?  

>   Rule 1: Don't believe everything you read.

I didn't.

					--karl--

jg@max.crl.dec.com (Jim Gettys) (06/27/89)

> Certainly 2 or 3 seconds of ACSE muddling when I open an x-session (assuming
> a reasonably bad ACSE implementation) isn't going to be noticed, and once
> we're connected the Presentation and Session layers are null.

I don't see how you can justify such a statement under any circumstances.
Are you seriously suggesting that applications should take additional SECONDS
just to get a connection started?????!????!!!???  Not to mention applications
which may want to have multiple connections open.

2-3 seconds delay sure would be noticed on my machine.  Most of the X tools
I use are up in under a second.

Every time you start an application, it has to open a connection to the X server.
This wants to happen fast; acceptable is only when it is less than human
perception; so this sets an upper bound on a local net of 50 milliseconds or
less.  There are other things that need to be done besides connection setup;
you only get a small fraction of the entire budget of time to play with.
This is easy to do under TCP with current workstations.  Adding several
seconds to connection setup is crazy.

					- Jim Gettys

Christian.Huitema@MIRSA.INRIA.FR (Christian Huitema) (06/29/89)

I really dont understand why ACSE should cost 2 or 3 seconds. Opening
the session + the association is done with a single message exchange,
after transport set up. There is no reason that a transport set up
would cost much more than a TCP set up, and there is no fundamental
reason, apart from poor software enginnering, that a single message
exchange should cost more over transport than it costs over TCP.

Given that the current proposal proposes to *use* this single exchange
for an useful purpose -- opening a window -- I dont think that the
delay will much more important than that of running over TCP-IP. One
can estimate the overhead by deriving it from the current size of the
connection message using S+P+ACSE, approx 250 bytes; I dont see how
processing 250 bytes of data would cost ``2 to 3 seconds'' -- I would
rather expect milliseconds. Real delays derives from synchronisations,
i.e. sending messages and waiting for responses, and they are protocol
independant; the opening of a window will always introduce such a synchronisation.

I can find only two explanations for the alleged long delays. One would
be the responsive time from a name server embedded in the association
package, but then one should compare it to the response time of the
DNS. The other one would be the massive CPU overhead introduced by
security procedures, e.g. computing a 150 digits RSA signature; but
this is quite another game.

Christian Huitema

rick@gateway.mitre.org (07/23/89)

Running X directly over Transport certainly makes sense from
X's point of view, 
but I have my doubts about it being accepted as a "standard" way
to offer X in an OSI environment.  I understand there is a paper 
going around ANSI on how to map X to ACSE and Presentation primitives.
The OSI upper layers may cost you some at startup time, but I don't
think the overhead will be significant after that.  On balance, I
think this approach is better.

There is also an OSI work item called "Terminal Management" that
discusses a rather X-like capability.  Anybody up to date on
how it's going, and how its contributors see the relationship
between X and Terminal Management?

-Rick Wilder