[libvirt] Network device abstraction aka virtual switch - V3

Laine Stump laine at laine.org
Sun Jul 3 05:35:56 UTC 2011

On 06/16/2011 09:56 PM, Christian Benvenuti (benve) wrote:
> Laine Stump wrote:
>> Interface Pools
>> ---------------
>> In many cases, a single host network may have multiple physical
>> network devices associated with it (especially in the case of an
>> SRIOV-capable ethernet card, which will have several "virtual
>> functions" associated with a single physical ethernet connection). The
>> host will at least want to balance the load of multiple guests between
>> these multiple devices, and may even require (in the case of
>> passthrough mode, for example) that only a single guest interface be
>> attached to each host device.
> Even though vnlink does not use 'passthrough' (it uses 'private' mode),
> it
> actually comes with the same requirement: the lower device cannot be
> shared.
>> In the case of mode='passthrough', only one guest interface can be
>> connected to a device at a time.
> In the case of BH that I mentioned above, the libvirt/BH code does
> not currently enforce it, but it does have the same requirement.


Can this (the fact that the desired mode of operation will not allow for 
sharing of interfaces) be determined absolutely from the existing config 
information? In other words, is it safe to say that any time you have 
the combination of "direct"/"private"/"802.1Qbh" that interfaces can't 
be shared, but that for direct/private/<not-802.1Qbh> they *can* be shared?

I'm currently writing the code that picks an interface to use from the 
pool; the information I have is roughly equivalent to what gets 
configured for current libvirt domain interfaces:

| <interface type='direct'>
| <source dev='XYZ' mode='private'/>
| <virtualport type='802.1Qbh">
| <parameters
| </virtualport>
| </interface>

I want to avoid adding an explicit config item to the XML to 
allow/prevent interface sharing if at all possible (I already prevent 
sharing for passthrough mode; if adding a check for private mode with 
virtualport type='802.1Qbh' would be enough, then I'm happy)

More information about the libvir-list mailing list