Feature #3156
closedNACK in forwarding and best-route
100%
Description
Extend forwarding pipelines and best-route strategy to support NACK, using design from #3033.
This issue includes:
- in PIT out-record, add NACKed field
- create incoming NACK pipeline
- create outgoing NACK pipeline
- modify Interest loop pipeline to send NACK upon duplicate Nonce
- in strategy API, add after receive NACK trigger and send NACK action
- in best-route strategy, process incoming NACK
This issue does not include changes in other strategies.
NFD Developer Guide should be updated as part of this issue.
Updated by Junxiao Shi about 9 years ago
- Blocked by Task #3088: Refactor Face as LinkService+Transport added
Updated by Junxiao Shi about 9 years ago
- Status changed from New to In Progress
- Assignee set to Junxiao Shi
- Priority changed from Normal to High
This issue is blocked by #3088 because outgoing NACK pipeline depends on Face::sendNack
.
I'm starting with other parts.
Updated by Junxiao Shi about 9 years ago
- % Done changed from 0 to 10
http://gerrit.named-data.net/2419
Currently it only contains changes in PIT out-record.
I plan to make all code changes in one commit.
To avoid code conflict, I won't work on pipelines until #3034 is merged.
Updated by Junxiao Shi about 9 years ago
- Blocks Feature #3157: Nack scenario added
Updated by Junxiao Shi about 9 years ago
- Related to Task #3033: Forwarding design: Nack added
Updated by Junxiao Shi about 9 years ago
- Blocks Feature #3176: NACK in multicast strategy added
Updated by Junxiao Shi about 9 years ago
- % Done changed from 10 to 40
http://gerrit.named-data.net/2419 patchset2 has outline for all methods and test cases.
I'm waiting for #3088 before I can continue.
Updated by Junxiao Shi about 9 years ago
Change is moved to feature-lp branch http://gerrit.named-data.net/2436
Updated by Junxiao Shi about 9 years ago
As of patchset6, I have completed implementation of forwarding pipelines. I'll move on to best-route strategy.
There's a design flaw: Interest loop pipeline sends Nack by entering outgoing Nack pipeline, which won't work, because outgoing Nack pipeline expects a PIT in-record, which is not yet inserted. I'll update the design to directly send Nack via the face.
Updated by Junxiao Shi about 9 years ago
- % Done changed from 60 to 70
In patchset8, I'm adding test cases for best-route2, but strategy itself isn't implemented yet.
This issue is suitable for Test-Driven Development, because the API is well-defined.
Updated by Junxiao Shi about 9 years ago
As of patchset10, all test cases for best-route2 are added. Implementation of "after receive Interest" trigger is complete.
I'm changing strategy API "send Nack" action to take const Face&
instead of shared_ptr<Face>
to make strategy cleaner, at the cost of having a const_cast
in Forwarder; the alternate quick solution (before #3205) is to have const_pointer_cast
in strategy, which is worse.
Updated by Junxiao Shi about 9 years ago
- % Done changed from 70 to 90
As of patchset11, BestRouteStrategy2
implementation is complete.
However, TopologyTester
, a testing tool that simulates a network topology within a test case, still needs to be upgraded to support transmitting NACK.
Updated by Junxiao Shi about 9 years ago
- Status changed from In Progress to Code review
- % Done changed from 90 to 100
As of patchset13, everything is implemented, and unit tests are passing.
Updated by Junxiao Shi about 9 years ago
commit:b5684b0bd83814af5f804eaf52e1bf651a4e4e69 is causing IntegrationTests to fail at test_multicast.test_udp_multicast
test case to fail.
As revealed in logs, the steps leading to this failure are:
- A,B,C are connected on the same multi-access link, and all nodes are using best-route strategy.
- A is the consumer. C is the producer. B is neither a consumer nor a producer.
- A sends an Interest onto the link. It's received by both B and C.
- B returns a Nack. A returns this Nack to the consumer.
- C returns the Data, but A has already returned a Nack to the consumer.
- The consumer does not receive Data (from C), and thus fails the scenario.
Since we haven't defined the semantics of a Nack on a multi-access link, I propose to forbid Nack on any multi-access link.
- In incoming Nack pipeline, ignore the Nack if it comes from a multi-access face.
- In outgoing Nack pipeline and Interest loop pipeline, do not send a Nack if it goes to a multi-access face.
Updated by Junxiao Shi about 9 years ago
20150924 conference call approves note-15 solution.
Updated by Junxiao Shi about 9 years ago
- Status changed from Code review to Closed
Updated by Junxiao Shi about 9 years ago
- Status changed from Closed to Feedback
Reopening because I forgot to update devguide.
Updated by Junxiao Shi almost 9 years ago
- Has duplicate Task #3390: Developer Guide: AccessStrategy added
Updated by Junxiao Shi almost 9 years ago
- Status changed from Feedback to In Progress
- % Done changed from 100 to 80
I'm getting started on updating devguide.
Updated by Junxiao Shi almost 9 years ago
- Has duplicate deleted (Task #3390: Developer Guide: AccessStrategy)
Updated by Junxiao Shi almost 9 years ago
- % Done changed from 80 to 90
I've written about pipelines and strategy API.
I'll continue onto Nack processing in best-route strategy.
Updated by Junxiao Shi almost 9 years ago
- Status changed from In Progress to Closed
- % Done changed from 90 to 100
devguide updates for this issue is completed.