Why doesn’t Microsoft Network Load Balancing spread traffic evenly across its cluster members?
The short answer: It isn’t designed to, Network Load Balancing is a cool name but it doesn’t accurately describe what it does.
The longer answer: NLB doesn’t check for load on servers to determine how to forward traffic from the Virtual IP (VIP). It’s balancing is designed to be a statistically even load balance for a large client population making many small requests NLB is designed for high throughput; it will use Layer2 broadcasts to get the traffic to all nodes in the cluster. This traffic is then sent to the NLB driver on each node for filtering. All nodes will perform a statistical mapping to determine which node should handle the packet. The winning node forwards the packet up the network stack to TCP/IP, and the other nodes discard it. Filtering traffic like this is faster than routing it. The statistical mapping is biased on IP address, port number and some pfm (assuming no affinity is set). This is why we don’t truly see a balance in NLB but a fast diffusion of traffic.