lsd0003

LSD0003: Set Union
Log | Files | Refs | README

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:
Mdraft-summermatter-set-union.xml | 217+++++++++++++++++++++++++++++++++++++++++++++++++------------------------------
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>