Feature #4535
closedNack format for Interest v0.3
Added by Junxiao Shi over 6 years ago. Updated over 4 years ago.
100%
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.
Updated by Junxiao Shi over 6 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.
Updated by Davide Pesavento over 6 years ago
- Related to Feature #4658: Encode and decode Interest ApplicationParameters added
Updated by Junxiao Shi over 4 years 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.
Updated by Junxiao Shi over 4 years ago
- Status changed from New to Resolved
- Assignee set to Junxiao Shi
- Target version set to 22.12
- % Done changed from 0 to 100
NDNLPv2 rev59 reflects note-1 design.
Updated by Junxiao Shi over 4 years ago
- Related to Feature #5104: Shorten Nack encoding added
Updated by Junxiao Shi over 4 years 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
Updated by Alex Afanasyev over 4 years 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.
Updated by Junxiao Shi over 4 years 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.
Updated by Davide Pesavento over 4 years ago
- Status changed from Closed to Feedback
Updated by Davide Pesavento over 4 years 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?
Updated by Junxiao Shi over 4 years 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.
Updated by Davide Pesavento over 4 years 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.