On Tue, 2008-01-29 at 09:57 -0800, 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.
Many years ago I implemented a simple network using a single full-duplex
RS-232 port per node, connected in a simple ring.
The only features I remember at the moment were that each packet started
with a flag byte and destination address. In addition to the one-byte
latency required of the serial receive/transmit process, there was an
additional one-byte buffer so if the address byte matched then the
header byte was not passed on and the message would be absorbed by the
destination node.
Message bytes had to be contiguous, so a gap of more than (say) 1
character was deemed to indicate a fault. Because of the latency, the
forwarding node had the option of not passing on the last byte, so any
such packet would have one byte removed per node it passed through.
Also, if the entire packet was passed through but the CRC failed, the
last CRC byte wasn't passed on, initiating the message chomping process.
Oh happy memories!
--
Lawrence Wilkinson lawrence at ljw.me.uk
The IBM 360/30 page
http://www.ljw.me.uk/ibm360