Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 17 Jul 2002 02:13:46 +0200
From:      "Rogier R. Mulhuijzen" <drwilco@quakecon.org>
To:        freebsd-net@freebsd.org
Subject:   UDP broadcasts and delivery to sockets
Message-ID:  <5.1.0.14.0.20020717020039.01f1d8d8@mail.drwilco.net>

next in thread | raw e-mail | index | archive | help
Hi all,

I'm working with a few others to get everything in gear for the network at 
QuakeCon (www.quakecon.org). One part of that event is a huge Bring Your 
Own Computer LAN with a 1250 PC capacity, for which we will provide a 
number of servers running a ton of gameservers.

One problem we've had with gameservers in the past is that when we bind 
them to a specific IP on the box they stop responding to broadcasts that 
the clients use for finding servers on the local LAN.

The crux of the problem is that the dedicated server only binds one UDP 
socket and when binding to a specific IP it doesn't open a INADDR_ANY 
socket as well to catch the broadcasts (something I'll be talking about 
with the idsoftware people).

The solution to that could be to use different ports for each daemon, since 
the clients scan a number of ports, but that had strange effects when using 
multiple NICs and it limits the amount of daemons per box to either 8 or 4. 
Furthermore if the ports aren't consecutive there's more strange sideeffects.

What we did however is dive into the FreeBSD kernel and hack up the UDP 
handling. I added a sysctl that controls whether or not broadcast packets 
are delivered to all sockets on the port the datagram was sent to 
regardless of what address the socket is bound to.

I have a patch that applies cleanly to -STABLE, but it's still a little 
rough in the sense that the behaviour is now default, and multicast packets 
get delivered too. But that's not really important for us right now.

The reason I am sending this email to the list is that I was wondering if 
there's any interest in merging this sysctl into the main source tree. 
Because this behaviour is mentioned in comments, but not coded for since 
some applications might have problems with it.

If there's interest in this I'll clean the patch up some more, if not I'll 
just drop it and get on with the rest of my tasks.

For those interested regardless, the patch can be found here: 
http://www.bsdchicks.com/patches/udp_wide_broadcast.patch

Greetings,

	DocWilco - QuakeCon Network Director


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-net" in the body of the message




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