DPDK usage discussions
 help / color / mirror / Atom feed
From: Boris Ouretskey <borisusun@gmail.com>
To: users@dpdk.org
Subject: DPDK server packets with AF_PACKET driver are not received by the client connected to the same virtual bridge.
Date: Tue, 8 Nov 2022 21:51:15 +0200	[thread overview]
Message-ID: <CAG4AAQ2Oc8Ln0Bn++t1C2eAx5FYMe9+qnB45gAs0ckBoQAUu4Q@mail.gmail.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 2481 bytes --]

Hi

I am trying to run a docker based system in one VM, with some servers using
the DPDK and facing a very strange issue.

The relevant part of the system is the echo server which is built with DPDK
library and runs in docker, connected to the virtual bridge (with AF_PACKET
driver), and echo client built with regular sockets (java application). See
the drawing below for visual details.

The strange thing is that echo replies sent from DPDK echo server docker
(Docker2), can be seen in tcpdump in the docker of echo client (Docker1)
however the application (java client) does not receive it on socket level.
When the echo server runs as a socket application everything works. Seams
like OS (linux) decide not to route the packet to the application for
some reason.

Some quick important notes.

- DPDK layer starts ok and no EAL errors are reported. Its echo replies as
mentioned before can clearly be seen when capturing traffic on eth0 in
client docker.
- It is not the issue of parsing the echo replies on application level. I
checked the strace logs and cannot see any traffic delivered to the
application
- I have compared the captures from working socket based echo server and
MACs seam to be ok, also the packets sent from DPDK server are formed well.
- No logs for martian packets when enabled.

I would like to focus the attention of dear DPDK experts on the following
question: is it possible that DPDK AF_PACKET driver intercepts both packets
destined to  the virtual nic eth0 of Docker1 AND eth0 of Docker2,
preventing it from being received by application?

DPDK Version 18

VIRTUAL BOX VM (Alma Linux)

    Docker1                                 Docker2
+---------------+                       +------------+
|               |    Request            |            |
|               |   -------------->     |  DPDK      |
| Socket Echo   |                       |  Echo Server
|   Client      |         Reply         |  Server    |
|               |   <-------------      |            |
--vdev=eth_af_packet0,iface=eth0,qdisc_bypass=1
|               |                       |            |
|          tcpdump -i eth0              +------+-----+
+-------+-------+                       eth0   |
        | eth0                                 |
        |                               No IP  |
 +------v--------------------------------------v-----+
 |             Virtual Docker Bridge                 |
 +---------------------------------------------------+


Thanks

[-- Attachment #2: Type: text/html, Size: 3356 bytes --]

             reply	other threads:[~2022-11-08 19:51 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-11-08 19:51 Boris Ouretskey [this message]
2022-11-09  8:48 ` J.J. Mars
2022-11-12 17:46   ` Boris Ouretskey

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=CAG4AAQ2Oc8Ln0Bn++t1C2eAx5FYMe9+qnB45gAs0ckBoQAUu4Q@mail.gmail.com \
    --to=borisusun@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).