[libvirt] [PATCH 0/5] Interface pools and passthrough mode

Shradha Shah sshah at solarflare.com
Tue Nov 29 15:45:46 UTC 2011


Interface Pools and Passthrough mode:

Current Method:
The passthrough mode uses a macvtap “direct” connection to connect each guest to the network. The physical interface to be used is picked from among those listed in <interface> sub elements of the <forward> element.

The current specification for <forward> extends to allow 0 or more <interface> sub-elements:
Example:
<forward mode='passthrough' dev='eth10'/>
<interface dev='eth10'/>
<interface dev='eth12'/>
<interface dev='eth18'/>
<interface dev='eth20'/>
</forward>

However with an ethernet card with 64 VF's or more, the above method gets tedious on the system.

On the other hand, just parameterizing a string (eth%d) is inadequate, eg, when there are multiple non-contiguous ranges.

Proposed Method:
The 5 patches provided along with this introductory e-mail 

i) Introduce a structure to store the state of all the virtual functions attached to each physical function  
ii) Find a free virtual function given the physical function.

The forward specification will hence only mention the physical function as the interface sub element:
Example:
<forward mode='passthrough' dev='eth2'/>
<interface dev='eth2'/>
</forward>

Shradha Shah (5):
  Moving the declaration of _pciDevice and _pciDeviceList to pci.h
  Added function pciSysfsFile to enable access to the PCI SYSFS files.
  Adding functions virNetDevGetVirtualFunctions and virNetDevGetNetName
        virNetDevGetVirtualFunctions: Gets the BDF of all the Virtual
    Functions given a physical function     virNetDevGetNetName: Gets
    the interface name of the PCI Device.
  Addition of a new device structure to store the state of a Virtual
    Function     Modifications to the Physical Device Structure to
    store state of its Virtual Functions
  If a system has 64 or more VF's, it is quite tedious to mention each
    VF in the interface pool.     The following modification find a
    Free VF given a Physical Function when mode=passthrough.     We
    also save the state of each VF.     Hence modifications to
    networkAllocateActualDevice, networkNotifyActualDevice and
    networkReleaseActualDevice     were required.     The following
    patch does just that.

 src/conf/network_conf.c     |   19 ++++-
 src/conf/network_conf.h     |   10 ++
 src/network/bridge_driver.c |  208 +++++++++++++++++++++++++++++++++++++------
 src/util/pci.c              |   52 ++++-------
 src/util/pci.h              |   36 ++++++++
 src/util/virnetdev.c        |   89 ++++++++++++++++++
 src/util/virnetdev.h        |   10 ++
 7 files changed, 359 insertions(+), 65 deletions(-)

-- 
1.7.4.4




More information about the libvir-list mailing list