gnunet-svn
[Top][All Lists]
Advanced

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

[lsd0003] branch master updated: Added some se message description


From: gnunet
Subject: [lsd0003] branch master updated: Added some se message description
Date: Sun, 13 Jun 2021 20:55:40 +0200

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

elias-summermatter pushed a commit to branch master
in repository lsd0003.

The following commit(s) were added to refs/heads/master by this push:
     new 7e26639  Added some se message description
7e26639 is described below

commit 7e26639340f951684c7593b400d8f4fb68a3977c
Author: Elias Summermatter <elias.summermatter@seccom.ch>
AuthorDate: Sun Jun 13 20:52:52 2021 +0200

    Added some se message description
---
 draft-summermatter-set-union.xml | 158 +++++++++++++++++++++++++--------------
 1 file changed, 100 insertions(+), 58 deletions(-)

diff --git a/draft-summermatter-set-union.xml b/draft-summermatter-set-union.xml
index 8d8a505..a24b3bd 100644
--- a/draft-summermatter-set-union.xml
+++ b/draft-summermatter-set-union.xml
@@ -1472,8 +1472,16 @@ hashSum |    0x0101   |    0x5151   |    0x5050   |    
0x0000   |
                         <artwork name="" type="" align="left" alt=""><![CDATA[
         0     8     16    24    32    40    48    56
         +-----+-----+-----+-----+-----+-----+-----+-----+
-        |  MSG SIZE |  MSG TYPE |         HASHES
-        +-----+-----+-----+-----+
+        |  MSG SIZE |  MSG TYPE |         HASH 1
+        +-----+-----+-----+-----+-----+-----+-----+-----+
+       ...                                             ...
+        +-----+-----+-----+-----+-----+-----+-----+-----+
+        |        HASH 1         |         HASH 2
+        +-----+-----+-----+-----+-----+-----+-----+-----+
+       ...                                             ...
+        +-----+-----+-----+-----+-----+-----+-----+-----+
+        |        HASH 2         |         HASH n
+        +-----+-----+-----+-----+-----+-----+-----+-----+
         /                                               /
         /                                               /
                  ]]></artwork>
@@ -1573,6 +1581,14 @@ hashSum |    0x0101   |    0x5151   |    0x5050   |    
0x0000   |
         +-----+-----+-----+-----+-----+-----+-----+-----+
         |  MSG SIZE |  MSG TYPE |          HASH
         +-----+-----+-----+-----+
+       ...                                             ...
+        +-----+-----+-----+-----+-----+-----+-----+-----+
+        |        HASH 1         |         HASH 2
+        +-----+-----+-----+-----+-----+-----+-----+-----+
+       ...                                             ...
+        +-----+-----+-----+-----+-----+-----+-----+-----+
+        |        HASH 2         |         HASH n
+        +-----+-----+-----+-----+-----+-----+-----+-----+
         /                                               /
         /                                               /
                  ]]></artwork>
@@ -1589,10 +1605,9 @@ hashSum |    0x0101   |    0x5151   |    0x5050   |    
0x0000   |
                         </dd>
                         <dt>HASH</dt>
                         <dd>
-                            is a 512-bit Hash of the element that is demanded.
+                            contains one or more successive SHA 512-bit hashes 
of the elements 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>
 
@@ -1850,14 +1865,41 @@ hashSum |    0x0101   |    0x5151   |    0x5050   |    
0x0000   |
                         <dd>
                             is a 64-bit unsigned integer that is defined by 
the size of the set the SE is
                         </dd>
+                        <!-- CORRECT -->
                         <dt>SE-SLICES</dt>
                         <dd>
-                            is variable in size and contains the same 
structure as the IBF-SLICES field in the <xref target="messages_ibf" 
format="title" /> message.
+                            <t>
+                                are variable numbers of slices in an array. A 
single slice can contain one or more Strata Estimators which
+                                contain multiple IBFs as described in 
IBF-SLICES in <xref target="messages_ibf_structure" format="default"/>.
+                                A SE slice can contain one to eight Strata 
Estimators which contain 32 (Defined as Constant SE_STRATA_COUNT) IBFs. Every 
IBF in
+                                a SE contains 79 Buckets.
+                            </t>
+                            <t>
+                                The different SEs are build as in detail 
described as in section <xref target="performance_multi_se" format="default"/>.
+                                Simply put, the IBFs in each SE are serialized 
as described in <xref target="messages_ibf_structure" format="default"/> 
starting with the highest stratum.
+                                Then the created SEs are appended one after 
the other starting with the SE that was created with a salt of zero.
+
+                            </t>
                         </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>
+                    <figure anchor="figure_se_slice">
+                        <artwork name="" type="" align="left" alt=""><![CDATA[
+                             SE-SLICE
+        0     8     16    24    32    40    48    56
+        +-----+-----+-----+-----+-----+-----+-----+-----+
+        |                   SE 1 [IBF 1]                |
+        +-----+-----+-----+-----+-----+-----+-----+-----+
+       ...                                             ...
+        +-----+-----+-----+-----+-----+-----+-----+-----+
+        |                   SE 1 [IBF 30]               |
+        +-----+-----+-----+-----+-----+-----+-----+-----+
+        |                   SE 2 [IBF 1]                |
+        +-----+-----+-----+-----+-----+-----+-----+-----+
+       ...                                             ...
+        /                                               /
+        /                                               /
+                 ]]></artwork>
+                    </figure>
                 </section>
             </section>
 
@@ -1988,46 +2030,46 @@ hashSum |    0x0101   |    0x5151   |    0x5050   |    
0x0000   |
 # IBF_MIN_SIZE = 37: The minimal size of an IBF
 # MAX_BUCKETS_PER_MESSAGE: Custom value depending on the underlying protocol
 # INPUTS:
-# avg_element_size: The average element size
-# local_set_size: The initial local set size
-# remote_set_size: The remote set size
-# est_local_set_diff: the estimated local set difference calculated by the SE
-# est_remote_set_diff: the estimated remote set difference calculated by the SE
-# rtt_tradeoff: the tradeoff between round trips and bandwidth
+# avg_es: The average element size
+# lss: The initial local set size
+# rss: The remote set size
+# lsd: the estimated local set difference calculated by the SE
+# rsd: the estimated remote set difference calculated by the SE
+# rtt: the tradeoff between round trips and bandwidth
 # OUTPUT:
 # FULL_SYNC_REMOTE_SENDING_FIRST, FULL_SYNC_LOCAL_SENDING_FIRST or 
DIFFERENTIAL_SYNC
 
-FUNCTION decide_operation_mode(avg_element_size,
-                               local_set_size,
-                               remote_set_size,
-                               est_local_set_diff
-                               est_remote_set_diff,
-                               rtt_tradeoff)
+FUNCTION decide_operation_mode(avg_es,
+                               lss,
+                               rss,
+                               lsd
+                               rsd,
+                               rtt)
 
     # If a set size is zero always do full sync
-    IF (0 == remote_set_size)
+    IF (0 == rss)
         RETURN FULL_SYNC_LOCAL_SENDING_FIRST
     IF END
-    IF (0 == local_set_size)
+    IF (0 == lss)
         RETURN FULL_SYNC_REMOTE_SENDING_FIRST
     IF END
 
     # Estimate required transferred bytes when doing a full synchronisation
     # and transmitting local set first.
-    estimated_total_diff = est_set_diff_remote + est_local_set_diff
-    total_elements_local_send = est_remote_set_diff + local_set_size
-    total_bytes_local_send = (avg_element_size * total_elements_local_send)
+    estimated_total_diff = est_set_diff_remote + lsd
+    total_elements_local_send = rsd + lss
+    total_bytes_local_send = (avg_es * total_elements_local_send)
                            + (total_elements_local_send * 
sizeof(ELEMENT_MSG_HEADER))
                            + (sizeof(FULL_DONE_MSG_HEADER) * 2)
-                           + RTT_MIN_FULL * rtt_tradeoff
+                           + RTT_MIN_FULL * rtt
 
     # Estimate required transferred bytes when doing a full synchronisation
     # and transmitting remote set first.
-    total_elements_remote_send = est_local_set_diff + remote_set_size
-    total_bytes_remote_send = (avg_element_size * total_elements_remote_send)
+    total_elements_remote_send = lsd + rss
+    total_bytes_remote_send = (avg_es * total_elements_remote_send)
                             + ( total_elements_remote_send * 
sizeof(ELEMENT_MSG_HEADER))
                             + (sizeof(FULL_DONE_MSG_HEADER) * 2)
-                            + (RTT_MIN_FULL + 0.5) * rtt_tradeoff
+                            + (RTT_MIN_FULL + 0.5) * rtt
                             + sizeof(REQUEST_FULL_MSG)
 
     # Estimate required transferred bytes when doing a differential 
synchronisation
@@ -2041,8 +2083,8 @@ FUNCTION decide_operation_mode(avg_element_size,
 
     # Estimate average counter length with variable counter
     estimated_counter_size = MIN (
-                                  2 * LOG2(local_set_size / ibf_bucket_count),
-                                  LOG2(local_set_size)
+                                  2 * LOG2(lss / ibf_bucket_count),
+                                  LOG2(lss)
                                  )
     counter_bytes = estimated_counter_size / 8
 
@@ -2053,7 +2095,7 @@ FUNCTION decide_operation_mode(avg_element_size,
               + ibf_bucket_count * counter_bytes * 1.2
 
     done_size = sizeof(DONE_HEADER)
-    element_size = (avg_element_size + sizeof(ELEMENT_MSG_HEADER))
+    element_size = (avg_es + sizeof(ELEMENT_MSG_HEADER))
                  * estimated_total_diff
     inquery_size = (sizeof(IBF_KEY) + sizeof(INQUERY_MSG_HEADER))
                  * estimated_total_diff
@@ -2064,7 +2106,7 @@ FUNCTION decide_operation_mode(avg_element_size,
 
     total_bytes_diff = (element_size + done_size + inquery_size
                      + demand_size + offer_size + ibf_bytes)
-                     + DIFFERENTIAL_RTT_MEAN * rtt_tradeoff
+                     + DIFFERENTIAL_RTT_MEAN * rtt
 
     # Decide for a optimal mode of operation
 
@@ -2103,24 +2145,24 @@ FUNCTION decide_operation_mode(avg_element_size,
 # CONSTANTS:
 # IBF_BUCKET_NUMBER_FACTOR = 2: The amount the IBF gets increased if decoding 
fails
 # Inputs:
-# set_difference: Estimated set difference
+# sd: Estimated set difference
 # Output:
 # next_size: Size of the initial IBF
 
-FUNCTION initial_ibf_size(set_difference)
-    return MAX(37, IBF_BUCKET_NUMBER_FACTOR * set_difference);
+FUNCTION initial_ibf_size(sd)
+    return MAX(37, IBF_BUCKET_NUMBER_FACTOR * sd);
 FUNCTION END
 
 # CONSTANTS:
 # IBF_BUCKET_NUMBER_FACTOR = 2: The amount the IBF gets increased if decoding 
fails
 # Inputs:
-# decoded_elements: Number of elements that have been successfully decoded
-# last_ibf_size: The number of buckets of the last IBF
+# de: Number of elements that have been successfully decoded
+# lis: The number of buckets of the last IBF
 # Output:
 # number of buckets for the next IBF
 
-FUNCTION get_next_ibf_size(decoded_elements, last_ibf_size)
-    next_size = IBF_BUCKET_NUMBER_FACTOR * (last_ibf_size - decoded_elements)
+FUNCTION get_next_ibf_size(de, lis)
+    next_size = IBF_BUCKET_NUMBER_FACTOR * (lis - de)
     return MAX(37, next_size);
 FUNCTION END
                         ]]></artwork>
@@ -2234,23 +2276,23 @@ FUNCTION pack_counter(ibf, offset, count)
 # offset: The offset which defines the starting point from which bucket
            the packed operation starts
 # count: The number of buckets in the array that will be packed
-# counter_bit_length: The bit length of the counter can be found in the
+# cbl: The bit length of the counter can be found in the
                       ibf message in the ibf_counter_bit_length field
-# packed_data: A byte array which contains the data packed with the 
pack_counter
+# pd: A byte array which contains the data packed with the pack_counter
                function
 # OUTPUTS:
 # returns: Nothing because the unpacked counter is saved directly into the IBF
 
-FUNCTION unpack_counter(ibf, offset, count, counter_bit_length, packed_data)
+FUNCTION unpack_counter(ibf, offset, count, cbl, pd)
     store = 0
     store_bits = 0
     byte_ctr = 0
     ibf_bucket_ctr = 0
 
-    number_bytes_read = CEILING((count * counter_bit_length) / 8)
+    number_bytes_read = CEILING((count * cbl) / 8)
 
     WHILE ibf_bucket_ctr <= (count -1)
-        byte_to_read = packed_data[byte_ctr]
+        byte_to_read = pd[byte_ctr]
         byte_ctr++
         bit_to_pack_left = 8
 
@@ -2260,8 +2302,8 @@ FUNCTION unpack_counter(ibf, offset, count, 
counter_bit_length, packed_data)
             IF ibf_bucket_ctr > (count -1)
                 return
 
-            IF  ( store_bits + bit_to_pack_left ) >= counter_bit_length
-                bit_use = counter_bit_length - store_bits
+            IF  ( store_bits + bit_to_pack_left ) >= cbl
+                bit_use = cbl - store_bits
 
                 IF store_bits > 0
                     store = store << bit_use
@@ -2440,14 +2482,14 @@ FUNCTION END
                 <figure 
anchor="security_generic_functions_check_valid_state_code">
                     <artwork name="" type="" align="left" alt=""><![CDATA[
 # Input:
-# allowed_states: A array containing all states in which the message can be 
received
-# state: The state in which the protocol is in
+# as: A array containing all states in which the message can be received
+# s: The state in which the protocol is in
 # Output:
 # Returns TRUE if message is valid in state and FALSE if not
 
-FUNCTION check_valid_state (allowed_states, state)
-    FOR (allowed_state in allowed_states)
-        IF (allowed_state == state)
+FUNCTION check_valid_state (as, s)
+    FOR (as in as)
+        IF (as == s)
             RETURN TRUE
         END IF
     FOR END
@@ -2521,11 +2563,11 @@ FUNCTION END
 # Function called every time a new message is transmitted to other peer
 # Input:
 # store: Store created by the initialize_store() function
-# message_type: The message that was sent type e.g. INQUIRY or DEMAND
+# mt: The message that was sent type e.g. INQUIRY or DEMAND
 # hash: The hash of the element which is sent
 # Output:
 # Returns TRUE if the message flow was followed, otherwise FALSE
-FUNCTION send(store, message_type, hash)
+FUNCTION send(store, mt, hash)
 
     IF NOT store.contains(hash)
         store_element = initialize_element()
@@ -2533,7 +2575,7 @@ FUNCTION send(store, message_type, hash)
         store_element = store.get(hash)
     END IF
 
-    CASE based on message_type
+    CASE based on mt
         CASE INQUIRY
             IF store_element.INQUIRY == NOT_INITIALIZED
                 store_element.INQUIRY = SENT
@@ -2573,18 +2615,18 @@ FUNCTION END
 # Function called every time a new message is received from the other peer
 # Input:
 # store: Store created by the initialize_store() function
-# message_type: The message that was received type e.g. INQUIRY or DEMAND
+# mt: The message that was received type e.g. INQUIRY or DEMAND
 # hash: The hash of the element which is received
 # Output:
 # Returns TRUE if the message flow was followed, otherwise FALSE
-FUNCTION receive (store, message_type, hash)
+FUNCTION receive (store, mt, hash)
     IF NOT store.contains(hash)
         store_element = initialize_element()
     ELSE
         store_element = store.get(hash)
     END IF
 
-    CASE based on message_type
+    CASE based on mt
         CASE INQUIRY
             IF store_element.INQUIRY == NOT_INITIALIZED
                 store_element.INQUIRY = RECEIVED

-- 
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]