Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 10 Sep 2009 03:09:32 -0000
From:      Stef Walter <stef-list@memberwebs.com>
To:        Bruce Simpson <bms@incunabulum.net>
Cc:        "freebsd-net@FreeBSD.org" <freebsd-net@freebsd.org>
Subject:   Re: Multicast SSM bug?
Resent-Message-ID: <none>
References:  <4AA83230.4070405@incunabulum.net> 

| previous in thread | raw e-mail | index | archive | help
Stef Walter wrote:
> The packets from 172.27.2.2 are not being delivered to the ospfd process
> socket (verified via userland debugging and logging). Even though, as
> you can see above the em0 interface is part of the group.

I've done more research on this.

Each time a packet is not delivered, I can see this counter being
incremented:

> # netstat -s -p ip | grep multicast
> 	885 packets received for unknown multicast group

That counter originates from this block of code in raw_ip.c:

>   354               blocked = imo_multi_filter(inp->inp_moptions, ifp,
>   355                   (struct sockaddr *)&group,
>   356                   (struct sockaddr *)&ripsrc);
>   357               if (blocked != MCAST_PASS) {
>   358                       IPSTAT_INC(ips_notmember);
>   359                       continue;
>   360               }

After instrumenting it with this printf:

> printf("not member: group = %s, ", inet_ntoa (group.sin_addr));
> printf("src = %s, why = %d\n", inet_ntoa (ripsrc.sin_addr), (int)blocked);

Then wait, then up down some interfaces, etc.... quagga adds/drops
memberships, eventually I see the following output:

> not member: group = 224.0.0.5, src = 172.28.1.66, why = 2
> not member: group = 224.0.0.5, src = 172.28.1.66, why = 2
> not member: group = 224.0.0.5, src = 172.28.1.66, why = 2
> not member: group = 224.0.0.5, src = 172.28.1.66, why = 2
> not member: group = 224.0.0.5, src = 172.28.1.66, why = 2
> not member: group = 224.0.0.5, src = 172.28.1.66, why = 2

The why = 2 is MCAST_NOTSMEMBER. 172.28.1.66 is the tunnel peer sending
OSPF multicast packets. Somehow imo_multi_filter is limiting via packet
source for this membership. However, this is what the interface looks
like via ifmcstat (ie: no SSM memberships):

> portillo1:
> 	inet 172.28.1.65
> 	igmpv3 flags=0<> rv 2 qi 125 qri 10 uri 3
> 		group 224.0.0.5 mode exclude
> 		group 224.0.0.1 mode exclude

Any of the above ring a bell? If not, I'll keep poking around and see
what I find.

Cheers,

Stef




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?>