So there was an issue in recent days where I was setting up a true LACP bonded connection with more than 1 vLAN, actually 18 to be exact as I was preparing for NSX and I ran into an issue on a Cisco 3750G switch.
The default load-balancing protocol is “src-mac” and that works great for a regular bonded connection but not for VMware.
To find out the switch’s current load balancing mechanism, use this command in enable mode:
show etherchannel load-balance
This brings up the current load balancing algorithm in use by the switch. On my Catalyst 3750G running IOS 12.2(51), the default load balancing algorithm was set to “Source MAC Address”. On my ESX Server 6.0.2 server, the default load balancing mechanism was set to “Route based on the originating virtual port ID”.
The NIC team didn’t work at all I was unable to ping any of the VMs on the host, and the VMs couldn’t reach the rest of the physical network. It wasn’t until I blew up my home-network and redid everything that I reached out to a CCIE friend of mine, Rob Riker, and I bounced the idea off his head. It turns out, the load-balancing protocol was improperly configured. Who knew?
To set the switch load-balancing algorithm, use one of the following commands in global configuration mode. To enable IP-based load balancing, use this command:
port-channel load-balance src-dst-ip
After setting the switch to these settings, the vDS switch with the 18 vLAN’s passed traffic perfectly fine and off I went. You see in order for you to use the “Route based on IP Hash” inside of VMware on the vSS and vDS (with or without a LAG) you need to enable “src-dst-ip” on the physical switch. After doing some research, found out this option gives better utilization across the members of the NIC team than some of the other options.
Maybe this article will be helpful to others. 🙂