Red Hat Bugzilla – Bug 632760
RFE: Support for network QoS
Last modified: 2012-06-12 02:36:48 EDT
1. Feature Overview:
Feature Id: 
a. Name of Feature: [6.1 FEAT] Support for QoS in libvirt
b. Feature Description
To control and shape the network traffic between virtual machines it it necessary to integrate QoS
features into libvirt.
2. Feature Details:
Arch Specificity: ---
Affects Kernel Modules: Field does not exist
Delivery Mechanism: Backport
Request Type: Package - Feature from Upstream
d. Upstream Acceptance: Field does not exist
Sponsor Priority P3
f. Severity: high
IBM Confidential: No
Code Contribution: ---
g. Component Version Target:
3. Business Case
This allows customers to maximize efficient usage of their (virtual) network infrastructure.
4. Primary contact at Red Hat:
5. Primary contacts at Partner:
Project Management Contact:
Stephanie A. Glass, email@example.com
Dirk Herrendoerfer, firstname.lastname@example.org
------- Comment From email@example.com 2010-10-04 11:14 EDT-------
Code Upstream Status: Not Started
I'm setting cond nak patch simply to reflect that we will be looking for an upstream patch from IBM if one has not already been submitted.
*** Bug 515696 has been marked as a duplicate of this bug. ***
------- Comment From firstname.lastname@example.org 2010-12-07 04:46 EDT-------
A basic implementation to support QoS via libvirt/cgroups has been posted to https://www.redhat.com/archives/libvir-list/2010-December/msg00140.html, but no comments have been received so far.
------- Comment From email@example.com 2010-12-14 08:22 EDT-------
Given the current state of the discussion on the mailing list, we will defer this feature request to 6.2, but will continue the design and implementation discussion.
Adding to the 6.2 tracker.
------- Comment From firstname.lastname@example.org 2011-05-04 11:02 EDT-------
This no longer is needed. Please quit on your side
*** Bug 696138 has been marked as a duplicate of this bug. ***
The RFE is to limit a particular guest interface to a particular bandwidth, e.g, 100MBps. The test is fairly simple: for example, set up a network with greater than 100MBps bandwidth, assign a guest interface and limit it to 100Mbps, and confirm that you get roughly 100Mbps throughput on that interface.
Patches available and sent upstream:
moving to POST:
This patch series add support for setting traffic shaping and policing
on both domain's interface and network's virtual bridge. Basically,
this is done via 'tc' from iproute2 package. For shaping is HTB used,
for policing we need u32 match selector. Both should be available in
How this works:
On an virtual interface which has limits defined a root qdisc are replaced.
Ingress root for outbound traffic shaping and egress for inbound.
Basically, in inbound traffic policing is applied, on outbound shaping.
New qdiscs are set to limit the traffic to rate set in XML. For shaping
it is possible to set the size of buffer. Accepted values for rate, peak
and burst are integer numbers. Units are kilobytes per second for rate
or kilobytes for size.
Supported devices are VIR_DOMAIN_NET_TYPE_NETWORK, VIR_DOMAIN_NET_TYPE_BRIDGE
Technical note added. If any revisions are required, please edit the "Technical Notes" field
accordingly. All revisions will be proofread by the Engineering Content Services team.
Cause: In some scenarios users wants to shape traffic of a VM, its specific NIC or whole virtual network. It is better if this can be done directly via libvirt which sets virtual networks up, brings up VMs than enforcing user to set it up manually after.
Consequence: Users often ran scripts to set up traffic shaping
Change: Network and interface XML definitions were extended so users can specify average, peak and burst rates and libvirt will set them up on network/VM startup.
Result: Users can now set bandwidth limitation via libvirt.
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.
For information on the advisory, and where to find the updated
files, follow the link below.
If the solution does not work for you, open a new bug report.