You are viewing an old version of this page. View the current version.
Compare with Current
View Page History
« Previous
Version 5
Next »
Introduction
Network throttling is the process of controlling the network access and bandwidth usage based on certain rules. CloudStack controls this behavior by setting network throttling parameter set on VM's nic(s). This parameter is defined as the default data transfer rate in Mbps (Megabits Per Second).
How to configure network throttling in CloudStack
Network throttling rate parameter can be configured in:
- Global Config (network.throttling.rate, vm.network.throttling.rate)
0 means unlimited.
If the value is set to NULL in service/network offerings, it means that we should take the rate from the Global Configuration (network.throttling.rate - used by network offering, vm.network.throttling.rate - used by service offering)
Default throttling values:
- For default Public/Storage/Control/Management network offerings throttling rate is set to 0 (Unlimited).
- For default Guest network offerings throttling rate is set to NULL (and in this case it will be defaulted to Global config value)
Network throttling on different types of CS Virtual Machines
Throttling is being set on per VM's Nic depending on VM's type.
- UserVm can have 1 Default network and 0-n additional networks (optional). For the default VM's nic, we take network throttling rate from the corresponding Service Offering, for all additional networks - from the corresponding Network Offerings.
- For the VR Guest and Public networks we take network throttling from the corresponding Guest Virtual networkOffering. For the VR Control/Management network, we take it from the corresponding System Network Offering.
- For all nics on SSVM/CPVM, throttling rate is Unlimited (not configurable)
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
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));
KVM
TBD - Edison Su, please put the details there
VmWare
TBD - Kelven Yang, please put the details there
HyperV
TBD - Rajesh Battala, please put the details there