Subject: Proposed optimization to multicast DNS

From: "Brian Zill" <[email-masked]>
Date: Wed, 11 Jul 2001 22:54:04 -0700

I'd like to propose the following optimization to the multicast DNS
draft.  It is only applicable to IPv6, since it takes advantage of the
larger multicast address space available in IPv6.

The current version of the draft (draft-ietf-dnsext-mdns-01.txt) uses a
single well-known link-local multicast address for all queries.  This
causes all responders to perform some packet processing on each query,
even though in most cases this processing is merely to determine that
the packet should be dropped (i.e. the query isn't for a record
belonging to that responder).

This is an analogous situation to IP address resolution, where queries
are sent to discover a node's link-layer address.  In IPv4 over
Ethernet, the ARP protocol uses broadcast packets (which is equivalent
to using a single multicast address that everyone listens to).  In IPv6,
however, Neighbor Discovery uses a more efficient scheme where nodes
listen on a multicast address that is derived from their IP address --
this is the "solicited node multicast address".  By basing the address
to query on the very thing that is being queried, only those nodes that
can actually respond to that query are likely to ever receive the
packet.

I propose something similar for multicast DNS.  All IPv6 responders
should listen to multicast queries on a "solicited name multicast
address" instead of a single well-known multicast address.  They derive
their solicited name multicast address(es) by combining a 104-bit
well-known link-local multicast prefix with the 24-bit result of a hash
over the first portion of the name of the record(s) for which they are
authoritative.  Senders wishing to issue a query for a given record
would first generate the solicited name multicast address corresponding
to the record they wish to lookup.  Then they would send the query to
that address.  Only those nodes listening to that particular multicast
address would receive the packet, thus reducing significantly the amount
of packet processing required by nodes participating in multicast DNS.

Open issues:

Size of multicast prefix and hash result.  I chose 104 and 24,
respectively, simply because those are the lengths used for solicited
node multicast addresses.  A smaller hash result would increase the
likelihood of collisions, but the smaller address range might be more
palatable to IANA.  The choice of hash function might also figure in
here.

What hash function to use?  Any half-way reasonable hash function would
do, so it might be wise to use a hash function that all IPv6
implementations are required to have anyway.  But MD5 and SHA-1 both
seem a little overkill for this purpose.  The internet checksum isn't
great, and only yields 16 bits, but the code is present everywhere.
There are plenty of other possibilities.

Comments?
--Brian

to unsubscribe send a message to [email-masked] with
the word 'unsubscribe' in a single line as the message text body.

---

From: Jun-ichiro itojun Hagino <[email-masked]>
Date: Thu, 12 Jul 2001 05:12:47 -0700

>of packet processing required by nodes participating in multicast DNS.

	I guess we'd better reuse NI group address defined in 
	draft-ietf-ipngwg-icmp-name-lookups-07.txt, page 4.
	it is formatted as 96bit wellknown + 32bit hash, and will be like
	ff02::2:xxxx:yyyy (it is not officially assigned yet on IANA table).

itojun

---

From: David Terrell <[email-masked]>
Date: Thu, 12 Jul 2001 15:33:58 -0700

On Wed, Jul 11, 2001 at 10:54:04PM -0700, Brian Zill wrote:
> authoritative. 
> [...]

How does DNS's case insensitivity come into play here?

-- 
David Terrell   | "To increase the hype, I'm gonna release a bunch
Nebcorp PM      | of BLT variants (NetBLT, FreeBLT, BLT386, etc)
[email-masked]    | and create artificial rivalries."
wwn.nebcorp.com |  - Brian Sweltand (www.openblt.org)

---

From: Matt Crawford <[email-masked]>
Date: Fri, 13 Jul 2001 07:58:33 -0700

For forming the IPv6 multicast address for a query, consider copying
the method of draft-ietf-ipngwg-icmp-name-lookups-07.txt, section 3,
second paragraph.