
On Thursday 17 December 2009, Daniel P. Berrange wrote:
On Wed, Dec 16, 2009 at 07:48:08PM -0600, Anthony Liguori wrote:
The more interesting invocation of vhost-net though is one where the vhost-net device backs directly to a physical network card. In this mode, vhost should get considerably better performance than the current implementation. I don't know the syntax yet, but I think it's reasonable to assume that it will look something like -net tap,dev=eth0. The effect will be that eth0 is dedicated to the guest.
Ok, so in this model you have to create a dedicated ethXX device for every guest, no sharing ?
I think so, but it could be any of * a physical NIC dedicated to the guest, e.g. if you want to run a firewall on that guest and provide connectivity to all other guests to that, or if you have lots of real NICs * an IOV adapter with separate physical or virtual functions * a VMDq adapter that shows multiple queues on the same PCI function as separate network interfaces * a macvlan device in VEPA or bridge mode The creation for each of these is different, but once it's there, using it should be possible in identical ways. I think an important question here is if libvirt should at all be responsible for creating the devices, or just for opening the sockets or taps on them.
Yes, since the hardware doesn't allow for any usable configurability of the number of VFs, we'll guest assume that they have already been setup. Likely the kernel can just enable the max # of VFs at all times.
In macvlan, there is no such limitation. How many would you create?
Another model would be to have libvirt see an SR-IOV adapter as a network pool whereas it handled all of the VF management. Considering how inflexible SR-IOV is today, I'm not sure whether this is the best model.
Agreed, given the hardware limitations I don't see that it is worth the bother.
This new mode is not really what we'd call 'bridging' in libvirt network XML format, so I think we'll want to define a new type of network config for it in libvirt. Perhaps
<network type='physical'> <source dev='eth0'/> </network>
Or type='passthru'
You should also have a parameter mode={'vepa'|'bridge'|'private'} like macvlan now has. Even if SR-IOV nics today only support bridge mode, they should support at least vepa mode in the future. Arnd