Feature #4718
closedUse exponential retry on nack in CertificateFetcherFromNetwork
100%
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
Updated by Ashlesh Gawande over 6 years ago
- Related to Bug #4712: Slow convergence of Hyperbolic routing in Mini-NDN added
Updated by Ashlesh Gawande over 6 years 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?
Updated by Junxiao Shi about 6 years 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.
Updated by Ashlesh Gawande about 6 years 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?
Updated by Ashlesh Gawande about 6 years 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
Updated by Davide Pesavento about 6 years 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
Updated by Davide Pesavento about 6 years ago
- Status changed from Code review to Closed
- % Done changed from 0 to 100
Updated by Ashlesh Gawande over 5 years ago
- Related to Feature #4879: Option to disable the second interest in CertificateFetcherDirectFetch added
Updated by Ashlesh Gawande over 5 years ago
- Related to deleted (Feature #4879: Option to disable the second interest in CertificateFetcherDirectFetch)
Updated by Ashlesh Gawande over 5 years ago
- Related to Task #4880: Add randomness to exponential retry on Nack in CertificateFetcherFromNetwork added