]> xenbits.xensource.com Git - libvirt.git/commit
processNicRxFilterChangedEvent: Take appropriate actions for NET_TYPE_NETWORK too
authorMichal Privoznik <mprivozn@redhat.com>
Tue, 14 Apr 2015 09:47:53 +0000 (11:47 +0200)
committerMichal Privoznik <mprivozn@redhat.com>
Wed, 22 Apr 2015 07:50:24 +0000 (09:50 +0200)
commit74acc4cabf07215e97d5bd29612abcaa20398e35
tree0666dbb28dd545e967e78a7c1a6d0e1f6356f6c6
parente128b4a44df49e74c11dde570fba2906a35538dd
processNicRxFilterChangedEvent: Take appropriate actions for NET_TYPE_NETWORK too

Because packets going through the egress from a bridge (where our
bandwidth limiting takes place) have no information about which
interface they came from, the QoS rules that we create instead
use the source MAC address of the packets to make their decisions
about which QDisc the packet should be in.

One flaw in this is that when a guest changed the MAC address it
used, packets from the guest would no longer be put into the
correct QDisc, but would instead be put in an "unprivileged"
class, resulting in the bandwidth "floor" (minimum guaranteed)
being no longer honored.

Now that libvirt has infrastructure to capture and respond to
RX_FILTER_CHANGE events from qemu (sent whenever a guest
interface modifies its MAC address, among other things), we can
notice when a guest MAC address changes, and update the QoS rules
accordingly, so that bandwidth floor is honored even after a
guest MAC address change.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
src/qemu/qemu_driver.c