I ran into an issue with Exchange 2007 Network Load Balancing (NLB) Unicast Mode when running on Hyper-V running on full install of Server 2008 x64.  To first understand the problem, it is useful to understand how NLB Unicast works.

When running Unicast, the NIC that has NLB enabled will have its’ MAC Address overwritten.  When you add a second NLB member to your NLB cluster, that new member’s NLB enabled NIC will have it’s MAC Address overwritten with the same MAC address as the other NLB enabled NIC.

Let’s take a look at our EXCAS1 server which contains both the Client Access Server and Hub Transport Server role.

As we can see, we have two NICs which are required when doing Unicast.  The reason you need two NICs is because, as stated, each NLB enabled NIC will have its’ MAC address overwritten and both NLB Node’s NLB enabled NICs will have the same MAC Address.  Because of this, we need a second NIC on each server so both NLB nodes can still communicate with each other.

Taking a look at our NLB NIC, we have a MAC Address of 00-15-5D-01-70-18.

How did we get this MAC Address?  Taking a look at our “Hyper-V Synthetic Network Adapter” in Hyper-V Manager, we can see we assigned our NLB NIC a dynamic MAC Address.

So let’s go ahead and enable NLB on our NLB enabled NIC.

After clicking OK, we can see that our MAC Address on our NLB NIC has changed from 00-15-5D-01-70-18 to 02-BF-CO-A8-01-FB.  Any other NLB nodes that are added to our NLB cluster will have its’ NLB enabled NIC’s MAC changed to 02-BF-C0-A8-01-FB as well.

Go into the Properties of our NLB and let’s go ahead and configure NLB.  And yes, my test lab’s domain is fark.com (will be changing back to shudnow.net once I get my new hardware and re-configure my lab environment).

The Cluster IP configuration is the IP configuration that will be used for our NLB IP.  They are not the IPs that are currently assigned to our existing NICs; although you will be adding this IP to your NLB NIC in just a bit.

On the Host Parameter’s tab, we’ll want to put in the IP Address that currently lives on the existing NLB NIC.

The Port rules are configured as such.  After configuring your port rules, Click OK to Continue.

We now have to add the Cluster IP to our NLB NIC.  This process will automatically be done for new nodes which join the NLB cluster.

Because we specified our host name for our Cluster NLB to be mail.fark.com, we will want to ensure a host record for mail.fark.com points to 192.168.1.251.

Now here’s where I ran into an issue with Hyper-V.  From our EXCAS1 server, we can ping mail.fark.com properly.

But from another machine (our DC), we cannot successfully ping mail.fark.com

Initially, I thought this may be the issue Andy Grognan ran into here.  But unfortunately, it was not.

I then tried to disable the NLB option.  I was then able to ping 192.168.1.251 which is still bound to the IPv4 settings of the NLB NIC.  This made me think it was an option with modifying the MAC Address.

I found out that a Hyper-V Synthetic Network Adapter does not allow you to dynamically modify the MAC address.  A legacy network adapter does, but a Hyper-V Legacy Network Adapter does but does not support x64.  This means we need to figure out a way to get this working with a Hyper-V Synthetic Network Adapter.

I shut down my EXCAS1 server and went into the properties of the Hyper-V Synthetic Network Adapter that was used for NLB.  I took note of the newer NLB MAC Address and modified the Hyper-V network settings to have a Static MAC Address of 02-BF-C0-A8-01-FB.

I booted my EXCAS1 server back up and went back on my DC1 server and tested a ping to mail.fark.com.  It worked!

And to test from our DC1 to our web browser to ensure OWA works through our NLB  hostname?  That works too!

Share