<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>Dear members,</p>
    <p>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.<br>
    </p>
    <p><br>
    </p>
    <p>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.<br>
    </p>
    <p><br>
    </p>
    <p> With regard to the former NACK type, according to the latest NDN
      packet specification (<a moz-do-not-send="true"
href="https://named-data.net/doc/NDN-packet-spec/current/data.html#contenttype">0.3</a>)
      and to this <a
        href="https://redmine.named-data.net/projects/ndn-tlv/wiki/ContentType">link</a>
      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.</p>
    <p><br>
    </p>
    <p>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 <a
        moz-do-not-send="true"
        href="https://redmine.named-data.net/projects/nfd/wiki/NDNLPv2">spec</a>
      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.<br>
    </p>
    <p><br>
    </p>
    <p>The above being said, I would have the two following questions:<br>
    </p>
    <p>(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.<br>
    </p>
    <p>(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?<br>
    </p>
    <p><br>
    </p>
    <p>Could you also please confirm that there are no amendments to be
      done to the above discussion when talking about the latest NDNsim
      version?<br>
    </p>
    <p><br>
    </p>
    <p>Thank you very much for your time,</p>
    <p>regards,</p>
    <p>Salvatore Signorello<br>
    </p>
  </body>
</html>