NFS and IP-HASH loadbalancing
Hi, I have moved this blog to the new site frankdenneman.nl.
The new home for this article is: http://frankdenneman.nl/2009/11/nfs-and-ip-hash-loadbalancing/.
Apologies for the inconvenience!
Hi, I have moved this blog to the new site frankdenneman.nl.
The new home for this article is: http://frankdenneman.nl/2009/11/nfs-and-ip-hash-loadbalancing/.
Apologies for the inconvenience!
How funny! I was preparing to write a piece on how VMware used the load balancing algorithms in the vSwitch to pick an uplink, but it looks like you’ve beat me to the punch! Good article, and helps reinforce the information I presented in some of my articles on using multiple NICs with IP-based storage:
http://blog.scottlowe.org/2008/10/08/more-on-vmware-esx-nic-utilization/
http://blog.scottlowe.org/2008/07/16/understanding-nic-utilization-in-vmware-esx/
Keep up the good work, Frank!
Thanks for the compliment Scott,
And thanks for posting the links, both articles are excellent and are a must-read!
You can also refer to the best practices guide release by Netapp for VMware deployment with NFS protocol.
Hi Craig,
I haven’t had the chance to read the NetApp documentation, could you post a link to the document?
On Cisco switches you can use the “test” command to determine which link a particular src/dst will use. The syntax looks like:
test etherchannel load-balance interface port-channel number {ip | l4port | mac} [source_ip_add | source_mac_add | source_l4_port] [dest_ip_add | dest_mac_add | dest_l4_port]
Complicated solutions to a non-problem?
Long ago, when EtherChannel and LACP were crafted, we had a very different network environment: multiple protocols, ranging from well behaved protocols like IP tot quick and dirty stuf that made all sorts of assumptions about the network. As a consequence, aggregating Ethernet links needed to insure that the sequence of network frames was maintained.
Parallel links can and will change the order of packets when a long packet is send of link A and a subsequent short packet is send of link B. The short packet arrives first and now leads the long packet.
Today, and especially in a dedicated storage network, we exclusively use IP, a protocol that incorporates fragmentation and reassembly at the IP-layer and has no problem dealing with out-of-order packets. iSCSI is wrapped in TCP, which has the same property: segments may arrive out of order without penalty.
The various algorithms used in load balancing exist solely to insure per-stream packet sequence, hence the use of source and destination (either MAC of IP) addresses. I doubt that this is a requirement in TCP/IP storage networks. As a consequence, load balancing parallel links can simply be based on shortest-queue-first, which is always optimal and deals nicely with broken links.