Coder Social home page Coder Social logo

pusateri / draft-pusateri-dnsop-update-timeout Goto Github PK

View Code? Open in Web Editor NEW
0.0 3.0 0.0 685 KB

IETF Internet Draft for DNS TIMEOUT Resource Record

Home Page: https://datatracker.ietf.org/wg/dnsop/documents/

Makefile 3.52% HTML 96.48%
ietf dns rfc2136

draft-pusateri-dnsop-update-timeout's People

Contributors

pusateri avatar timwattenberg avatar

Watchers

 avatar  avatar  avatar

draft-pusateri-dnsop-update-timeout's Issues

Make TIMEOUT applicable to all classes

On Aug 24, 2018, at 3:46 AM, Mark Andrews [email protected] wrote:

This is unnecessary. All the rule does is limit the process to class IN zones. UPDATE, IXFR and AXFR are class agnostic.

  1. TIMEOUT resource records are only defined for CLASS IN.

Can TIMEOUT RRs be added / removed via UPDATE?

If TIMEOUT RRs are treated like any other record (See #11) then they should be allowed to be added/removed via UPDATE. This is a little bit trickier because the timeout values have to be merged into one record. An UPDATE would require:

  1. query for existing TIMEOUT record
  2. take existing TIMEOUT and merge new info
  3. submit UPDATE with prerequisite of existing record

Should we change the hash algorithm?

Mark Andrews writes:

SHAKE128 does not meet these requirements. In OPENSSL it is only
available in pre-release code. It will be years before OPENSSL-1.1.1
is the OPENSSL release for most operating systems.

We (ISC) haven’t started working out what OPENSSL-1.1.1 breaks yet.
OPENSSL-1.1.0 broke lots of existing code. Lots of code required
re-writing to work with OPENSSL-1.1.0 as it broke backwards compatibility
with OPENSSL-1.0.x.

Please pick hash algorithms that are already USED by DNS. The results
can be truncated if you are worried about space.

Change Date/Time Presentation Format

2018-08-29 10:44 GMT+02:00 Mark Andrews [email protected]:

Expiry Time: Internet Date/Time Format from [RFC3339] Section 5.6
profile of ISO 8601

Please don’t add yet another time format that it way too generic.
See RRSIG for how to present the time. Name servers already have
code to parse this.

e.g.
YYYYMMDDHHMMSS in seconds since Jan 1, 1970 UTC ignoring leap seconds.

Also the field doesn’t need to be 64 bits. 32 would be fine. We
really don’t need to support garbage collection +68 years in the
future. You can just reference the RRSIG which uses 32 bit time
stamps. Name servers do serial number arithmetic.

TIMEOUT record cleanup

Need to discuss case when NO METHOD records are to be removed in the presence of more specific RDATA TIMEOUT records.

Need better motivational section

Feedback from Joe Abley @ableyjoe:

I don't think it's unreasonable for the draft to explore its applicability and explain clearly why standardisation or in-zone signalling (hence RRs) is necessary as a prerequisite to standardisation.

Expiry time packet format

Tony Finch @fanf2 would like to see a different timestamp format.

Currently there is a 64-bit unix epoch timestamp in the TIMEOUT resource record. This is currently the recommended way to store timestamps and what is returned by gettimeofday() on all modern systems. However, this is not the customary way to store timestamps in the current DNS protocols which already have 4 different ways to represent time (RRSIG, SIG, TKEY, and TSIG).

One recommendation is to use a wrapping 32-bit timestamp as specified in [RFC4034] 3.1.5. Signature Expiration and Inception Fields

discuss third party record deletion through UPDATE

A third party could monitor TIMEOUT records and when expiry time occurs, delete the represented records as well as the TIMEOUT records if the authoritative doesn't know how to handle TIMEOUT resource records.

Primary/Secondary vs. Master/Slave

The current document mixes this terminology. Not sure which is better to use. DNS Update uses Master/Slave. Need to determine if there is a difference.

Should record TTL in response be limited by TIMEOUT lifetime?

Paul Vixie comments:

you don't appear to have addressed TTL overrun here. it's necessary for a record which will expire to have a declining TTL as that expiry time nears. if it's always been 3600, then when you're within one hour of expiry time, returned TTL has to be reduced to whatever time remains.

Also, Paul Vixie comments:

The ttl which must decline is that of the expiring record (or its rrset, due to atomicity), and not that of the TIMEOUT RR itself. you cannot hand out an AAAA or PTR (or in the degenerate case, an A RR) with a TTL of 3600 if it is due to expire in 600 seconds. that RR has to have its TTL adjusted during its final authority-TTL interval so that noone has it in cache beyond the time of its death by expiry.

Have a "TIMEOUT is valid for all RRs under the owner" option

If we add an option to specify that the chosen expiry time should be valid for all RRs under one owner, the RDATA hashing could be omitted in this case.

Choosing a Hash Algorithm Index and Hash Count of 0 might be a good fit for this behaviour?

Explain why individual records need TIMEOUT and not just entire RRSet

Tony Finch @fanf2 paraphrased:
Does it (cleanup) need to be per-record? Why not GC the whole RRset?

Mark Andrews:
Because there are scenarios where you do want to GC as single
record from the RRset. AD has them with SRV. Each server adds
its own SRV record to the RRset. When a server goes away without
cleaning up you want the SRV to go but the RRset to remain.

A machine has permanent and time limited addresses.

Hashing names in RDATA

Section 4.5 discusses names in RDATA should be uncompressed before hashing. Mark Andrews (ISC) suggests the following language instead: "The record MUST be in canonical DNSSEC form ([RFC4034] Section 6)."

Multiple expiry times per RR vs multiple RRs

In the current draft version of the draft (339ceed), there are multiple hash lists in one TIMEOUT RR, each associating RRs with an expiry time.

If we would have only one expiry time per RR and would suggest using multiple RRs instead (similar to MX RRs), deleting/updating the expiry time would be more easy, because this would just mean deleting the RR.

Discuss UPDATE sources including TIMEOUT records

When an external source adds records via UPDATE, it could add the corresponding TIMEOUT records at the same time to communicate the lifetimes and not require the authoritative to create them. If the authoritative server supports TIMEOUT, it would then remove all the records at the appropriate time. If it doesn't a third party could remove them via UPDATE.

Should TIMEOUT RR include TYPE?

Mark Andrews comments:

I would add a covered type field to TIMEOUT (c.f. RRSIG). I also wouldn’t have more than
a single timeout per record. I’m tempted to say a single hash as well. If there is multiple
timeouts per record then the blocks need to be sorted in timeout order.

Covered is there to reduce the number of RR’s that need to be hashed to remove a record.
It will also reduce the size of IXFR’s as you don’t need to re-construct a new TIMEOUT
record that covers every timeout at a name on each change.

For all records at a name is often more expensive that for all records of type covered.
Name servers are optimised for looking up <name,type,class> tuples rather than <name,class>
tuples.

Should we address TIMEOUT TTL?

This came to my mind in context of #11 (and #8).
I think the answer is no.
The TTL of a TIMEOUT RR should not matter, because there’s no reason for clients to query this RR and the server itself also doesn’t need to use it in any way.

RR present in multiple TIMEOUT instances

We might end up with RRs being present in multiple instances, potentially with different expiry times and hash values.

I suggest to mention at least that if an expiry time is reached an no RR matching a given hash value is present, the server should just continue with the next hash value.

Additionally we might want to specify a server behavior to avoid this situation by performing checks upon receiving a message resulting in an TIMEOUT RR (even though the source of the message is out of scope of the draft).

If you agree, I will add some text.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.