Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.



Here is the picture explaining how throttling set on the VR's guest nic and VM's nic, affect traffic flows a) from User VM to User VM b) from User VM to internet (traffic goes through VR in this case)

How throttling is set on Hypervisor level

On the hypervisor side, network throttling is begin set on a VM's NIC level. Implementation depends on the hypervisor. For example, on Xen its set per VM's vif; on vmWare - port group is configured on vSwitch, and the group gets assigned to the vm.

Currently CloudStack network throttling is supported on the hypervisors below - implementation details are included.


XenServer programs QOS on VIF object,

            vifr.qosAlgorithmType = "ratelimit";
            vifr.qosAlgorithmParams = new HashMap<String, String>();
            // convert mbs to kilobyte per second
            vifr.qosAlgorithmParams.put("kbps", Integer.toString(nic.getNetworkRateMbps() * 128));


TBD - Edison Su, please put the details there


Under VMware, network throttling is implemented through traffic shaping control at portgroup level, all VMs (NICs) connected to the same portgroup share the same traffic shaping policy. Following gives an example on how traffic shaping policy is created and used when creating the portgroup.

HostNetworkTrafficShapingPolicy shapingPolicy = null;
if(networkRateMbps != null && networkRateMbps.intValue() > 0) {
    shapingPolicy = new HostNetworkTrafficShapingPolicy();

    // give 50% premium to peek


   // allow 5 seconds of burst transfer


// creating a port group with specified shaping policy

hostMo.createPortGroup(vSwitch, networkName, vid, secPolicy, shapingPolicy);


TBD - Rajesh Battala, please put the details there

In Hyper-V, network throttling is implemented by applying the network rate value on the VM Nic Bandwidth Management property.

Bandwith Management Property allows to set Minimum and Maximum Bandwidth values.

when network rate is infinite, this Bandwidth property will be disabled (which means there is no limit)

when network rate value is set, then Minimum Bandwidth will be set to "0" Zero and Maximum Bandwidth will be set to the value provided in Mbps metric.

ROOT.virtualization.v2.Msvm_EthernetSwitchPortBandwidthSettingData.cs class  is used to manage the bandwidth settings of VM Nic

Method: SetBandWidthLimit(ulong limit, EthernetPortAllocationSettingData portPath) in Agent code will set the bandwidth/throttling rate on the Nic by reading the network.rate value received from the agent command.