Subject: Re: AUI crossover cable?
To: None <port-vax@netbsd.org>
From: Paul A Vixie <paul@vix.com>
List: port-vax
Date: 07/09/1999 22:23:48
> > > http://www.hut.fi/Misc/Electronics/docs/old/aui2aui.html

> > this technique only works if the host ethernet adapters are full duplex,
> > which the deqna and deuna are not.

> Is there any trick that you can use on a half duplex ethernet adapter, or
> are you stuck using transceivers and a cross-over cable?

(i wish now that i'd saved the other answer i sent privately on this..)

the aui interface has a female host plugging into a male xceiver.  the host
drives a transmit pair.  the xcvr drives a receive pair and a collision pair.
if you want to plug a host into another host, you have nobody driving the
collision pair for either host.  there is no logic in the host for treating
as an error that condition called "transmit and receive both active" since a
xcvr can't DO that.  instead the error in the host is "transmit and collision
both active."  if a host sees that error it will fall back and retransmit i
the hardware and sometimes in the driver.  without that error, packets sent
while the other side is also sending will be silently dropped, and the higher
level protocol (tcp, nfs, whatever) will resend after an ACK timeout or
whatever.  this results in horrible performance.

in a reasonable(*) ethernet host adaptor, transmit and receive are completely
decoupled so there is no shared hardware and no reason why you can't send and
receive at the same time.  (*) by this i mean one made by ungermann bass or
excelan or xerox's research labs, or 3com's 3 megabit multibus cards.  "old."
in such an adaptor you don't need collision signal for a cross over cable since
there is no collision -- both hosts can send and receive at the same time.  in
the modern era this is called "full duplex ethernet" but there's no standard
for it on aui or thinwire transceivers and nobody other than -- ta da! --
digital ever implemented it for 10baseT (on the PCI DE500) and even that is
not understood by any driver i've ever seen except digital unix and openvms.

so what you need to do is OR together the crossed over transmit/receive pair
and the crossed over receive/transmit pair, and use the output to drive an op
amp which in turn drives the collision pair for both hosts.  this way any time
both hosts are transmitting, both will experience a collision and each will
wait a random exponential backoff time before retrying.  (you could latch the
op-amp output whenever one host is transmitting, so that the other one is the
only one that would experience a collision, but with digital's host adaptors
this wouldn't help since the damage would happen to both sides before the
collision signal could be acted upon by either side.  rant, rant, rant.)

this OR'ing and op-amp'ing is what a DELNI does.  i have one that i just took
out of service and the first $20 (estimated shipping cost) will get it away
from me.  for an added bonus, i'll include a pile of 2M AUI cables and -- get
this! -- a 10 inch AUI cable made for me back at DECWRL by david boggs, whose
name is the second of three on the ethernet patent (he built the first xcvr.)

you can also get what you want with a pair of AUI/10BaseT transceivers, with
a null-ether RJ48 cable (swap pairs 2 and 3, or wire pairs 1/2 and 3/6).  but
if you want to stick with AUI, you need that OR and the op-amp, which means you
have to make it yourself (noting that the transmit pair has DC power on it so
you can run your midspan chips that way) or you have to use a DELNI.

i can't believe the number of brain cells i wasted storing all of this info...