Project

General

Profile

Actions

Feature #3156

closed

NACK in forwarding and best-route

Added by Junxiao Shi over 8 years ago. Updated about 8 years ago.

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

100%

Estimated time:
6.00 h

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.


Related issues 4 (0 open4 closed)

Related to NFD - Task #3033: Forwarding design: NackClosedJunxiao Shi

Actions
Blocked by NFD - Task #3088: Refactor Face as LinkService+TransportClosedEric Newberry

Actions
Blocks NFD - Feature #3157: Nack scenarioClosedHila Ben Abraham

Actions
Blocks NFD - Feature #3176: NACK in multicast strategyClosedAshlesh Gawande

Actions
Actions #1

Updated by Junxiao Shi over 8 years ago

  • Blocked by Task #3088: Refactor Face as LinkService+Transport added
Actions #2

Updated by Junxiao Shi over 8 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.

Actions #3

Updated by Junxiao Shi over 8 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.

Actions #4

Updated by Junxiao Shi over 8 years ago

Actions #5

Updated by Junxiao Shi over 8 years ago

  • Related to Task #3033: Forwarding design: Nack added
Actions #6

Updated by Junxiao Shi over 8 years ago

Actions #7

Updated by Junxiao Shi over 8 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.

Actions #8

Updated by Junxiao Shi over 8 years ago

Change is moved to feature-lp branch http://gerrit.named-data.net/2436

Actions #9

Updated by Junxiao Shi over 8 years ago

  • % Done changed from 40 to 60
Actions #10

Updated by Junxiao Shi over 8 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.

Actions #11

Updated by Junxiao Shi over 8 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.

Actions #12

Updated by Junxiao Shi over 8 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.

Actions #13

Updated by Junxiao Shi over 8 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.

Actions #14

Updated by Junxiao Shi over 8 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.

Actions #15

Updated by Junxiao Shi over 8 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:

  1. A,B,C are connected on the same multi-access link, and all nodes are using best-route strategy.
  2. A is the consumer. C is the producer. B is neither a consumer nor a producer.
  3. A sends an Interest onto the link. It's received by both B and C.
  4. B returns a Nack. A returns this Nack to the consumer.
  5. C returns the Data, but A has already returned a Nack to the consumer.
  6. 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.
Actions #16

Updated by Junxiao Shi over 8 years ago

20150924 conference call approves note-15 solution.

Actions #17

Updated by Junxiao Shi over 8 years ago

  • Status changed from Code review to Closed
Actions #18

Updated by Junxiao Shi over 8 years ago

  • Status changed from Closed to Feedback

Reopening because I forgot to update devguide.

Actions #19

Updated by Junxiao Shi over 8 years ago

  • Has duplicate Task #3390: Developer Guide: AccessStrategy added
Actions #20

Updated by Junxiao Shi over 8 years ago

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

I'm getting started on updating devguide.

Actions #21

Updated by Junxiao Shi over 8 years ago

  • Has duplicate deleted (Task #3390: Developer Guide: AccessStrategy)
Actions #22

Updated by Junxiao Shi over 8 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.

Actions #23

Updated by Junxiao Shi about 8 years ago

  • Status changed from In Progress to Closed
  • % Done changed from 90 to 100

devguide updates for this issue is completed.

Actions

Also available in: Atom PDF