Mellanox Connect-x 6 Dx VirtIO and vDPA

Hi
I am working with proxmox hypervisors since a few years, 5.3 , 6.2 and now 7.x
considering that we virtualize routers we are always looking for better packet processing performance.
After some reseach we decide to focus on hardware acceleration solution based on mellanox connectx-5 and 6
For this purpose we plugged a connectx-6 card into a HPE DL360Gen10 server (16 cores, 768GB ram), upgrade kernel to pve-kernel-5.15.x and compiling MLNX-OFED 5.x

First we have implemented SRIOV with representor interface on a PVE7 node (eswitch mod)
It is easy to deploy and very performant but non hotplug ready and non scalable, 256 VF max (mellanox lies in technical specs of connectx cards)
however if for someone the constraints are acceptable it is very functional and offload with tc works very well (zero interrupts on hypervisor !)
Another important constaint is the guest OS need to support mlx5 driver.

Because of those contraints now we are exploring an other setup based on VDPA and mlnx scalable function
For the moment I have realized a POC I can say it works, guest OS have virtio driver, it is totally transparent.
But it is very early to say more... because I encounter kernel stability issues and the documentations or howto are very poor or simply inexistant

because my time is limited and the packet processing demand increases as time passes I am looking for a partner to complete this work
the subject is vast and very experimental, I will post when I will have more solid information
contact me in private if you want to discuss it
++
 
Hi
I am working with proxmox hypervisors since a few years, 5.3 , 6.2 and now 7.x
considering that we virtualize routers we are always looking for better packet processing performance.
After some reseach we decide to focus on hardware acceleration solution based on mellanox connectx-5 and 6
For this purpose we plugged a connectx-6 card into a HPE DL360Gen10 server (16 cores, 768GB ram), upgrade kernel to pve-kernel-5.15.x and compiling MLNX-OFED 5.x

First we have implemented SRIOV with representor interface on a PVE7 node (eswitch mod)
It is easy to deploy and very performant but non hotplug ready and non scalable, 256 VF max (mellanox lies in technical specs of connectx cards)
however if for someone the constraints are acceptable it is very functional and offload with tc works very well (zero interrupts on hypervisor !)
Another important constaint is the guest OS need to support mlx5 driver.

Because of those contraints now we are exploring an other setup based on VDPA and mlnx scalable function
For the moment I have realized a POC I can say it works, guest OS have virtio driver, it is totally transparent.
But it is very early to say more... smarttubenext because I encounter kernel stability issues and the documentations or howto are very poor or simply inexistant

because my time is limited and the packet processing demand increases as time passes I am looking for a partner to complete this work
the subject is vast and very experimental, I will post when I will have more solid information
contact me in private if you want to discuss it
++
I have tried this and my issue got solved.
 
Hi
I am working with proxmox hypervisors since a few years, 5.3 , 6.2 and now 7.x
considering that we virtualize routers we are always looking for better packet processing performance.
After some reseach we decide to focus on hardware acceleration solution based on mellanox connectx-5 and 6
For this purpose we plugged a connectx-6 card into a HPE DL360Gen10 server (16 cores, 768GB ram), upgrade kernel to pve-kernel-5.15.x and compiling MLNX-OFED 5.x

First we have implemented SRIOV with representor interface on a PVE7 node (eswitch mod)
It is easy to deploy and very performant but non hotplug ready and non scalable, 256 VF max (mellanox lies in technical specs of connectx cards)
however if for someone the constraints are acceptable it is very functional and offload with tc works very well (zero interrupts on hypervisor !)
Another important constaint is the guest OS need to support mlx5 driver.

Because of those contraints now we are exploring an other setup based on VDPA and mlnx scalable function
For the moment I have realized a POC I can say it works, guest OS have virtio driver, it is totally transparent.
But it is very early to say more... because I encounter kernel stability issues and the documentations or howto are very poor or simply inexistant

because my time is limited and the packet processing demand increases as time passes I am looking for a partner to complete this work
the subject is vast and very experimental, I will post when I will have more solid information
contact me in private if you want to discuss it
++
do you have any documentation or tutorial to share ? ( VDPA and mlnx scalable function)

I'm curious to see if it's working only with ovs or also linux bridge., virtio + vhost-net or virtio + vhost-user , ...
 
Last edited:
Hi Spirit,
First I recommand some Mellanox wiki pages
Second one is related kernel vdpa device ;)

https://github.com/Mellanox/scalablefunctions/wiki
https://github.com/Mellanox/scalablefunctions/wiki/Upstream-how-to-use-SF-kernel-vdpa-device
https://github.com/Mellanox/scalablefunctions/wiki/Upstream-kernel-configuration
https://github.com/Mellanox/scalablefunctions/wiki/Upstream-step-by-step-guide

Concerning OFED installation download latest iso file on nvidia site and install needed package

https://network.nvidia.com/products/infiniband-drivers/linux/mlnx_ofed/

As you want I could give you by email a detailed tutorial for testing SF on PVE7
For now let s keep in mind it is very experimental et unstable (in progress...)
 
Last edited:
Hi Spirit,
First I recommand some Mellanox wiki pages
Second one is related kernel vdpa device ;)

https://github.com/Mellanox/scalablefunctions/wiki
https://github.com/Mellanox/scalablefunctions/wiki/Upstream-how-to-use-SF-kernel-vdpa-device
https://github.com/Mellanox/scalablefunctions/wiki/Upstream-kernel-configuration
https://github.com/Mellanox/scalablefunctions/wiki/Upstream-step-by-step-guide

Concerning OFED installation download latest iso file on nvidia site and install needed package

https://network.nvidia.com/products/infiniband-drivers/linux/mlnx_ofed/

As you want I could give you by email a detailed tutorial for testing SF on PVE7
For now let s keep in mind it is very experimental et unstable (in progress...)
you can send me a mail to aderumier@odiso.com

I was asking about ovs, because I have seen redhat tutorial without ovs or bridge,

https://www.redhat.com/en/blog/hands-vdpa-what-do-you-do-when-you-aint-got-hardware

Code:
 -netdev type=vhost-vdpa,vhostdev=/dev/vhost-vdpa-0,id=vhost-vdpa1 \
 -device virtio-net-pci,netdev=vhost-vdpa1,mac=00:e8:ca:33:ba:05,\

seem to be the vhost-vdpa mode
https://patchwork.kernel.org/project/qemu-devel/patch/20200704182750.1088103-41-mst@redhat.com/


but it seem that 2 others mode exist
vhost-kernel && vhost-user (maybe for ovs)

I'll try to read qemu documentation next week.

but they are also a vhost-user mode with ovs
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!