How does Windows 7 decide which route to take if 2 connections to the Internet exist? (e.g. wireless versus wired)
If there are more than 1 path, Windows will refer to the
metric from the routing table. Use
route print to show it. Basically, it will prefer the path with the lowest metric.
In the past, the metric is derived from the speed of the link; however, the rules for Win7 are still unknown according to this.
There's the routing table. You could use the route command to check out the metrics. In the command line (Run: cmd):
> route PRINT
But, you could also change the internet connection order:
Go to: Control Panel -> Network and Sharing Center -> Change adapter settings
Hit Alt so the top menus show and go to Advanced -> Advanced Settings...
Finally, in the Adapters and Bindings tab, modify Connections order as desired
if there are 2 default routes (gateway) it preferes the one with lower metric
the route metric in windows 7 is the sum of the adapter metric and the gateway metric
if you manually set identical metric (for example 24 on the adapter1 and 2 on the gateway1; 25 on the adapter2 and 1 on the gateway2 in the TCP/IP advanced settings) it seems that windows 7 does a kind of load balancing for apps opening multiple tcp/ip connections and does automatic failover too.
I am testing this on my Windows 7 x64 Ultimate edition with a 54Mbps wireless adapter + 100 Mbps ethernet adapter and 2 ISP
no Microsoft docs found about this till now
In my experience, it will always prefer the more "permanent" connection method. I.e. Ethernet preferred to Wireless, Wireless preferred to Bluetooth etc. (all the way down to modem). But failover exists as well, so if Ethernet gets disconnected, Windows will attempt to connect over Wireless.
Case in point: I have a 300Mbps Wireless-N network. If I connect my laptop to the router directly (100Mbps Ethernet), Windows switches to that connection (without disconnecting the wireless network).
While part of the answer is relating to the metric of the route, it is not the only detail that dictates the path. In part of the route table, you can see where the destination network is (with a subnet mask), and which interface to talk to it on.
You can specify more "specific" routes to take, and the most specific rules will prevail. For example, if you had a home network at
192.168.0.0/24, your default route table knows to use
Ethernet. If you add a direct route to
192.168.0.0/25 to be routed through your
Wi-Fi adapter, then any hits to
192.168.0.0 through to
192.168.0.127 will go through your Wi-Fi, and the remainder of your network through Ethernet. If you Default Gateway (next hop) is
192.168.0.1, then your default gateway will connect over Wi-Fi, as that is where the "most specific route" exists. Likewise, if your gateway is
192.168.0.254, it would go through your Ethernet.
OpenVPN uses this method as well. Instead of replacing the
0.0.0.0/0 route (default route), it creates two routes -
220.127.116.11/1 - that route through the VPN interface. This way, if the VPN interface has issues, it can fall back to your standard Default Gateway.
Windows will automatically use the one with higher rated speed. Not sure though which one it will choose in case they both have the same speed.