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