Project

General

Profile

Feature #4535

Nack format for Interest v0.3

Added by Junxiao Shi over 2 years ago. Updated 4 months ago.

Status:
Rejected
Priority:
Normal
Assignee:
Category:
Protocol
Target version:
-
Start date:
Due date:
% Done:

100%

Estimated time:

Description

NDN Packet Format v0.3 has introduced a new Interest packet format.
In particular, there’s a new HopLimit element that is decremented per hop, and an ApplicationParameters element that can potentially be large.
NDNLP needs to define the Nack format and basic processing for Interest v0.3.


Related issues

Related to ndn-cxx - Feature #4658: Encode and decode Interest ApplicationParametersClosedDavide Pesavento

Actions
Related to ndn-cxx - Feature #5104: Shorten Nack encodingRejected

Actions
#1

Updated by Junxiao Shi over 2 years ago

  • Description updated (diff)

In today’s Nack, only Name+Selectors and Nonce are used by the recipient: Name+Selectors locates a PIT entry, and Nonce confirms the Nack is against the last outgoing Interest.
20180305 call agrees that, given Parameters is potentially large, it is sufficient to keep only Name, CanBePrefix, MustBeFresh, ForwardingHint, and Nonce in the Nack’s payload.
Lixia had a related idea: it could be useful to inform the downstream how many hops away were the Nack generated. This can be achieved by, either keep the HopLimit element in the payload indicating the HopLimit value seen at Nack generation node, or add a HopCount field inside Nack header field.

#2

Updated by Davide Pesavento over 2 years ago

  • Start date deleted (03/05/2018)
#3

Updated by Davide Pesavento about 2 years ago

  • Related to Feature #4658: Encode and decode Interest ApplicationParameters added
#4

Updated by Davide Pesavento about 2 years ago

  • Tags set to Packet03Transition
#5

Updated by Davide Pesavento 7 months ago

  • Description updated (diff)
#6

Updated by Junxiao Shi 5 months ago

Lixia had a related idea: it could be useful to inform the downstream how many hops away were the Nack generated. This can be achieved by, either keep the HopLimit element in the payload indicating the HopLimit value seen at Nack generation node, or add a HopCount field inside Nack header field.

Lixia withdraws this idea on 20200421 NFD call.

#7

Updated by Junxiao Shi 5 months ago

  • Status changed from New to Resolved
  • Assignee set to Junxiao Shi
  • Target version set to v0.9
  • % Done changed from 0 to 100

NDNLPv2 rev59 reflects note-1 design.

#8

Updated by Junxiao Shi 5 months ago

#9

Updated by Junxiao Shi 5 months ago

  • Status changed from Resolved to Closed

I have reported issued to each library and forwarder, except mine.
python-ndn is the first to implement this feature. https://github.com/zjkmxy/python-ndn/issues/9

#10

Updated by Davide Pesavento 5 months ago

  • Target version deleted (v0.9)
#11

Updated by Alex Afanasyev 5 months ago

I was reminded about this issue and same as Davide, have a major concern with the current direction. One big question is what’s the point of this interest in nack. If I’m not mistaken, the original decision was about having the interest, so the downstream doesn’t need to have it jn PIT (such as pit may use something more compact). If this still is our decision, then the whole issue here is moot.

If we are changing the decision, requiring nodes keeping the original interest (and in case of parametrized interest I’m having doubts that this would be the right requirement), then what is included is NOT interest. It is something that can identify a PIT entry: special structure defined by NDNLP and respected by NFD or interest digest. Coding this stuff as a special way to encode interest is quite wrong.

#12

Updated by Junxiao Shi 5 months ago

Forwarders have to store the Interest, including any parameters, in the PIT. Forwarder needs to do so anyway if they want to support timer based strategy retries. Moreover, memory is cheaper than bandwidth.

Nack packet carries enough information to:

  • Identity the PIT entry: Name, CBP, MBF, FH.
  • Verify that the Nack is against latest forwarded Interest, not an earlier transmission: Nonce.

It reuses the general structure of the Interest, but is not an Interest.

#13

Updated by Davide Pesavento 5 months ago

  • Status changed from Closed to Feedback
#14

Updated by Davide Pesavento 5 months ago

Junxiao Shi wrote:

Forwarders have to store the Interest, including any parameters, in the PIT.

Why?

Forwarder needs to do so anyway if they want to support timer based strategy retries.

That's not a requirement.

It reuses the general structure of the Interest, but is not an Interest.

Then why are we calling it Interest and why does it use the same TLV type as an Interest?

#15

Updated by Junxiao Shi 5 months ago

I could redefine as a completely different type, like this:

Nack
  NackReason
  Name
  CanBePrefix
  MustBeFresh
  ForwardingHint
  Nonce

This would appear inside the Fragment/Payload field of NDNLP, rather than as a header field.

#16

Updated by Davide Pesavento 4 months ago

  • Status changed from Feedback to Rejected

At the NDN Platform Call on May 22, 2020, it was decided to revert this design decision and instead encode the entire original Interest in Nacks.

Also available in: Atom PDF