maximum Ethernet throughput

John A. Shriver (
Fri, 11 Mar 88 14:25:29 EST

One way to deal with those violent controller speed mismatches that
are starting to show up is to use a LAN with some form of hardware
ACK. This is part of all token ring networks (ProNET, Apollo, 802.5,
FDDI), as well as Hyperchannel and DEC's CI. While these bits cannot
be used to guaruntee end-to-end reliability, they do let you know when
you are sending faster than the other guy can receive.

The simplest thing to do is just retransmit until the other guy copies
it, but this is a waste of network bandwith. The more sophisticated
thing to do is put the packet back on the front of the output queue,
and search up the queue for a packet to a different hardware
destination. This way the packet retransmissions are interleaved with
potentially useful transmissions. You don't, however, want to shuufle
the order of packets to a particular node, this can be pathological to
some protocols. (The NSP in DECnet-VAX did not accept out-of-order
packets until Version 4.7, some TCP's have the same problem.)

Good programming interfaces are indeed important. While our earlier
boards were only single-buffered (one each way), their simple and fast
programming interface (start a transmit in 4 C statements) made up for
it. (The ACK bit also helps on the single-buffer problem.)

It is very hard to try and get below the interrupt-per-packet
threshold and keep a simple programming interface. However, even if
you make it, you run into programming interfaces, such as the 4.3bsd
network device interface, that make it very difficult to get a
pipeline going. By comparison, in VAX/VMS, where pipelining is quite
feasible, when you pipeline two packets deep, you nearly double the

As an example of how programming interfaces and interface design
affect performance, note that Van's benchmarks were run on a Sun-3/50,
which uses the AMD LANCE Ethernet chipset. I doubt he could match
those numbers on a Sun-3/160, which uses a Intel 82586 Ethernet chip.
The '586 has an inferior programming interface, and some nasty
internal "housekeeping" delays that make it a good bit slower.

This archive was generated by hypermail 2.0b3 on Thu Mar 09 2000 - 14:41:31 GMT