Eric J Korpela wrote:
The easiest is a ring with packet forwardings. Each
machine has its
output connected to one machine and its input connected to another.
This is probably the simplest hardware wise and software wise. It's
also the slowest. When a packet comes in, its destination address is
checked against the current machines address. If it doesn't match, it
is forwarded to the next machine. No collision detection is
necessary. One potential problem is that a packet with a bad address
can circulate forever unless you have a way of detecting it.
This was the approach I was leaning towards, as it takes care of the
fanout issues. But, for general purpose use, I was trying to think of a
way to have a node that is turned off have a "bypass". I thought of a
DPDT relay, but then I started to think of what would happen if the
relay closed/opened in the middle of a byte being transferred to the
machine turning off. How would I recover from that.
But, I agree, that solution offers the best hope.
For protocol, I'd go with a modified SLIP, since
it's well specified,
small enough to implement on an 8 bit processor, includes appropriate
escape characters, the code is everywhere and it's easily modified.
We've used it for serial buses on spacecraft.
Hmm, good idea.