Network Load Balancing (NLB) and virtual machines

Network Load Balancing (NLB) and virtual machines

Rate This
  • Comments 6

There is a fair amount of confusion about the state of using Windows network load balancing (NLB) when it comes to Microsoft virtual machines.  Today I am (hopefully) going to set the record straight.  When using NLB with Microsoft virtual machines you need to be aware of the following issues:

  1. Virtual Server / Virtual PC will not utilize any NLB capabilities on the host operating system.  This is because Virtual Server / Virtual PC perform their network operations at a lower layer on the host network stack than NLB.  Note - Virtual Server and Virtual PC will function correctly when NLB is present on the host - they will just not benefit from it.

  2. Virtual Server / Virtual PC have some network optimizations that actually cause problems when running NLB systems inside of virtual machines.  These optimizations are simply that if we see a network packet that is going from the host to a virtual machine, or from a virtual machine to another virtual machine, we will send the packet directly to that virtual machine - without sending a copy of it on to the physical network connection.  Similarly if we see a network packet coming into the physical computer that is destined for the host operating system - we will not send it on to any of the virtual machines.

    Now - these optimizations cause problems with NLB because NLB creates its own virtual MAC address that is shared amongst all the NLB servers - which means that we cannot tell when a packet should go just to the host, a virtual machine or everyone.  Because of this we see the following results:

    1. NLB works with virtual machines - if everything (client and NLB servers) is on separate host systems.  It also works if some systems are physical computers, and some virtual machines - as long as each server / client is on a separate computer.

    2. NLB works when all the NLB servers are virtualized and placed on the same physical computer.  Obviously this is only useful for non-production environments.

    3. Any other configuration will fail (e.g. having a virtualized client hosted on a physical NLB server node, having a virtualized client and virtualized NLB server node on one box, with other NLB server nodes on remote systems)


Leave a Comment
  • Please add 6 and 1 and type the answer here:
  • Post
  • Thanks for the explanation.  We've had good luck running NLB in VS so far.

    Would it be possible to include an option to turn the network optimization feature off and pass all network requests to the physical network connection?


    Dan Palley
  • We are trying to run NLB on virtual machines in config 1 above (client, server 1, server 2 and SQL server 2005 all on different physical machines) but we are running into problems.  The issue is that one of the app servers will work, but the other throws an error about the connection being dropped talking to the SQL server.  In config 2 everything works fine.  Any ideas what might be causing this?
  • Dan -

    Yes - we are hoping to address this at some stage.

    Joseph -

    I have no idea why it would be failing in config 1.

  • hi,
    i am a support engg. for microsoft (setup team)
    and would like to know if there are any
    KB articles/SOX documentation with regards to
    NLB and Virtual Server 2005 R2.

  • Lokking at point 2 - NLB works when all the NLB servers are virtualized and placed on the same physical computer - I think this will only work when having 2 network interfaces installed on the host.

    Otherwise you will get a "No interfaces are available for installing a new cluster" error message.

    Bye, Erik
  • I'm trying to set up a Terminal services farm(hosts) with NLB, thses hosts are virtual machines hosted on a system running Virtual server 2005 R2.

    I've configured the interfaces (NLB) manually an then tried to access the cluster from "Network balancing Manager".... and I can't see all hosts only one of them appears...

    As far as I understand it should work based on your explanation... but I've not been able to dom it... Eric wrote that a second physical adapter must be inserted on the host machine... can you shed the light on this ?
Page 1 of 1 (6 items)