Subject: Re: can anybody explain this?
To: None <current-users@NetBSD.ORG>
From: der Mouse <mouse@Collatz.McRCIM.McGill.EDU>
List: current-users
Date: 02/16/1996 07:02:57
> That may or may not be the problem, but problems with OOB handling
> may exist.  I found the message below on comp.bugs.4bsd; [...]

> From: jik@annex-1-slip-jik.cam.ov.com (Jonathan Kamens)
> Newsgroups: comp.protocols.kerberos,comp.bugs.4bsd
> Subject: krlogin/krlogind usage of OOB data is broken
> Date: 10 Feb 1996 13:32:09 -0500

> I understand that Sam Hartman has done a considerable amount of work
> on rlogin and rlogind, trying to get their handling of out-of-band
> data to work properly.  [...similar problems with krlogin...]

The basic problem here is that they're using a facility that doesn't
exist.

TCP does not have out-of-band data.  What it does have is an urgent
pointer, which is simply a pointer into the data stream.

Someone at Berkeley whose name I would be cursing if I knew it thought
it would be a good idea to kludge this into an out-of-band data stream,
by (near as I can figure) saying that one byte at the urgent mark
belongs to the out-of-band stream instead of the regular data stream.

Provided all implementations do this kludge in the same way, and
provided the out-of-band data rate is very low (as determined largely
by the effective round-trip time between hosts, including effects of
packet loss), the result mostly works, because the receiver host gets
and processes each pseudo-OOB byte before the next one comes along.

But there's still nothing but a single pointer into the data stream
underlying it, and people keep rediscovering that it breaks when
stressed as a result.  Do two OOB sends in quick succession (which
usually means something like, do the second one before the first one
gets sent, or before the first one gets ACKed, or some such) and of
course the urgent pointer will be pointing at the second one, the first
(pseudo-)OOB byte having been merged into the real data stream.

In short, it is probably a mistake to use OOB data for _anything_.
After numerous bad experiences with rlogin, I wrote my own remote login
protocol that uses a separate TCP connection for administrivia, for
things that rlogin uses OOB data for.  It worked like a charm.

					der Mouse

			    mouse@collatz.mcrcim.mcgill.edu