(I've Bcc'd dnssd, but if you want to join this discussion it's probably best to do it in one wg, and I think it's most relevant to dnssd, so I put dnssd in the To: field)
We've been talking elsewhere (Thread) about a small issue that comes up in constrained networks that if we want to do service discovery, and we get a PTR record for a service, then the next thing we need is the SRV and TXT records for the service instance, and that's two queries. Now, in general although there is no RFC that expressly forbids QDCOUNT > 1 (or if there is, I couldn't find it, please clue me in), we don't generally support it (my code returns REFUSED, and so does BIND9). This makes sense, because we don't know how to answer if one query succeeds and the other fails. I know Paul Vixie had an idea years back to have an EDNS1 that returns multiple RCODEs, which might have addressed the problem, but the draft died before it was published as an RFC. I have a somewhat less ambitious proposal that I think works and solves the specific problem we have in DNSSD. The query for the TXT and SRV records /always/ have the same domain name. So a query for these records can never return NXDOMAIN for one and not for the other. The other possible errors that can be returned would most likely be returned for both queries. That's it, it's that simple: either we return RCODE=0 and zero or more answers (where ANCOUNT(type)=0 -> no records of that type), or NXDOMAIN, meaning that there are no records on that name, or some other error, meaning what that error means. The downside to this proposal is obviously that supporting it across the entire great Internet is kind of hard, but we really only need it for dnssd, and dnssd is very explicitly local, not global. If you are doing DNSSD through a full-service resolver to a remote domain, that's a weird configuration. Also, if your DNSSD resolver /doesn't/ support QDCOUNT==2, you get back a FORMERR (or maybe it crashes, which is also a good outcome, since it will lead to them implementing this). In this case you just do the query as two queries, and you lose in this case, but most of the time you win, so it's worth making the change. Thotz? Note that while it's tempting to think that we might use this in other cases, where there is more than one name in the query set, in practice I don't think that would ever make sense for DNSSD. You can't ask for the SRV and TXT records until you've done a browse, and you don't know the hostname yet, so really all you can put in the query are the SRV and TXT records.
_______________________________________________ DNSOP mailing list [email protected] https://www.ietf.org/mailman/listinfo/dnsop
