Closed jbrown8380 closed 2 years ago
Sorry for the late reply. The only thing that springs to mind is to check if the MULTICAST flag is set on the vrrp interfaces. Other than that I'd recommend trying the latest master build (no new release yet), because it has a new way to probe for interfaces.
The MULTICAST flag is indeed set on the vrrp interfaces. I'll give the latest master build a try.
For clarification; though, are you saying that with the latest master build I could configure both my physical interface (net0) and the vrrp.1 interface with IPs in the same subnet, as shown in my original post above, pimd would be okay with that?
Thanks for your help.
I should mention that I've found a workaround as well. But it's a weird workaround.
I've found that if I configure my physical interfaces (net0 - net2) with 2 IPs, with the first of which in a separate subnet and as long as the IP in the other subnet is listed first when viewing the output of "ip addr show" command then pimd will start successfully.
For example, if I setup my IPs as follows pimd will start successfully:
net0: 192.168.100.1/30 172.16.10.229/29 vrrp.1: 172.16.10.226/29
net1: 192.168.101.1/30 172.16.11.162/28 vrrp.2: 172.16.11.174/28
net2: 192.168.102.1/30 172.16.11.178/28 vrrp.3: 172.16.11.190/28
It appears that pimd will only look at the first IP of the interface.
OK, odd. Dunno atm what could be the cause of your problem.
No, the new interface probe uses getifaddrs()
instead of ioctls, there are some changes not yet merged from mrouted, e.g. automatic altnet
detection, but nothing that can handle multiple interfaces on the same subnet. That change would detect your workaround.
Some more information may be in order. The multicast routing daemons (pimd, mrouted, smcrouted) only set up routes in the kernel. All multicast routes are handled by the multicast routing stack and it has it's own concept of interfaces called VIFs (virtual interfaces. Hence the phyint
for physical ones). So step one of the setup is to figure out which subnets should map to the same VIF, this is usually where we've seen problems around various setups.
There is now a automated test for running the latest pimd with VRRP and OSPF, using keepalived and bird respectively. It was "fun" setting it up, and maybe the following line in the test would be of interest to others:
https://github.com/troglobit/pimd/blob/master/test/pod.sh#L309
Since it works for me, with the latest pimd (and a modern kernel), I'm closing this issue since it doesn't seem to be a problem with pimd.
I have a RHEL 7.8 machine (kernel 3.10.0-1127.10.1.el7.x86_64) that is running pimd (version 2.3.2) as well as keepalived (version 2.0.20). Keepalived is adding three virtual interfaces named vrrp.1, vrrp.2, and vrrp.3. These are intended to be the actual gateway intefaces/IPs for the network devices attached to the corresponding networks. These are the interfaces that I want to enable multicast forwarding, while leaving the physical network interfaces disabled for multicast forwarding.
When I attempt to use the command pimd -N I get the following errors:
My pimd.conf file contains the following:
phyint net0 disable phyint vrrp.1 igmpv2 phyint net1 disable phyint vrrp.2 igmpv2 phyint net2 disable phyint vrrp.3 igmpv2 igmp-query-interval 30 igmp-querier-timeout 95 bsr-candidate vrrp.1 priority 104 rp-candidate vrrp.1 time 60 priority 224 spt-threshold packets 0 interval 5
The interfaces are IP'd as follows: net0: 172.16.10.229/29 vrrp.1: 172.16.10.226/29
net1: 172.16.11.162/28 vrrp.2: 172.16.11.174/28
net2: 172.16.11.178/28 vrrp.3: 172.16.11.190/28
Is there any reason why pimd would consider the vrrp interfaces as invalid phyint devices?