gnunet-svn
[Top][All Lists]
Advanced

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

[lsd0003] branch master updated: Fixed some code formatig stuff


From: gnunet
Subject: [lsd0003] branch master updated: Fixed some code formatig stuff
Date: Sun, 13 Jun 2021 17:22:25 +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 a6efc4c  Fixed some code formatig stuff
a6efc4c is described below

commit a6efc4c296f43ac1df5eb86c441f3aa380389fc1
Author: Elias Summermatter <elias.summermatter@seccom.ch>
AuthorDate: Sun Jun 13 17:19:33 2021 +0200

    Fixed some code formatig stuff
---
 draft-summermatter-set-union.xml | 160 +++++++++++++++++++++++----------------
 1 file changed, 96 insertions(+), 64 deletions(-)

diff --git a/draft-summermatter-set-union.xml b/draft-summermatter-set-union.xml
index 003cbce..50dcad0 100644
--- a/draft-summermatter-set-union.xml
+++ b/draft-summermatter-set-union.xml
@@ -2000,6 +2000,8 @@ FUNCTION decide_operation_mode(avg_element_size,
                                est_local_set_diff
                                est_remote_set_diff,
                                rtt_tradeoff)
+
+    # If a set size is zero always do full sync
     IF (0 == remote_set_size)
         RETURN FULL_SYNC_LOCAL_SENDING_FIRST
     IF END
@@ -2007,56 +2009,66 @@ FUNCTION decide_operation_mode(avg_element_size,
         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_to_send_local_send_first = est_remote_set_diff + 
local_set_size
-
-    total_bytes_full_local_send_first = (avg_element_size * 
total_elements_to_send_local_send_first)
-                                               + 
(total_elements_to_send_local_send_first * sizeof(ELEMENT_MSG_HEADER))
-                                               + (sizeof(FULL_DONE_MSG_HEADER) 
* 2)
-                                               + RTT_MIN_FULL * rtt_tradeoff
-
-    total_elements_to_send_remote_send_first = est_local_set_diff + 
remote_set_size
-
-    total_bytes_full_remote_send_first = (avg_element_size * 
total_elements_to_send_remote_send_first)
-                                                + ( 
total_elements_to_send_remote_send_first * sizeof(ELEMENT_MSG_HEADER))
-                                                + 
(sizeof(FULL_DONE_MSG_HEADER) * 2)
-                                                + (RTT_MIN_FULL + 0.5) * 
rtt_tradeoff
-                                                + sizeof(REQUEST_FULL_MSG)
-
+    total_elements_local_send = est_remote_set_diff + local_set_size
+    total_bytes_local_send = (avg_element_size * total_elements_local_send)
+                           + (total_elements_local_send * 
sizeof(ELEMENT_MSG_HEADER))
+                           + (sizeof(FULL_DONE_MSG_HEADER) * 2)
+                           + RTT_MIN_FULL * rtt_tradeoff
+
+    # 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 * 
sizeof(ELEMENT_MSG_HEADER))
+                            + (sizeof(FULL_DONE_MSG_HEADER) * 2)
+                            + (RTT_MIN_FULL + 0.5) * rtt_tradeoff
+                            + sizeof(REQUEST_FULL_MSG)
+
+    # Estimate required transferred bytes when doing a differential 
synchronisation
+
+    # Estimate messages required to transfer IBF
     ibf_bucket_count = estimated_total_diff * IBF_BUCKET_NUMBER_FACTOR
-
     IF (ibf_bucket_count <= IBF_MIN_SIZE)
         ibf_bucket_count = IBF_MIN_SIZE
     END IF
-
     ibf_message_count = ceil ( ibf_bucket_count / MAX_BUCKETS_PER_MESSAGE)
 
+    # Estimate average counter length with variable counter
     estimated_counter_size = MIN (
                                   2 * LOG2(local_set_size / ibf_bucket_count),
                                   LOG2(local_set_size)
                                  )
     counter_bytes = estimated_counter_size / 8
 
+    # Sum up all messages required to do differential synchronisation
     ibf_bytes =  sizeof(IBF_MESSAGE) * ibf_message_count * 1.2
-               + ibf_bucket_count * sizeof(IBF_KEY) * 1.2
-               + ibf_bucket_count * sizeof(IBF_KEYHASH) * 1.2
-               + ibf_bucket_count * counter_bytes * 1.2
+              + ibf_bucket_count * sizeof(IBF_KEY) * 1.2
+              + ibf_bucket_count * sizeof(IBF_KEYHASH) * 1.2
+              + ibf_bucket_count * counter_bytes * 1.2
 
-    element_size = (avg_element_size + sizeof(ELEMENT_MSG_HEADER)) * 
estimated_total_diff
     done_size = sizeof(DONE_HEADER)
-    inquery_size = (sizeof(IBF_KEY) + sizeof(INQUERY_MSG_HEADER)) * 
estimated_total_diff
-    demand_size = (sizeof(HASHCODE) + sizeof(DEMAND_MSG_HEADER)) * 
estimated_total_diff
-    offer_size = (sizeof(HASHCODE) + sizeof(OFFER_MSG_HEADER)) * 
estimated_total_diff
+    element_size = (avg_element_size + sizeof(ELEMENT_MSG_HEADER))
+                 * estimated_total_diff
+    inquery_size = (sizeof(IBF_KEY) + sizeof(INQUERY_MSG_HEADER))
+                 * estimated_total_diff
+    demand_size  = (sizeof(HASHCODE) + sizeof(DEMAND_MSG_HEADER))
+                 * estimated_total_diff
+    offer_size   = (sizeof(HASHCODE) + sizeof(OFFER_MSG_HEADER))
+                 * estimated_total_diff
 
     total_bytes_diff = (element_size + done_size + inquery_size
-                                 + demand_size + offer_size + ibf_bytes)
-                                 + DIFFERENTIAL_RTT_MEAN * rtt_tradeoff
+                     + demand_size + offer_size + ibf_bytes)
+                     + DIFFERENTIAL_RTT_MEAN * rtt_tradeoff
+
+    # Decide for a optimal mode of operation
 
-    full_min = MIN (total_bytes_full_local_send_first,
-                             total_bytes_full_local_send_first)
+    full_min = MIN (total_bytes_local_send,
+                             total_bytes_local_send)
     IF (full_min < total_bytes_diff)
-        IF (total_bytes_full_remote_send_first > 
total_bytes_full_local_send_first)
+        IF (total_bytes_remote_send > total_bytes_local_send)
             RETURN FULL_SYNC_LOCAL_SENDING_FIRST
         ELSE
             RETURN FULL_SYNC_REMOTE_SENDING_FIRST
@@ -2128,18 +2140,18 @@ FUNCTION END
                     Since the optimal number of bytes a counter in the IBF 
contains is very variable and varies
                     due to different parameters. Details are described in the 
BSC thesis
                     by Summermatter <xref 
target="byzantine_fault_tolerant_set_reconciliation" format="default"/>.
-                    Therefore a compression algorithm has been implemented, 
which always creates the IBF counter in optimal size.
+                    Therefore a packing algorithm has been implemented, which 
always creates the IBF counter in optimal size.
                     and thus minimizes the bandwidth needed to transmit the 
IBF.
                 </t>
                 <t>
-                    A simple algorithm is used for the compression. In a first 
step it is determined, which is the largest counter
+                    A simple algorithm is used for the packing. In a first 
step it is determined, which is the largest counter
                     and how many bits are needed to store it. In a second step 
for every counter of every bucket, the counter
                     is stored in the bit length, determined in the first step 
and these are concatenated.
                 </t>
                 <t>
                     Three individual functions are used for this purpose. The 
first one is a function that iterates over each bucket of
                     the IBF to get the maximum counter in the IBF. As second 
it needs
-                    a function that compresses the counter of the IBF and 
thirdly a function that decompresses the counter.
+                    a function that pack the counter of the IBF and thirdly a 
function that unpack the counter.
                 </t>
                 <figure anchor="performance_counter_variable_size_code">
                     <artwork name="" type="" align="left" alt=""><![CDATA[
@@ -2155,14 +2167,16 @@ FUNCTION ibf_get_max_counter(ibf)
         IF bucket.counter > max_counter
             max_counter = bucket.counter
 
-    RETURN CEILING( log2 ( max_counter ) ) # next bigger discrete number of 
the binary logarithm of the max counter
+    # next bigger discrete number of the binary logarithm of the max counter
+    RETURN CEILING( log2 ( max_counter ) )
 
 # INPUTS:
 # ibf: The IBF
-# offset: The offset which defines the starting point from which bucket the 
compress operation starts
-# count: The number of buckets in the array that will be compressed
+# offset: The offset which defines the starting point from which bucket the
+#         pack operation starts
+# count: The number of buckets in the array that will be packed
 # OUTPUTS:
-# returns: A byte array of compressed counters to send over the network
+# returns: A byte array of packed counters to send over the network
 
 FUNCTION pack_counter(ibf, offset, count)
     counter_bytes = ibf_get_max_counter(ibf)
@@ -2206,7 +2220,7 @@ FUNCTION pack_counter(ibf, offset, count)
             byte_ctr++
         NEXT_BUCKET
 
-    # Write the last partial compressed byte to the buffer
+    # Write the last partial packed byte to the buffer
     buffer[byte_ctr] = store << (8 - store_bits)
     byte_ctr++
 
@@ -2214,10 +2228,13 @@ FUNCTION pack_counter(ibf, offset, count)
 
 # INPUTS:
 # ibf: The IBF
-# offset: The offset which defines the starting point from which bucket the 
compress operation starts
-# count: The number of buckets in the array that will be compressed
-# counter_bit_length: 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 function
+# 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
+                      ibf message in the ibf_counter_bit_length field
+# packed_data: 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
 
@@ -2675,7 +2692,7 @@ FUNCTION END
 # rd: Number of duplicated elements received
 # rf: Number of fresh elements received
 # Output:
-# Returns TRUE if full syncronisation is plausible and FALSE otherwise
+# Returns TRUE if full synchronisation is plausible and FALSE otherwise
 
 FUNCTION full_sync_plausibility_check (state,rs,lis,rd,rf)
     security_level_lb = 1 / SECURITY_LEVEL
@@ -2900,8 +2917,8 @@ FUNCTION END
                             which means within the byzantine boundaries 
described in section <xref 
target="security_generic_functions_check_byzantine_boundaries" format="title" 
/>.
                         </t>
                         <t>
-                            In case of compressed strata estimators the 
decompression algorithm needs to
-                            be protected against decompression memory 
corruption (memory overflow).
+                            In case of compressed strata estimators the 
unpacking algorithm needs to
+                            be protected against unpacking memory corruption 
(memory overflow).
                         </t>
                     </dd>
                 </dl>
@@ -3014,19 +3031,25 @@ FUNCTION END
 Name                        | Value      | Description
 ----------------------------+------------+--------------------------
 SE_STRATA_COUNT             | 32         | Number of IBFs in a strata estimator
-IBF_HASH_NUM*               | 3          | Number of times an element is 
hashed to an IBF
-IBF_FACTOR*                 | 2          | The factor by which the size of the 
IBF is increased
-                                           in case of decoding failure or 
initially from the
-                                           set difference
-MAX_BUCKETS_PER_MESSAGE     | 1120       | Maximum bucket of an IBF that are 
transmitted in single message
+IBF_HASH_NUM*               | 3          | Number of times an element is 
hashed to an
+                                           IBF
+IBF_FACTOR*                 | 2          | The factor by which the size of the 
IBF is
+                                           increased in case of decoding 
failure or
+                                           initially from the set difference
+MAX_BUCKETS_PER_MESSAGE     | 1120       | Maximum bucket of an IBF that are
+                                           transmitted in single message
 IBF_MIN_SIZE*               | 37         | Minimal number of buckets in an IBF
-DIFFERENTIAL_RTT_MEAN*      | 3.65145    | The average RTT that is needed for 
a differential synchronisation
-SECURITY_LEVEL*             | 2^80       | Security level for probabilistic 
security algorithms
-PROBABILITY_FOR_NEW_ROUND*  | 0.15       | The probability for a IBF decoding 
failure in the differential
-                                           synchronisation mode
-DIFFERENTIAL_RTT_MEAN*      | 3.65145    | The average RTT that is needed for 
a differential synchronisation
+DIFFERENTIAL_RTT_MEAN*      | 3.65145    | The average RTT that is needed for a
+                                           differential synchronisation
+SECURITY_LEVEL*             | 2^80       | Security level for probabilistic 
security
+                                           algorithms
+PROBABILITY_FOR_NEW_ROUND*  | 0.15       | The probability for a IBF decoding 
failure
+                                           in the differential synchronisation 
mode
+DIFFERENTIAL_RTT_MEAN*      | 3.65145    | The average RTT that is needed for a
+                                           differential synchronisation
 MAX_IBF_SIZE                | 1048576    | Maximal number of buckets in an IBF
-AVG_BYTE_SIZE_SE*           | 4221       | Average byte size of a single 
strata estimator
+AVG_BYTE_SIZE_SE*           | 4221       | Average byte size of a single strata
+                                           estimator
 VALID_NUMBER_SE*            | [1,2,4,8]  | Valid number of SE in
 
             ]]></artwork>
@@ -3043,20 +3066,29 @@ VALID_NUMBER_SE*            | [1,2,4,8]  | Valid number 
of SE in
                 <artwork name="" type="" align="left" alt=""><![CDATA[
 Type    | Name                       | References | Description
 --------+----------------------------+------------+--------------------------
- 559    | SETU_P2P_REQUEST_FULL      | [This.I-D] | Request the full set of 
the other peer
- 710    | SETU_P2P_SEND_FULL         | [This.I-D] | Signals to send the full 
set to the other peer
- 560    | SETU_P2P_DEMAND            | [This.I-D] | Demand the whole element 
from the other peer, given only the hash code.
- 561    | SETU_P2P_INQUIRY           | [This.I-D] | Tell the other peer to 
send a list of hashes that match an IBF key.
- 562    | SETU_P2P_OFFER             | [This.I-D] | Tell the other peer which 
hashes match a given IBF key.
- 563    | SETU_P2P_OPERATION_REQUEST | [This.I-D] | Request a set union 
operation from a remote peer.
+ 559    | SETU_P2P_REQUEST_FULL      | [This.I-D] | Request the full set of 
the other
+                                                    peer
+ 710    | SETU_P2P_SEND_FULL         | [This.I-D] | Signals to send the full 
set to the
+                                                    other peer
+ 560    | SETU_P2P_DEMAND            | [This.I-D] | Demand the whole element 
from the
+                                                    other peer, given only the 
hash
+                                                    code.
+ 561    | SETU_P2P_INQUIRY           | [This.I-D] | Tell the other peer to 
send a list
+                                                    of hashes that match an 
IBF key.
+ 562    | SETU_P2P_OFFER             | [This.I-D] | Tell the other peer which 
hashes
+                                                    match a given IBF key.
+ 563    | SETU_P2P_OPERATION_REQUEST | [This.I-D] | Request a set union 
operation from
+                                                    a remote peer.
  564    | SETU_P2P_SE                | [This.I-D] | Strata Estimator 
uncompressed
  565    | SETU_P2P_IBF               | [This.I-D] | Invertible Bloom Filter 
slices.
  566    | SETU_P2P_ELEMENTS          | [This.I-D] | Actual set elements.
  567    | SETU_P2P_IBF_LAST          | [This.I-D] | Invertible Bloom Filter 
Last Slice.
  568    | SETU_P2P_DONE              | [This.I-D] | Set operation is done.
  569    | SETU_P2P_SEC               | [This.I-D] | Strata Estimator compressed
- 570    | SETU_P2P_FULL_DONE         | [This.I-D] | All elements in full 
synchronisation mode have been sent is done.
- 571    | SETU_P2P_FULL_ELEMENT      | [This.I-D] | Send an actual element in 
full synchronisation mode.
+ 570    | SETU_P2P_FULL_DONE         | [This.I-D] | All elements in full 
synchronisation
+                                                    mode have been sent is 
done.
+ 571    | SETU_P2P_FULL_ELEMENT      | [This.I-D] | Send an actual element in 
full
+                                                    synchronisation mode.
 
            ]]></artwork>
             </figure>

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