[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Multicast problems with bridge(4) ports
I've found a really weird problem with NetBSD 6.1 (and earlier) that affects
delivery of multicast packets. It seems that the packets are discarded if and
only if they have crossed a bridge(4) that is directly attached to the
interface that passes the packet up into the network statck. This prevents IPv6
A (trimmed) sample configuration that I have is:
xen# brconfig bridge0
xen# ifconfig -a
inet6 2002:cb61:d534:3:1::30 prefixlen 64
inet6 2002:cb61:d534:3:1::3000 prefixlen 64
tap(4) interfaces are affected in the same way that re(4) and ste(4) interfaces
are affected, I just didn't happen to have one on that bridge at the time I was
On the physical network that is hanging off re0 I have "ping6
2002:cb61:d534:3:1::30" and "ping6 2002:cb61:d534:3:1::3000" running and only
the pings to re0 respond. Using tcpdump I can see that the neighbour
solicitations are reaching both interfaces (i.e. they are crossing the bridge
correctly), but I never get any replies from ste0. In "netstat -s" I do see the
"multicast packets which we don't join" and "packets not forwardable"
statistics climb while the non-working ping is running.
I've tested packets going in all manner of directions, and it seems that if and
only if the path is bridge(4) -> interface -> ip6_input, then the packet is
dropped. Looking at the code in lines 480-503 of ip6_input.c version 1.136 it
seems that IN6_LOOKUP_MULTI() isn't coming up with the right answer.
Does anyone have a feeling for what might be going wrong? I'm about to start
putting printfs in the kernel.
Main Index |
Thread Index |