Hi All, Have a Qs related to-> access to different ports on the same NIC by 2 DPDK applications. Setup: 4-Port 10 Gig NIC card with ports bound for DPDK usage. With intel’s igb_uio kernel driver (used for binding NIC’s ports) using dpdk-setup.sh, at the /dev level, I see 4 device paths created, /dev/uio0, /dev/uio1, /dev/ui02, /dev/uio3 And I was able to run 2 DPDK applications concurrently(by blacklisting the ports in EAL parameters), and they were able to take ownership of different ports on the same NIC. For example DPDK_APP1 can take access of ports->0,1 and DPDK_APP2 can take access of ports->2,3. Currently, I am using another DPDK app that relies on binding to VFIO driver. So I am trying to switch to binding NIC’s 4 ports to VFIO driver. Enabled VTIO in BIOS and added intel_iommu=on in kernel boot-param in GRUB. After binding all 4 ports to VFIO driver, using dpdk-setup,sh, at the /dev level, I only see these 2 device paths created-> /dev/vfio/vfio(control channel) and /dev/vfio/1(essentially just 1 path). I am able to run one DPDK application, for example-> PacketGen tool. But not able to run 2 DPDK applications concurrently accessing different ports on the same NIC, due to DPDK application not being able to get access to the ports. For example, if I launch DPDK_APP1 first, it can get access to the ports, but DPDK_APP2 is NOT able to get access, and vice-versa. Note that both apps are trying to access different ports on the same NIC, and also ports have been black-listed as part of EAL params to the DPDK apps. I know this is possible with igb_uio driver. Please let me know, if it is possible to do this when ports are bound to VFIO driver. Thanks, Sudha
On Thu, 20 May 2021 13:34:35 -0700
Sudharshan Krishnakumar <sudhar.ckrishna@gmail.com> wrote:
> Hi All,
>
> Have a Qs related to-> access to different ports on the same NIC by 2 DPDK
> applications.
>
>
>
> Setup: 4-Port 10 Gig NIC card with ports bound for DPDK usage.
>
>
>
> With intel’s igb_uio kernel driver (used for binding NIC’s ports) using
> dpdk-setup.sh, at the /dev level, I see 4 device paths created,
>
> /dev/uio0, /dev/uio1, /dev/ui02, /dev/uio3
>
>
>
> And I was able to run 2 DPDK applications concurrently(by blacklisting the
> ports in EAL parameters), and they were able to take ownership of different
> ports on the same NIC.
>
> For example DPDK_APP1 can take access of ports->0,1 and DPDK_APP2 can take
> access of ports->2,3.
>
>
>
> Currently, I am using another DPDK app that relies on binding to VFIO
> driver.
>
>
>
> So I am trying to switch to binding NIC’s 4 ports to VFIO driver.
>
>
>
> Enabled VTIO in BIOS and added intel_iommu=on in kernel boot-param in GRUB.
>
>
>
> After binding all 4 ports to VFIO driver, using dpdk-setup,sh, at the /dev
> level, I only see these 2 device paths created-> /dev/vfio/vfio(control
> channel)
>
> and /dev/vfio/1(essentially just 1 path).
>
>
>
> I am able to run one DPDK application, for example-> PacketGen tool.
>
> But not able to run 2 DPDK applications concurrently accessing different
> ports on the same NIC, due to DPDK application not being able to get access
> to the ports.
>
> For example, if I launch DPDK_APP1 first, it can get access to the ports,
> but DPDK_APP2 is NOT able to get access, and vice-versa.
>
> Note that both apps are trying to access different ports on the same NIC,
> and also ports have been black-listed as part of EAL params to the DPDK
> apps.
>
> I know this is possible with igb_uio driver.
>
>
>
> Please let me know, if it is possible to do this when ports are bound to
> VFIO driver.
>
> Thanks,
>
> Sudha
The issue is that the IOMMU can't map two different areas at once
to same device. You might be able to use DPDK primary/secondary process
model to do this.
Thanks for your inputs. So, does this mean, when ports are bound to VFIO
driver(which uses IOMMU), we can
run 2 DPDK apps concurrently, only if the 2 apps are accessing ports on 2
different Network cards.
In other words, when ports are bound to VFIO driver, if 2 DPDK apps are
running concurrently on the same system,
then we need 2 Network cards installed on that system.
So, I am guessing with 2 Network cards, under /dev, they would enumerate as
2 distinct paths, for example-> /dev/vfio/1 and /dev/vfio/2.
Is this a correct understanding, please let me know.
On Thu, May 20, 2021 at 1:54 PM Stephen Hemminger <
stephen@networkplumber.org> wrote:
> On Thu, 20 May 2021 13:34:35 -0700
> Sudharshan Krishnakumar <sudhar.ckrishna@gmail.com> wrote:
>
> > Hi All,
> >
> > Have a Qs related to-> access to different ports on the same NIC by 2
> DPDK
> > applications.
> >
> >
> >
> > Setup: 4-Port 10 Gig NIC card with ports bound for DPDK usage.
> >
> >
> >
> > With intel’s igb_uio kernel driver (used for binding NIC’s ports) using
> > dpdk-setup.sh, at the /dev level, I see 4 device paths created,
> >
> > /dev/uio0, /dev/uio1, /dev/ui02, /dev/uio3
> >
> >
> >
> > And I was able to run 2 DPDK applications concurrently(by blacklisting
> the
> > ports in EAL parameters), and they were able to take ownership of
> different
> > ports on the same NIC.
> >
> > For example DPDK_APP1 can take access of ports->0,1 and DPDK_APP2 can
> take
> > access of ports->2,3.
> >
> >
> >
> > Currently, I am using another DPDK app that relies on binding to VFIO
> > driver.
> >
> >
> >
> > So I am trying to switch to binding NIC’s 4 ports to VFIO driver.
> >
> >
> >
> > Enabled VTIO in BIOS and added intel_iommu=on in kernel boot-param in
> GRUB.
> >
> >
> >
> > After binding all 4 ports to VFIO driver, using dpdk-setup,sh, at the
> /dev
> > level, I only see these 2 device paths created-> /dev/vfio/vfio(control
> > channel)
> >
> > and /dev/vfio/1(essentially just 1 path).
> >
> >
> >
> > I am able to run one DPDK application, for example-> PacketGen tool.
> >
> > But not able to run 2 DPDK applications concurrently accessing different
> > ports on the same NIC, due to DPDK application not being able to get
> access
> > to the ports.
> >
> > For example, if I launch DPDK_APP1 first, it can get access to the ports,
> > but DPDK_APP2 is NOT able to get access, and vice-versa.
> >
> > Note that both apps are trying to access different ports on the same NIC,
> > and also ports have been black-listed as part of EAL params to the DPDK
> > apps.
> >
> > I know this is possible with igb_uio driver.
> >
> >
> >
> > Please let me know, if it is possible to do this when ports are bound to
> > VFIO driver.
> >
> > Thanks,
> >
> > Sudha
>
> The issue is that the IOMMU can't map two different areas at once
> to same device. You might be able to use DPDK primary/secondary process
> model to do this.
>
On Thu, 20 May 2021 14:19:13 -0700 Sudharshan Krishnakumar <sudhar.ckrishna@gmail.com> wrote: > Thanks for your inputs. So, does this mean, when ports are bound to VFIO > driver(which uses IOMMU), we can > run 2 DPDK apps concurrently, only if the 2 apps are accessing ports on 2 > different Network cards. > In other words, when ports are bound to VFIO driver, if 2 DPDK apps are > running concurrently on the same system, > then we need 2 Network cards installed on that system. > So, I am guessing with 2 Network cards, under /dev, they would enumerate as > 2 distinct paths, for example-> /dev/vfio/1 and /dev/vfio/2. > Is this a correct understanding, please let me know. Groups are explained here. https://www.kernel.org/doc/Documentation/vfio.txt The VFIO is about isolation and if two processes are trying to use the same group they are not isolated.