handshake-org / handshake-org/hsd

SOA Serial does not reflect the version of the data being served

Open
#690 20 comments 0 reactions 0 assignees View on GitHub
Dominant language
JavaScript
Stars
2.1k
Forks
306
PR merge metrics
No merged PRs in 30d

Description

This is effectively a duplicate, but broader description, of #559

In DNS, the purpose of the SOA Serial is to tell the clients the version of the data currently being served.

This is **NOT** being fulfilled by simply serving out the current date & time as it fails to take into account when a server is out-of-date & is still catching up, e.g. due to maintenance downtime or connectivity issues.

This causes a problem when running two instances of `hsd` (for failover) in conjunction with Buffrr's AXFR plug-in to feed the merged ROOT zone to one or more slaves. If one `hsd` server is taken down for a day or two, then brought back up - it will immediately lie that it has the latest data, when in fact it is still catching up.

This can cause the data on a downstream slave to be rolled back to an earlier version & the slave will then not be updated until the clock marches forward.

I've pointed this out varios devs at various times, but so far it's not fixed (v3.0.0)

The timestamp on the last block that was included in the most recent urkel tree update seems a reasonable choice to me, or this timestamp could be converting into `YYYYMMSSXX` format, should you prefer, but many TLDs use unixtime as the SOA Serial these days.

Using any information that is always increasing, from the last block that was included in the most recent urkel tree update, will ensure that only when two servers are serving the same version of information will they return the same SOA Serial.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.