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 almost 10 years ago
- Blocked by Task #3088: Refactor Face as LinkService+Transport added
Updated by Junxiao Shi almost 10 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 almost 10 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 almost 10 years ago
- Blocks Feature #3157: Nack scenario added
Updated by Junxiao Shi almost 10 years ago
- Related to Task #3033: Forwarding design: Nack added
Updated by Junxiao Shi almost 10 years ago
- Blocks Feature #3176: NACK in multicast strategy added
Updated by Junxiao Shi almost 10 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 almost 10 years ago
Change is moved to feature-lp branch http://gerrit.named-data.net/2436
Updated by Junxiao Shi almost 10 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 almost 10 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 almost 10 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 almost 10 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 almost 10 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 over 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 over 9 years ago
20150924 conference call approves note-15 solution.
Updated by Junxiao Shi over 9 years ago
- Status changed from Code review to Closed
Updated by Junxiao Shi over 9 years ago
- Status changed from Closed to Feedback
Reopening because I forgot to update devguide.
Updated by Junxiao Shi over 9 years ago
- Has duplicate Task #3390: Developer Guide: AccessStrategy added
Updated by Junxiao Shi over 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 over 9 years ago
- Has duplicate deleted (Task #3390: Developer Guide: AccessStrategy)
Updated by Junxiao Shi over 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 over 9 years ago
- Status changed from In Progress to Closed
- % Done changed from 90 to 100
devguide updates for this issue is completed.