This is an old revision of the document!
Multicast DNS
[http://www.multicastdns.org/ Multicast DNS (mDNS)] is a part of Zero Configuration Networking (Zeroconf) and provides the ability to address hosts using DNS-like names without the need of an existing (unicast), managed DNS server.
The project is divided into two phases each with a set of sub-projects. The sub-projects in phase 1 is more or less listed in the order they will be implemented in (they depend on each other), sub-projects in phase 2 is not listed in the same order as they will be implemented. Focus and priority will initially be on phase 1 only.
- [:MulticastDNS/SOCproposal:Original SoC proposal]
- [http://www.shapeshifter.se/tags/soc2007/ Status blog]
Phase 1
Multicast DNS responder (mdnsd)
This is the core responder daemon, performs multicast dns queries on behalf of clients and acts as a unified cache to all clients. Provides the ability to announce its own mdns records onto the network. [:MulticastDNS/responderd:Details]
Client API (libmdns)
Provides a easy programming interface to the client side of responderd. Privileges operations include addition/removal of self-claimed records, while non-privileged operations are limited to basic host lookup routines.
NSS module
Uses libmdns and hooks into the name-service switch system to expose mdns aware-versions of gethostby{name,name2,addr} and similar functions. Configuration file /etc/mdns.conf (similar to resolv.conf) will control the search space. Default would be .local
Command line utility
Utility named mdns (or similar) to provide basic host name lookup for debugging purposes and to provide a way to dynamically add and remove self-claimed mdns records.
Phase 2
Service Discovery integration
(Need to do some more thinking on this part). The current idea is to have a separate library say, libsd which would expose a common API to both multicast based service discovery and wide-area service discovery (unicast).
Avahi library wrapper (mdns_compat_avahi)
A wrapper library around libmdns (and possibly libsd) to allow avahi-aware applications to work with mdns_responderd. It seems most normal avahi consumers performs queries through d-bus so this compat library will probably mimic this interface. The api avahi-core exposes will probably not be covered.
dns_sd library wrapper (mdns_compat_dns_sd)
A wrapper library around libmdns (and possibly libsd) to allow apple dns_sd-aware applications to work with mdns_responderd. The API header (dns_sd.h) is released by Apple under a BSD-license.