Urgent Data [TCP]

Khare (kharem1@worldnet.att.net)
Wed, 7 Jan 1998 23:04:23 -0800

I was reading the classic paper "The X Window System" by Schifler and
Gettys; it had two curios mentions just in the first few pages.

1) "The extension mechanism should allow communities to extend the system
noncooperatively, yet allow such independent extensions to be merged
gracefully" -- well put! First, extensions are communities; third parties
should be able to extend it without cooperation/complicity of the ends; and
those changes should be 'releasable'. I learned a decent bit from Jim while
designing PEP...

2) "Requiring nothing more than a reliable duplex byte stream (without
urgent data) for communication makes X usable in many environments" Also, X
is an asynchronous protocol, improving on the W synchronous system.

The realization here is that the TCP URGent pointer is NOT necc for X; it
is similarly unused for HTTP. Conversely, in India I studied the Comer
implementation of the TELNET state machine, which DOES use URG in its
channel abstractions (for process interrupt and flushing), and we find that
simple-seeming TELNET is actually much more complicated than it may seem at
first and also permanently tied to TCP.

Many other network transports may not offer prioritized-delivery: what's
the story for DECnet or Chaos or XNS? MUX, too, "learns" this lesson by
offering credit-based flow control within channels, but says nothing of
priorities between them.

URG, I think, ends up taking more than it gives. In TELNET, I suppose the
original rationalization was that 'skip-from-interrupt-until-URG' (or, to
be clean about layers, the synchronization record marker in the stream)
would allow quicker resumption of control in irregular situations: just
throw the data away instead of wasting more cycles parsing it to 'catch
up'. In fact, it seems to complicate control, and I haven't
seen/thought-through where else it offers benefits to applications. It
certainly seems to cost something in the TCP stack implementation, too.

What am I willfully ignoring about URG? Am I wrong to assume the universe
can be built on duplex reliable bytestreams, or is the bottom turtle really
a channel *with* interrupts? On one hand, URG cannot be simulated on top of
a reliable stream with the same efficiency; on the other, perhaps
link-layers like multifrequency radio and ISDN will use privileged
signalling channels.

Or, I may be completely off in my recall of URG; I'm typing here in a
coffee bar surrounded by Doors and exotically pierced and dyed teenagers.
Not a copy of Comer in sight...