i am sure most of us buy Gigabit Nic having climbing expectations for our network’s performance, so do i , when i bought this card from Hardware store i was having high dreams of multiplying my network speed with 10(i was having 100 mbps Ethernet card), but as soon as i installed it i was quite dismayed .So in this article we will discuss how to maximize gains when switch over to gigabit nic from 10/100 mbps nic.
We should always take into consideration various components of our computing machine, effectively the maximum speed which you can achieve is dependent on the type of operation you are doing and the speed of the slowest component used in the operation e.g if you are doing a copy operation from one pc to another pc through gigabit Ethernet card then you practically you can not achieve more speed than writing speed of your hard drive.
In most of modern computers Ethernet card communicate to cpu via a PCI bus operating which itself is operating at 33 Mhtz , which in turn can deliver maximum up to 133MBps , and if you do have some other PCI hungry card in system then maximum throughput achieved further gets limited. To over come this if shift towards 64bit processor and 66 Mhtz clock speed for PCi bus then this limitation can be easily overcome, as with this this combination we can achieve maximum 532MBps , even if we don’t change to 64bit bus width then also 266MBps is confirmed from hardware point of view of PCI slot.
Now lets move towards software , we will discuss changes which can be done for Windows and Linux . Now with above said changes we have fast enough hardware interface which can support our gigabit Ethernet card , but still if we don’t run software judicially with optimized programmed parameters then also we are bound to see lower throughput. Some of the important parameters and the way they can be manipulated are given below .
TCP Parameters :-
TCP parameters are most important factors which should be looked upon , this factor is negotiated while starting connection , further it influence the pumping speed of data from tcp layer to lower layers .To configure this in Linux we are using sysctl utility. So following commands needs to be executed
sysctl net.core.wmem_max=8388608 sysctl net.core.wmem_default = 65536 sysctl net.core.rmem_default = 65536 sysctl net.ipv4.tcp_window_scaling=1 sysctl net.ipv4.tcp_mem= 98304 131072 196608
For windows machine you need to change registry settings at following location
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
We need to add a registry DWORD named TcpWindowSize, and enter a sufficiently large size. 131400 (make sure you click on ‘decimal’) should be enough.Tcp1323Opts should be set to 3. This enables both rfc1323 scaling and timestamps.
One last important note for Windows XP users: If you’ve installed Service Pack 2, then there is another likely culprit for poor network performance. Explained in ‘knowledge base article 842264(http://support.microsoft.com/?kbid=842264), Microsoft says that disabling Internet Connection Sharing after an SP2 install should fix performance issues.
after doing all changes for my Linux machine i was able to maximize throughput and was able to achieve 825Mbps through my Gigabit card .
Further if your applications use UDP significantly then you can look for similar settings for UDP as well.
So friends how do you plan to maximize throughput , do share in comments section

