mbox series

[0/5] Vhost-user: add Virtio RSS support

Message ID 20220408122813.1357045-1-maxime.coquelin@redhat.com (mailing list archive)
Headers show
Series Vhost-user: add Virtio RSS support | expand

Message

Maxime Coquelin April 8, 2022, 12:28 p.m. UTC
The goal of this series is to add support for Virtio RSS
feature to the Vhost-user backend.

First patches are preliminary reworks to support variable
RSS key and indirection table length. eBPF change only adds
checks on whether the key length is 40B, it does not add
support for longer keys.

Vhost-user implementation supports up to 52B RSS key, in
order to match with the maximum supported by physical
NICs (Intel E810). Idea is that it could be used for
application like Virtio-forwarder, by programming the
Virtio device RSS key into the physical NIC and let the
physical NIC do the packets distribution.

DPDK Vhost-user backend PoC implementing the new requests
can be found here [0], it only implements the messages
handling, it does not perform any RSS for now.

[0]: https://gitlab.com/mcoquelin/dpdk-next-virtio/-/commits/vhost_user_rss_poc/

Maxime Coquelin (5):
  ebpf: pass and check RSS key length to the loader
  virtio-net: prepare for variable RSS key and indir table lengths
  virtio-net: add RSS support for Vhost backends
  docs: introduce RSS support in Vhost-user specification
  vhost-user: add RSS support

 docs/interop/vhost-user.rst       |  57 ++++++++++++
 ebpf/ebpf_rss-stub.c              |   3 +-
 ebpf/ebpf_rss.c                   |  17 ++--
 ebpf/ebpf_rss.h                   |   3 +-
 hw/net/vhost_net-stub.c           |  10 ++
 hw/net/vhost_net.c                |  22 +++++
 hw/net/virtio-net.c               |  87 +++++++++++++-----
 hw/virtio/vhost-user.c            | 146 +++++++++++++++++++++++++++++-
 include/hw/virtio/vhost-backend.h |   7 ++
 include/hw/virtio/virtio-net.h    |  16 +++-
 include/migration/vmstate.h       |  10 ++
 include/net/vhost_net.h           |   4 +
 12 files changed, 344 insertions(+), 38 deletions(-)

Comments

Jason Wang April 15, 2022, 5:43 a.m. UTC | #1
在 2022/4/8 20:28, Maxime Coquelin 写道:
> The goal of this series is to add support for Virtio RSS
> feature to the Vhost-user backend.
>
> First patches are preliminary reworks to support variable
> RSS key and indirection table length. eBPF change only adds
> checks on whether the key length is 40B, it does not add
> support for longer keys.
>
> Vhost-user implementation supports up to 52B RSS key, in
> order to match with the maximum supported by physical
> NICs (Intel E810). Idea is that it could be used for
> application like Virtio-forwarder, by programming the
> Virtio device RSS key into the physical NIC and let the
> physical NIC do the packets distribution.
>
> DPDK Vhost-user backend PoC implementing the new requests
> can be found here [0], it only implements the messages
> handling, it does not perform any RSS for now.
>
> [0]: https://gitlab.com/mcoquelin/dpdk-next-virtio/-/commits/vhost_user_rss_poc/


Not directly related to this series. I wonder if vhost-user consider to 
support control virtqueue then all the RSS stuffs could be done at 
vhost-user backend without introducing new commands.

Thanks


>
> Maxime Coquelin (5):
>    ebpf: pass and check RSS key length to the loader
>    virtio-net: prepare for variable RSS key and indir table lengths
>    virtio-net: add RSS support for Vhost backends
>    docs: introduce RSS support in Vhost-user specification
>    vhost-user: add RSS support
>
>   docs/interop/vhost-user.rst       |  57 ++++++++++++
>   ebpf/ebpf_rss-stub.c              |   3 +-
>   ebpf/ebpf_rss.c                   |  17 ++--
>   ebpf/ebpf_rss.h                   |   3 +-
>   hw/net/vhost_net-stub.c           |  10 ++
>   hw/net/vhost_net.c                |  22 +++++
>   hw/net/virtio-net.c               |  87 +++++++++++++-----
>   hw/virtio/vhost-user.c            | 146 +++++++++++++++++++++++++++++-
>   include/hw/virtio/vhost-backend.h |   7 ++
>   include/hw/virtio/virtio-net.h    |  16 +++-
>   include/migration/vmstate.h       |  10 ++
>   include/net/vhost_net.h           |   4 +
>   12 files changed, 344 insertions(+), 38 deletions(-)
>