[libvirt] traffic control

Peter V. Saveliev peet at redhat.com
Fri May 17 11:07:02 UTC 2013


…

Hello.

I would like to start a discussion about network SLA mechs in libvirt.

Right now, as I understand, libvirt is managing traffic controls, e.g. 
bandwitdh limitation, calling external routines (ip/tc). This approach 
has its own drawbacks, including the need to parse text output of 
external commands and also some complexity with the current state 
identification — the queueing discipline can be changed on the interface 
in runtime outside of libvirt.

But I would like to propose another approach — not dropping the previous 
one, just as an option, maybe. Not so long time ago I started a project 
[1] that works with netlink directly and can provide standalone daemon, 
that manages interface properties, including queueing disciplines. 
Working with netlink events, it is in permanent sync with the current 
interface statuses w/o any polling. So maybe it would make sense to use 
this daemon — e.g. with JSON or XML-RPC over SSL/TLS, or with any other 
RPC that's preferred by libvirt.

That approach can provide:

* more high-level API, that will keep libvirt off the need to compute 
rule and filter handlers, hierarchy and so on — we would be able to 
implement more complex traffic control schemes in more easy way

* generally speaking, an RPC API is more easy to use, than the execution 
of external binary file and parsing text output, and `tc` is not the 
easiest command to automate.

If it sounds reasonably enough, we can discuss the overall scheme, 
communication and API details that would be more comfortable to libvirt 
and so on.

So, any comments?

[1] — https://github.com/svinota/pyroute2
-- 
Peter V. Saveliev




More information about the libvir-list mailing list