What options do you have enabled on the linux server?
sysctl -a | grep net.ipv4.tcp
and on the bsd
sysctl -a net.inet.tcp
It sounds like a problem with BSD not handing the dropped data or ack
packets so what happens is it pushes a burst of
data out > 100mbit and the switch drops the packets and then BSD waits
too long to recover and doesn't scale the transmission
back. TCP is supposed to scale down the transmission speed until
packets are not dropped to a point even without ECN.
Options such as 'reno' and 'sack' etc. are congestion control algorithms
that use congestion windows.
David Kwan wrote:
I have a couple of questions regarding the TCP Stack:
I have a situation with clients on a 100MB network connecting to servers
on a Gigabit network where the client read speeds are very slow from the
FreeBSD server and fast from the Linux server; Write speeds from the
clients to both servers are fast. (Clients on the gigabit network work
fine with blazing read and write speeds). The network traces shows
congestion packets for both servers when doing reads from the clients
(dup acks and retransmissions), but the Linux server seem to handle the
congestion better. ECN is not enabled on the network and I don't see any
congestion windowing or clients window changing. The 100MB/1G switch
is dropping packets. I double checked the network configuration and
also swapped swithports for the servers to use the others to make sure
the switch configuration are the same, and the Linux always does better
than FreeBSD. Assuming that the network configuration is a constant for
all clients and servers (speed, duplex, and etc...), the only variable
is the servers themselves (Linux and FreeBSD). I have tried a couple of
FreeBSD machines with 6.1 and 7.0 and they exhibit the same problem,
with no luck matching the speed and network utilization of Linux (2
years old). The read speed test I'm referring is doing transferring of
a 100MB file (cifs, nfs, and ftp), and the Linux server does it
consistently in around 10 sec (line speed) with a constant network
utilization chart, while the FreeBSD servers are magnitudes slower with
erratic network utilization chart. I've attempted to tweak some network
sysctl options on the FreeBSD, and the only ones that helped were
disabling TSO and inflight; which leads me to think that the
inter-packet gap was slightly increased to partially relieve congestion
on the switch; not a long term solution.
My questions are:
1. Have you heard of this problem before with 100MB clients to Gigabit
servers?
2. Are you aware of any Linux fix/patch in the TCP stack to better
handling congestion than FreeBSD? I'm looking to address this issue in
the FreeBSD, but wondering if the Linux stack did something special that
can help with the FreeBSD performance.
David K.
_______________________________________________
freebsd-net@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "[EMAIL PROTECTED]"
_______________________________________________
freebsd-net@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "[EMAIL PROTECTED]"