On Wed, 30 Apr 2025 at 19:58, Stephen Hemminger wrote: > On Wed, 30 Apr 2025 13:00:53 +0530 > Prashant Upadhyaya wrote: > > > > With DPDK on Azure, an application should never use the VF directly. > > > It needs to use either netvsc PMD which handles both the vmbus (slow > path) > > > and VF (fast path) combined. Or use the older vdev_netvsc/failsafe/tap > > > combination. > > > The latter uses a virtual device to make a failsafe PMD which then does > > > a combination of TAP (via kernel slow path) and MLX5 VF. The failsafe > PMD > > > is what is exposed for application usage. > > > > > > The limitations are not explicitly mentioned in the documentation but: > > > - don't use VF directly in application > > > - there is no support for bifurcation where some packets go to kernel > > > and some to DPDK > > > - there is only very limited support for rte_flow; that is with > failsafe > > > PMD > > > (not netvsc PMD) and the limitations are that the emulation of > rte_flow > > > in the TAP device only supports a few things. > > > > > > > Thanks Stephen, the above information was very instructive. > > If I do use the Netvsc PMD with the latest DPDK, will my DPDK app get the > > non IP packets like ARP, please confirm. > > I quickly tried the Netvsc PMD but don't seem to be getting the ARP > packets > > in still. > > When you mention "The failsafe PMD is what is exposed for application > > usage", what is the meaning of this, are the apps expected to use > failsafe > > PMD, please suggest. > > > > Regards > > -Prashant > > ARP handled differently in virtual network environments. The ARP packets > sent > get consumed and replied to by the network infrastructure (in all virtual > networks > not just Azure). Non-IP packets always show up on the synthetic VMBus > device. > > Current docs are here: > > https://learn.microsoft.com/en-us/azure/virtual-network/setup-dpdk?tabs=redhat > > See vdev_netvsc for picture. > https://doc.dpdk.org/guides/nics/vdev_netvsc.html > > > Thanks again Stephen. I finally was able to run the netvsc pmd and it is detecting the ports. However, for every accelerated networking interface of Azure, it detects 'two' ports. This is presumably for controlling both the slow and fast path ? This poses an issue for my app as it wanted to see only 'one' interface in its control as a lot of business logic is kind of tied to it. So a question -- am I observing correctly that DPDK, in case of netvsc, will enumerate two ports for each accelerated networking interface ? Regards -Prashant