I'm experimenting with a network here, with the following
characteristics:

machine A (WinXP home)
|
| 100Mbit Ethernet
|
gateway R (linux 2.6.11.4-20a)
|
| 15Mbit/second
| pseudo-ethernet
| serial link
|
gateway H (linux 2.6.11.4-20a)
|
| 100Mbit ethernet
|
machine B (WinXP MCE)

Default route runs from A to B.
For some reason, I'm only getting about 10Mbit/second from the serial
link, and am trying to figure out why.

I'm measuring throughput by transferring a 50Mbyte file from A to B
via ftp. I noticed that the packets are actually, apparently, being
generated as 2068-byte packets for some reason, and are getting
fragmented into two packets of 1500 bytes and 652 bytes. Thus, I show:

downstream traffic:
24452 packets of 1524 bytes (tcp packets)
24468 packets of 652 bytes (tcp packets)

upstream traffic:
24450 packets of 70 bytes (tcp packets)

Well, I certainly don't want the stream to be fragmenting packets, so
I've tried changing the mss or mtu of the link, but nothing really
works. For example, if I try:
ifconfig eth0 mtu 1460
on *either* side of the link, it simply stops passing packets at
all!! I can connect in the ftp session, but dir hangs (eventually
times out and disconnects). Other attempts such as setting mss in the
routes, or using iptables to specify mss as documented elsewhere in
this group, have no effect on the fragmenting.

BTW, I have NO firewalls running on any machines.

So I have several questions:

1. Why didn't my ifconfig technique work?? I thought the Windows
machine(s) would discover the smaller packet size and revised their
mss as required, but it doesn't seem to happen; maybe I should reboot
them??

2. Why is the Windows machine generating >2KB packets in the first
place?? I ran TCP Optimizer on both Windows machines, and explicitly
set the MTU to 1500 bytes on all interfaces, but this wasn't
affected!!

3. Is there something obvious that I'm just not understanding about
these protocols??

I also looked at the Berkeley Labs TCP Tuning Guide, and set the
optimizations that it recommended on the linux machines:
net.core.rmem_max=16777216
net.core.wmem_max=16777216
net.ipv4.tcp_rmem=4096 87380 16777216
net.ipv4.tcp_wmem=4096 65536 16777216
net.ipv4.tcp_no_metrics_save=1

But none of these affected the fragmentation, nor the throughput
limitations, in any way.