Updated on 2014-10-09
Disclaimer
This question is similar to Unexplained slow gigabit network speeds but because the latter is still unanswered after 5 years, and that I think I'm able to add more details, I'm posting another question on this topic.
Background
We have 2 DELL PowerVault NX200 storage server. Both feature a Broadcom BCM5716 on-board dual Gigabit NIC (from which I'm using only one port). These storage server ship with Windows Server 2008 Storage Basic SP2, which I recently reinstalled and updated to the latest version.
We recently experienced slow network speed from the servers. I haven't tested the connection speed before so I can't tell what was the "normal" throughput. However, it is definitely very slow right now.
Issue
Throughput FROM both servers is around 5-6 Mbits/sec. This was measured with several runs of Iperf over the day. The throughput TO the servers is around 90 Mbits/sec.
Other tools and methods give the same kind of results (e.g. ttcp or copying files using Windows Explorer, Teracopy, ...). I will stick to Iperf results to exclude as many irrelevant components as possible (e.g. SMB).
What doesn't work
I tried several things, none of which worked.
Using different, brand new, network cables. I don't have the tools to properly test the quality of the cabling but I do get better speeds using the same cables on other computers.
Using a different NIC (BCM5709) which works fine on another Windows 2008 R2 server.
Unplugging all other computers and leaving the servers isolated on the switch.
Connecting the servers to a different switch didn't improve things.
Removing any switch and connecting directly NIC to NIC.
Updating the NIC drivers and software to the latest versions from QLogic.
Changing the NIC parameters to every "Speed & Duplex" mode. "Auto negotiate" would always result in the fastest speed I could get from it.
Same thing for others NIC parameters such as Jumbo Packet size (to match the switch support). Most of the time, it didn't change anything and when it did, it only made things worse.
I also tried all of
netsh interface tcp set global
parameters, includingautotuninglevel
which many people suggest to leave disabled.Setting
TCPWindowSize
in the registry. This setting is ignored on Windows 2008.
What works
Booting to CentOS 6. Everything's fine on CentOS LiveCD. The culprit is probably Windows, the driver or the settings and not the NIC, switches or cabling.
(Probably) related issue
I was able to reproduce much of the results from Windows TCP Window Scaling Hitting plateau too early. Forcing the TCP window also results in much higher speeds during Iperf tests. It looks like Windows' TCP window scaling isn't working properly while transmitting.
Iperf results
Between the two servers, .12 NIC manually set to 100Mbps Full Duplex:
[ 4] local 192.168.1.14 port 51535 connected with 192.168.1.12 port 5001
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-15.1 sec 640 KBytes 348 Kbits/sec
[ 4] local 192.168.1.14 port 5001 connected with 192.168.1.12 port 50498
[ 4] 0.0-10.3 sec 6.00 MBytes 4.90 Mbits/sec
Between the two servers, .12 NIC manually set to 100Mbps Half Duplex (same results on "Auto"):
[ 4] local 192.168.1.14 port 51541 connected with 192.168.1.12 port 5001
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-10.2 sec 6.38 MBytes 5.23 Mbits/sec
[ 4] local 192.168.1.14 port 5001 connected with 192.168.1.12 port 50509
[ 4] 0.0-10.3 sec 6.12 MBytes 4.99 Mbits/sec