Network I/O gives you control over you different virtual network resources at the time of contention. It is the pool of network ports or uplinks where you can set you limit and shares. Network I/O resources pool are work like the DRS resource pools. It is enabled by default in 5.5.
User Case1: You might want to control network I/O for a specific type of traffic that spans multiple port groups without having to manage settings on every port group. You also might need to establish a priority level for certain types of traffic, so that critical network traffic is minimally impacted when network contention occurs.
User case2: There is another major use case these days for network I/O is when you have 10G network in your environment and you want to use it for all of your virtual infrastructure.
There are two types of Network Resource pool
System defined resource pool: it is predefined network resource pools with comes with the vSphere. You cannot delete or assign these resource pools to a port group. But you can adjust their priority level according to your needs. Following are the list of system defined resource pools.
- NFS Traffic
- Management Traffic
- vMotion Traffic
- Virtual SAN Traffic
- vSphere Replication (VR) Traffic
- ISCSI Traffic
- Virtual Machine Traffic
- FT Traffic
In web client you can find it from Home-> Networking-> Select your vDS-> Manage-> Resources Allocation
User default resource pool: it is custom defined resource pools created by the user.it can be deleted or assign to a specific Port groups. It gives you the ability to set a QoS (Quality of Service) tag, so that the physical network switches understand the priority given to various traffic types.
Things to Know.
- Network I/O Control feature only comes with vDS. Which comes with Enterprise plus license.
- System defined Network resource pool automatically recognize the different type of traffic and control them according to the define share/limits. But user defined resources pool are only applicable and control the resources after its assignment to the portgroup.
- At the time of contention, VMs and VR resource pool gets double the resource capacity than the other system defined resources.
- Similar to compute shares, shares are only relative to the other active shares using the same resource. Means share value is calculated on the basis of running resource types.
- Network I/O limits host on each individual uplink level. This means that in network resource pool when host limit is set for vMotion of 2000Mbps, vMotion is limited to transmit a maximum of 2Gb per uplink. In the case of a Multi-NIC vMotion configuration (2NICs) the maximum traffic vMotion can issue to the virtual NICs is 4Gb
- Network I/O limit only apply to ingress traffic (from VM to vDS). Means limit only effect the native traffic coming from active VM to Host or the vMotion intended on the Host
How shares are calculated?
Let’s explain you with an example. Suppose I have 1G network in our environment and I am using only four type of service in our virtual infrastructure I want to limit them when the contention occurs. Following are the services are their share value.
- VM (100 Share Value)
- IP Storage (100 Share Value)
- Management (25 Share Value)
- vMotion (50 Share Value)
By default there are four types of share value available in the resource pools
- High can set 100 Share Value
- Normal can set 50 Share Value
- Low can 25 Share value
- Of course you can set custom value as well from number 1-100.
As you know vMotion are type of traffic which are only operational when it’s needed. So let’s keep this in mind. We calculate the Network share of every traffic type with vMotion and without vMotion operational. Following are the resource value calculation formula
Formula: (Calculated Resource Share value/Sum of all Resources share value)*Total Network Bandwidth in Mbps)
Case 1: when vMotion traffic is operational (Worst case).
We have our share values VM (100), IPStorage (100), Management (25), vMotion respectively. So put them in the formula.
“VM” Total Share Value = ((100/100+100+25+50)*1000) = 364 Mbps Approximately
“IPStorage” Total Share Value = ((100/100+100+25+50)*1000) = 364 Mbps Approximately
“Management” Total Share Value = ((25/100+100+25+50)*1000) = 90 Mbps Approximately
“vMotion” Total Share Value = ((50/100+100+25+50)*1000) = 182 Mbps Approximately
NOTE: divided 1000 is the value of 1G network in Mbps
Case 2: when vMotion traffic is not operational (Best case).
We have our share values VM (100), IPStorage (100), Management (25), vMotion respectively. When vMotion is not operational them we cannot include his value in the calculation. So put accordingly in the formula.
“VM” Total Share Value = ((100/100+100+25)*1000) = 444 Mbps Approximately
“IPStorage” Total Share Value = ((100/100+100+25)*1000) = 444 Mbps Approximately
“Management” Total Share Value = ((25/100+100+25)*1000) = 112 Mbps Approximately
NOTE: divided 1000 is the value of 1G network in Mbps
How to Configure User Defined network pools?
Configure a Network I/O Control to provide High shares for all “Production VMs”, normal to Dev VMs and Low shares for all RND VMs. One portgroup are used for Production VMs, Dev and RND VMs each with named “PG-VM-Prod”, “PG-VM-Dev” and PG-VM-RND respectively. The VLAN ID of each is uniquely assigned from 10 to 15.
Step 1- Define the Resources Pools
To add a User define Resource Pool from Web Client Home-> Networking-> Select your vDS-> Manage -> Resources Allocation-> Click on “+” Sign to add new Resource Pool.
Create the “First Resources Pool” for production VMs. Set a name “Production VMs” and Physical Adapter Shares value to “High”-> Click “Ok”.
Verify your created Resources Pool
Next create the “Second Resources Pool” for Dev VMs. Set a name “Dev VMs” and Physical Adapter Shares value to “Normal”-> Click “Ok”.
Next create the “Third Resources Pool” for RND VMs. Set a name “RND VMs” and Physical Adapter Shares value to “Low”-> Click “Ok”.
Now we have created all the resources pool as we need as per the given example. Let’s look at them once.
From Web Client:
From Classic Client:
Step 2- Assign User defined Resources Pools to Port Groups
If you already have the port groups which you want to use for these user defined resources Pool then assign them the User defined Resource Pools. For sake of this example I already created three Port Groups on my vDS with named “PG-VM-Prod” with VLAN 10 ,”PG-VM-Dev” with VLAN 11 and “PG-VM-RND” with VLAN 12 as given in the example.
You can see it from you Network -> Select you vDS.
Let’s assign them the defined Resource Pools one by one.
Right Click on the any Port Group first-> Choose “Edit Settings”. In my case I choosed “PG-VM-Dev”
In Settings-> General -> “Network Resource pool” Section, Select your user defined Pool from the Drop Down as highlighted.
Similarly assign the other two defined Resource Pool to their respective Port Groups.
Little tip -> Make sure your required VMs are connected to the respective PGs. TO check the VMs connected to a Prot Group -> Click on to the Portgroup-> Related Objects-> Virtual Machines.