The Fear of Network Crashes Due to Noisy Neighbors
After operating a vSphere Cluster for an ERP project for over half a year, I’ve learned a valuable lesson. Whether you have 10Gbps or 25Gbps bandwidth, if you don’t know how to regulate it, your critical virtual machines (VMs) will eventually be crushed by background tasks.
I’ve seen this scenario: Every day at 2 AM, when the backup system (Veeam) starts pushing data, traffic consumes 95% of the uplink. Consequently, databases timeout, and related services hang. This is a classic Noisy Neighbor phenomenon. To solve this permanently without spending money on additional physical NICs, Network I/O Control (NIOC) is the most effective tool available.
Physical Isolation vs. Software-Defined: Which Should You Choose?
Many administrators still debate between two main approaches to ensure network performance:
1. The Traditional Way: Physical Isolation
Dedicated physical network interface cards (NICs) for each traffic type (vMotion, Management, Storage).
- Pros: Total isolation, no resource contention.
- Cons: Consumes switch ports, complex cabling. If a NIC fails, redundancy configuration is cumbersome and wastes resources when the system is idle.
2. The Modern Trend: Using NIOC
This mechanism intelligently divides bandwidth on the same high-speed link.
- Pros: Saves hardware, offers maximum flexibility via vCenter. You can prioritize traffic based on the importance of each application.
- Cons: Requires vSphere Distributed Switch (vDS) and an Enterprise Plus license.
In modern data centers, using a pair of 25Gbps NICs combined with NIOC is gradually replacing the old method of plugging in 8-10 1Gbps NICs.
Deciphering the NIOC v3 Resource Allocation Mechanism
NIOC version 3 operates based on two key concepts that you need to distinguish clearly:
Network Resource Pools
vSphere automatically divides traffic into groups: Management, vMotion, NFS, iSCSI, and Virtual Machine Traffic. You can also create Custom Resource Pools to group specific VMs like Databases or Web Front-ends.
The Trio: Shares, Reservation, and Limit
- Shares: Priority weight during congestion. For example: If Production VMs are set to High (100) and vMotion to Low (25), when the link reaches 100% capacity, vSphere will prioritize Production bandwidth 4 times more than vMotion.
- Reservation: Guaranteed minimum bandwidth. vSphere always reserves this portion for that traffic. However, don’t overdo it, as it occupies resources even when not in use.
- Limit: Bandwidth ceiling. I usually set a Limit for Backup traffic at 2Gbps to ensure it never “swallows” the entire system’s bandwidth.
Steps to Deploy NIOC on a Distributed Switch (vDS)
Note: This feature is not supported on Standard Switches. You must migrate to vDS before proceeding.
Step 1: Enable NIOC
- Open vCenter, go to the Networking tab.
- Right-click the vDS -> Settings -> Edit Summary.
- Under Network I/O Control, select Enabled.
Step 2: Allocate System Resources
In the vDS Configure tab, select Resource Allocation -> System traffic. This is where you set the “rules of the game.”
My practical experience when configuring Shares:
- Virtual machine traffic: High (100) – Always the top priority.
- vMotion traffic: Low (25) – So VM migrations don’t impact users.
- Management traffic: Normal (50) – To ensure vCenter control.
- iSCSI/NFS traffic: High (100) – If you use networked storage.
Step 3: Specific Priority for Database Servers
If you want your DB cluster to have its own “fast lane,” create a Custom Pool:
- Under Network resource pools, click Add.
- Name it
DB_Critical_Pool. - Set Reservation to around 1000 Mbps if you need to guarantee an absolute minimum speed.
Step 4: Apply to the Port Group
Finally, assign the Pool to the Port Group containing the VMs:
- Right-click the Distributed Port Group -> Edit Settings.
- In the General section, under Network resource pool, select
DB_Critical_Pool.
Quick Check using PowerCLI
Instead of manual clicks, I use a script to manage configurations across the entire system. The code below quickly lists the Shares status of various traffic types:
$vDSName = "vDS-Production"
$vDS = Get-VDSwitch -Name $vDSName
# Check NIOC configuration for System Traffic
Get-VDNetworkAdapterService -VDSwitch $vDS | Select-Object NetworkQueuingPolicy, @{N="TrafficType";E={$_.Key}}, Shares, Limit, Reservation | Format-Table -AutoSize
This script helps you immediately identify which entries have excessively high Reservations that waste resources.
3 Crucial Real-World Lessons Not Found in Books
- NIOC only kicks in during congestion: If the link is idle, NIOC won’t interfere. Don’t worry if you don’t see speed changes when the system is under low load.
- The 75% Rule: The total Reservation on a Host should not exceed 75% of the physical NIC’s bandwidth. If you over-provision, you won’t be able to power on more VMs due to insufficient network resources.
- The Importance of vDS: If you are still using Standard Switches, you are completely “blind” to Layer 2 traffic flows. Plan to migrate to vDS as soon as possible.
Mastering NIOC isn’t hard; what matters is understanding your application’s traffic patterns. I hope these insights help your system run smoothly, no matter how “noisy” your neighbors get.

