gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[lsd0003] branch master updated: finish chapter 6


From: gnunet
Subject: [lsd0003] branch master updated: finish chapter 6
Date: Sun, 13 Jun 2021 15:05:16 +0200

This is an automated email from the git hooks/post-receive script.

grothoff pushed a commit to branch master
in repository lsd0003.

The following commit(s) were added to refs/heads/master by this push:
     new 4700a37  finish chapter 6
4700a37 is described below

commit 4700a3757eb6d158c32f8e457693b0702d62fa58
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Sun Jun 13 15:02:32 2021 +0200

    finish chapter 6
---
 draft-summermatter-set-union.xml | 646 ++++++++++++++++++++-------------------
 1 file changed, 338 insertions(+), 308 deletions(-)

diff --git a/draft-summermatter-set-union.xml b/draft-summermatter-set-union.xml
index 5b6dfa7..3ac252b 100644
--- a/draft-summermatter-set-union.xml
+++ b/draft-summermatter-set-union.xml
@@ -952,225 +952,235 @@ hashSum |    0x0101   |    0x5151   |    0x5050   |    
0x0000   |
               </dl>
             </section>
             <section anchor="modeofoperation_individual-elements" 
numbered="true" toc="default">
-                <name>Differential Synchronisation Mode</name>
-                <t>
-                  The message format used by the protocol limits the maximum 
message size to
-                  64 kb. Given that L can be large, an IBF will not always fit 
within that
-                  size limit. To deal with this, larger IBFs are split into 
multiple messages.
-                </t>
-                <t>
-                  When the initiating peer in the <strong>Expected SE</strong> 
state decides to use the differential synchronisation mode, it
-                  sends an IBF, which may
-                  consist of several <em><xref target="messages_ibf" 
format="title" /></em> messages,
-                  to the receiving peer and transitions into the 
<strong>Passive Decoding</strong> state.
-                </t>
-                <t>
-                  The receiving peer in the <strong>Expecting IBF</strong> 
state receives the
-                  first <em><xref target="messages_ibf" format="title" /></em> 
message from
-                  the initiating peer, and transitions into the 
<strong>Expecting IBF Last</strong> state
-                  if the IBF was split into multiple <em><xref 
target="messages_ibf" format="title" /></em>
-                  messages. If there is just a single <em><xref 
target="messages_ibf" format="title" /></em>
-                  message, the receiving peer
-                  transitions directly to the <strong>Active Decoding</strong> 
state.
-                </t>
-                <t>
-                  The peer that is in the <strong>Active Decoding</strong>, 
<strong>Finish Closing</strong> or in the <strong>Expecting IBF Last</strong>
-                  state is called the active peer, and the peer that is in 
either the <strong>Passive Decoding</strong> or the <strong>Finish 
Waiting</strong> state
-                  is called the passive peer.
-                </t>
-                <t>
-                  A state diagram illustrating the state machine used during 
differential synchronization
-                  is provided
+              <name>Differential Synchronisation Mode</name>
+              <t>
+                The message format used by the protocol limits the maximum 
message size to
+                64 kb. Given that L can be large, an IBF will not always fit 
within that
+                size limit. To deal with this, larger IBFs are split into 
multiple messages.
+              </t>
+              <t>
+                When the initiating peer in the <strong>Expected SE</strong> 
state decides to use the differential synchronisation mode, it
+                sends an IBF, which may
+                consist of several <em><xref target="messages_ibf" 
format="title" /></em> messages,
+                to the receiving peer and transitions into the <strong>Passive 
Decoding</strong> state.
+              </t>
+              <t>
+                The receiving peer in the <strong>Expecting IBF</strong> state 
receives the
+                first <em><xref target="messages_ibf" format="title" /></em> 
message from
+                the initiating peer, and transitions into the 
<strong>Expecting IBF Last</strong> state
+                if the IBF was split into multiple <em><xref 
target="messages_ibf" format="title" /></em>
+                messages. If there is just a single <em><xref 
target="messages_ibf" format="title" /></em>
+                message, the receiving peer
+                transitions directly to the <strong>Active Decoding</strong> 
state.
+              </t>
+              <t>
+                The peer that is in the <strong>Active Decoding</strong>, 
<strong>Finish Closing</strong> or in the <strong>Expecting IBF Last</strong>
+                state is called the active peer, and the peer that is in 
either the <strong>Passive Decoding</strong> or the <strong>Finish 
Waiting</strong> state
+                is called the passive peer.
+              </t>
+              <t>
+                A state diagram illustrating the state machine used during 
differential synchronization
+                is provided
                 <eref 
target="https://git.gnunet.org/lsd0003.git/plain/statemachine/differential_state_machine.png";>here</eref>.
-                </t>
-                <t><strong>The behavior of the participants the different 
states is described below:</strong></t>
-                <dl>
-                    <dt><strong>Passive Decoding:</strong></dt>
+              </t>
+              <t><strong>The behavior of the participants the different states 
is described below:</strong></t>
+              <dl>
+                <dt><strong>Passive Decoding:</strong></dt>
+                <dd>
+                  <t>
+                    In the <strong>Passive Decoding</strong> state the passive 
peer reacts to requests from the active peer.
+                    The action the passive peer executes depends on the 
message the passive peer receives in the <strong>Passive Decoding</strong> 
state from the active peer
+                    and is described below on a per message basis.
+                  </t>
+
+                  <dl>
+                    <dt><em><xref target="messages_inquiry" format="title" 
/></em> message:</dt>
                     <dd>
-                        <t>
-                        In the <strong>Passive Decoding</strong> state the 
passive peer reacts to requests from the active peer.
-                        The action the passive peer executes depends on the 
message the passive peer receives in the <strong>Passive Decoding</strong> 
state from the active peer
-                        and is described below on a per message basis.
-                        </t>
-
-                        <dl>
-                            <dt><em><xref target="messages_inquiry" 
format="title" /></em> message:</dt>
-                            <dd>
-                                The <em><xref target="messages_inquiry" 
format="title" /></em> message
-                                is received if the active peer requests the 
SHA-512 hash of one or more elements (by sending the 64 bit element ID)
-                                that are missing from the active peer's set.
-                                In this case the passive peer answers with 
<em><xref target="messages_offer" format="title" /></em> messages
-                                which contain the SHA-512 hash of the 
requested element.  If the passive peer does not have an element with
-                                a matching element ID, it MUST ignore the 
inquiry (in this case, a bucket was falsely classified as pure, decoding the 
IBF will eventually fail, and roles will be swapped). <!-- FIXME: should we not 
remember that this happened and FAIL if the other peer sends DONE instead of an 
IBF? -->
-                                If multiple elements match the 64 bit element 
ID, the passive
-                                peer MUST send offers for all of the matching 
elements.
-                            </dd>
-                            <dt><em><xref target="messages_demand" 
format="title" /></em> message:</dt>
-                            <dd>
-                                The <em><xref target="messages_demand" 
format="title" /></em> message
-                                is received if the active peer requests a 
complete element that is missing in the active peers set in response to an 
offer. If the requested element is known and has not yet been transmitted
-                                the passive peer answers with an <em><xref 
target="messages_elements" format="title" /></em> message which contains the 
full,
-                                application-dependent data of the requested 
element.  If the passive peer receives a demand for a SHA-512 hash for which
-                                it has no corresponding element, a protocol 
violation is detected and the protocol MUST be aborted.
-                                Implementations MUST also abort when facing 
demands without previous matching offers or for which the passive peer 
previously transmitted the element to the active peer.
-                            </dd>
-                            <dt><em><xref target="messages_offer" 
format="title" /></em> message:</dt>
-                            <dd>
-                                The <em><xref target="messages_offer" 
format="title" /></em> message
-                                is received if the active peer has decoded an 
element that is present in the active peers set and is likely be missing in the
-                                set of the passive peer. If the SHA-512 hash 
of the offer is indeed not a hash of any of the elements from the set of
-                                the passive peer, the passive peer MUST answer 
with a <em><xref target="messages_demand" format="title" /></em> message
-                                for that SHA-512 hash and remember that it 
issued this demand. The demand thus needs to be added to a list with 
unsatisfied demands.
-                            </dd>
-                            <dt><em><xref target="messages_elements" 
format="title" /></em> message:</dt>
-                            <dd>
-                                When a new <em><xref 
target="messages_elements" format="title" /></em> message has been received the 
peer checks if a corresponding
-                                <em><xref target="messages_demand" 
format="title" /></em> for the element has been sent
-                                and the demand is still unsatisfied.
-                                If the element has been demanded the peer 
checks the element for validity, removes it from the list
-                                of pending demands and then saves the element 
to the set. Otherwise the peer
-                                ignores the element.
-                            </dd>
-                            <dt><em><xref target="messages_ibf" format="title" 
/></em> message:</dt>
-                            <dd>
-                                If an <em><xref target="messages_ibf" 
format="title" /></em> message is received, this
-                                indicates that decoding of the IBF on the 
active site has failed and roles will be swapped.
-                                The receiving passive peer transitions into 
the <strong>Expecting IBF Last</strong> state,
-                                and waits for more <em><xref 
target="messages_ibf" format="title" /></em> messages.
-                                There, once the final <em><xref 
target="messages_ibf_last" format="title" /></em> message has been received, it 
transitions to <strong>Active Decoding</strong>.
-                            </dd>
-                            <dt><em><xref target="messages_ibf_last" 
format="title" /></em> message:</dt>
-                            <dd>
-                                If an <em><xref target="messages_ibf_last" 
format="title" /></em> message is received this
-                                indicates that there is just one IBF slice 
left and a direct state and role transition from
-                                <strong>Passive Decoding</strong> to 
<strong>Active Decoding</strong> is initiated.
-                            </dd>
-                            <dt><em><xref target="messages_done" 
format="title" /></em> message:</dt>
-                            <dd>
-                                Receiving the <em><xref target="messages_done" 
format="title" /></em> message signals
-                                the passive peer that all demands of the 
active peer have been satisfied. Alas, the
-                                active peer will continue to process demands 
from the passive peer.
-                                Upon receiving this message, the passive peer 
transitions into the
-                                <strong>Finish Waiting</strong> state.
-                            </dd>
-                        </dl>
+                      The <em><xref target="messages_inquiry" format="title" 
/></em> message
+                      is received if the active peer requests the SHA-512 hash 
of one or more elements (by sending the 64 bit element ID)
+                      that are missing from the active peer's set.
+                      In this case the passive peer answers with <em><xref 
target="messages_offer" format="title" /></em> messages
+                      which contain the SHA-512 hash of the requested element. 
 If the passive peer does not have an element with
+                      a matching element ID, it MUST ignore the inquiry (in 
this case, a bucket was falsely classified as pure, decoding the IBF will 
eventually fail, and roles will be swapped). <!-- FIXME: should we not remember 
that this happened and FAIL if the other peer sends DONE instead of an IBF? -->
+                      If multiple elements match the 64 bit element ID, the 
passive
+                      peer MUST send offers for all of the matching elements.
                     </dd>
-                    <dt><strong>Active Decoding:</strong></dt>
+                    <dt><em><xref target="messages_demand" format="title" 
/></em> message:</dt>
                     <dd>
-                        <t>
-                            In the <strong>Active Decoding</strong> state the 
active peer decodes the IBFs and evaluates the set difference
-                            between the active and passive peer. Whenever an 
element ID is obtained by decoding the IBF, the active peer
-                            sends either an offer or an inquiry to the passive 
peer, depending on which site the decoded element is missing.
-                        </t>
-                        <t>
-                            If the IBF decodes a positive (1) pure bucket, the 
element is missing on the passive peers site.
-                            Thus, the active peer sends an <em><xref 
target="messages_offer" format="title" /></em> to the passive peer.
-                            A negative (-1) pure bucket indicates that an 
element is missing in the active peers set, so the active peer
-                            sends a <em><xref target="messages_inquiry" 
format="title" /></em> to the passive peer.
-                        </t>
-                        <t>
-                            In case the IBF does not successfully decode 
anymore, the active peer sends a new IBF computed with a different IBF-salt to 
the passive peer
-                            and changes into <strong>Passive Decoding</strong> 
state. This initiates a role swap.
-                            To reduce overhead and prevent double transmission 
of offers and elements, the new IBF is created
-                            on the local set after updating it with the all of 
the elements that have been successfully demanded.  Note that the active peer 
MUST NOT wait for all active demands to be satisfied, as demands can fail if a 
bucket was falsely classified as pure.
-                        </t>
-                        <t>
-                            As soon as the active peer successfully finished 
decoding the IBF, the active peer sends a
-                            <em><xref target="messages_done" format="title" 
/></em> message to the passive peer.
-                        </t>
-                        <t>
-                            All other actions taken by the active peer depend 
on the message the active peer receives from
-                            the passive peer. The actions are described below 
on a per message basis:
-                        </t>
-                        <dl>
-                            <dt><em><xref target="messages_offer" 
format="title" /></em> message:</dt>
-                            <dd>
-                                The <em><xref target="messages_offer" 
format="title" /></em> message indicates that the
-                                passive peer received a <em><xref 
target="messages_inquiry" format="title" /></em> message from
-                                the active peer. If a inquiry has been sent and
-                                the offered element is missing in the active 
peers set,
-                                the active peer sends a <em><xref 
target="messages_demand" format="title" /></em> message to the
-                                passive peer. The demand needs to be added to 
a list of unsatisfied demands.
-                                In case the received offer is for an element 
that is already in the set of the peer, the offer MUST BE ignored.
-                            </dd>
-                            <dt><em><xref target="messages_demand" 
format="title" /></em> message:</dt>
-                            <dd>
-                                The <em><xref target="messages_demand" 
format="title" /></em> message indicates that the
-                                passive peer received a <em><xref 
target="messages_offer" format="title" /></em> from
-                                the active peer. The active peer satisfies the 
demand of the passive peer by sending
-                                <em><xref target="messages_elements" 
format="title" /></em> message if a offer request
-                                for the element has been sent.
-                                <!-- FIXME: I do not understand. How can this 
happen, even with impure buckets? => too late, look at tomorrow! -->
-                                In case the demanded element does not exist in 
the
-                                set, there was probably a bucket decoded that 
was not pure. Potentially all <em><xref target="messages_offer" format="title" 
/></em>
-                                and <em><xref target="messages_demand" 
format="title" /></em> messages sent later are invalid.
-                                In this case a role change active -> passive 
with a new IBF is easiest.
-                            </dd>
-                            <dt><em><xref target="messages_elements" 
format="title" /></em> message:</dt>
-                            <dd>
-                                An element that is received is marked in the 
list of demanded elements as satisfied, validated and
-                                saved and no further action is taken.
-                                Elements that are not demanded or already 
known are discarded.
-                            </dd>
-                            <dt><em><xref target="messages_done" 
format="title" /></em> message:</dt>
-                            <dd>
-                                Receiving the message <em><xref 
target="messages_done" format="title" /></em> indicates
-                                that all demands of the passive peer have been 
satisfied. The active peer then changes into the
-                               <strong>Finish Closing</strong> state.
-                                If the IBF has not finished decoding and the 
<em><xref target="messages_done" format="title" /></em>
-                                is received, the other peer is not in 
compliance with the protocol and the set reconciliation MUST be aborted.
-                            </dd>
-                        </dl>
+                      The <em><xref target="messages_demand" format="title" 
/></em> message
+                      is received if the active peer requests a complete 
element that is missing in the active peers set in response to an offer. If the 
requested element is known and has not yet been transmitted
+                      the passive peer answers with an <em><xref 
target="messages_elements" format="title" /></em> message which contains the 
full,
+                      application-dependent data of the requested element.  If 
the passive peer receives a demand for a SHA-512 hash for which
+                      it has no corresponding element, a protocol violation is 
detected and the protocol MUST be aborted.
+                      Implementations MUST also abort when facing demands 
without previous matching offers or for which the passive peer previously 
transmitted the element to the active peer.
                     </dd>
-                    <dt><strong>Expecing IBF Last</strong></dt>
+                    <dt><em><xref target="messages_offer" format="title" 
/></em> message:</dt>
                     <dd>
-                        <t>
-                            In the <strong>Expecing IBF Last</strong> state 
the active peer continuously receives <em><xref target="messages_ibf" 
format="title" /></em>
-                            messages from the passive peer. When the last 
<em><xref target="messages_ibf_last" format="title" /></em> message is received
-                            the active peer changes into <strong>Active 
Decoding</strong> state.
-                        </t>
+                      The <em><xref target="messages_offer" format="title" 
/></em> message
+                      is received if the active peer has decoded an element 
that is present in the active peers set and is likely be missing in the
+                      set of the passive peer. If the SHA-512 hash of the 
offer is indeed not a hash of any of the elements from the set of
+                      the passive peer, the passive peer MUST answer with a 
<em><xref target="messages_demand" format="title" /></em> message
+                      for that SHA-512 hash and remember that it issued this 
demand. The demand thus needs to be added to a list with unsatisfied demands.
                     </dd>
-                    <dt><strong>Finish Closing</strong> / <strong>Finish 
Waiting</strong></dt>
+                    <dt><em><xref target="messages_elements" format="title" 
/></em> message:</dt>
                     <dd>
-                        <t>
-                            In this states the peers are waiting for all 
demands to be satisfied and for the synchronisation
-                            to be completed. When all demands are satisfied 
the peer changes into  <strong>Finished</strong>state.
-                        </t>
+                      When a new <em><xref target="messages_elements" 
format="title" /></em> message has been received the peer checks if a 
corresponding
+                      <em><xref target="messages_demand" format="title" 
/></em> for the element has been sent
+                      and the demand is still unsatisfied.
+                      If the element has been demanded the peer checks the 
element for validity, removes it from the list
+                      of pending demands and then saves the element to the 
set. Otherwise the peer
+                      ignores the element.
                     </dd>
-                </dl>
+                    <dt><em><xref target="messages_ibf" format="title" /></em> 
message:</dt>
+                    <dd>
+                      If an <em><xref target="messages_ibf" format="title" 
/></em> message is received, this
+                      indicates that decoding of the IBF on the active site 
has failed and roles will be swapped.
+                      The receiving passive peer transitions into the 
<strong>Expecting IBF Last</strong> state,
+                      and waits for more <em><xref target="messages_ibf" 
format="title" /></em> messages.
+                      There, once the final <em><xref 
target="messages_ibf_last" format="title" /></em> message has been received, it 
transitions to <strong>Active Decoding</strong>.
+                    </dd>
+                    <dt><em><xref target="messages_ibf_last" format="title" 
/></em> message:</dt>
+                    <dd>
+                      If an <em><xref target="messages_ibf_last" 
format="title" /></em> message is received this
+                      indicates that there is just one IBF slice left and a 
direct state and role transition from
+                      <strong>Passive Decoding</strong> to <strong>Active 
Decoding</strong> is initiated.
+                    </dd>
+                    <dt><em><xref target="messages_done" format="title" 
/></em> message:</dt>
+                    <dd>
+                      Receiving the <em><xref target="messages_done" 
format="title" /></em> message signals
+                      the passive peer that all demands of the active peer 
have been satisfied. Alas, the
+                      active peer will continue to process demands from the 
passive peer.
+                      Upon receiving this message, the passive peer 
transitions into the
+                      <strong>Finish Waiting</strong> state.
+                    </dd>
+                  </dl>
+                </dd>
+                <dt><strong>Active Decoding:</strong></dt>
+                <dd>
+                  <t>
+                    In the <strong>Active Decoding</strong> state the active 
peer decodes the IBFs and evaluates the set difference
+                    between the active and passive peer. Whenever an element 
ID is obtained by decoding the IBF, the active peer
+                    sends either an offer or an inquiry to the passive peer, 
depending on which site the decoded element is missing.
+                  </t>
+                  <t>
+                    If the IBF decodes a positive (1) pure bucket, the element 
is missing on the passive peers site.
+                    Thus, the active peer sends an <em><xref 
target="messages_offer" format="title" /></em> to the passive peer.
+                    A negative (-1) pure bucket indicates that an element is 
missing in the active peers set, so the active peer
+                    sends a <em><xref target="messages_inquiry" format="title" 
/></em> to the passive peer.
+                  </t>
+                  <t>
+                    In case the IBF does not successfully decode anymore, the 
active peer sends a new IBF computed with a different IBF-salt to the passive 
peer
+                    and changes into <strong>Passive Decoding</strong> state. 
This initiates a role swap.
+                    To reduce overhead and prevent double transmission of 
offers and elements, the new IBF is created
+                    on the local set after updating it with the all of the 
elements that have been successfully demanded.  Note that the active peer MUST 
NOT wait for all active demands to be satisfied, as demands can fail if a 
bucket was falsely classified as pure.
+                  </t>
+                  <t>
+                    As soon as the active peer successfully finished decoding 
the IBF, the active peer sends a
+                    <em><xref target="messages_done" format="title" /></em> 
message to the passive peer.
+                  </t>
+                  <t>
+                    All other actions taken by the active peer depend on the 
message the active peer receives from
+                    the passive peer. The actions are described below on a per 
message basis:
+                  </t>
+                  <dl>
+                    <dt><em><xref target="messages_offer" format="title" 
/></em> message:</dt>
+                    <dd>
+                      The <em><xref target="messages_offer" format="title" 
/></em> message indicates that the
+                      passive peer received a <em><xref 
target="messages_inquiry" format="title" /></em> message from
+                      the active peer. If a inquiry has been sent and
+                      the offered element is missing in the active peers set,
+                      the active peer sends a <em><xref 
target="messages_demand" format="title" /></em> message to the
+                      passive peer. The demand needs to be added to a list of 
unsatisfied demands.
+                      In case the received offer is for an element that is 
already in the set of the peer, the offer MUST BE ignored. <!-- FIXME: what do 
we do if the offer does not match any demand we ever issued? Is that OK? Worth 
checking? -->
+                    </dd>
+                    <dt><em><xref target="messages_demand" format="title" 
/></em> message:</dt>
+                    <dd>
+                      The <em><xref target="messages_demand" format="title" 
/></em> message indicates that the
+                      passive peer received a <em><xref 
target="messages_offer" format="title" /></em> from
+                      the active peer. The active peer satisfies the demand of 
the passive peer by sending an
+                      <em><xref target="messages_elements" format="title" 
/></em> message if a offer request
+                      for the element was sent earlier. Otherwise, the 
protocol MUST be aborted, as peers must never send demands for hashes that they 
have never been offered.
+                    </dd>
+                    <dt><em><xref target="messages_elements" format="title" 
/></em> message:</dt>
+                    <dd>
+                      If element is received that was not demanded or for which
+                      the application-specific validation logic fails, the 
protocol
+                      MUST be aborted.  Otherwise, the corresponding demand is 
marked
+                      as satisfied.  Note that this applies only to the 
differential
+                      synchronization mode. In full synchronization, it is 
perfectly
+                      normal to receive
+                      <xref target="messages_full_element" format="title" />
+                      messages for elements that were not demanded and that 
might
+                      even already be known locally.
+                    </dd>
+                    <dt><em><xref target="messages_done" format="title" 
/></em> message:</dt>
+                    <dd>
+                      Receiving the message <em><xref target="messages_done" 
format="title" /></em> indicates
+                      that all demands of the passive peer have been 
satisfied. The active peer then changes into the
+                      <strong>Finish Closing</strong> state.
+                      If the IBF has not finished decoding and the <em><xref 
target="messages_done" format="title" /></em>
+                      is received, the other peer is not in compliance with 
the protocol and the protocol MUST be aborted.
+                    </dd>
+                  </dl>
+                </dd>
+                <dt><strong>Expecing IBF Last</strong></dt>
+                <dd>
+                  <t>
+                    In this state the active peer continuously receives 
<em><xref target="messages_ibf" format="title" /></em>
+                    messages from the passive peer. When the last <em><xref 
target="messages_ibf_last" format="title" /></em> message is received,
+                    the peer changes into the <strong>Active Decoding</strong> 
state.
+                  </t>
+                </dd>
+                <dt><strong>Finish Closing</strong> / <strong>Finish 
Waiting</strong></dt>
+                <dd>
+                  <t>
+                    In this states the peers are waiting for all demands to be 
satisfied and for the synchronisation
+                    to be completed. When all demands are satisfied the peer 
changes into <strong>Finished</strong> state.
+                  </t>
+                </dd>
+              </dl>
             </section>
             <section anchor="modeofoperation_combined-mode" numbered="true" 
toc="default">
-                <name>Combined Mode</name>
-                <t>
-                    In the combined mode the <xref 
target="modeofoperation_full-sync" format="title" /> and
-                    the <xref target="modeofoperation_individual-elements" 
format="title" />
-                    are combined to minimize resource consumption.
-                </t>
-                <t>
-                    The <xref target="modeofoperation_individual-elements" 
format="title" /> is only efficient on small set
-                    differences or if the byte-size of the elements is large. 
If the set difference is estimated to be large
-                    the <xref target="modeofoperation_full-sync" 
format="title" /> is
-                    more efficient. The exact heuristics and parameters on 
which the protocol decides which mode
-                    MUST be used are described in the <xref 
target="performance" format="title" /> section of this document.
-                </t>
-                <t>
-                    There are two main cases when a <xref 
target="modeofoperation_full-sync" format="title" />
-                    is always used.
-                    The first case is when one of the peers announces having 
an empty set. This is announced by setting
-                    the SETSIZE field in the <em><xref target="messages_se" 
format="title" /></em> to 0.
-                    The second case is if the application requests full 
synchronisation explicitly.
-                    This is useful for testing and MUST NOT be used in 
production.
-                </t>
-                <t>
-                    <eref 
target="https://git.gnunet.org/lsd0003.git/plain/statemachine/full_state_machine.png";>Link
 to statemachine diagram</eref>
-                </t>
+              <name>Combined Mode</name>
+              <t>
+                In the <em>combined mode</em> the protocol decides between
+                <xref target="modeofoperation_full-sync" format="title" /> and
+                the <xref target="modeofoperation_individual-elements" 
format="title" />
+                to minimize resource consumption.  Typically, the protocol 
always runs
+                in combined mode, but implementations MAY allow applications 
to force
+                the use of one of the modes for testing.  In this case, 
applications MUST
+                ensure that the respective options to force a particular mode 
are used by
+                both participants.
+              </t>
+              <t>
+                The <xref target="modeofoperation_individual-elements" 
format="title" /> is only efficient on small set
+                differences or if the byte-size of the elements is large. If 
the set difference is estimated to be large
+                the <xref target="modeofoperation_full-sync" format="title" /> 
is
+                more efficient. The exact heuristics and parameters on which 
the protocol decides which mode
+                MUST be used are described in the <xref target="performance" 
format="title" /> section of this document.
+              </t>
+              <t>
+                There are two main cases when a <xref 
target="modeofoperation_full-sync" format="title" />
+                is always used.
+                The first case is when one of the peers announces having an 
empty set. This is announced by setting
+                the SETSIZE field in the <em><xref target="messages_se" 
format="title" /></em> to 0.
+                <!-- FIXME: why not also do this if sending the elements is 
about as
+                     expensive as sending the SE? Should be a simple 
calculation. -->
+                The second case is if the application requests full 
synchronisation explicitly.
+                This is useful for testing and MUST NOT be used in production.
+              </t>
+              <t>
+                The state diagram illustrating the combined mode can be found
+                <eref 
target="https://git.gnunet.org/lsd0003.git/plain/statemachine/full_state_machine.png";>here</eref>.
+              </t>
             </section>
         </section>
 
-
         <section anchor="messages" numbered="true" toc="default">
             <name>Messages</name>
-
+            <t>
+              This section describes the various message formats used by the 
protocol.
+            </t>
             <section anchor="messages_operation_request" numbered="true" 
toc="default">
                 <name>Operation Request</name>
 
@@ -1199,7 +1209,7 @@ hashSum |    0x0101   |    0x5151   |    0x5050   |    
0x0000   |
         +-----+-----+-----+-----+-----+-----+-----+-----+
         |                      APX
         +-----+-----+-----+-----+-----+-----+-----+-----+                      
                         /
-        /                                               /
+        /  APPLICATION DATA                             /
         /                                               /
                  ]]></artwork>
                     </figure>
@@ -1207,19 +1217,24 @@ hashSum |    0x0101   |    0x5151   |    0x5050   |    
0x0000   |
                     <dl>
                         <dt>MSG SIZE</dt>
                         <dd>
-                            is a 16-bit unsigned integer in network byte 
order, which describes the message size in bytes and header included.
+                          is a 16-bit unsigned integer in network byte order, 
which describes the message size in bytes with the header included.
                         </dd>
                         <dt>MSG TYPE</dt>
                         <dd>
-                            the type of SETU_P2P_OPERATION_REQUEST as 
registered in <xref target="gana" format="title" />, in network byte order.
+                          is the type of SETU_P2P_OPERATION_REQUEST as 
registered in <xref target="gana" format="title" />, in network byte order.
                         </dd>
                         <dt>ELEMENT COUNT</dt>
                         <dd>
-                            is the number of the elements the requesting party 
has in its set, as a 32-bit unsigned integer in network byte order.
+                          is the number of the elements the requesting party 
has in its set, as a 32-bit unsigned integer in network byte order.
                         </dd>
                         <dt>APX</dt>
                         <dd>
-                            is a SHA-512 hash that identifies the application.
+                          is a SHA-512 hash that identifies the application.
+                        </dd>
+                        <dt>APPLICATION DATA</dt>
+                        <dd>
+                          is optional, variable-size application specific data 
that can be used
+                          by the application to decide if it would like to 
answer the request.
                         </dd>
                     </dl>
                 </section>
@@ -1237,8 +1252,8 @@ hashSum |    0x0101   |    0x5151   |    0x5050   |    
0x0000   |
                         The <em>IBF</em> message is sent at the start of the 
protocol from the initiating peer in the transaction
                         between <strong>Expect SE</strong> -> 
<strong>Expecting IBF Last</strong> or when the IBF does not
                         decode and there is a role change in the transition 
between <strong>Active Decoding</strong> -> <strong>Expecting IBF Last</strong>.
-                        This message is only sent if there are more than one 
IBF slice to be sent, in case there is just
-                        one slice the <xref target="messages_ibf_last" 
format="title" /> message is sent.
+                        This message is only sent if there is more than one 
IBF slice to be sent. If there is just
+                        one slice, then only the <xref 
target="messages_ibf_last" format="title" /> message is sent.
                     </t>
                 </section>
                 <section anchor="messages_ibf_structure" numbered="true" 
toc="default">
@@ -1261,7 +1276,7 @@ hashSum |    0x0101   |    0x5151   |    0x5050   |    
0x0000   |
                     <dl>
                         <dt>MSG SIZE</dt>
                         <dd>
-                            is a 16-bit unsigned integer in network byte 
orderwhichdescribes the message size in bytes and header included.
+                            is a 16-bit unsigned integer in network byte 
orderwhichdescribes the message size in bytes with the header included.
                         </dd>
                         <dt>MSG TYPE</dt>
                         <dd>
@@ -1270,52 +1285,49 @@ hashSum |    0x0101   |    0x5151   |    0x5050   |    
0x0000   |
 
                         <dt>IBF SIZE</dt>
                         <dd>
-                            is a 32-bit unsigned integer which signals the 
number of buckets in the IBF.
+                            is a 32-bit unsigned integer which signals the 
total number of buckets in the IBF.  The minimal number of buckets is 79.
                         </dd>
-                        <dt>IMCS</dt>
+                        <dt>IMCS</dt> <!-- FIXME: bad placement, destroys 
alignment of offset+salt. Move after salt! -->
                         <dd>
-                            IBF max counter size is a 8-bit unsigned integer, 
which describes the number of bit that
-                            is required to store a single counter. This is 
used for the unpacking function as described
+                            is a 8-bit unsigned integer, which describes the 
number of bits that
+                            are required to store a single counter. This is 
used for the unpacking function as described
                             in the <xref 
target="performance_counter_variable_size" format="title" /> section.
                         </dd>
                         <dt>OFFSET</dt>
                         <dd>
-                            is a 32-bit unsigned integer which signals the 
offset to the following ibf slices in the original.
+                            is a 32-bit unsigned integer which signals the 
offset of the following IBF slices in the original.
                         </dd>
-                        <dt>SALT</dt>
+                        <dt>SALT</dt> <!-- FIXME: do we need a 32-bit field 
here? Maybe use only 16 bits, and then have some room for IMCS without 
destroying alignment? -->
                         <dd>
-                            is a 32-bit unsigned integer that contains the 
salt which was used to create the
+                            is a 32-bit unsigned integer that contains the 
IBF-salt which was used to create the
                             IBF.
                         </dd>
                         <dt>IBF-SLICE</dt>
                         <dd>
-
-                            <t>
-                                are variable numbers of slices in an array. A 
single slice contains multiple 64-bit IDSUMS,
-                                32-bit HASHSUMS and 1-64bit COUNTERS of 
variable size. In the network order the array of IDSUMS is first, followed
-                                by an array of HASHSUMS and ended with an 
array of COUNTERS (details are described in section
-                                <xref 
target="performance_counter_variable_size" format="default"/>). Length of the 
array is
-                                defined by MIN( SIZE - OFFSET, 
MAX_BUCKETS_PER_MESSAGE). MAX_BUCKETS_PER_MESSAGE is defined as
-                                32768 divided by the BUCKET_SIZE which is 
13-byte (104-bit). The minimal number of buckets in a single
-                                IBF is 79.
-                            </t>
-                            <t>
-                                To get the IDSUM field, all IDs hitting a 
bucket are added up with a binary XOR operation.
-                                See <xref target="ibf_format_id_generation" 
format="title" /> details about ID generation.
-                            </t>
-                            <t>
-                                The calculation of the HASHSUM field is done 
accordingly to the calculation of the IDSUM field:
-                                all HASHes are added up with a binary XOR 
operation.
-                                The HASH value is calculated as described in 
detail in section <xref target="ibf_format_HASH_calculation" format="title" />.
-                            </t>
-                            <t>
-                                The algorithm to find the correct bucket in 
which the ID and the HASH have to be added
-                                is described in detail in section <xref 
target="ibf_m" format="title" />.
-                            </t>
-
-                            <t>
-                                Test vectors for an implementation can be 
found in the <xref target="test_vectors" format="title" /> section
-                            </t>
+                          <t>
+                            are variable numbers of slices in an array. A 
single slice contains multiple 64-bit IDSUMS,
+                            32-bit HASHSUMS and (1-64)-bit COUNTERS of 
variable size. All values are in the network byte order. The array of IDSUMS is 
serialized first, followed
+                            by an array of HASHSUMS. Last comes an array of 
unsigned COUNTERS (details of the COUNTERS encoding are described in section
+                            <xref target="performance_counter_variable_size" 
format="default"/>). The length of the array is
+                            defined by MIN( SIZE - OFFSET, 
MAX_BUCKETS_PER_MESSAGE). MAX_BUCKETS_PER_MESSAGE is defined as
+                            32768 divided by the BUCKET_SIZE which is 13 bytes 
(104 bits). <!-- FIXME: 13 byte is no longer correct, given variable-size 
counters! Should probably be computed by properly considering the IMCS value! 
-->
+                          </t>
+                          <t>
+                            To get the IDSUM field, all IDs (computed with the 
IBF-salt) hitting a bucket under the map M are added up with a binary XOR 
operation.
+                            See <xref target="ibf_format_id_generation" 
format="title" /> details about ID generation.
+                          </t>
+                          <t>
+                            The calculation of the HASHSUM field is done 
accordingly to the calculation of the IDSUM field:
+                            all HASHes are added up with a binary XOR 
operation.
+                            The HASH value is calculated as described in 
detail in section <xref target="ibf_format_HASH_calculation" format="title" />.
+                          </t>
+                          <t>
+                            The algorithm to find the correct bucket in which 
the ID and the HASH have to be added
+                            is described in detail in section <xref 
target="ibf_m" format="title" />.
+                          </t>
+                          <t>
+                            Test vectors for an implementation can be found in 
the <xref target="test_vectors" format="title" /> section
+                          </t>
                         </dd>
                     </dl>
                     <figure anchor="figure_ibf_slice">
@@ -1333,32 +1345,40 @@ hashSum |    0x0101   |    0x5151   |    0x5050   |    
0x0000   |
         +-----+-----+-----+-----+-----+-----+-----+-----+
         /                                               /
         /                                               /
-* Counter size is variable. In this example the size is 32-bit (4-byte)
+* Counter size is variable. In this example the IMCS is 32 (4 bytes).
                  ]]></artwork>
                     </figure>
                 </section>
             </section>
 
             <section anchor="messages_ibf_last" numbered="true" toc="default">
-                <name>IBF Last</name>
+              <name>IBF Last</name>
 
-                <section anchor="messages_ibf_last_description" 
numbered="true" toc="default">
-                    <name>Description</name>
-                    <t>
-                        This message indicates the remote peer that all slices 
of the bloom filter have been sent.
-                        The binary structure is exactly the same as the <xref 
target="messages_ibf_structure" format="title" /> of
-                        the message <xref target="messages_ibf" format="title" 
/> with a different "MSG TYPE"
-                        which is defined in <xref target="gana" format="title" 
/> "SETU_P2P_IBF_LAST".
-                    </t>
-                    <t>
-                        Receiving this message initiates the state 
transmissions
-                        <strong>Expecting IBF Last</strong> -> <strong>Active 
Decoding</strong>,
-                        <strong>Expecting IBF</strong> -> <strong>Active 
Decoding</strong> and
-                        <strong>Passive Decoding</strong> -> <strong>Active 
Decoding</strong>. This message
-                        can initiate a peer the roll change from 
<strong>Active Decoding</strong> to
-                        <strong>Passive Decoding</strong>.
-                    </t>
-                </section>
+              <section anchor="messages_ibf_last_description" numbered="true" 
toc="default">
+                <name>Description</name>
+                <t>
+                  This message indicates to the remote peer that this is the 
last slice
+                  of the Bloom filter. The receiving peer MUST check that the 
sizes and
+                  offsets of all received IBF slices add up to the total IBF 
SIZE that was
+                  given.
+                </t>
+                <t>
+                  Receiving this message initiates the state transmissions
+                  <strong>Expecting IBF Last</strong> -> <strong>Active 
Decoding</strong>,
+                  <strong>Expecting IBF</strong> -> <strong>Active 
Decoding</strong> and
+                  <strong>Passive Decoding</strong> -> <strong>Active 
Decoding</strong>. This message
+                  can initiate a peer the roll change from <strong>Active 
Decoding</strong> to
+                  <strong>Passive Decoding</strong>.
+                </t>
+              </section>
+              <section anchor="messages_ibf_last_structure" numbered="true" 
toc="default">
+                <name>Structure</name>
+                <t>
+                  The binary structure is exactly the same as the <xref 
target="messages_ibf_structure" format="title" /> of
+                  the message <xref target="messages_ibf" format="title" /> 
with a different "MSG TYPE"
+                  which is defined in <xref target="gana" format="title" /> 
"SETU_P2P_IBF_LAST".
+                </t>
+              </section>
             </section>
 
             <section anchor="messages_elements" numbered="true" toc="default">
@@ -1374,11 +1394,11 @@ hashSum |    0x0101   |    0x5151   |    0x5050   |    
0x0000   |
                         This message is sent in the state <strong>Active 
Decoding</strong> and <strong>Passive Decoding</strong>
                         as answer to a <em><xref target="messages_demand" 
format="title" /></em> message from the remote peer.
                         The <em><xref target="messages_elements" 
format="title" /></em> message can also be received in the <strong>Finish 
Closing</strong> or <strong>Finish Waiting</strong>
-                        state after receiving a <em><xref 
target="messages_done" format="title" /></em> message from the remote peer, in 
this
+                        state after receiving a <em><xref 
target="messages_done" format="title" /></em> message from the remote peer. In 
this
                         case the peer changes to the <strong>Finished</strong> 
state as soon as all demands for elements have been satisfied.
                     </t>
                     <t>
-                        This message is exclusively sent in the <xref 
target="modeofoperation_individual-elements" format="title" />.
+                        This message is exclusively used in the <xref 
target="modeofoperation_individual-elements" format="title" />.
                     </t>
                 </section>
                 <section anchor="messages_elements_structure" numbered="true" 
toc="default">
@@ -1399,29 +1419,29 @@ hashSum |    0x0101   |    0x5151   |    0x5050   |    
0x0000   |
                     <dl>
                         <dt>MSG SIZE</dt>
                         <dd>
-                            is a 16-bit unsigned integer in network byte 
order, which describes the message size in bytes and header included.
+                            is a 16-bit unsigned integer in network byte 
order, which describes the message size in bytes with the header included.
                         </dd>
                         <dt>MSG TYPE</dt>
                         <dd>
-                            the type of SETU_P2P_ELEMENTS as registered in 
<xref target="gana" format="title" /> in network byte order.
+                            is SETU_P2P_ELEMENTS as registered in <xref 
target="gana" format="title" /> in network byte order.
                         </dd>
                         <dt>E TYPE</dt>
                         <dd>
-                            element type is a 16-bit unsigned integer which 
defines the element type for
+                            is a 16-bit unsigned integer which defines the 
element type for
                             the application.
                         </dd>
                         <dt>PADDING</dt>
                         <dd>
-                            is 16-bit always set to zero
+                            is 16-bit always set to zero.
                         </dd>
                         <dt>E SIZE</dt>
                         <dd>
-                            element size is a 16-bit unsigned integer that 
signals the size of the elements data part.
+                            is a 16-bit unsigned integer that signals the size 
of the elements data part.
                         </dd>
-                        <dt>AE TYPE</dt>
+                        <dt>AE TYPE</dt><!-- FIXME: E TYPE vs. AE TYPE remains 
quite unclear to me. Why do we have both? If we get rid of one, we could also 
drop PADDING! -->
                         <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
+                            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>
@@ -1470,12 +1490,12 @@ hashSum |    0x0101   |    0x5151   |    0x5050   |    
0x0000   |
                         </dd>
                         <dt>MSG TYPE</dt>
                         <dd>
-                            the type of SETU_P2P_OFFER as registered in <xref 
target="gana" format="title" /> in network byte order.
+                            is SETU_P2P_OFFER as registered in <xref 
target="gana" format="title" /> in network byte order.
                         </dd>
                         <dt>HASH</dt>
                         <dd>
                             is a SHA 512-bit hash of the element that is 
requested with a <em><xref target="messages_inquiry" format="title" /></em> 
message.
-                        </dd>
+                        </dd><!-- FIXME: OFFER was defined as a variable-size 
message that CAN include multiple HASH values in one message. Current code does 
not use this, but we should continue to define it as such in the protocol! -->
                     </dl>
                 </section>
             </section>
@@ -1511,17 +1531,18 @@ hashSum |    0x0101   |    0x5151   |    0x5050   |    
0x0000   |
                     <dl>
                         <dt>MSG SIZE</dt>
                         <dd>
-                            is a 16-bit unsigned integer in network byte 
order, which describes the message size in bytes and header included.
+                            is a 16-bit unsigned integer in network byte 
order, which describes the message size in bytes with the header included.
                         </dd>
                         <dt>MSG TYPE</dt>
                         <dd>
-                            the type of SETU_P2P_INQUIRY as registered in 
<xref target="gana" format="title" /> in network byte order.
+                            is SETU_P2P_INQUIRY as registered in <xref 
target="gana" format="title" /> in network byte order.
                         </dd>
                         <dt>IBF KEY</dt>
                         <dd>
                             is a 64-bit unsigned integer that contains the key 
for which the inquiry is sent.
                         </dd>
                     </dl>
+                        <!-- FIXME: INQUIRY was defined as a variable-size 
message that CAN include multiple IBF KEY values in one message. I did not 
check if the current code uses this, but we should continue to define it as 
such in the protocol - especially as for INQUIRIES this is particularly easy to 
implement and an important optimization given that the overhead is otherwise 
rather large per IBF KEY! -->
                 </section>
             </section>
 
@@ -1568,6 +1589,7 @@ hashSum |    0x0101   |    0x5151   |    0x5050   |    
0x0000   |
                             is a 512-bit Hash of the element that is demanded.
                         </dd>
                     </dl>
+                    <!-- FIXME: DEMAND was defined as a variable-size message 
that CAN include multiple HASH values in one message. Current code does not use 
this, but we should continue to define it as such in the protocol! -->
                 </section>
             </section>
 
@@ -1578,7 +1600,7 @@ hashSum |    0x0101   |    0x5151   |    0x5050   |    
0x0000   |
                     <name>Description</name>
                     <t>
                         The <em><xref target="messages_done" format="title" 
/></em> message is sent when all <em><xref target="messages_demand" 
format="title" /></em> messages
-                        have been successfully satisfied and the set is 
complete synchronized.
+                        have been successfully satisfied and from the 
perspective of the sender the set is completely synchronized.
                     </t>
                     <t>
                         This message is exclusively sent in the <xref 
target="modeofoperation_individual-elements" format="title" />.
@@ -1599,11 +1621,11 @@ hashSum |    0x0101   |    0x5151   |    0x5050   |    
0x0000   |
                     <dl>
                         <dt>MSG SIZE</dt>
                         <dd>
-                            is a 16-bit unsigned integer in network byte 
order, which describes the message size in bytes and header included.
+                            is a 16-bit unsigned integer in network byte 
order, which describes the message size in bytes with the header included. The 
value is always 4 for this message type.
                         </dd>
                         <dt>MSG TYPE</dt>
                         <dd>
-                            the type of SETU_P2P_DONE as registered in <xref 
target="gana" format="title" /> in network byte order.
+                            is SETU_P2P_DONE as registered in <xref 
target="gana" format="title" /> in network byte order.
                         </dd>
                     </dl>
                 </section>
@@ -1637,7 +1659,7 @@ hashSum |    0x0101   |    0x5151   |    0x5050   |    
0x0000   |
                     <dl>
                         <dt>MSG SIZE</dt>
                         <dd>
-                            is a 16-bit unsigned integer in network byte 
order, which describes the message size in bytes and header included.
+                            is a 16-bit unsigned integer in network byte 
order, which describes the message size in bytes with the header included. The 
value is always 4 for this message type.
                         </dd>
                         <dt>MSG TYPE</dt>
                         <dd>
@@ -1680,11 +1702,11 @@ hashSum |    0x0101   |    0x5151   |    0x5050   |    
0x0000   |
                     <dl>
                         <dt>MSG SIZE</dt>
                         <dd>
-                            is a 16-bit unsigned integer in network byte 
order, which describes the message size in bytes and header included.
+                            is a 16-bit unsigned integer in network byte 
order, which describes the message size in bytes with the header included. The 
value is always 16 for this message type.
                         </dd>
                         <dt>MSG TYPE</dt>
                         <dd>
-                            the type of SETU_P2P_REQUEST_FULL as registered in 
<xref target="gana" format="title" /> in network byte order.
+                            is SETU_P2P_REQUEST_FULL as registered in <xref 
target="gana" format="title" /> in network byte order.
                         </dd>
                         <dt>REMOTE SET DIFF</dt>
                         <dd>
@@ -1739,11 +1761,11 @@ hashSum |    0x0101   |    0x5151   |    0x5050   |    
0x0000   |
                     <dl>
                         <dt>MSG SIZE</dt>
                         <dd>
-                            is a 16-bit unsigned integer in network byte 
order, which describes the message size in bytes and header included.
+                            is a 16-bit unsigned integer in network byte 
order, which describes the message size in bytes with the header included.  The 
value is always 16 for this message type.
                         </dd>
                         <dt>MSG TYPE</dt>
                         <dd>
-                            the type of SETU_P2P_REQUEST_FULL as registered in 
<xref target="gana" format="title" /> in network byte order.
+                            is SETU_P2P_REQUEST_FULL as registered in <xref 
target="gana" format="title" /> in network byte order.
                         </dd>
                         <dt>REMOTE SET DIFF</dt>
                         <dd>
@@ -1775,7 +1797,7 @@ hashSum |    0x0101   |    0x5151   |    0x5050   |    
0x0000   |
                         <xref target="messages_operation_request" 
format="title" /> message has been received.
                     </t>
                     <t>
-                        The strata estimator is used to estimate the 
difference between the two sets as described in section <xref target="se" 
format="counter" />.
+                        The strata estimator is used to estimate the 
difference between the two sets as described in section <xref target="se" 
format="title" />.
                     </t>
                     <t>
                         When the initiating peer receives the strata 
estimator, the peer decides which <xref target="modeofoperation" format="title" 
/> to use
@@ -1789,6 +1811,7 @@ hashSum |    0x0101   |    0x5151   |    0x5050   |    
0x0000   |
                     <t>
                         The IBFs in a strata estimator always have 79 buckets. 
The reason why can be found in Summermatter's work. <xref 
target="byzantine_fault_tolerant_set_reconciliation" format="default"/>
                     </t>
+                    <!-- Give a more precise reference into the thesis for 
this, do not cite the whole thesis! -->
                 </section>
                 <section anchor="messages_se_structure" numbered="true" 
toc="default">
                     <name>Structure</name>
@@ -1808,11 +1831,11 @@ hashSum |    0x0101   |    0x5151   |    0x5050   |    
0x0000   |
                     <dl>
                         <dt>MSG SIZE</dt>
                         <dd>
-                            is a 16-bit unsigned integer in network byte 
order, which describes the message size in bytes and header included.
+                            is a 16-bit unsigned integer in network byte 
order, which describes the message size in bytes with the header included.
                         </dd>
                         <dt>MSG TYPE</dt>
                         <dd>
-                            the type of SETU_P2P_SE as registered in <xref 
target="gana" format="title" /> in network byte order.
+                            is SETU_P2P_SE as registered in <xref 
target="gana" format="title" /> in network byte order.
                         </dd>
                         <dt>SEC</dt>
                         <dd>
@@ -1828,27 +1851,32 @@ hashSum |    0x0101   |    0x5151   |    0x5050   |    
0x0000   |
                         <dd>
                             is variable in size and contains the same 
structure as the IBF-SLICES field in the <xref target="messages_ibf" 
format="title" /> message.
                         </dd>
+                        <!-- FIXME: this is very imprecise, as there are 
multiple IBFs with that have
+                             been sampled, and then again multiple IBFs with a 
different IBF-salt.
+                             Please be MUCH more precise here! -->
                     </dl>
                 </section>
             </section>
 
             <section anchor="messages_sec" numbered="true" toc="default">
-                <name>Strata Estimator Compressed</name>
+              <name>Strata Estimator Compressed</name>
 
-                <section anchor="messages_sec_description" numbered="true" 
toc="default">
-                    <name>Description</name>
-                    <t>
-                        The Strata estimator can be compressed with gzip to 
improve performance. This can be recognized
-                        by the different message type number from <xref 
target="gana" format="title" />.
-                    </t>
-                    <t>
-                        Since the content of the message is the same as the 
uncompressed Strata Estimator, the details
-                        are not repeated here. For details see section <xref 
target="messages_se" format="counter" />.
-                    </t>
-                </section>
+              <section anchor="messages_sec_description" numbered="true" 
toc="default">
+                <name>Description</name>
+                <t>
+                  The Strata estimator can be compressed with gzip to improve 
performance. This can be recognized
+                  by the different message type number from <xref 
target="gana" format="title" />.
+                </t>
+                <t>
+                  Since the content of the message is the same as the 
uncompressed Strata Estimator, the details
+                  are not repeated here. For details see section <xref 
target="messages_se" format="counter" />.
+                </t>
+                <!-- FIXME: keep the 'structure' subsection, and also needs to 
clarify WHAT is being
+                     compressed, and should cite the RFC on the compression 
method used! (IIRC gzip deflate
+                     mode); note that the header is not subject to 
compression, so this must be clarified!) -->
+              </section>
             </section>
 
-
             <section anchor="messages_full_element" numbered="true" 
toc="default">
                 <name>Full Element</name>
 
@@ -1870,7 +1898,9 @@ hashSum |    0x0101   |    0x5151   |    0x5050   |    
0x0000   |
                     </t>
                 </section>
                 <section anchor="messages_full_element_structure" 
numbered="true" toc="default">
-                    <name>Structure</name>
+                  <name>Structure</name>
+                  <!-- MAYBE just refer to the "ELEMENT" section on structure 
and only
+                       note the different MSG TYPE here? -->
                     <figure anchor="figure_full_element">
                         <artwork name="" type="" align="left" alt=""><![CDATA[
         0     8     16    24    32    40    48    56
@@ -1887,15 +1917,15 @@ hashSum |    0x0101   |    0x5151   |    0x5050   |    
0x0000   |
                     <dl>
                         <dt>MSG SIZE</dt>
                         <dd>
-                            is a 16-bit unsigned integer in network byte 
order, which describes the message size in bytes and header included.
+                            is a 16-bit unsigned integer in network byte 
order, which describes the message size in bytes with the header included.
                         </dd>
                         <dt>MSG TYPE</dt>
                         <dd>
-                            the type of SETU_P2P_REQUEST_FULL_ELEMENT as 
registered in <xref target="gana" format="title" /> in network byte order.
+                            is SETU_P2P_REQUEST_FULL_ELEMENT as registered in 
<xref target="gana" format="title" /> in network byte order.
                         </dd>
                         <dt>E TYPE</dt>
                         <dd>
-                            element type is a 16-bit unsigned integer which 
defines the element type for
+                            is a 16-bit unsigned integer which defines the 
element type for
                             the application.
                         </dd>
                         <dt>PADDING</dt>
@@ -1904,11 +1934,11 @@ hashSum |    0x0101   |    0x5151   |    0x5050   |    
0x0000   |
                         </dd>
                         <dt>E SIZE</dt>
                         <dd>
-                            element size is a 16-bit unsigned integer that 
signals the size of the elements data part.
+                            is a 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
+                            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>

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]