7.0 BETA3 - slow TCP upload (TSO related?)
vnovy at vnovy.net
Thu Nov 29 23:48:06 PST 2007
my configuration is
em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
inet 126.96.36.199 netmask 0xffffff00 broadcast 188.8.131.52
media: Ethernet autoselect (100baseTX <full-duplex>)
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.
More information about the freebsd-stable