-
Notifications
You must be signed in to change notification settings - Fork 890
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
publication/subscription cannot connect when using Onload and Hardware Multicast Loopback #1107
Comments
There could be a myriad of reasons. Loopback with Solarflare is not the same as not Solarflare. You would be best off turning on logging and see what is being sent/received by the driver. |
You mean the Solarflare driver? Would you know how to turn logging on? |
Here is the debug log for the case without Onload:
and here is the debug log for the case with Onload:
It seems that the driver is sending some frames but is not getting anything back. |
From the Onload User Guide:
Are you by any chance setting the MULTICAST_TTL multicast socket option to 0? In the log TTL seems to be 0. Maybe that's the cause? |
Nope, setting ttl to non zero does not fix the issue:
|
You tried 224.1.2.3 with the Solarflare ping/pong and 224.0.1.1 with Aeron. Have you tried 224.1.2.3 with Aeron? |
Yes, just tried...
|
The source code for the sfnt-pingpong.c is here: https://github.com/lilinj2000/sfnettest-1.5.0/blob/master/src/sfnt-pingpong.c The method of interest is udp_bind_sock, specifically at lines 634-648. They are setting the socket option IP_MULTICAST_LOOP although the documentation above says it has no effect on hardware multiacst loopback... |
Hi,
I would like to be able to publish on a multicast address such that processes both on the local machine and on remote machines are able to receive these messages.
I am using Solarflare cards and would like to use the Hardware Multicast Loopback feature available via Onload in order to be able to receive the multicast messages on the local machine.
My process contains both a publisher and a subscriber that use the same channel / stream. When I don't use Onload then the publication and subscription connect to each other. However, when I use Onload then they do not connect. The simple program below reproduces this issue.
What am I missing?
Thanks,
Vladimir
Here are the details:
When I do not use Onload the below program produces this output:
$ java -cp ... aaa.ClientConnectivityTest
Connecting...
Connected...
When I use Onload the program does not connect:
$ java -cp ... aaa.ClientConnectivityTest
oo:java[6884]: Using OpenOnload 7.1.0.265-ON-12635 [5]
oo:java[6884]: Copyright 2019-2020 Xilinx, 2006-2019 Solarflare Communications, 2002-2005 Level 5 Networks
Connecting...
Per the Solarflare documentation, in order to use the Hardware Multicast Loopback one needs to:
(1) set the firmware-variant to full-feature
(2) set the following environment variables: EF_MCAST_RECV_HW_LOOP=1 EF_MCAST_SEND=2 EF_CTPIO_SWITCH_BYPASS=0
Also, the loopback will not work for UDP datagrams above MSS (1473 for an MTU of 1500), but I don't think this is the case here.
I start a media driver in a shell where these variables are set then I start the test program in the same or diferent shell.
With the same settings, I am able to successfully run the Solarflare pingpong application as follows:
$ ./sfnt-pingpong
$ ./sfnt-pingpong --mcast 224.1.2.3 --mcastintf=sfc0 --maxmsg=1472 udp 10.10.10.161
The difference between these parameters and the aeron url is the name of the interface, in this case sfc0.
The text was updated successfully, but these errors were encountered: