On Wed, 28 Apr 2004, JINMEI Tatuya / [ISO-2022-JP] [EMAIL PROTECTED]@C#:H wrote:
> So, I'd totally revise the beginning of this section (including the
> first and second paragraphs) as follows:

I agree with you.

I've taken almost all of what you suggest, with a few touches; the 
most important of them were:

 - remove the mostly redundant "In other words" paragraph, integrate 
it with the earlier numbered list.
 - add an explicit note that it would be better to omit all of 
courtesy additional data (now that we have a semantic difference) 
rather than returning only some RRsets.
 - I didn't understand what you wrote about the all "all the 
latter three cases", so I reworded that.
 - some minor changes.

(See below for text.)

> One additional comment: reconsidering the entire context, I guess the
> first sentence of the following paragraph should be clarified:
> 
>    In the case of too much additional data, it might be tempting to not
>    return the AAAA records if the transport for DNS query was IPv4, or
>    not return the A records, if the transport was IPv6.
> 
> to, e.g.,
> 
>    In the case of too much "courtesy" additional data, ...

Did we (as WG) already agree that it's better to set TC bit than
return only some RRsets of critical additional data?  I'd love that
kind of resulution, but for now, I put "(whether courtesy or
critical)" there.  If folks have strong feelings of this, let's start
a new thread explicitly only about this.

In any case, I've updated the documents at the same locations, and 
included the current section 4.4. below.

=====
4.4  Behaviour of Additional Data in IPv4/IPv6 Environments

   Consider the case where the query name is so long, the number of the
   additional records (originated from "glue") is so high, or for other
   reasons that the entire response would not fit in a single UDP
   packet. In some cases, the responder truncates the response with the
   TC bit being set (leading to a retry with TCP), in order for the
   querier to get the entire response later.

   However, note that if too much additional information that is not
   strictly necessary would be added, one should remove unnecessary
   information instead of setting TC bit for this "courtesy" information
   [19].

   Also notice that there are two kinds of additional data:

   1.  "critical" additional data; this must be included (all the
       possible RRsets) in all scenarios, and

   2.  "courtesy" additional data; this could be sent in full, with only
       a few RRsets, or with no RRsets, and can be fetched separately as
       well, but which could lead to non-optimal results.

   Meanwhile, resource record sets (RRsets) are never "broken up", so if
   a name has 4 A records and 5 AAAA records, you can either return all
   9, all 4 A records, all 5 AAAA records or nothing.  Notice that for
   the "critical" additional data getting all the RRsets can be
   critical.

   An example of the "courtesy" additional data is A/AAAA records in
   conjunction of MX records as shown in the next section; an example of
   the "critical" additional data is shown below (where the lack of
   either A or AAAA RRsets can be critical):

   child.example.com.  IN NS ns.child.example.com.
   ns.child.example.com. IN A 192.0.2.1
   ns.child.example.com. IN AAAA 2001:db8::1

   In the case of too much additional data (whether courtesy or
   critical), it might be tempting to not return the AAAA records if the
   transport for DNS query was IPv4, or not return the A records, if the
   transport was IPv6.  However, this breaks the model of independence
   of DNS transport and resource records, as noted in Section 1.2.

   This temptation would have significant problems in multiple areas.
   Remember that often the end-node, which will be using the records, is
   not the same one as the node requesting them from the authoritative
   DNS server (or even a caching resolver).  So, whichever version the
   requestor ("the middleman") uses makes no difference to the ultimate
   user of the records.  This might result in e.g., inappropriately
   returning A records to an IPv6-only node, going through a
   translation, or opening up another IP-level session (e.g., a PDP
   context [20]).

   The problem of too much additional data seems to be an operational
   one: the zone administrator entering too many records which will be
   returned either truncated or missing some RRsets to the users.  A
   protocol fix for this is using EDNS0 [40] to signal the capacity for
   larger UDP packet sizes, pushing up the relevant threshold. Further,
   DNS server implementations should rather omit courtesy additional
   data completely rather than including only some RRsets. An
   operational fix for this is having the DNS server implementations
   return a warning when the administrators create the zones which would
   result in too much additional data being returned.

   Additionally, to avoid the case where an application would not get an
   address at all due to non-critical additional data being omitted, the
   applications should be able to query the specific records of the
   desired protocol, not just rely on getting all the required RRsets in
   the additional section.
====

.
dnsop resources:_____________________________________________________
web user interface: http://darkwing.uoregon.edu/~llynch/dnsop.html
mhonarc archive: http://darkwing.uoregon.edu/~llynch/dnsop/index.html

Reply via email to