Project

General

Profile

Feature #4718

Use exponential retry on nack in CertificateFetcherFromNetwork

Added by Ashlesh Gawande over 1 year ago. Updated over 1 year ago.

Status:
Closed
Priority:
Normal
Category:
Security
Target version:
Start date:
Due date:
% Done:

100%

Estimated time:

Description

Currently NLSR uses the CertificateFetcherDirectFetch which presents the following problems:

  • Sends two interests: one to the indicated face in LSA data and one to the network. In NLSR we know there is no route via network that's why we want to use the face id
  • Sends immediate retransmissions upon Nack (there is a todo in the code to "Retry for some amount of time")
  • The number of retransmissions are not tied to a particular certificate but are for the certificate fetcher overall

This is causing NLSR to not able to successfully fetch certificates and having a delayed convergence (illustration of the problem).

To operate correctly and fast, NLSR can use a CertificateFetcherStrictDirectFetch which has the following features:

  • Send only one interest to the specified face
  • Provide retransmission on nack, trying till the specified maximum time per certificate in an increasing interval (exponential or linear) before giving up

Related issues

Related to NLSR - Bug #4712: Slow convergence of Hyperbolic routing in Mini-NDNClosed

Actions
Related to ndn-cxx - Task #4880: Add randomness to exponential retry on Nack in CertificateFetcherFromNetworkNew

Actions

History

#1

Updated by Ashlesh Gawande over 1 year ago

  • Related to Bug #4712: Slow convergence of Hyperbolic routing in Mini-NDN added
#2

Updated by Ashlesh Gawande over 1 year ago

  • Category set to Security

I am working on this for NLSR here (work in progress), if people agree, I can push to ndn-cxx as a new type of fetcher?

#3

Updated by Junxiao Shi over 1 year ago

  • Sends two interests: one to the indicated face in LSA data and one to the network. In NLSR we know there is no route via network that's why we want to use the face id

This is specific in NLSR and does not happen elsewhere.

  • Sends immediate retransmissions upon Nack (there is a todo in the code to "Retry for some amount of time")

This should be fulfilled in existing fetcher. It does not warrant creating a new fetcher.

  • The number of retransmissions are not tied to a particular certificate but are for the certificate fetcher overall

I don't understand the problem. If it's indeed a problem, this should be fixed in the existing fetcher.

#4

Updated by Ashlesh Gawande over 1 year ago

This is specific in NLSR and does not happen elsewhere.

Maybe could happen in sync, where we would want to send the certificate interest to the sync data arrival face.
We should provide a choice to not send to the network with default being send.

This should be fulfilled in existing fetcher. It does not warrant creating a new fetcher

Alright, makes sense.

I don't understand the problem. If it's indeed a problem, this should be fixed in the existing fetcher.

Okay, seems like this is my misunderstanding. In the latest change on gerrit I am using a variable local to the certificate fetcher for maximum delay to try out for. I guess I need to add a variable to the certificate request, similar to m_nRetriesLeft. It is a public variable that is supposed to be set by the application. Which I think can only be done by having a custom validator and updating the value in validate function's check policy callback. Is there an easier way to set m_nRetriesLeft?

#5

Updated by Ashlesh Gawande over 1 year ago

  • Subject changed from Provide strict direct fetcher with per certificate paced re-transmission on Nack to Use exponential retry on nack in network certificate fetcher
  • Status changed from New to In Progress
  • Assignee set to Ashlesh Gawande
#6

Updated by Davide Pesavento over 1 year ago

  • Subject changed from Use exponential retry on nack in network certificate fetcher to Use exponential retry on nack in CertificateFetcherFromNetwork
  • Status changed from In Progress to Code review
  • Target version set to v0.7
#7

Updated by Davide Pesavento over 1 year ago

  • Status changed from Code review to Closed
  • % Done changed from 0 to 100
#8

Updated by Ashlesh Gawande about 1 year ago

  • Related to Feature #4879: Option to disable the second interest in CertificateFetcherDirectFetch added
#9

Updated by Ashlesh Gawande about 1 year ago

  • Related to deleted (Feature #4879: Option to disable the second interest in CertificateFetcherDirectFetch)
#10

Updated by Ashlesh Gawande about 1 year ago

  • Related to Task #4880: Add randomness to exponential retry on Nack in CertificateFetcherFromNetwork added

Also available in: Atom PDF