DPDK server packets with AF_PACKET driver are not received by the client connected to the same virtual bridge.

J.J. Mars mars14850 at gmail.com
Wed Nov 9 09:48:57 CET 2022


If the nic on docker 1 of echo client can receive replies, the reason
should not be PMD I think.
Did you make sure every field in every layer is completely the same between
eth0 in docker 1 and eth0 in docker 2, and all of them are expected?

Boris Ouretskey <borisusun at gmail.com> 于2022年11月9日周三 03:51写道:

>
>
> 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mails.dpdk.org/archives/users/attachments/20221109/a7ce8629/attachment.htm>


More information about the users mailing list