Proposal for using NAPTR/URI records
Nathaniel McCallum
npmccallum at redhat.com
Thu Feb 26 10:57:17 EST 2015
On Thu, 2015-02-26 at 15:17 +0100, Petr Spacek wrote:
> On 25.2.2015 21:58, Nico Williams wrote:
> > On Wed, Feb 25, 2015 at 03:22:20PM -0500, Nathaniel McCallum wrote:
> > > > Use URI RRs, but not NAPTR. That's my take.
> > > >
> > > > SRV RRs don't fit well because of the lack of a URI scheme
> > > > (could be http: or https:, but hopefully just http:) and the
> > > > lack of a local part (which can be overcome by using the port
> > > > number and a fixed local part, though it will upset some
> > > > people, and perhaps rightly so). If SRV RRs are already in
> > > > use for this use-case, so be it, but URI would be more fitting
> > > > for a standard. NAPTR seems a little overwrought for this use
> > > > case, and anyways, it's the tool I'd reach for last: when
> > > > nothing else will work.
> > > >
> > >
> > > The problem is that SRV RRs are currently used for KDC
> > > discovery. But they can't represent a MS-KKDCP endpoint.
> >
> > We agree violently: your reply to this point restates mine without
> > the details :)
> >
> > > I'm happy to have a scheme like this and just use URI RRs:
> > > * krb5+https://kdc.example.com/kdc
> > > * krb5+http://kdc.example.com/kdc
> > > * krb5+tcp://kdc.example.com
> > > * krb5+udp://kdc.example.com
> > > * krb5://kdc.example.com
> >
> > Wait a minute. You want to _replace_ the existing SRV-based
> > discovery method for the _kerberos _udp and _tcp cases? Is that
> > right? If so, why?
> >
> > My guess: to economize on DNS queries. Of course, one could
> > send three queries concurrently, but the full set of possible
> > optimizations would be difficult to achieve.
> >
> > So do one query for _kerberos.realm.name. looking for URI RRs, and
> > let's define a krb5 URI scheme, so that then we'd have:
> >
> > _kerberos.example.com. IN URI 1 1 http://kdc.example.com
> > :1234/local-part
> > _kerberos.example.com. IN URI 1 1 kdc:kdc.example.com:88/udp
> > _kerberos.example.com. IN URI 1 1 kdc:kdc.example.com:88/tcp
> > ...
> >
> > One query gets you all the answers (or some, if you truncate,
> > though if you want DNSSEC you're probably not truncating). If you
> > find nothing, then you query _kerberos.{_udp, _tcp}.example.com.
> > and benefit from all the cached records for ., com. and
> > example.com.
> >
> > BUT, since SRV is what existing installations have, the better way
> > forward would be to reverse this and first query for
> > _kerberos.{_udp, _tcp}.example.com. then _kerberos.example.com.
> >
> > AND, since the client would start with the "legacy" queries, might
> > as well publish URI RRs there too:
> >
> > ; SRV RR for UDP
> > _kerberos._udp.example.com. IN SRV 1 1 88 kdc.example.com.
> >
> > ; URI RRs for proxy, UDP, and TCP, why not?
> > _kerberos._udp.example.com. IN URI 1 1 http://kdc.example.com
> > :1234/local-part
> > _kerberos._udp.example.com. IN URI 1 1 kdc:kdc.example.com:88/udp
> > _kerberos._udp.example.com. IN URI 1 1 kdc:kdc.example.com:88/tcp
> >
> > ; SRV RR for TCP
> > _kerberos._tcp.example.com. IN SRV 1 1 88 kdc.example.com.
> >
> > ; URI RRs for proxy, UDP, and TCP, why not?
> > _kerberos._tcp.example.com. IN URI 1 1 http://kdc.example.com
> > :1234/local-part
> > _kerberos._tcp.example.com. IN URI 1 1 kdc:kdc.example.com:88/udp
> > _kerberos._tcp.example.com. IN URI 1 1 kdc:kdc.example.com:88/tcp
> >
> > Publishing extra RRs is cheap; extra queries are not.
> >
> > This way we can have a single query get the client all the answers.
> >
> > Let's call that the goldilocks proposal.
> >
> > (A bit presumptuous. Maybe it isn't quite just right yet.)
> >
> > > However, that wouldn't provide backwards compatibility with SRV.
> > > Also, MIT seems to be hesitant about adding any new method with
> > > higher priority than SRV search. Also, in the past MIT has
> > > expressed a
> >
> > No kidding: SRV is what existing clients do and what sites publish.
> >
> > > dislike of the above types of URI schemes. I do think that the
> > > above scheme has the advantage of being able to set priorities
> > > (between transports) with a single RR.
> >
> > I'm with them on this :)
> >
> > > Would MIT be interested in doing the above but making it a lower
> > > priority than SRV (for now)?
> >
> > See my goldilocks proposal above.
>
> Personally I very much agree with Nico's proposal (or my
> understanding of it):
> Keep current SRV tcp/udp records + add URI which can hold the same
> information
> as SRV tcp/udp.
>
> My expectation is that URI-aware client will do DNS query for URI
> record first
> and get all the information at once instead of doing 3 separate
> queries. Fallback to 'classic' SRV tcp/udp should be done only if no
> URI records exist.
MIT has expressed (on a phone call) two concerns with moving URI to
the default lookup (with SRV as secondary):
1. Additional latency for a protocol which nobody is (yet) using.
2. DNS stacks which drop queries for unknown QTYPEs.
What is your take on adding URI records for the _kerberos._(udp|tcp)
prefixes? Is there precedent for this? It would allow for a single
query to produce both results (SRV, URI). But it seems (to me, a DNS-
newbie) odd to put a URI record under SRV prefixes.
> Also, I do not buy argument that an admin who is not able to
> properly configure SRV+URI records will be able to configure NAPTR
> records. There is
> little operation experience with NAPTR in comparison with SRV.
I agree.
More information about the krbdev
mailing list