You should be able to get and install either the Intel (proset) or Broadcom server utility - depending on which kind of NIC you have in your server.
Once you have that on your machine, you can configure fault tolerance on the server. At least with proset (don't have a broadcom server w/ the tool installed right now to look at) you would configure a new team, tell it what type of fault tolerance you want - Adapter, switch, load balancing, etc.
The only gotcha I can think of right now is if you are running MSCS on any of the servers they don't support NICs setup with fault tolerance in any way and the cluster verification will fail.
Some keywords for you to look for "Adapter Fault Tolerance" "NIC Fault Tolerance" "Adapter Load Balancing" "Adapter Fail over"
I think a picture says 1000 words. So you basically can have three situations.
1 - Switch redundancy, but no Router or ISP redundancy:
router spof http://www.brokenhaze.com/sf_images/router-spof.png
2 - Switch, and router redundancy, but no ISP redundancy:
isp spof http://www.brokenhaze.com/sf_images/router-isp-spof.png
3 - Finally, no SPOF - within your control:
no spof http://www.brokenhaze.com/sf_images/no-spof.png
Now each of these setups will obviously be more expensive than the last. For most small/medium sized companies option one holds the best risk/benefit ratio.
There are no bonding modes in Windows teaming. There's only active/active (mode-4 in Linux terms, requires a switch that supports it) and active/passive (or failover) mode.
Also, if you're mixing b-coms and intels in the same machine, you cannot use both Intel ProSet and BACS to manage the teams. You have to use only one of them, and each team must have at least one NIC corresponding to the team management brand used.
That means that if you have b-coms and intels, and you want to use BACS for teaming, you need to create teams, each with at least one b-com (since it corresponds to BACS natively). You can't, under BACS, create teams with intels only.
Best Answer
Works perfectly with KVM:
ethX+ethY -> bondX -> bridgeX -> VM
failover happens on the bond level, transparent to the VM