-
-
Notifications
You must be signed in to change notification settings - Fork 90
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
Multicast routing table not updated on FreeBSD #57
Comments
The group is only displayed in the PIM routing table when it's been "established" properly. Unlike DVRMP (mrouted), in PIM the multicast isn't flooded. A few questions:
One of my basic tests when verifying |
Hmm, it's late here ... with question (2.) I of course mean to say that I hope the sender sets a high enough TTL. You can also listen in on the PIM traffic between R2 and R3 to check if R3 sends PIM join for your group or not. It's not until R3 gets "accept" that it sets the routing rule in the kernel. At least that's what my fuzzy head tells me right now. (Off to sleep) |
Sender is 10.0.12.1 and there is an IP connectivity between them:
Then my command "j 239.1.1.1 em2 10.0.12.1" ask for joining mcast group 239.1.1.1 using interface em2 (interface toward R3) with a source of 10.0.12.1.
But a tcpdump between R2 and R3 show only "Hello" PIM message and nothing else:
Now I'm generating a ping with a high enough TTL from my sender:
The R2 PIM router didn't update its routing table:
|
@ocochard Yeah, that really does sound like a bug ... curious, you don't even see PIM Assert messages between the routers? What if you remove the |
Same problem with an "empty" vanilla setup: I don't see any PIM assert messages between routers. |
Ouch! 😒 I'll see what I can do to set up a couple of virtual FreeBSD routers and start looking myself. Hopefully sometime this weekend ... terribly sorry @ocochard I should have tested this better before the release! |
OK, I think I've now reproduced the same problem that you have reported. |
Managed to get it working, not exactly sure why, but if I set up a network with two FreeBSD 10.2 (64-bit) routers and two Ubuntu clients (sender/reciever). All running RIP, routed on FreeBSD, with ripv2 enabled, then
However, if I start R3 first then it never seems to resolve the situation. R3 just sits there, receiving multicast but sending STOP messages to R2, despite correctly registering the IGMP join from the receiver :-/ |
OK, now I can't even reproduce the problem anymore? I can start R2 or R3 first, with or without waiting in between ... Possibly my initial problems were due to the virtual environment I'm running on. Despite running on a fairly modern Linux 4.2 (Ubuntu 15.10) host with the latest Qemu, I still have to disable IGMP snooping on the hosts' bridges. For details, see http://troglobit.com/multicast-howto.html under the heading "Roll your own cloud". |
I did an extremely simplistic writeup of what I did here http://troglobit.com/howto-run-pimd-on-freebsd.html. It's likely too high-level for you @ocochard, but I post it here anyway, maybe some of it can help ... |
Hmm, there do seem to be some remaining issues with I get a ton of "warning - Not a multicast addr...." in the logs, and when I go deeper, expand the logs a bit, then I see the source IP of |
Unfortunately I haven't had time to look into this any further, but @idismmxiv just posted a fix for issue #63 in pull request #64, which may also very well be related to your problems @ocochard ... |
Just compiled a pimd 2.3.1 with the pull request #64 patchs applied: But it On Tue, Dec 29, 2015 at 4:25 PM, Joachim Nilsson notifications@github.com
|
Thanks for checking @ocochard, I'm starting up my old testbed now. Need to get to the bottom of this! |
@ocochard OK, this took the better part of the whole day, but I may have found something now. If I take pimd v2.3.1 and change https://github.com/troglobit/pimd/blob/master/pim_proto.c#L952
to
I can get a three-in-a-row FreeBSD 10.2 (64-bit) setup to actually route multicast. It's definitely something with how the FreeBSD kernel does Update: Actually, this seems to have been added when you and me were messing about with issue #23 ... most of the code added in 28bbf4e look correct, but maybe I added one or two |
This is a speculative, but very probable, fix for the FreeBSD regression reported in issue #57. In 28bbf4e two new checks for BSD `SOCK_RAW` was added, which seems didn't apply at all. Turns out PIM register messages, both send & receive, are in fact passed as truly RAW. At least on FreeBSD. This fix only reverts checks added to IGMP_PROTO sockets. Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
I've tried but meet the same problem, this is why I wondering if the problem came from my set-up? Here are what I did:
Then once compiled and builded my disk image, I've run them under a virtualbox lab (simulating Intel NIC because FreeBSD VirtIO's drivers didn't support multicast routing). Same release as yours: I didn't forgot to enable MROUTING in my kernel config file: Good version of pimd: The receiver (directly behind R3) can reach the sender (10.0.12.1, behind R2): But now, on R3 we correcly see the member ship report but didn't update its mcast routing table:
|
@ocochard unfortunately I've never tried virtual networking on a FreeBSD box, and never used virtualbox. But multicast and virtual environments have quite a shaky history ... I still have to do some tricks to get it to work on a Linux host. I really don't know what more I can suggest you look at. Here are a few pointers I came to think of from reading your last report:
Have you tried running just a single pimd router? |
I've found the problem: Now I reach to re-use pimd on FreeBSD 10.2 too. my problem was this typo on my port Makefile:
The good one is:
(notice the / at the end of sysconfdir). I've seen the problem with by noticing theses lines in the debug output of pimd:
With an "empty" on unexisting pimd.conf, the BSR address was always 0.0.0.0 and it never add a rendez-vous point, then never update its mrouting table. By fixing this typo, it correctly the configuration file now. |
@ocochard Oh great news!! 😃 👍 🎉 Nasty little thing with the missing slashes there, shouldn't happen in a project like this. I'll look into a check and fix. Also, the resulting issue of no BSR address is no good ... thank you for reporting this! I'll file separate issues for them later tonight. I think the remaining problem you mention is issue #58, which I haven't had the time to dig into yet myself, but others have. You could attempt to verify the last comment by @am88b, who managed to get multicast forwarding within 0-4 sec! |
About the last problem: I've got the delay problem only with my candidate BSR / canditate RP setup. I don't meet the problem with static RP configured like in issue #58. |
@ocochard Aha, good to know when I eventually get to dig into it. Thank you! |
Here is my simple setup with 2 routers (R2 and R3) when I ask to use igmpv2:
mcast server (em0) --- (em0) R2 (em1) ---- (em1) R3 (em2) ---- (em2) subscriber
Then I ask the subscriber to subscribe to an mcast group:
R3 correctly notice this new membership:
But its multicast routes of PIM router R3 are still empty:
=> Should't it display this new mcast group ?
The text was updated successfully, but these errors were encountered: