simultaneous file transfer on ethernet (SUN's)

Charles Hedrick hedrick at topaz.RUTGERS.EDU
Mon Aug 25 12:30:13 AEST 1986


The original article asks whether it is feasible to update software on
multiple systems by using a broadcast protocol.  This would save you
from having to do separate copies to each.  Anything is possible to do
with enough design work, but let me mention two serious problems.

First, the Ethernet is not a reliable medium.  This means that any
individual packet may be dropped.  All protocols currently used to
send files include some sort of acknowledgement that the packet really
got there.  If an ack is not received, the sender resends the packet.
This is true of FTP, rcp, and NFS, though the actual details of the
protocols are different for NFS and the other two.  So a broadcast
distribution protocol would have to keep a list of the sites that are
expected to be receiving, and keep resending each packet until it has
gotten an ack from every receiver.  Since the acks would all be sent
at the same time, you would have guaranteed collisions on the
Ethernet.  Probably you would want some sort of randomized delay
before sending the ack.  This would be a nontrivial design problem,
and probably there would be other implications that I have not
noticed.  But an experienced protocol designer could probably solve
the problem.

You imply that you are going to be updating hundreds of Suns.  I would
be somewhat wary of the idea of hundreds of Suns on a single Ethernet.
When we asked Sun about this, they recommended no more than 50 
diskless Suns on a single Ethernet.  Our measurements suggest that
this number is about right.  Of course if the machines are not
diskless, more should be possible.  But there is a limit.  If you have
hundreds of machines, they are probably going to be on more than one
Ethernet, with gateways.  Broadcasts do not go through gateways,
unless special provisions are made.  This is a good thing.  It
protects networks from other networks where a machine has decided to
start spraying the network with high-speed broadcasts (a failure mode
that is not uncommon when you are playing with experimental network
software).  There are also problems in making sure that loops don't 
occur.  If a gateway forwards broadcasts from one interface to the
other, any very interesting topology will end up with broadcasts
looping around the network.  These problems can be solved, and indeed
there is an RFC describing multi-network broadcasts, but you should
realize that there are design issues involved with broadcast protocols
that involve more than one Ethernet.

My suspicion is that this is not worth doing.  I suggest instead using
a branching tree distribution.  I.e. your master sends to 10 machines
and each of them to 10 more, or something like that.  Note that the
Ethernet should be able to support a number of simultaneous transfers,
as long as they are not broadcasts.  The limit on network bandwidth
for most machines (including Suns) is the machine's own Ethernet
hardware and software.  The fastest real transfers I have seen are
1MBit/sec, and even that requires special care.  200Kbit/sec is more
normal.  Thus the Ethernet should be able to support a reasonable
number of simultaneous copies, as implied by the branching tree
model.  Collisions would not be the problem here that it would be
with the broadcast scenario, since the various copies would quickly
lose any synchronization that they might have.



More information about the Comp.unix.wizards mailing list