Project

General

Profile

Actions

Feature #4200

closed

Replace straggler timer with per-strategy decision

Added by Junxiao Shi almost 7 years ago. Updated about 6 years ago.

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

100%

Estimated time:
9.00 h

Description

NFD straggler timer keeps PIT entry alive for 100ms after being satisfied by Data or being "rejected" (either strategy decides not to forward, or strategy returns a Nack-NoRoute). The purpose were duplicate detection and measurements.

The straggler timer is not needed for detecting loops, because if the Interest has been satisfied and then a copy of that Interest comes back to a node, the node would respond with cached Data, thus breaking the loop.
The straggler timer is ineffective for detecting multi-path arrival, because PIT in-records have been deleted when straggler timer starts.
Historically, before #1953 introduced DNL, the PIT entry contained a "Nonce list" which can effectively detect duplicates, but now it's gone.

While the straggler timer is useful for measurement purposes, not every strategy needs it.
The presence and ubiquitous application of straggler also changes the semantics of PIT: the PIT contains both pending Interests and "recently satisfied Interests", and is named "Interest table" in NFD devguide, causing confusion because its semantics differs from "PIT" in literatures.

In this issue, straggler timer is to be replaced with per-strategy decision of PIT entry lifetime extension.

  • nfd::Pit is back as "pending Interest table", which normally only contains pending Interests.
  • If an incoming Interest is satisfied by cached Data in CS, no PIT entry shall be created. For example, incoming Interest pipeline can perform CS lookup before PIT insertion.
  • If a strategy needs to collect additional Data replies for measurement purposes after a pending Interest has been satisfied, it may request to extend PIT entry lifetime for a certain duration in beforeSatisfyInterest trigger. If Data/Nack reply arrives within the PIT entry lifetime, the strategy would be triggered, and the PIT lifetime extension is no longer valid. Within the trigger callback, the strategy must request to extend PIT entry lifetime again if needed, otherwise the PIT entry would be removed as soon as the trigger finishes execution.
  • If a strategy decides to delay Interest forwarding, its afterReceiveInterest trigger must request to extend PIT entry lifetime.
  • Strategy::rejectPendingInterest action is no longer needed. If a strategy trigger neither extends PIT lifetime nor forwards the Interest, the PIT entry is removed as soon as the trigger finishes execution.

Related issues 2 (0 open2 closed)

Related to NFD - Bug #4132: MulticastStrategy/AsfStrategy should not reject forwarded InterestsClosedAshlesh Gawande

Actions
Blocks NFD - Bug #4369: PIT entry not removed when NACKed from all upstreamsClosedTeng Liang

Actions
Actions #1

Updated by Junxiao Shi almost 7 years ago

  • Related to Bug #4132: MulticastStrategy/AsfStrategy should not reject forwarded Interests added
Actions #2

Updated by Junxiao Shi almost 7 years ago

  • Description updated (diff)

Beichuan has approved this proposal in 20170309 research meeting. It was previously named "eliminate straggler timer" but Beichuan suggested that "per-strategy decision" is more accurate.

Actions #3

Updated by Junxiao Shi about 6 years ago

  • Assignee set to Teng Liang
  • Target version set to v0.7
Actions #4

Updated by Junxiao Shi about 6 years ago

  • Blocks Bug #4369: PIT entry not removed when NACKed from all upstreams added
Actions #5

Updated by Junxiao Shi about 6 years ago

  • Related to deleted (Bug #4132: MulticastStrategy/AsfStrategy should not reject forwarded Interests)
Actions #6

Updated by Junxiao Shi about 6 years ago

  • Blocked by Bug #4132: MulticastStrategy/AsfStrategy should not reject forwarded Interests added
Actions #7

Updated by Teng Liang about 6 years ago

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

Updated by Teng Liang about 6 years ago

The code for this feature is merged, but I am unable to close this thread.

Actions #9

Updated by Davide Pesavento about 6 years ago

  • Status changed from Code review to Feedback

Did you update the NFD devguide?

Actions #10

Updated by Teng Liang about 6 years ago

Davide Pesavento wrote:

Did you update the NFD devguide?

Not yet. Will do it.

Actions #11

Updated by Davide Pesavento about 6 years ago

  • Status changed from Feedback to In Progress
  • % Done changed from 100 to 50

It's not clear to me if the last bullet point in the description is saying that rejectPendingInterest should be removed in this issue. Junxiao, please clarify.

I am unable to close this thread

It can't be closed because it's blocked by #4132.

Actions #12

Updated by Junxiao Shi about 6 years ago

It's not clear to me if the last bullet point in the description is saying that rejectPendingInterest should be removed in this issue.

The initial design was:

  • Content Store miss pipeline sets PIT expiry timer to "now"
  • if the strategy forwards the Interest, PIT expiry timer becomes "normal" (i.e. when the last in-record expires)
  • if the strategy wants to forward the Interest a little later, it must extend PIT entry lifetime
  • if the strategy decides not to forward the Interest, do nothing and the PIT entry disappears

The implementation is:

  • Content Store miss pipeline sets PIT expiry timer to "normal"
  • if the strategy decides not to forward the Interest, shorten PIT entry lifetime to zero (rejectPendingInterest is a convenient helper function)
  • if the strategy wants to forward the Interest either now or later, it may do so before PIT entry expires

Both designs make sense. NFD devguide needs to reflect what is implemented.

It can't be closed because it's blocked by #4132.

As indicated in #4132-8, multicast strategy and ASF strategy have stopped working.
However, given #4200 change is already merged, I'll remove the blocking relation and raise priority of #4132.

Actions #13

Updated by Junxiao Shi about 6 years ago

  • Blocked by deleted (Bug #4132: MulticastStrategy/AsfStrategy should not reject forwarded Interests)
Actions #14

Updated by Davide Pesavento about 6 years ago

  • Related to Bug #4132: MulticastStrategy/AsfStrategy should not reject forwarded Interests added
Actions #15

Updated by Davide Pesavento about 6 years ago

  • % Done changed from 50 to 90

Both designs make sense. NFD devguide needs to reflect what is implemented.

Ok, so only documentation update is missing for this issue.

Actions #16

Updated by Teng Liang about 6 years ago

The NFD developer guide is updated accordingly (see commit 99302934a57448be268def81abf4b8619462d1f3). Please take a look. Thanks.

Actions #17

Updated by Davide Pesavento about 6 years ago

  • Status changed from In Progress to Feedback
  • % Done changed from 90 to 100
Actions #18

Updated by Junxiao Shi about 6 years ago

  • Status changed from Feedback to Closed
Actions

Also available in: Atom PDF