On 2023/07/20 11:20, Jason Wang wrote:
On Wed, Jul 19, 2023 at 9:59 AM Yui Washizu <yui.wash...@gmail.com> wrote:
This patch series is the first step towards enabling
hardware offloading of the L2 packet switching feature on virtio-net device to 
host machine.
We are considering that this hardware offloading enables
the use of high-performance networks in virtual infrastructures,
such as container infrastructures on VMs.

To enable L2 packet switching by SR-IOV VFs, we are considering the following:
- making the guest recognize virtio-net devices as SR-IOV PF devices
   (archived with this patch series)
- allowing virtio-net devices to connect SR-IOV VFs to the backend networks,
   leaving the L2 packet switching feature to the management layer like libvirt
Could you please show the qemu command line you want to propose here?


I am considering how to specify the properties of VFs to connect SR-IOV VFs to the backend networks.


For example:


qemu-system-x86_64 -device pcie-root-port,port=8,chassis=8,id=pci.8,bus=pcie.0,multifunction=on
                   -netdev tap,id=hostnet0,vhost=on
                   -netdev tap,id=vfnet1,vhost=on # backend network for SR-IOV VF 1                    -netdev tap,id=vfnet2,vhost=on # backend network for SR-IOV VF 2                    -device virtio-net-pci,netdev=hostnet0,sriov_max_vfs=2,sriov_netdev=vfnet1:vfnet2,...


In this example, we can specify multiple backend networks to the VFs
by adding "sriov_netdev" and separating them with ":".
Additionally, when passing properties like "rx_queue_size" to VFs, we can utilize new properties, such as "sriov_rx_queue_size_per_vfs," to ensure that the same value is passed to all VFs.

I'm still considering about how to specify it, so please give me any comments if you have any.


   - This makes hardware offloading of L2 packet switching possible.
     For example, when using vDPA devices, it allows the guest
     to utilize SR-IOV NIC embedded switch of hosts.
This would be interesting.

Thanks

This patch series aims to enable SR-IOV emulation on virtio-net devices.
With this series, the guest can identify the virtio-net device as an SR-IOV PF 
device.
The newly added property 'sriov_max_vfs' allows us to enable the SR-IOV feature
on the virtio-net device.
Currently, we are unable to specify the properties of a VF created from the 
guest.
The properties are set to their default values.
In the future, we plan to allow users to set the properties.

qemu-system-x86_64 --device virtio-net,sriov_max_vfs=<num>
# when 'sriov_max_vfs' is present, the SR-IOV feature will be automatically 
enabled
# <num> means the max number of VF on guest

Example commands to create VFs in virtio-net device from the guest:

guest% readlink -f /sys/class/net/eth1/device
  /sys/devices/pci0000:00/0000:00:02.0/0000:01:00.0/virtio1
guest% echo "2" > /sys/devices/pci0000:00/0000:00:02.0/0000:01:00.0/sriov_numvfs
guest% ip link show
  eth0: ....
  eth1: ....
  eth2: .... #virtual VF created
  eth3: .... #virtual VF created

Please note that communication between VF and PF/VF is not possible by this 
patch series itself.

Yui Washizu (1):
   virtio-pci: add SR-IOV capability

  hw/pci/msix.c                  |  8 +++--
  hw/pci/pci.c                   |  4 +++
  hw/virtio/virtio-pci.c         | 62 ++++++++++++++++++++++++++++++----
  include/hw/virtio/virtio-pci.h |  1 +
  4 files changed, 66 insertions(+), 9 deletions(-)

--
2.39.3


Reply via email to