Re: [PATCH net-next v9 3/6] tun: Introduce virtio-net hash feature

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2025/03/10 13:01, Jason Wang wrote:
On Mon, Mar 10, 2025 at 11:55 AM Jason Wang <jasowang@xxxxxxxxxx> wrote:

On Fri, Mar 7, 2025 at 7:01 PM Akihiko Odaki <akihiko.odaki@xxxxxxxxxx> wrote:

Hash reporting
==============

Allow the guest to reuse the hash value to make receive steering
consistent between the host and guest, and to save hash computation.

RSS
===

RSS is a receive steering algorithm that can be negotiated to use with
virtio_net. Conventionally the hash calculation was done by the VMM.
However, computing the hash after the queue was chosen defeats the
purpose of RSS.

Another approach is to use eBPF steering program. This approach has
another downside: it cannot report the calculated hash due to the
restrictive nature of eBPF steering program.

Introduce the code to perform RSS to the kernel in order to overcome
thse challenges. An alternative solution is to extend the eBPF steering
program so that it will be able to report to the userspace, but I didn't
opt for it because extending the current mechanism of eBPF steering
program as is because it relies on legacy context rewriting, and
introducing kfunc-based eBPF will result in non-UAPI dependency while
the other relevant virtualization APIs such as KVM and vhost_net are
UAPIs.

Signed-off-by: Akihiko Odaki <akihiko.odaki@xxxxxxxxxx>
Tested-by: Lei Yang <leiyang@xxxxxxxxxx>
---
  Documentation/networking/tuntap.rst |   7 ++
  drivers/net/Kconfig                 |   1 +
  drivers/net/tap.c                   |  68 ++++++++++++++-
  drivers/net/tun.c                   |  98 +++++++++++++++++-----
  drivers/net/tun_vnet.h              | 159 ++++++++++++++++++++++++++++++++++--
  include/linux/if_tap.h              |   2 +
  include/linux/skbuff.h              |   3 +
  include/uapi/linux/if_tun.h         |  75 +++++++++++++++++
  net/core/skbuff.c                   |   4 +
  9 files changed, 386 insertions(+), 31 deletions(-)

[...]

+ *
+ * The %TUN_VNET_HASH_REPORT flag set with this ioctl will be effective only
+ * after calling the %TUNSETVNETHDRSZ ioctl with a number greater than or equal
+ * to the size of &struct virtio_net_hdr_v1_hash.

So you had a dependency check already for vnet hdr len. I'd still
suggest to split this into rss and hash as they are separated
features. Then we can use separate data structure for them instead of
a container struct.


Besides this, I think we still need to add new bits to TUNGETIFF to
let userspace know about the new ability.

The userspace can peform TUNGETVNETHASHCAP and see if it results in EINVAL.

Regards,
Akihiko Odaki


Thanks






[Index of Archives]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Share Photos]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux