commit 52ad87a6bd5fc5428b772dc9047e2660d84d8350
parent 76495037cb88f71e529be220f9ab6a4b3604ef8a
Author: Elias Summermatter <elias.summermatter@seccom.ch>
Date: Thu, 3 Dec 2020 13:21:57 +0100
Added some new messages
Diffstat:
1 file changed, 135 insertions(+), 82 deletions(-)
diff --git a/draft-summermatter-set-union.xml b/draft-summermatter-set-union.xml
@@ -211,21 +211,20 @@
<section anchor="messages_operation_request_description" numbered="true" toc="default">
<name>Description</name>
<t>
- Some description what this messages does
+ The operation request is sent by the initiating client to notify the other client
+ to start the protocol.
</t>
</section>
<section anchor="messages_operation_request_structure" numbered="true" toc="default">
<name>Structure</name>
- <figure anchor="figure_gnsrecord">
+ <figure anchor="figure_operation_request">
<artwork name="" type="" align="left" alt=""><![CDATA[
0 8 16 24 32 40 48 56
+-----+-----+-----+-----+-----+-----+-----+-----+
- | EXPIRATION |
- +-----+-----+-----+-----+-----+-----+-----+-----+
- | DATA SIZE | TYPE |
+ | MSG SIZE | MSG TYPE | OPERATION TYPE |
+-----+-----+-----+-----+-----+-----+-----+-----+
- | FLAGS | DATA /
+ | ELEMENT COUNT | APX
+-----+-----+-----+-----+ /
/ /
/ /
@@ -234,108 +233,113 @@
</figure>
<t>where:</t>
<dl>
- <dt>EXPIRATION</dt>
+ <dt>MSG SIZE</dt>
<dd>
- denotes the absolute 64-bit expiration date of the record.
- In microseconds since midnight (0 hour), January 1, 1970 in network
- byte order.
+ is a 16-bit unsigned integer of the GNUNET header which describes the size
+ of the message.
</dd>
- <dt>DATA SIZE</dt>
+ <dt>MSG TYPE</dt>
<dd>
- denotes the 32-bit size of the DATA field in bytes and in network byte
- order.
+ is a 16-bit unsigned integer of the GNUNET header which contains a message number
+ in the GNUNET Protocol. For this message the number is 563.
+
</dd>
- <dt>TYPE</dt>
+ <dt>OPERATION TYPE</dt>
<dd>
- is the 32-bit resource record type. This type can be one of the GNS resource
- records as defined in or a DNS record
- type as defined in
- <xref target="RFC1035"/>
- or any of the
- complementary standardized DNS resource record types. This value must be
- stored in network byte order. Note that values
- below 2^16 are reserved for allocation via IANA (<xref target="RFC6895"/>),
- while values above 2^16 are allocated by the
- GNUnet Assigned Numbers Authority<xref target="GANA"/>.
+ is a 32-bit unsigned integer which describes the type of operation that should be initiated.
</dd>
- <dt>FLAGS</dt>
+ <dt>ELEMENT COUNT</dt>
<dd>
- is a 32-bit resource record flags field (see below).
+ is the count of the elements the requesting party has stored in a 32-bit unsigned integer.
</dd>
- <dt>DATA</dt>
+ <dt>APX</dt>
<dd>
- the variable-length resource record data payload. The contents are defined
- by the
- respective type of the resource record.
+ is 512bit GNUNET hashcode that identifies the application.
</dd>
</dl>
+ </section>
+ </section>
+
+ <section anchor="messages_ibf" numbered="true" toc="default">
+ <name>IBF</name>
+
+ <section anchor="messages_ibf_description" numbered="true" toc="default">
+ <name>Description</name>
<t>
- Flags indicate metadata surrounding the resource record. A flag
- value of 0 indicates that all flags are unset. The following
- illustrates the flag distribution in the 32-bit flag value of a
- resource record:
+ This message is send in the peer2peer protocol to transmit the IBF to the other client
</t>
- <figure anchor="figure_flag">
+ </section>
+ <section anchor="messages_ibf_structure" numbered="true" toc="default">
+ <name>Structure</name>
+ <figure anchor="figure_ibf">
<artwork name="" type="" align="left" alt=""><![CDATA[
- ... 5 4 3 2 1 0
- ------+--------+--------+--------+--------+--------+
- / ... | SHADOW | EXPREL | SUPPL | PRIVATE| / |
- ------+--------+--------+--------+--------+--------+
+ 0 8 16 24 32 40 48 56
+ +-----+-----+-----+-----+-----+-----+-----+-----+
+ | MSG SIZE | MSG TYPE |ORDER| PAD1| PAD2 |
+ +-----+-----+-----+-----+-----+-----+-----+-----+
+ | OFFSET | SALT |
+ +-----+-----+-----+-----+-----+-----+-----+-----+
+ | IBF-SLICES
+ + /
+ / /
+ / /
]]></artwork>
<!-- <postamble>which is a very simple example.</postamble>-->
</figure>
- <t>
- where:
- </t>
+ <t>where:</t>
<dl>
- <dt>SHADOW</dt>
+ <dt>MSG SIZE</dt>
+ <dd>
+ is a 16-bit unsigned integer of the GNUNET header which describes the size
+ of the message.
+ </dd>
+ <dt>MSG TYPE</dt>
+ <dd>
+ is a 16-bit unsigned integer of the GNUNET header which contains a message number
+ in the GNUNET Protocol. For this message the number is 565.
+
+ </dd>
+ <dt>ORDER</dt>
+ <dd>
+ is a 8-bit unsigned integer which signals the order of the IBF. The order of the IBF
+ is defined as the logarithm of the number of buckets of the IBF.
+ </dd>
+ <dt>PAD1</dt>
+ <dd>
+ is 8-bit always set to zero
+ </dd>
+ <dt>PAD2</dt>
<dd>
- If this flag is set, this record should be ignored by resolvers unless all (other)
- records of the same record type have expired. Used to allow zone publishers to
- facilitate good performance when records change by allowing them to put future
- values of records into the DHT. This way, future values can propagate and may be
- cached before the transition becomes active.
+ is 16-bit always set to zero
</dd>
- <dt>EXPREL</dt>
+ <dt>OFFSET</dt>
<dd>
- The expiration time value of the record is a relative time (still in microseconds)
- and not an absolute time. This flag should never be encountered by a resolver
- for records obtained from the DHT, but might be present when a resolver looks up
- private records of a zone hosted locally.
+ is a 32-bit unsigned integer which signals the offset of the strata estimator.
</dd>
- <dt>
- SUPPL
- </dt>
+ <dt>SALT</dt>
<dd>
- This is a supplemental record. It is provided in addition to the
- other records. This flag indicates that this record is not explicitly
- managed alongside the other records under the respective name but
- may be useful for the application. This flag should only be encountered
- by a resolver for records obtained from the DHT.
+ is a 32-bit unsigned integer that contains the salt which was used to create the
+ IBF.
</dd>
- <dt>PRIVATE</dt>
+ <dt>IBF-SLICES</dt>
<dd>
- This is a private record of this peer and it should thus not be
- published in the DHT. Thus, this flag should never be encountered by
- a resolver for records obtained from the DHT.
- Private records should still be considered just like
- regular records when resolving labels in local zones.
+ are variable count of slices in an array. A single slice contains out of a 64-bit Key, a
+ 32-bit Key Hash and a 32 bit count.
</dd>
</dl>
- </section>
- </section>
-
- <section anchor="messages_ibf" numbered="true" toc="default">
- <name>IBF</name>
-
- <section anchor="messages_ibf_description" numbered="true" toc="default">
- <name>Description</name>
- <t>
- Some description what this messages does
- </t>
- </section>
- <section anchor="messages_ibf_structure" numbered="true" toc="default">
- <name>Structure</name>
+ <figure anchor="figure_ibf_slice">
+ <artwork name="" type="" align="left" alt=""><![CDATA[
+ IBF-SLICE
+ 0 8 16 24 32 40 48 56
+ +-----+-----+-----+-----+-----+-----+-----+-----+
+ | KEY |
+ +-----+-----+-----+-----+-----+-----+-----+-----+
+ | KEY HASH | COUNT |
+ +-----+-----+-----+-----+-----+-----+-----+-----+
+ / /
+ / /
+ ]]></artwork>
+ </figure>
</section>
</section>
@@ -345,11 +349,60 @@
<section anchor="messages_elements_description" numbered="true" toc="default">
<name>Description</name>
<t>
- Some description what this messages does
+ This message is used to transmit an actual element from the set to the other client.
</t>
</section>
<section anchor="messages_elements_structure" numbered="true" toc="default">
<name>Structure</name>
+ <figure anchor="figure_elements">
+ <artwork name="" type="" align="left" alt=""><![CDATA[
+ 0 8 16 24 32 40 48 56
+ +-----+-----+-----+-----+-----+-----+-----+-----+
+ | MSG SIZE | MSG TYPE | E TYPE | PADDING |
+ +-----+-----+-----+-----+-----+-----+-----+-----+
+ | E SIZE | AE TYPE | DATA
+ +-----+-----+-----+-----+ /
+ / /
+ / /
+ ]]></artwork>
+ <!-- <postamble>which is a very simple example.</postamble>-->
+ </figure>
+ <t>where:</t>
+ <dl>
+ <dt>MSG SIZE</dt>
+ <dd>
+ is a 16-bit unsigned integer of the GNUNET header which describes the size
+ of the message.
+ </dd>
+ <dt>MSG TYPE</dt>
+ <dd>
+ is a 16-bit unsigned integer of the GNUNET header which contains a message number
+ in the GNUNET Protocol. For this message the number is 566.
+
+ </dd>
+ <dt>E TYPE</dt>
+ <dd>
+ element type is a 16-bit unsigned integer witch defines the element type for
+ the application.
+ </dd>
+ <dt>PADDING</dt>
+ <dd>
+ is 16-bit always set to zero
+ </dd>
+ <dt>E SIZE</dt>
+ <dd>
+ element size is 16-bit unsigned integer that signals the size of the elements data part.
+ </dd>
+ <dt>AE TYPE</dt>
+ <dd>
+ application specific element type is a 16-bit unsigned integer that is needed to identify
+ the type of element that is in the data field
+ </dd>
+ <dt>DATA</dt>
+ <dd>
+ is a field with variable length that contains the data of the element.
+ </dd>
+ </dl>
</section>
</section>