Skip to content
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

No PIM Join messages; big vs little endian RP #81

Closed
pramoddevendra opened this issue Jun 24, 2016 · 9 comments
Closed

No PIM Join messages; big vs little endian RP #81

pramoddevendra opened this issue Jun 24, 2016 · 9 comments
Milestone

Comments

@pramoddevendra
Copy link

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?

@troglobit
Copy link
Owner

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.

@troglobit
Copy link
Owner

troglobit commented Jul 14, 2017

@jp-t What do you think, is it possible your fixes in a9aaeb4 and a1a9b5e addressed this issue?

@jp-t
Copy link

jp-t commented Jul 17, 2017

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.

@jp-t
Copy link

jp-t commented Jul 18, 2017

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.

@troglobit
Copy link
Owner

@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!

@troglobit
Copy link
Owner

Possibly related fix 892acbe, found by Ventus Networks, on master now.

@troglobit troglobit changed the title No PIM Join messages No PIM Join messages; big vs little endian RP Jan 1, 2019
@josvarix
Copy link
Contributor

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.

@troglobit
Copy link
Owner

@josvarix That is awesome feedback, thank you so much! 🎆 🚀 😃

I suspected as much, a year ago, but wasn't really sure. Guess this means we can close this issue now.

@troglobit
Copy link
Owner

No objections, closing :)

@troglobit troglobit added this to the 3.0 milestone May 29, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants