[Ndn-interest] clarification about NACKs

Salvatore Signorello ssignorello at ciencias.ulisboa.pt
Thu May 7 13:47:42 PDT 2020

Dear members,

I am trying to understand how NACK packets look like in the current NDN 
codebase. I am aware that the NACK functionality has been extensively 
debated over time among this community, but I have only partially 
followed this thread, so please bear with me if I am missing any 
important point I should know. Your guidance will be very much appreciated.

I am not sure whether that exact difference still holds or not, but in 
my mind I am following the difference between 
application(producer)-level NACK and forwarding-NACK which I have 
learned from the "To NACK or not to NACK?" paper of Compagno et al. And, 
conceptually that difference seems to hold in the NDN too since I could 
find both application-level NACKs and network NACKs.

With regard to the former NACK type, according to the latest NDN packet 
specification (0.3 
and to this link 
<https://redmine.named-data.net/projects/ndn-tlv/wiki/ContentType> from 
the project specifications page on the NDN official website, 
application-level NACKs are carried within Data packets with a specific 
content type. The specification, however, does not specify yet how 
exactly the NACK field/payload would look like. More specifically, 
please see my question (a) below.

With regard to the latter NACK type, network NACKs are generated through 
a Nack header field in NDNLPv2 packets carrying interests. At first, by 
digging into the ndn-cxx 0.7.0 library (files nack-header.cpp/hpp) it 
could find out that the network-level NACK header is currently encoded 
with a single TLV, where the Value contains a NACK code. But, 
afterwards, checking the NDNLPv2 spec 
<https://redmine.named-data.net/projects/nfd/wiki/NDNLPv2> it looks like 
that header is made of two nested TLVs instead, where to specify a 
nack-type and a nack-reason. I am wondering what's the difference 
between these two and what would a nack-type mean a that level.

The above being said, I would have the two following questions:

(a) Is an application-level NACK supposed to carry an empty payload in 
NDN? In particular I am wondering if an application-level NACK could 
contain additional arbitrary data.

(b) any initial thoughts/considerations about what NDN routers 
should/shouldn't do with application-level NACKs? Here, Is there any 
reference I should look at?

Could you also please confirm that there are no amendments to be done to 
the above discussion when talking about the latest NDNsim version?

Thank you very much for your time,


Salvatore Signorello

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.lists.cs.ucla.edu/pipermail/ndn-interest/attachments/20200507/16ff6e90/attachment.html>

More information about the Ndn-interest mailing list