commit 06c26eb5f46a20f23a10aa6042f4a5c68f3563f6
parent 3a7e4b4df39119f53b2d95f408846400c3788937
Author: Christian Grothoff <christian@grothoff.org>
Date: Fri, 30 Jun 2023 23:00:08 +0200
clarify how and when to use PUT
Diffstat:
1 file changed, 13 insertions(+), 8 deletions(-)
diff --git a/draft-schanzen-gns.xml b/draft-schanzen-gns.xml
@@ -1774,7 +1774,13 @@ S-Decrypt(zk,label,expiration,ciphertext):
<artwork name="" type="" align="left" alt=""><![CDATA[
PUT(key,block)
GET(key) -> block
- ]]></artwork>
+]]></artwork>
+ <t>
+ A GNS implementation publishes blocks
+ in accordance to the properties and recommendations of the underlying
+ remote storage. This can include a periodic refresh operation to preserve the
+ availability of published blocks.
+ </t>
<t>
There is no mechanism to explicitly delete individual blocks from remote storage.
However, blocks include an EXPIRATION field which guides remote
@@ -1782,13 +1788,16 @@ GET(key) -> block
</t>
<t>
All resource records from the same zone sharing the same label are
- encrypted and published together in a single records block
+ encrypted and published together in a single resource records block
(RRBLOCK) in the remote storage under a key q as illustrated
in <xref target="figure_storage_publish"/>.
A GNS implementation <bcp14>MUST NOT</bcp14> include expired resource
records in blocks.
- The implementation <bcp14>MUST</bcp14> use the PUT storage procedure
- to update the zone contents accordingly.
+ An implementation <bcp14>MUST</bcp14> use the PUT storage procedure
+ when record sets change to update the zone contents. Implementations
+ <bcp14>SHOULD</bcp14> ensure that the EXPIRATION fields of RRBLOCKs
+ increases strictly monotonically for every change, even if the smallest
+ expiration time of records in the block does not.
</t>
<figure anchor="figure_storage_publish" title="Management and publication of local zones in the distributed storage.">
<artwork name="" type="" align="left" alt=""><![CDATA[
@@ -1889,10 +1898,6 @@ q := SHA-512 (ZKDF(zk, label))
supplemental flag set (see <xref target="rrecords"/>).
The contained resource records are encrypted using the S-Encrypt()
function defined by the zone type of the zone to which the resource records belong.
- A GNS implementation publishes RRBLOCKs
- in accordance to the properties and recommendations of the underlying
- storage. This can include a periodic refresh operation to ensure the
- availability of the published RRBLOCKs.
The GNS RRBLOCK wire format is illustrated in
<xref target="figure_record_block"/>.
</t>