I'd like to call your attention to a few of the open issues called out
in the draft.

The first:

  The specific logic that an Authoritative Nameserver uses to choose a
  tailored response is not in the scope of this document.
  Implementers are encouraged, however, to consider carefully their
  selection of SCOPE PREFIX-LENGTH for the response in the event that
  the best tailored response cannot be determined. [Open issue: This
  seems so very vague; More text here about possible strategy?]

Does this need more text around the issues that should be
"consider[ed] carefully"?  Is the vagueness here acceptable?

Next up:

  When an Intermediate Nameserver uses ECS, whether it passes an ECS
  option in its own response to its client is predicated on whether
  the client originally included the option. Because a client that did
  not use an ECS option might not be able to understand it, the server
  MUST NOT provide one in its response. If the client query did
  include the option, the server MUST include one in its response,
  especially as it could be talking to a Forwarder which would need
  the information for its own caching. [Open issue: if the Forwarder
  sent 0s for FAMILY and ADDRESS, how could it take back a response
  with non-zero FAMILY and ADDRESS when the spec says this mismatch
  MUST be dropped?]

This issue basically centers around the protocol allowing for a query
coming into a recursive resolver to specify its own SOURCE
PREFIX-LENGTH to restrict how much of its address is exposed to the
authority nameservers.  If SOURCE PREFIX-LENGTH is 0, there is no
problem at all (because the resolver will then also still have 0 for
FAMILY and ADDRESS).  However, if say the originating query was from
1.2.3.4 and specified /16, the recursor would use 1.2/16 and when it
got the answer presumably need to communicate that back for suitable
caching.  However, per section 6.3 and section 10, if the FAMILY and
ADDRESS mismatch should cause the response to be dropped.

I'm not really sure to do about this.  One approach would be to allow
a client which sent out ECS solely to specify SOURCE PREFIX-LENGTH to
accept whatever family/address came back.  Another would be to just
remove the restriction for everyone that the response must match
family/address.  I'm not entirely convinced that having the
requirement is providing any sort of meaningful security benefit.
(See, for example, the note in 10.2 about how the requirement to treat
a missing ECS option in the reply as meaning that an attacker doesn't
have to worry about matching anything at all.)

Thoughts?

Next up:

  In the cache, all resource records in the answer section MUST be
  tied to the network specified by the FAMILY, ADDRESS and SCOPE
  PREFIX-LENGTH fields, as limited by the Intermediate Nameserver's
  own configuration for maximum cacheable prefix length. Note that the
  additional and authority sections from a DNS response message are
  specifically excluded here. Any records from these sections MUST NOT
  be tied to a network. [Open issue: this conflicts a bit with
  draft-kumari-dnsop-multiple-responses, which wants to put data in
  the additional section that an authoritative nameserver that does
  ECS would probably want to tailor.] 

Warren's other draft basically allows an operator to say "hey, when
I'm asked about www.example.com, I also want to immediately tell the
requester about {images,css,data}.example.com's addresses."  Obviously
a CDN would want those to be mapped as well.  Does that proposal need
to be reconciled with suitable text here regarding caching of the
additional section?  How?

I'm not sure why these sections are explicitly excluded from ECS
caching, other than perhaps the problem that already exists in even
just caching only the answer section, where only one ECS option is
available to cover multiple RRsets.  Given that the problem exists
regardless, should they be excluded?

Oh, I just realized that the problem I referring to is in text that is
not yet pushed out.  It says:

  Since some queries can result in multiple RRsets being added to the
  response, there is an unfortunate ambiguity from the original draft
  as to how SCOPE PREFIX-LENGTH would apply to each individual RRset.
  For example, multiple types in response to an ANY metaquery could
  all have different applicable SCOPE PREFIX-LENGTH values, but this
  protocol only has the ability to signal one.  The response SHOULD
  therefore include the longest relevant PREFIX-LENGTH of any RRset in
  the answer, which could have the unfortunate side-effect of
  redundantly caching some data that could be cached more broadly. For
  the specific case of a CNAME chain, the Authoritative Nameserver
  SHOULD only place the CNAME, likely with a SCOPE-PREFIX LENGTH of 0,
  to have it cached unambiguously appropriately. Most modern Recursive
  Resolvers restart the query with the canonical name, so the
  remainder of the chain is typically ignored anyway.

Remember, this draft is only attempting to document the existing
in-use protocol and some issues observed with it, and does not have
the latitude to fix the issues.

The final open issue called out in the current version:

  In other cases, Recursive Resolvers sited behind a NAT device SHOULD
  NOT originate ECS options with their external IP address, and
  instead rely on downstream Intermediate Nameservers to do so. They
  MAY, however, choose to include the option with their internal
  address for the purposes of signaling a shorter, more anonymous
  SOURCE PREFIX-LENGTH. [Open issue: this sounds like a configuration
  requirement, since a resolver might well not have any idea that it
  behind NAT.  Should this be described better?  Stricken?] </t>

As noted, I'm not sure the document should even be headed down this
rathole.  As phrased it is also making an unwarranted assumption, that
the resolver behind the NAT would even be talking to an intermediate
resolver; what if it's doing its own recursive resolution?

I understand the basic motivation in the original draft, not wanting
to have private address space uselessly going to the authorities.
(I'd bet our collective operational experience on the Internet is
almost certainly telling all of us that it is bound to happen anyway,
no matter what we say.)  But does an ECS resolver now need to know
whether it is going through NAT, when a resolver has never needed to
know that before?  Should this be hand-waved with something along the
lines of, "Recursive Resolvers behind NAT devices have complications
for ECS that are beyond the scope of this document."

Thanks for considering these issues.


_______________________________________________
DNSOP mailing list
DNSOP@ietf.org
https://www.ietf.org/mailman/listinfo/dnsop

Reply via email to