Bruce M Simpson wrote:

On Wed, Apr 12, 2006 at 10:34:13PM -0400, Stephen Clark wrote:
Can anyone tell me why the maximum number of members in a multicast group is set at
20?
Are there issues with increasing this number?

Why would one wish to join more than 20 groups on a single socket?

I realize making such a statement leaves me wide open to the charge of
640KB being enough for anyone, but...

This limit in no way affects multicast routing, btw. Based on my reading
of the code...

This is a per-socket limit. The structures to support per-socket multicast
group membership are simple linked lists or statically allocated arrays.
The reason for this is so as not to break the ABI for struct ip_moptions
which has been present since 4.4BSD.

Changing this structure to not use the static allocation would probably
break your kernel for modules compiled without such a change. Also there
are IGMP timers involved.

The other poster who replied is probably talking about a per-interface-card
limit to do with the multicast hash filter on most Ethernet cards - this
is a hard limit, and the driver/hardware has to either support multicast
promiscuous mode (IFF_ALLMULTI) or be able to support full promiscuous mode
(which may not work correctly with IP forwarding in my experience).

Patches to refactor kernel multicast system gladly accepted!

Regards,
BMS

P.S. Someone was meant to be porting IGMPv3/SSM but there were licensing
issues with Apple.

Well I was trying to set up an ospf system with more than 20 neighbors and could only get 20 neighors to show up in quagga, so I posed the question to the quagga mailing list and got
the following responses:

1)
Hi Steve,

I think you might be hitting the IGMP limit. The 244.0.0.5/6 multicast address is joined using IGMP and there is a kernel variable that needs to get bumped up higher to peer with more than 20 neighbors. I'm fuzzy on this 'cuz I haven't seen anyone post this particular problem in a while.

cat /proc/sys/net/ipv4/igmp_max_memberships
20

Bump it up to whatever number is higher than your max. neighbor count.

-Kris

Kris Olander
[EMAIL PROTECTED]


2)
Hmm... ok on a 4.8 Freebsd system I see the following in the kernel build area:

/usr/src/sys# grep -i membership */* | grep -i max
netinet/icmp6.h:#define icmp6_maxdelay icmp6_data16[0] /* mcast group membership */
netinet/in.h:#define    IP_MAX_MEMBERSHIPS      20      /* per socket */
netinet/ip_output.c:            if (i == IP_MAX_MEMBERSHIPS) {
netinet/ip_var.h:       struct  in_multi *imo_membership
[IP_MAX_MEMBERSHIPS];

I wonder if IP_MAX_MEMBERSHIP is the right parameter that needs bumping up. I suppose you could give it a try and see if changing this value (and then building a new kernel) increases the IGMP membership too. I don't see why it would cause any harm. Anyone with more FreeBSD kernel experience want to chime in?

-KO (Kris Olander)

When I bumped the limit and recompiled my kernel I saw all my neighbors listed when
I queried ospfd.

So my assumption was that this limit was affecting how many neighbors I could have.

Steve

--

"They that give up essential liberty to obtain temporary safety, deserve neither liberty nor safety." (Ben Franklin)

"The course of history shows that as a government grows, liberty decreases." (Thomas Jefferson)



_______________________________________________
freebsd-stable@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to