[Cerowrt-devel] mdns reflector issues on ipv6/babel routing through nat.

Robert Bradley robert.bradley1 at gmail.com
Mon Mar 19 15:41:22 EDT 2012

On 18 March 2012 21:22, Dave Taht <dave.taht at gmail.com> wrote:
> Once you get to a few routers, a few deep, (3 in series in this case,
> 9 overall), the avahi mdns proxy starts to malfunction over ipv6, and
> I ended up with a rather nasty broadcast storm.


> Now this is across like 5 different versions of cerowrt, but it would
> not surprise me that this is a  generic problem with avahi on ipv6,
> and/or a symptom of the brain-damaged-ness of mdns in the first place.

I thought that broadcast storms were a known issue with Avahi's mdns
reflector.  The man pages for avahi-daemon.conf
(http://linux.die.net/man/5/avahi-daemon.conf) have this to say:

"Make sure to not run multiple reflectors between the same networks,
this might cause them to play Ping Pong with mDNS packets."

I think the official answer for mesh networks (and subnetted networks
in general) is to switch to wide-area Bonjour - in other words,
dynamically publishing records to a real DNS server.  Avahi had
problems with publishing records in the past, but as far as I can tell
those have been resolved.

One problem with using Wide-Area Bonjour is configuration.  As far as
I can tell, you have to specify a specific (non-.local) domain for
wide-area browsing, and there is no good automated solution for home
users.  For Avahi, this means editing /etc/avahi/avahi-daemon.conf and
setting the "domain-name" and "browse-domains" options.  Setting this
up on OS X and Windows is difficult for most home users, and involves
either installing the SDK or editing the Registry or configuration
files by hand.  A set of DHCP options (similar to those for WINS and
NBT on Windows) for disabling mdns and setting up wide-area Bonjour
would be useful...

Worse than that, though, some sites (e.g.
http://www.afp548.com/article.php?story=20090225001154457) suggest
that Apple's Bonjour daemon will only register global IP addresses
with the DNS server, and not private addresses.  This makes the whole
thing worse than useless for CeroWRT!

Solutions to this?

- Give up on cross-subnet publishing entirely.
- Write a variant of Avahi's mDNS reflector that listens to local mDNS
traffic and reissues queries over unicast DNS.  Any local record
announcements it sees would need to be registered with the unicast DNS
server too.
- Get the DHCP server to add initial SRV/TXT records to the DNS
server, so you're not dependent on OS X doing the right thing.
mDNSResponder can then update these records later if it feels like it.
 The disadvantage is that you're either reporting services that may
not exist, or are not reporting some services.
- Advertise global IPv6 addresses throughout the mesh?  This might
work, although Windows tends to object to mDNS over IPv6...
Robert Bradley

More information about the Cerowrt-devel mailing list