>Should we treat synthesis as if the cache is pretending to be an
>authoritative server?
>
>e.g. for wildcards and NSEC3, something like,
>
>       When synthesizing a wildcard response from its cache, the
>       validating resolver MUST include all the records specified in
>       RFC 5155 section 7.2.5 (for negative responses) or section 7.2.6
>       (for positive responses). That is, it MUST generate a response
>       that matches what an authoritative server would send. If the
>       required records are not present in the cache, the resolver SHALL
>       query upstream instead of synthesizing the response.

Yes, although it's kind of subtle.  For example, I query for a.h.g.iana.fail:

;; QUESTION SECTION:
;a.h.g.iana.fail.               IN      A

;; ANSWER SECTION:
a.h.g.iana.fail.        3510    IN      A       2.2.2.2
a.h.g.iana.fail.        3510    IN      RRSIG   A 8 4 3600 20161211000000 
20161010180056 31806 iana.fail. 
fe7QsinhJnyAk6Zz52OO676KXryp3GDMdez38CwyiwNeEiaEzzu83h6c 
XHum/xbt7uYA7B5EmI/W0x6LMkpe9oAZgzj/LcbXv/BLqvUY4+iCcoW6 
6UAoyPeWmSRaheRuBG5jvr/kIFqN+VGBo5Kt6pzGt+NIuIemjRcfPkz4 rIk=

;; AUTHORITY SECTION:
*.h.g.iana.fail.        7110    IN      NSEC    b.h.g.iana.fail. A RRSIG NSEC
*.h.g.iana.fail.        7110    IN      RRSIG   NSEC 8 4 7200 20161211000000 
20161010180056 31806 iana.fail. 
iQF8nmONvtzkvDy+8QRjlRRI12+XyJ0XZG8jig/o7EJ21P/VShfE3I9W 
3E+JVnkKuYg3Wg3R4tSUSLVZKxVaL/yGSTDvI0+S4RfjNaTWoeuqb+qo 
vAw78j2TMjevWJPA+NhYjHqc6daB3b38kn5cN3vCYmAO1OR5pn+whdqN d94=
iana.fail.              3510    IN      NS      sdn.iecc.com.
iana.fail.              3510    IN      NS      osdn.iecc.com.
iana.fail.              3510    IN      NS      light.lightlink.com.
iana.fail.              3510    IN      RRSIG   NS 8 2 3600 20161211000000 
20161010180056 31806 iana.fail. 
I2mKwv75mSfgKf6MBkVWaXg4By9Bs8reUmnTHiBrHcY6O1hMA9XBE8Nq 
puyXgNured/cHlD8TcApu9FXKWw/L6gjE72eEvZ0WF5ciMGSHrPkW7va 
XPEXKgD0n9kVHITdFcXGSm5DfQ7j1bYb/j76GSzlxiX1cTss+V2uAXU+ wl0=

You can see that the wildcard is *.h.g.iana.fail.

But query for e.h.g.iana.fail:

;; QUESTION SECTION:
;e.h.g.iana.fail.               IN      A

;; ANSWER SECTION:
e.h.g.iana.fail.        3600    IN      A       2.2.2.2
e.h.g.iana.fail.        3600    IN      RRSIG   A 8 4 3600 20161211000000 
20161010180056 31806 iana.fail. 
fe7QsinhJnyAk6Zz52OO676KXryp3GDMdez38CwyiwNeEiaEzzu83h6c 
XHum/xbt7uYA7B5EmI/W0x6LMkpe9oAZgzj/LcbXv/BLqvUY4+iCcoW6 
6UAoyPeWmSRaheRuBG5jvr/kIFqN+VGBo5Kt6pzGt+NIuIemjRcfPkz4 rIk=

;; AUTHORITY SECTION:
b.h.g.iana.fail.        7061    IN      NSEC    mx.iana.fail. A RRSIG NSEC
b.h.g.iana.fail.        7061    IN      RRSIG   NSEC 8 5 7200 20161211000000 
20161010180056 31806 iana.fail. 
hjxpHIt1tzpXePloM08h1wwzY48kBSSH+okPmkglDod2QG2oqtZaEHlt 
7rNhjrdwCKcnfoj7QawpneApAciM6jpLevjg8VqCpvHHRNBwgMKPwYq1 
ABiFdoMpEdc2D2+7SZ1RMCeIN+NFZtuBMBuYVWMDqvIwxAEapP9PPVXS vC8=
iana.fail.              3403    IN      NS      sdn.iecc.com.
iana.fail.              3403    IN      NS      osdn.iecc.com.
iana.fail.              3403    IN      NS      light.lightlink.com.
iana.fail.              3403    IN      RRSIG   NS 8 2 3600 20161211000000 
20161010180056 31806 iana.fail. 
I2mKwv75mSfgKf6MBkVWaXg4By9Bs8reUmnTHiBrHcY6O1hMA9XBE8Nq 
puyXgNured/cHlD8TcApu9FXKWw/L6gjE72eEvZ0WF5ciMGSHrPkW7va 
XPEXKgD0n9kVHITdFcXGSm5DfQ7j1bYb/j76GSzlxiX1cTss+V2uAXU+ wl0=

You can see that it's synthesized from a wildcard, but you can't tell whether 
the wildcard was
*.iana.fail or *.g.iana.fail or *.h.g.iana.fail.

And if I query for i.g.iana.fail:

;i.g.iana.fail.                 IN      A

;; ANSWER SECTION:
i.g.iana.fail.          3600    IN      A       1.1.1.1
i.g.iana.fail.          3600    IN      RRSIG   A 8 3 3600 20161211000000 
20161010180056 31806 iana.fail. 
u3icLxUEeJ2RMuhUufrhvze8hUAEkNCKPAfVHXYlQq7D1don0l4opjI2 
Sd6fxEPKcF8ah1vtCvIewFctbXQ/HH6gviKslrJekzJcX6PQccsMtygG 
SzAr3HyWf2HfcMfDJqW2PjP5v9teB/uR7KCWGbxYogFt+sEXu77xHhqi Kug=

;; AUTHORITY SECTION:
b.h.g.iana.fail.        6796    IN      NSEC    mx.iana.fail. A RRSIG NSEC
b.h.g.iana.fail.        6796    IN      RRSIG   NSEC 8 5 7200 20161211000000 
20161010180056 31806 iana.fail. 
hjxpHIt1tzpXePloM08h1wwzY48kBSSH+okPmkglDod2QG2oqtZaEHlt 
7rNhjrdwCKcnfoj7QawpneApAciM6jpLevjg8VqCpvHHRNBwgMKPwYq1 
ABiFdoMpEdc2D2+7SZ1RMCeIN+NFZtuBMBuYVWMDqvIwxAEapP9PPVXS vC8=
iana.fail.              3138    IN      NS      sdn.iecc.com.
iana.fail.              3138    IN      NS      osdn.iecc.com.
iana.fail.              3138    IN      NS      light.lightlink.com.
iana.fail.              3138    IN      RRSIG   NS 8 2 3600 20161211000000 
20161010180056 31806 iana.fail. 
I2mKwv75mSfgKf6MBkVWaXg4By9Bs8reUmnTHiBrHcY6O1hMA9XBE8Nq 
puyXgNured/cHlD8TcApu9FXKWw/L6gjE72eEvZ0WF5ciMGSHrPkW7va 
XPEXKgD0n9kVHITdFcXGSm5DfQ7j1bYb/j76GSzlxiX1cTss+V2uAXU+ wl0=

I get a different synthesized answer because in this case, there's one
wildcard for *.g.iana.fail and another one for *.b.g.iana.fail.

That's OK, and I believe it is straightforward for a cache to tell
what names it can synthesize and what names it can't, but it means
it'd probably be a good idea to make it clear that if there are other
names in the wildcard's range, the cache often can't synthesize
results.

R's,
John

PS: These names are real, feel free to poke at them.

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

Reply via email to