Enable load balancing on Windows 7 with 2 or more NICs

Load balancing is a process through which network loads are split between multiple Network Interface Cards based on different algorithms. This is done at the transport level so each IP session is treated individually before deciding its path. This means that a single IP connection can't be split during this process, and only multiple connections can be separated.

For instance, if you open a YouTube video in your browser, that's one connection, the video stream that comes through, and that can't be split because it is one IP session. But if you open 2 YouTube videos, or simply any 2 websites in your browser, that means 2 connections, and that can be separated.

Don't confuse load balancing with network bonding/link aggregation. In network bonding, individual network packets are encapsulated and then are split and sent over multiple paths, through multiple NICs to a service provider. Their server will decapsulate the packets, recover the initial ones and send them to the original destination.

Now there is a trick to cause network traffic to be split between multiple NICs on Windows 7 and above, without any extra software, by configuring them with identical cost metrics. By doing that, Windows wont differentiate between one path or the other and will possibly split your traffic between them, if you have many simultaneous IP connections (like video stream, downloads, gaming, VoIP, torrents, etc).

Each network adapter in Windows 7 and above, has 2 cost metric values automatically assigned to it by the OS, depending on the connection performance: the interface metric and the default gateway metric. The network adapter with the smallest route metric (which is the sum of interface metric and default gateway metric), will have all the traffic, but if multiple network adapters are manually configured with the same route metric, connections will go through whichever has less traffic load.

Unfortunately, since this is undocumented behavior from Microsoft and knowing how buggy the connection manager in Windows can sometimes be, this will not always work.

That being explained, to configure identical cost metrics on multiple NICs in Network Manager, all you have to do is:

    • click the "Control Panel" button in the gadget
    • click "Tools" and then "Load Balancing"
    • click the "Windows" tab
    • enter the metrics value you want to use or leave the default ones, and click "Apply"
    • wait for the program to refresh and that's it

In the demonstration bellow I did exactly what was just described, after which I did a small test. I opened the web browser and started downloading a 100 MB dummy file, and as expected, the traffic was going through one interface since this was just one IP session. But then soon after I started opening other random web pages and, voila, traffic appeared in the second interface as well.

Note: Sometimes, even though you have 2 interfaces configured with the same cost metric, Windows 7 will still prefer one of the two interfaces, and it will only use that one.

To workaround this, usually disabling the interface that Windows 7 prefers from Network and Sharing Center, to force traffic through the other interface, and then re-enable it back, will do. It can be frustrating sometimes.

If you have an older version of Windows than WIndows 7 or the load balancing feature doesn't do a very good job for you, you can manually create routes to split the traffic between NICs. For instructions on how to do that, check this: Route and separate connections through different NICs.