gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] [gnunet] branch master updated: reorder next steps


From: gnunet
Subject: [GNUnet-SVN] [gnunet] branch master updated: reorder next steps
Date: Sun, 21 Apr 2019 13:29:46 +0200

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

grothoff pushed a commit to branch master
in repository gnunet.

The following commit(s) were added to refs/heads/master by this push:
     new 196435205 reorder next steps
196435205 is described below

commit 196435205b803f01976560037c69553ac0e8e307
Author: Christian Grothoff <address@hidden>
AuthorDate: Sun Apr 21 13:29:37 2019 +0200

    reorder next steps
---
 src/transport/gnunet-service-tng.c | 63 ++++++++++++++++++--------------------
 1 file changed, 30 insertions(+), 33 deletions(-)

diff --git a/src/transport/gnunet-service-tng.c 
b/src/transport/gnunet-service-tng.c
index 697c43f0d..56ba70b9a 100644
--- a/src/transport/gnunet-service-tng.c
+++ b/src/transport/gnunet-service-tng.c
@@ -24,32 +24,23 @@
  *
  * TODO:
  * Implement next:
- * - retransmission logic
+ * - complete backchannel signature verification and
+ *   forwarding of backchannel messages to communicators!
  * - track RTT, distance, loss, etc. => requires extra data structures!
- *
- * Later:
- * - change transport-core API to provide proper flow control in both
- *   directions, allow multiple messages per peer simultaneously (tag
- *   confirmations with unique message ID), and replace quota-out with
- *   proper flow control;
- * - if messages are below MTU, consider adding ACKs and other stuff
- *   (requires planning at receiver, and additional MST-style demultiplex
- *    at receiver!)
- * - could avoid copying body of message into each fragment and keep
- *   fragments as just pointers into the original message and only
- *   fully build fragments just before transmission (optimization, should
- *   reduce CPU and memory use)
- * - When we passively learned DV (with unconfirmed freshness), we
- *   right now add the path to our list but with a zero path_valid_until
- *   time and only use it for unconfirmed routes.  However, we could consider
- *   triggering an explicit validation mechansim ourselves, specifically 
routing
- *   a challenge-response message over the path (OPTIMIZATION-FIXME).
- *
- * FIXME (without marks in the code!):
  * - proper use/initialization of timestamps in messages exchanged
  *   during DV learning
  * - persistence of monotonic time obtained from other peers
  *   in PEERSTORE (by message type)
+ * - change transport-core API to provide proper flow control in both
+ *   directions, allow multiple messages per peer simultaneously (tag
+ *   confirmations with unique message ID), and replace quota-out with
+ *   proper flow control; specify transmission preferences (latency,
+ *   reliability, etc.) per message!
+ * - add logging
+ *
+ * Later:
+ * - review retransmission logic, right now there is no smartness there!
+ *   => congestion control, flow control, etc (requires RTT, loss, etc.)
  *
  * Optimizations:
  * - use shorthashmap on msg_uuid's when matching reliability/fragment ACKs
@@ -58,6 +49,18 @@
  * - queue_send_msg and route_message both by API design have to make copies
  *   of the payload, and route_message on top of that requires a malloc/free.
  *   Change design to approximate "zero" copy better...
+ * - could avoid copying body of message into each fragment and keep
+ *   fragments as just pointers into the original message and only
+ *   fully build fragments just before transmission (optimization, should
+ *   reduce CPU and memory use)
+ * - if messages are below MTU, consider adding ACKs and other stuff
+ *   (requires planning at receiver, and additional MST-style demultiplex
+ *    at receiver!)
+ * - When we passively learned DV (with unconfirmed freshness), we
+ *   right now add the path to our list but with a zero path_valid_until
+ *   time and only use it for unconfirmed routes.  However, we could consider
+ *   triggering an explicit validation mechansim ourselves, specifically 
routing
+ *   a challenge-response message over the path (OPTIMIZATION-FIXME).
  *
  * Design realizations / discussion:
  * - communicators do flow control by calling MQ "notify sent"
@@ -250,12 +253,9 @@ struct TransportBackchannelEncapsulationMessage
   struct GNUNET_MessageHeader header;
 
   /**
-   * Distance the backchannel message has traveled, to be updated at
-   * each hop.  Used to bound the number of hops in case a backchannel
-   * message is broadcast and thus travels without routing
-   * information (during initial backchannel discovery).
+   * Reserved, always zero.
    */
-  uint32_t distance;
+  uint32_t reserved GNUNET_PACKED;
 
   /**
    * Target's peer identity (as backchannels may be transmitted
@@ -4260,8 +4260,8 @@ handle_fragment_box (void *cls, const struct 
TransportFragmentBox *fb)
     rc->frag_uuid = frag_uuid;
     rc->num_acks++;
   }
-  if (65 == rc->num_acks) /* FIXME: maybe use smaller threshold? This is very
-                             aggressive. */
+  if (65 == rc->num_acks) /* OPTIMIZE-FIXME: maybe use smaller threshold? This
+                             is very aggressive. */
     ack_now = GNUNET_YES; /* maximum acks received */
   // FIXME: possibly also ACK based on RTT (but for that we'd need to
   // determine the queue used for the ACK first!)
@@ -4286,7 +4286,7 @@ handle_fragment_box (void *cls, const struct 
TransportFragmentBox *fb)
   /* successful reassembly */
   send_fragment_ack (rc);
   demultiplex_with_cmc (cmc, msg);
-  /* FIXME: really free here? Might be bad if fragments are still
+  /* FIXME-OPTIMIZE: really free here? Might be bad if fragments are still
      en-route and we forget that we finished this reassembly immediately!
      -> keep around until timeout?
      -> shorten timeout based on ACK? */
@@ -4449,7 +4449,7 @@ handle_reliability_box (void *cls, const struct 
TransportReliabilityBox *rb)
   {
     struct TransportReliabilityAckMessage *ack;
 
-    /* FIXME: implement cummulative ACKs and ack_countdown,
+    /* FIXME-OPTIMIZE: implement cummulative ACKs and ack_countdown,
        then setting the avg_ack_delay field below: */
     ack = GNUNET_malloc (sizeof (*ack) + sizeof (struct GNUNET_ShortHashCode));
     ack->header.type = htons (GNUNET_MESSAGE_TYPE_TRANSPORT_RELIABILITY_ACK);
@@ -4592,9 +4592,6 @@ handle_backchannel_encapsulation (
   if (0 != GNUNET_memcmp (&be->target, &GST_my_identity))
   {
     /* not for me, try to route to target */
-    /* FIXME: someone needs to update be->distance! */
-    /* FIXME: BE routing can be special, should we put all of this
-       on 'route_message'? Maybe at least pass some more arguments? */
     route_message (&be->target,
                    GNUNET_copy_message (&be->header),
                    RMO_DV_ALLOWED);

-- 
To stop receiving notification emails like this one, please contact
address@hidden



reply via email to

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