troglobit / pimd

PIM-SM/SSM multicast routing for UNIX and Linux
http://troglobit.com/projects/pimd/
BSD 3-Clause "New" or "Revised" License
194 stars 86 forks source link

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

Closed pramoddevendra closed 5 years ago

pramoddevendra commented 8 years ago

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 commented 8 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.

troglobit commented 7 years ago

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

jp-t commented 7 years ago

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 commented 7 years ago

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 commented 7 years ago

@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 commented 6 years ago

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

josvarix commented 5 years ago

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 commented 5 years ago

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

troglobit commented 5 years ago

No objections, closing :)