[comp.protocols.tcp-ip.domains] More about CNAMEs

DCP@QUABBIN.SCRC.SYMBOLICS.COM (David C. Plummer) (12/31/87)

[I think the bottom line is that data should be associated with objects,
not with names.]

I'm trying to do negative caching and find the appropriate SOA record
for those implementations that don't return the SOA record yet.  The
example below does return SOA records today, but it didn't in the past.

In the course of querying for the MB record of VEGA.FAC.CS.CMU.EDU, we
learn that some hosts are nameservers for CMU.EDU.  We ask those hosts
about VEGA... and get an authoritative answer with no data.  In order to
do negative caching we need the appropriate SOA record.  I believe it is
correct first to ask for VEGA...'s SOA record, and get back another
authoritative no.  (I've already thought about avoiding infinite
recursion.)  I therefore ask for FAC...'s SOA record.  Instead I get
back a CNAME.  The CNAME is trying to canonical name the host named
FAC.CS.CMU.EDU.  What should I do here?  Should I look for the SOA
record of where the CNAME points (which is VEGA) or should I say that
the SOA doesn't exist at that node either?  [Aside: note that CMU cannot
delegate the FAC.CS.CMU.EDU name because that would result in a
CNAME/NS/SOA trio at the same name.]  I would like to be able remember
that there is no SOA for FAC... and not be obligated to chase the CNAME.
Is that reasonable, and if so how do I do that?

Eventually, I ask for the SOA of CS.CMU.EDU and get back authoritative
nothing, and then ask for the SOA of CMU.EDU and get the appropriate SOA
record.

I've determined it's not good enough to look at what NS records I
already have.  Another real-life example: If I try to find
XX.LCS.MIT.EDU's internet address, I eventually learn that one of the
nameservers for MIT.EDU is MILO.LCS.MIT.EDU.  If I ask MILO I get back
an authoritative answer because MILO is also an authoritative server for
LCS.MIT.EDU, but I don't know that.  Therefore, I shouldn't ask MILO for
MIT.EDU's SOA record; I must still ask for XX...'s SOA and when that
fails ask for LCS.MIT.EDU's SOA which does exist.