From f51150073e6f1ad16ab8d917e6b3f5437e40eb9c Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Wed, 5 Oct 2011 19:55:20 +0000 Subject: [PATCH] fix correction according to paper, minimum NSE should be our neighour set --- src/nse/gnunet-service-nse.c | 8 ++++++-- src/nse/nse_api.c | 3 ++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/nse/gnunet-service-nse.c b/src/nse/gnunet-service-nse.c index e70d6c29e..bc46a537c 100644 --- a/src/nse/gnunet-service-nse.c +++ b/src/nse/gnunet-service-nse.c @@ -308,6 +308,7 @@ setup_estimate_message (struct GNUNET_NSE_ClientMessage *em) double q; double r; double temp; + double nsize; /* Weighted incremental algorithm for stddev according to West (1979) */ mean = 0.0; @@ -333,12 +334,15 @@ setup_estimate_message (struct GNUNET_NSE_ClientMessage *em) std_dev = sqrt (variance); current_std_dev = std_dev; current_size_estimate = mean; - + em->header.size = htons (sizeof (struct GNUNET_NSE_ClientMessage)); em->header.type = htons (GNUNET_MESSAGE_TYPE_NSE_ESTIMATE); em->reserved = htonl (0); em->timestamp = GNUNET_TIME_absolute_hton (GNUNET_TIME_absolute_get ()); - em->size_estimate = mean - 1.0 / 3.0; + em->size_estimate = mean - 0.332747; + nsize = log2 (GNUNET_CONTAINER_multihashmap_size (peers) + 1); + if (em->size_estimate < nsize) + em->size_estimate = nsize; em->std_deviation = std_dev; GNUNET_STATISTICS_set (stats, "# nodes in the network (estimate)", (uint64_t) pow (2, mean - 1.0 / 3.0), GNUNET_NO); diff --git a/src/nse/nse_api.c b/src/nse/nse_api.c index 0eb165fe5..476c77c2a 100644 --- a/src/nse/nse_api.c +++ b/src/nse/nse_api.c @@ -119,7 +119,8 @@ message_handler (void *cls, const struct GNUNET_MessageHeader *msg) } client_msg = (const struct GNUNET_NSE_ClientMessage *) msg; h->recv_cb (h->recv_cb_cls, GNUNET_TIME_absolute_ntoh (client_msg->timestamp), - client_msg->size_estimate, client_msg->std_deviation); + client_msg->size_estimate, + client_msg->std_deviation); GNUNET_CLIENT_receive (h->client, &message_handler, h, GNUNET_TIME_UNIT_FOREVER_REL); } -- 2.25.1