7.0 BETA3 - slow TCP upload (TSO related?)
jfvogel at gmail.com
Fri Nov 30 00:16:06 PST 2007
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 188.8.131.52 netmask 0xffffff00 broadcast 184.108.40.206
> 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 :)
More information about the freebsd-stable