DPDK usage discussions
 help / color / mirror / Atom feed
From: Stephen Hemminger <stephen@networkplumber.org>
To: ikuzar RABE <ikuzar9295@gmail.com>
Cc: users@dpdk.org
Subject: Re: multi-process support: how to share THE SAME packet between two different processes
Date: Mon, 28 Nov 2022 09:16:43 -0800	[thread overview]
Message-ID: <20221128091643.2c9284b2@hermes.local> (raw)
In-Reply-To: <CACNnN_kx3Fq9mfzP4BncgxZci5YH-rKftMuhYR8kstacjrkB9w@mail.gmail.com>

On Mon, 28 Nov 2022 15:10:39 +0100
ikuzar RABE <ikuzar9295@gmail.com> wrote:

> In this case:  9. DPDK packet capture libraries and tools — Data Plane
> Development Kit 22.11.0 documentation
> <https://doc.dpdk.org/guides/howto/packet_capture_framework.html>, which
> process is responsible of deallocing the memory occupied by a packet ? the
> primary process or the dpdk-dumpcap tool process ?
> if one process deallocates a memory, the second one will point to nothing...
> 
> ikuzar
> 
> i
> 
> Le ven. 25 nov. 2022 à 18:09, Stephen Hemminger <stephen@networkplumber.org>
> a écrit :
> 
> > On Fri, 25 Nov 2022 17:27:46 +0100
> > ikuzar RABE <ikuzar9295@gmail.com> wrote:
> >  
> > > Hi all,
> > >
> > > I would like to know how do you usually proceed to retrieve and share the
> > > same packet read from NIC port between two different processes ? I try to
> > > work in zero-copy way.
> > >
> > > The first process job consists in parsing the packet and make some  
> > protocol  
> > > statistics. The second one dumps the same packet into pcap file for  
> > further  
> > > analysis with wireshark for example.
> > >
> > > I think none of the cases exposed here corresponds to my need: 43.
> > > Multi-process Support — Data Plane Development Kit 22.11.0-rc4
> > > documentation (dpdk.org)
> > > <  
> > https://doc.dpdk.org/guides/prog_guide/multi_proc_support.html#:~:text=Standalone%20DPDK%20processes%20are%20primary,process%20with%20same%20DPDK%20version  
> > .>.
> > > Am I wrong ?
> > >
> > > is there a dpdk-compliant way to do it with threads instead of processes  
> > ?  
> > >
> > > Thank you for your help.
> > >
> > > Regards,
> > >
> > > ikuzar  
> >
> > Use a ring buffer.
> > Why are you reinventing what the pdump library does?
> >  

Please do not top quote on mailing lists.

The DPDK uses the concept of packet ownership (like BSD and Linux kernels).
The mbuf is allocated by the receiving poll mode driver and returned by the rx_burst call.
At that point ownership is in the application.
The application may:

   - free the mbuf immediately
   - pass it to a driver transmit; this passes ownership to the PMD
   - enqueue it in a ring or other mechanism; this passes ownership to the ring reader

The owner, which is a thread in primary or secondary can free the mbuf.
It gets a little more complicated if reference counts are used. In that case:
   - when reference count is decremented to zero, the mbuf is freed
   - if reference count is greater than one, then the mbuf should be treated as read-only.

Most code gets the last thing wrong.

      reply	other threads:[~2022-11-28 17:16 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-11-25 16:27 ikuzar RABE
2022-11-25 17:09 ` Stephen Hemminger
2022-11-28 14:10   ` ikuzar RABE
2022-11-28 17:16     ` Stephen Hemminger [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20221128091643.2c9284b2@hermes.local \
    --to=stephen@networkplumber.org \
    --cc=ikuzar9295@gmail.com \
    --cc=users@dpdk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).