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