Troubleshooting multicast routing

Felix <[email protected]> Mon, 3 Aug 2026 22:05:46 +1000
Newsgroups gmane.os.freebsd.devel.net
Message-ID <[email protected]>
Hi all,

I'm experimenting with static multicast routing using smcroute on 
FreeBSD. (My goal is bridging SSDP between networks, but I'm mostly 
using this as a chance to experiment with multicast routing in general.)

I'm having some trouble getting v4 traffic to route (while v6 is 
working fine), and I'd be grateful for any advice.

My simple smcroute.conf to bridge SSDP between three networks is as 
follows:

> phyint trusted enable
> phyint untrusted enable
> phyint tenants enable
> 
> mroute from trusted group 239.255.255.250 to tenants
> mroute from trusted group ff05::c to tenants
> mroute from untrusted group 239.255.255.250 to tenants
> mroute from untrusted group ff05::c to tenants
> mroute from tenants group 239.255.255.250 to trusted untrusted
> mroute from tenants group ff05::c to trusted untrusted

"trusted" (172.16.0.94/27), "untrusted" (172.16.0.126/27), and 
"tenants" (172.16.0.1/32) are three vlan(4) interfaces on the same 
physical ixl(4) interface.

After starting smcrouted, netstat -g reports as expected:

> IPv4 Virtual Interface Table
>  Vif   Thresh   Local-Address   Remote-Address    Pkts-In   Pkts-Out
>   0         1   172.16.0.94                             0          0
>   1         1   172.16.0.126                            0          0
>   2         1   172.16.0.1                              0          0
> 
> IPv4 Multicast Forwarding Table is empty
> 
> 
> IPv6 Multicast Interface Table
>  Mif   Rate   PhyIF   Pkts-In   Pkts-Out
>    0      0   trusted         0          0
>    1      0   untrusted         0          0
>    2      0   tenants         0          0
> 
> IPv6 Multicast Forwarding Table is empty

I then send some SSDP discover packets on "trusted" - four each on v4 
and v6. The v6 packets are routed to "tenants" as expected, but I never 
see the v4 packets, either on a tcpdump of "tenants" on the router or 
on another device connected to "tenants".

netstat -g appears to suggest that the packets were forwarded:

> IPv4 Virtual Interface Table
>  Vif   Thresh   Local-Address   Remote-Address    Pkts-In   Pkts-Out
>   0         1   172.16.0.94                             4          0
>   1         1   172.16.0.126                            0          0
>   2         1   172.16.0.1                              0          4
> 
> IPv4 Multicast Forwarding Table
>  Origin          Group             Packets In-Vif  Out-Vifs:Ttls
>  172.16.0.65     239.255.255.250         4    0    2:1
> 
> 
> IPv6 Multicast Interface Table
>  Mif   Rate   PhyIF   Pkts-In   Pkts-Out
>    0      0   trusted         4          0
>    1      0   untrusted         0          0
>    2      0   tenants         0          4
> 
> IPv6 Multicast Forwarding Cache
>  Origin                        Group              Packets Waits In-Mif  Out-Mifs
>  2XXX:XXXX:XXXX:1:d92:4ded:53c ff05::c                  4     0    0    2

smcroute logs a message seemingly indicating that it saw an 
IGMPMSG_NOCACHE with the wrong vif - 2 (tenants) rather than 0 
(trusted):

> smcroute[45888]: Multicast from 172.16.0.73, group 239.255.255.250, coming in on wrong VIF 2, iface tenants

However, I think this might be a red herring, because the forwarding 
table entry is clearly created correctly. Maybe smcroute is seeing the 
packet again on its way out?

pflog sees the packet come in on the expected interface, but never 
sees any multicast packets leave (neither v4 nor the known-working v6).

Any idea what might be happening here? (It's not TTL, I've accounted 
for that already.) I'd appreciate any suggestions.

Thanks,
- Felix