Kevin here. I’m stuck in the car for a two-hour drive to Columbus, so I might as well write a blog post about a recent experience I had with Server 2012 and NIC teaming. Microsoft’s Server 2012 comes jam-packed full of great tools and features like storage spaces, the next  version of Hyper-V, SMB 3.0 and integrated NIC teaming. But I recently came across a very odd behavior with the new NIC teaming and took me (off and on) about a month to resolve. It was for a personal project so I didn’t sink much time into it. I then had the exact same issue at a client location and solved their issue within minutes. Hopefully this blog post will save someone some frustration!

So, NIC teaming. What is it? It’s the ability to join multiple network cards together to either accomplish greater redundancy or increased performance. So if you had four 1 gigabit network cards, you could gain a theoretical 4Gb connection to that server or make it so if two of the four were disconnected, your server would still be accessible. If those connections were spread among four different switches,  one of those switches fails, clients on the other switches are (probably) not affected. Overall it’s a good thing to try to implement into your environment, and with every new Windows Server 2012 deployment we do at Simplex we try to leverage this technology into our clients infrastructure.

Now with a little background on NIC teaming, what went wrong? My home environment used 2 NIC Team using the switch independent configuration mode. The server is a Hyper-V host with a four VMs running on it. All four VMs share the team and life is good. Mostly. I use a small device called an Arduino to track temperature at various places in my house. Another geek project I’m proud to have set up. The original incarnation of my Hyper-V host did not use teaming, and when I made the upgrade, my Arduino stopped communicating with the Linux server that would poll it. Ping would work fine, I could access the Arduino from other systems in my house but never through the Linux machine. I later find out I could not access it through any of the VMs on that system. At this point I’m tweaking firewalls, the MAC address of the Arduino and every other half brained attempt to get this to work. I then had an “aha!” moment, I recalled I did not use NIC teaming in the original setup. I powered down my server, installed a spare gigabit network card (doesn’t everyone have spares of these?), created a new virtual switch that only used this new adapter, bound the Linux server to the switch and voila! The Linux server was perfectly pooling the Arduino again.

To this day I’m not sure why it was broken. My best guess is the Arduino’s simple network interface was “too simple” to handle the NIC team’s multiple interfaces and lost the traffic from confusion. Fast forward a few months and we have a similar issue with Server 2012, a 4 channel LACP NIC team, and a “simple” network device. The device is a small PCL capture device that is polled by a virtual machine on the 2012 Server. The VM would ping the server but communication was spotty at best, with occasional initial connection issues and random disconnects. Based on my experience at home, I had the onsite technician reconfigure the VM to use a single NIC on the server (it had 2 spare unused NICs) and things started working just fine.

As time allows, I want to figure out what exactly is happening to the network traffic that’s causing the breakdown in communication. Until then if I run across other simple devices I will just configure them for single un-teamed network interfaces.