Closed pramoddevendra closed 5 years ago
In the last paragraph I'm assuming you mean "if R1 and R2" are both little endian?
Yes, I wouldn't be at all surprised if this turns out to be an endian issue.
@jp-t What do you think, is it possible your fixes in a9aaeb4 and a1a9b5e addressed this issue?
I don't think so, because my fixes are only related to SSM and the pseudo RP it uses.
In the failing setup, R1 is DR and sends encapsulated data frames to R2 "register" port, I would suspect an endianness problem in the encapsulation/decapsulation.
@pramoddevendra: How does R1 know the RP? from static configuration or from negotiation? Could you run tcpdump on R2 to see if the link to R1 is actually receiving register frames?
I think R2 will not send join messages if it cannot identify R1 as the DR for the source.
Since I only use big-endian devices I cannot know for sure, but reading the code, there cannot be an issue in registers encapsultation. But there could be one in BSR/RP negotiations.
@jp-t Thank you for taking the time to respond! Maybe I get some time to look into this, or someone else beats me to it. Either way your info is most helpful!
Possibly related fix 892acbe, found by Ventus Networks, on master now.
I have tried to recreate the issue above with various configurations. With the standard configuration BSR/RP-Cand they often do not agree on who is the RP for some groups. If they both think themselves as the RP, no register/join will be sent. When using static RP the problem goes away. Also seems to be fixed on latest master branch.
@josvarix That is awesome feedback, thank you so much! :fireworks: :rocket: :smiley:
I suspected as much, a year ago, but wasn't really sure. Guess this means we can close this issue now.
No objections, closing :)
Hi,
I'm using pimd-2.3.2. my setup is pretty simple
R1 is RP MCAST RECVR <--> R1(little endian) <------> R2 (big endian) <------> MCAST SENDR = works MCAST SENDR <--> R1(little endian) <------> R2 (big endian) <------> MCAST RECVR = works
R2 is RP MCAST RECVR <--> R1(little endian) <------> R2 (big endian) <------> MCAST SENDR = works MCAST SENDR <--> R1(little endian) <------> R2 (big endian) <------> MCAST RECVR = fails
Only the last case fails, it happens that R2 is RP and when R1 starts sending the mcast packets , I expect R2 to send "PIM JOIN/PRUNE" message to R1 and packet would flow but its not happening.
Curiously, if R1 and R1 are both little endian , there is no problem and all cases work. Is this endianess problem or something else?