You might be unrealistic about how much available bandwidth is on your modem
line. Lets do the math for a typical 56k modem connection:
56k modems = 56,000 bits per second.
You really DON'T have a 56k modem but a 52k modem per US FCC limitations.
You'll almost NEVER get 52k, the best connection I used to get was 48k
48,000 bits per second is 4,800 BYTES per second (8 bits to a byte +
2 bits for the START and STOP RS-232 serial bits)
With an MTU of 1500, you will get (3.2) packets in one second. Since
this will involve fragmentation, you need to round DOWN to (3) packets per
second.
Again with MTU of 1500, thats 3.2 x 40 bytes of TCP/IP overhead (8%)
So the BEST throughput you could hope for is 4.68KB/s w/o compression.
Compression, be it v.42bis hardware compression, MNP5, or MS/Stac compression
can yeild impressive numbers on highly compressable stuff like TEXT files, but
acutally slow things down when transfering pre-compressed files like ZIPs,
MP3s, etc.
Make sure you don't have both your INTERNAL and EXTERNAL networks running on
the same network card with the "IP Alias" feature. If you
ARE doing this, it can be made to work
but it will be excessively slow due to high levels of collisions, IRQ usage,
etc. It is highly recommended that you install another network card for the
internal and external networks to have their own interface.
Make sure you have the right Ethernet settings for both SPEED and DUPLEX.
Some 10Mb/s Ethernet cards and most 100Mb/s cards support FULL Duplex
connections. Direct connections from an Ethernet card to, say, a DSL modem
(without any hubs in between) *CAN* be set to FULL DUPLEX but only if the
DSL modem supports it. You should also be sure that you have Ethernet cables
with all eight wires used and that they are in good condition.
Internal networks that use HUBs -cannot- use Full Duplex. You need either a
10 or 100Mb.s Ethernet SWITCH to be able
to do this.
Both auto 10/100Mb/s SPEED negotiation and Full/Half DUPLEX negotiation on
Ethernet cards can wreck havoc on networks. I recommend to hard code both the
NIC speed and duplex into the NIC(s) if possible. This is directly possible
via Linux NIC kernel modules but isn't directly possible in monolithic kernels.
You will need to either use MII utililies from
Section 8.1 or hardcode the
kernel source.
Optimize your MTU and set the TCP Sliding window to at least 8192
Though this is COMPLETELY out of the scope of this document, this helps QUITE A
BIT with ANY network link you have, be it an internal or external PPP, Ethernet,
TokenRing, etc. link. For more details, this topic is briefly touched in an
above section in Section 7.15. For even more details, check
out the Network Optimization section of
TrinityOS - Section 16.
Serial based modem users with PPP
If you have an external modem, make sure you have a good serial cable. Also,
many PCs have cheesy ribbon cables connecting the serial port from the
motherboard or I/O card to the serial port connection. If you have one of
these, make sure it is in good condition. Personally, I have ferrite coils
(those grey-black metal like rings) around ALL of my ribbon cables.
Make sure your MTU is set to 1500 as described in the FAQ section of this
HOWTO above
Make sure that your serial port is a 16550A or better UART. Run
"dmesg | more" to verify
Setup IRQ-Tune for your serial ports.
On most PC hardware, the use of Craig Estey's
IRQTUNE tool and
significantly increase serial port performance including SLIP and PPP
connections.
Make sure that your serial port for your PPP connection is running at 115200
(or faster if both your modem and serial port can handle it.. a.k.a ISDN
terminal adapters)
2.0.x kernels: The 2.0.x kernels are kind of an odd ball because you can't
directly tell the kernel to clock the serial ports at 115200. So, in one of
your startup scripts like the /etc/rc.d/rc.local or /etc/rc.d/rc.serial file,
execute the following commands for a modem on COM2:
setserial /dev/ttyS1 spd_vhi
In your PPPd script, edit the actual pppd execution line to include the speed
"38400" per the pppd man page.
2.2.x kernels: Unlike the 2.0.x kernels, both the 2.1.x and 2.2.x kernels
don't have this "spd_vhi" issue.
So, in your PPPd script, edit the actual pppd execution line to include the
speed "115200" per the pppd man page.