Finally, I'm able to get fully gigabit speeds from my linux server to my workstation. I couldn't tell who was the bottle neck before so I tuned them both. Originally, no matter what I did I would cap out at 160 to 320mbps at any point using any TCP or UDP. Ping seemed to work so I know it wasn't a bus issue. Come to find out, a few sysctl and registry hacks got me to 871mbps! No jumbo frames either, as those don't really fix the problem.
In linux I have the following in my sysctl. Keep in mind that this is a Dual Xeon 2.0Ghz with 1GB ram and a intel gigabit on PCI-X.
sysctl.conf
# Gigabit tuning net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 # net.core.wmem_max = 8388608 net.ipv4.tcp_window_scaling = 1 net.ipv4.tcp_rmem = 4096 87380 16777216 net.ipv4.tcp_wmem = 2096 65535 16777216 net.ipv4.tcp_mem = 98304 131072 196608 net.core.netdev_max_backlog = 250000 net.ipv4.tcp_timestamps = 1 net.ipv4.ip_local_port_range = 1025 61000 # VM pressure fixes vm.swappiness = 100 vm.inactive_clean_percent = 100 vm.pagecache = 200 10 20 vm.dirty_ratio = 10 vm.dirty_background_ratio = 5 # Security tweaks net.ipv4.tcp_synack_retries = 3 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_max_syn_backlog = 10240 net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_keepalive_time = 1200
along with a few windows registry hacks (from the article) I was able to get >800mbps with ttcp. Finally!
Networking Planet - Squeeze Your Gigabit NIC for Top Performance
TTCP testing for Linux and Windows