7.0 BETA3 - slow TCP upload (TSO related?)
kris at FreeBSD.org
Fri Nov 30 01:02:56 PST 2007
Jack Vogel wrote:
> On Nov 29, 2007 11:21 PM, Vitezslav Novy <vnovy at vnovy.net> wrote:
>> my configuration is
>> kernel GENERIC
>> em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
>> ether 00:19:d1:0f:1c:18
>> inet 184.108.40.206 netmask 0xffffff00 broadcast 220.127.116.11
>> media: Ethernet autoselect (100baseTX <full-duplex>)
>> status: active
>> and standard "open" ipfw firewall and
>> natd -u -s -m -d -dynamic -n em0
>> I experience very slow TCP upload from this host - cca 50kbps.
>> I have some debug prints in kernel (mostly in ip_output and ipfw log)
>> and I see:
>> 1/ outgoing packet appears in ip_output with ip_len 2924 and
>> 2/ is diverted by firewall
>> 3/ Packet appears immediately again in ip_output with ip_len 2924 and
>> 4/ Packet is accepted by firewall and dropped by ip_output with error 40
>> 5/ After cca 0.4s (tcp retransmit timeout?) new packet appears in
>> ip_output with ip_len 1488 and m->pkthdr.csum_flags=1
>> 6/ is successfully diverted and accepted by ipfw and sent to wire.
>> 7/ after tcp ack is received new packet appears in ip_output with ip_len
>> 2924 and everything repeats
>> Packets are not changed by natd, beacause have src address of em0.
>> Upload has normal speed (512kbps) if
>> I unset TSO on interface OR set net.inet.tcp.tso=0 OR (strange thing)
>> delete ipfw divert rule
>> If necessary I will collect and send more info.
> TSO is silly at 100Mb, turn it off :)
When this was reported before I asked why does the driver allow it, if
it is "silly" and causes so many problems? Why not just disable it by
default if the link is 100Mb?
More information about the freebsd-stable