One of the more complicated aspects of ANAME is working out how TTLs
should work, because there are a bunch of tricky constraints. There's
a fairly long rationale in an appendix about the various issues -
https://tools.ietf.org/html/draft-ietf-dnsop-aname-02#appendix-D

As a design guideline (to help decide choices) I have tried to make ANAME
"like CNAME but only for address records", as much as possible.

So, the current spec says that the TTL of the sibling address records is
the least TTL from the chain of ANAME and CNAME records and the ultimate
target address records. This tries to match the implicit TTL of a CNAME
chain, which is a result of the chain being followed each time on demand,
so the earliest time the result can change is when the record with the
least TTL changes.

As a zone administrator, I prefer not having to care about TTLs too much,
so I prefer the ANAME mechanism to do the sensible thing without
hand-holding. I had a suggestion (from Matthijs Mekking I think?) of just
using the ANAME's TTL to set the TTL of the sibling address records, but
for the zones I look after, this would require a lot of special-case TTLs
and annoying manual work.

However, I just realised the currently specified "least TTL" logic is
going to have interesting effects when the greatest common divisor of the
TTLs is less than the least TTL, when the ANAME processor is querying via
a resolver cache that is outside its control.

e.g. consider what happens when there is an ANAME with TTL 30s and target
address records with TTL 45s.

In the first round, the ANAME processor will choose a 30s TTL.

In the second round, 30s later, it will get the target address records
from the cache with a 15s TTL, so it'll choose a 15s TTL.

The in the third round it'll be back to 30s.

The TTL will flip-flop, and there will be a lot of unwanted zone updates.

This is ugly :-( I'm not sure what the best solution is.

One possibility is to make the ANAME processor keep a bit more state. At
the moment its nearly-stateless algorithm naturally sees through caches to
converges on the target's authoritative TTL, because it re-checks after
the cache expires. If instead it explicitly tracks the TTLs of each link
in the ANAME+CNAME chain and deliberately works out the authoritative
TTLs, then it can avoid the GCD flip-flop. But it would makes the algorihm
and spec quite a lot more complicated, though I think I prefer that to
manual hand-holding...

Tony.
-- 
f.anthony.n.finch  <d...@dotat.at>  http://dotat.at/
democracy, participation, and the co-operative principle

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

Reply via email to