Feature #2440
closedOmitted FreshnessPeriod implies always stale
100%
Description
Current spec defines that Data packets without FreshnessPeriod are considered always fresh ("data packet cannot be marked stale", http://named-data.net/doc/ndn-tlv/data.html#freshnessperiod).
I feel that this is not correct and we should change the spec to treat data packets without FreshnessPeriod as never fresh (always stale).
The reason I'm having this feeling is that a single data packet without FreshnessPeriod specified can break protocols that rely on FreshnessPeriod to get "fresh data".
Similar thing can happen when someone specified large FreshnessPeriod, but we can think about such issue later (e.g., what should be the limit on such freshness).
Updated by Junxiao Shi almost 10 years ago
- Tracker changed from Task to Feature
- Subject changed from Change to consider: Data packet without FreshnessPeriod should not be considered "fresh" ever to Omitted FreshnessPeriod implies always stale
- Description updated (diff)
20150128 conference call generally agrees with this idea.
A more general problem is, FreshnessPeriod has three overloaded purposes:
- limit the load of producer
- express the validity of Data
- express the usefulness of Data
and there are problems in name discovery.
Updated by Alex Afanasyev over 9 years ago
- Priority changed from Normal to High
I have "re-discovered" this issue today. I forgot, did we agree to change the spec (and NFD)?
Updated by Junxiao Shi over 9 years ago
Please send proposal to ndn@ mailing list for spec discussion.
I'm also mad at this problem these days when trying out ndnfs-port.
Updated by Lan Wang over 9 years ago
Agree with the proposal. We've had similar problems with the routing status page. The status data was published without a freshness period. This worked with NDNx, but when we switched to NFD the interpretation was changed, so the Interests always retrieved the status data from the caches. We changed the code so it's now working. However, I expect many (new) developers will not put freshness period in their data explicitly and discover that they end up always getting cached data even when they want to retrieve new data.
Updated by Junxiao Shi almost 8 years ago
- Blocks Feature #3944: Omitted FreshnessPeriod implies always stale added
Updated by Junxiao Shi almost 8 years ago
- Assignee set to Eric Newberry
20170206 call requests Eric to take care of the spec update on https://named-data.net/doc/ndn-tlv/data.html#freshnessperiod.
Updated by Eric Newberry almost 8 years ago
- Status changed from New to In Progress
Updated by Eric Newberry almost 8 years ago
- Status changed from In Progress to Code review
- % Done changed from 0 to 100
Updated by Junxiao Shi almost 8 years ago
We discovered a related question during code review.
The existing protocol says:
If an exact duplicate of a stale Data arrives, the effect is the same as if the stale Data had not been present. In particular, the Data in the store is no longer stale.
And https://gerrit.named-data.net/3694 patchset4 changes the wording to:
When the exact replicate of the "stale" Data packet, carrying positive FreshnessPeriod value, is inserted into content store, content store SHOULD remove "stale" bit.
However, is the the correct design?
Davide's opinion:
When would such a scenario happen anyway? The only scenario that I can think of is: a node has a stale Data packet in its CS, an interest with MustBeFresh arrives and is forwarded (since it cannot be satisfied by the stale cached Data), eventually this Interest brings back the same exact Data from another node's CS, where it hadn't become stale yet. If this Data is allowed to "refresh" the FreshnessPeriod of the locally cached Data, there's the risk that it will never become really stale.
I think that, if strategy follows FIB and FIB has a single path, "exact replicate of the stale Data" can only come from the producer, not from a CS. Consider this topology:
P---A---B---C
|
D
- C expresses an Interest, and P returns a Data with limited FreshnessPeriod, which is cached at A and B.
- D expresses an Interest for the same Data with MustBeFresh. If the cached Data at B is stale, the cached Data at A must be stale as well, because FreshnessPeriod does not change per hop, and the Data enters A's CS earlier than entering B's CS.
- If B receives an exact replicate of the Data, it must be coming from P. P, as the producer, is permitted to assert the Data is not stale for the next FreshnessPeriod duration.
Updated by Davide Pesavento almost 8 years ago
Junxiao Shi wrote:
I think that, if strategy follows FIB and FIB has a single path, "exact replicate of the stale Data" can only come from the producer, not from a CS.
You may be right, IF the FIB has a single path. That's a pretty strong assumption. Why are you excluding multipath scenarios?
Updated by Junxiao Shi almost 8 years ago
- Status changed from Code review to Closed
Updated by Eric Newberry almost 8 years ago
I believe Davide still had some concerns about the merged changes. @Davide is this still the case?
Updated by Junxiao Shi almost 8 years ago
Reply to note-12:
The merged commit fulfills the requirements specified in issue title. Any other concerns should be reported as a separate issue.