size-dependent packet loss (Re: bce packet loss)
perryh at pluto.rain.com
perryh at pluto.rain.com
Thu Jul 7 09:01:04 UTC 2011
Kevin Oberman <kob6558 at gmail.com> wrote:
> ... Years ago, when coaxial Ethernet the norm ...
Aha! Another old-timer who has been around long enough to remember
10Mb Ethernet! Maybe something in the following will ring a bell?
I have a (to me) very strange problem, for which I have a usable
workaround but no actual solution, when I try to send "large"
packets from an ancient Sun-3/50 (or 3/60, the same thing happens
with either) through any hub I have ever tried to connect it to:
* Packets up to about 750 or 800 bytes get through just fine, but
the loss rate goes up sharply as size increases beyond that and
reaches 100% somewhere around 900 or 950 bytes. (A hub that is
smart enough to show such things logs a "late collision" error
when it drops one of these large-ish packets.)
* The problem does not seem to be related to high overall data
rate: it arises even sending only one packet per second (e.g.
ping).
The obvious explanation is "physical layer problems", e.g. bad
10Base2 termination, but that does not hold up under investigation:
* There is no problem _receiving_ large packets via the same
connection: I can FTP an arbitrarily large file from an i386
(running either FreeBSD or Windows) through the hub _to_ the Sun
box, but an attempt to FTP a 1KB file _from_ the Sun through the
hub will never complete because the data packet is always dropped
(unless I arrange to set the MTU to, say, 640 bytes so that large
packets aren't used). It does not matter which end is controlling
the FTP session: a "put" issued from the Sun or a "get" issued
from the i386 -- either of which transfers the file from the Sun
to the i386 -- will fail; a "get" from the Sun or a "put" from the
i386 will work (transferring the file in the other direction).
* If I move the 10Base2 tee connector from the hub to a 10Base2 port
on the i386, so that the Sun and i386 boxes are connected directly
by 10Base2 and no hub is involved, everything works properly in
both directions. This pretty well eliminates cabling/termination
as a factor. (Of course, this approach requires the i386 to have
a 10Base2 connection; most of mine are new enough that they don't.)
* It does not matter if the connection from the Sun-3 to the hub is
made via coax using the built-in 10Base2 transceiver, coax using
an external transceiver, or 10BaseT (necessarily using an external
transceiver, since these Suns have only AUI and 10Base2 built
in); nor does it seem to matter what brand of hub is used or even
whether it is 10Mb-only or 10/100.
Nor does it seem possible to blame the hub: I've tried several, of
different brands, and all behave the same way; and there's no problem
communicating among i386 systems through any of these hubs.
Restricting the MTU to 640, and the NFS read and write data sizes
(which must be a power of 2) to 512, is a usable workaround, but
I would really like to understand what is going on!
More information about the freebsd-net
mailing list