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.