[tulip] Problems with full-speed routing on a tulip quad interface

Luke Stratman lastra@wm.edu
Mon Nov 4 15:47:01 2002

Hello all:

I'm in the process of configuring several linux boxes to act as high
performance routers in a network testbed environment; the hardware specs
for each of them are as follows:

 - CPU:  Athlon XP 2000+
 - RAM:  256 MB PC 2100
 - Motherboard:  Asus A7V-266E
 - NIC:  Quad interface card (not sure of the manufacturer) with a DEC

I'm currently using Redhat 7.3 with the 2.4.20-rc1 kernel on these
routers, but the problems/results that I will detail below are more or
less consistent with those obtained on the 2.4.17 kernel installed

Now, here's the problem:  I'm unable to obtain full speed routing when
all four of the interfaces are active.  For illustrating purposes,
here's the network topology for one of the routers:

                     |   Subnet 1   |
+--------------+     +--------------+     +--------------+
|   Subnet 2   |-----|   Router 1   |-----|    Subnet 3  |
+--------------+     +--------------+     +--------------+
                     |   Subnet 4   |

When I attempt to blast data at full speed from subnet 1 to subnet 2 and
subnet 3 to subnet 4 simultaneously, the max throughput that I can
achieve is about 73 Mbps.  Initially, I was concerned about the
interrupt count (when I first began investigating this, the interfaces
were throwing about 50K interrupts each during the bandwidth tests), but
with the most recent kernel compiled with CONFIG_HW_NET_FLOWCONTROL, the
interfaces seem to only be throwing about 20K interrupts apiece during
the test.  So, from this it would seem that interrupt mitigation is
working properly, yet the box still cannot route at full speed.  In
addition to the stock tulip driver included in 2.4.20, I've tried the
NAPI driver from robur.slu.se, but to no effect.  I've also tried
turning ipchains off, which yielded a minimal (~.1 Mbps) increase in
throughput.  The box can route at full speed when only two of the
interfaces are active, but when all four are trying to get/send data at
wire speed, then I see the drop in throughput.

So, my question is this:  are there any specific options that could be
set on the interfaces, or patches that could be applied to the driver or
kernel to improve performance?  Or is it simply unreasonable to expect
full speed routing in this scenario given the hardware configuration?
If you need any further information from me, please don't hesitate to
ask, and thanks in advance for any suggestions you might be able to

-Luke Stratman