The solution is simple. All you have to do is to open /etc/sysctl.conf and add the following to the end of the file. You might have to tweak the value 32768 (all occurrences in the following) to any power of 2 that works perfectly fine for you. We had seen several places where these values were different. 32768 was the value for which we had the best results on the BSNL bandwidth test. We use this test because we have a BSNL broadband connection. Once the file is saved you can reload these kernel parameters by running
sudo sysctl -por by simply restarting the system.
Although this fix was tried out in Ubuntu it is possible that this might work for other distros with comparable kernels. It looks like the DSL routers and connections are optimized for the default values used in windows. So we just tweak the values used in GNU/Linux to match the router - simple :-)
# Tweaks for faster broadband... net.core.rmem_default = 32768 net.core.rmem_max = 32768 net.core.wmem_default = 32768 net.core.wmem_max = 32768 net.ipv4.tcp_wmem = 4096 32768 32768 net.ipv4.tcp_rmem = 4096 32768 32768 net.ipv4.tcp_mem = 32768 32768 32768 net.ipv4.tcp_rfc1337 = 1 net.ipv4.ip_no_pmtu_disc = 0 net.ipv4.tcp_sack = 1 net.ipv4.tcp_fack = 1 net.ipv4.tcp_window_scaling = 1 net.ipv4.tcp_timestamps = 1 net.ipv4.tcp_ecn = 0 net.ipv4.route.flush = 1