<div dir="ltr"><div>Hi Erno</div><div><br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">if I understand correctly the blog post (which was great, thanks Junxiao!), the missing features are not actually any missing from the NDN implementation, but more like library features? The Endpoint's retransmission and producer parallelism.<br></div></blockquote><div><br></div><div>What do you mean by "NDN implementation"?</div><div>Libraries should be part of NDN implementation, and they are important because they are what most developers would be using.<br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><br>Do you know what's the status of the Go library <a href="https://github.com/go-ndn/ndn" target="_blank">https://github.com/go-ndn/ndn</a> or Rust <a href="https://github.com/imp/ndn-rs" target="_blank">https://github.com/imp/ndn-rs</a>?<br></div></blockquote><div><br></div><div>The Go library was started by Tailin Chu. He is a subscriber of ndn-interest mailing list.<br></div><div>There were no commits for more than two years, so I think it no longer works.</div><div><br></div><div>It's my first time hearing about the Rust library. From the code I can tell that the library only has a Name encoder, and nothing else.</div><div>Thus, it's very incomplete.<br></div><br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>I got from this already following valuable information (please correct me if I'm wrong): <br></div></div></blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>- Getting started with NDNts looks nice and simple<br></div></div></blockquote><div><br></div><div>Yes, that's a smart choice.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>- There's at least basic libraries C++, Python, Java, NodeJS, Go(?), and Rust(?) which includes basic implementation but library implementation features vary.<br></div></div></blockquote><div>
<div dir="ltr"><br></div><div>C++: choose from ndn-cxx (dynamic memory allocation) or NDNph (static memory allocation, limited features); don't use ndn-cpp 
 (unmaintained).</div><div>Python: use python-ndn; don't use PyNDN2 (unmaintained).<br></div><div>Java: jNDN is the only choice (limited maintenance, but still works).<br></div></div><div>NodeJS and browsers: use NDNts; don't use ndn-js (unmaintained).<br></div><div><br><div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><p>I have not used all the libraries, but I think the most important
      functionality is provided by those libraries.</p></div></blockquote><div>Every library has its strength and weakness.<br></div>Someday I'll make a feature comparison table, with sample snippets of how to use each common feature in every library.<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><p>One point what
      Junxiao possibly wanted to make aware of is the fact that the
      newest Packet Format Specification might not be implemented in all
      those libraries. But I would argue that for most research, the
      newest specification is not required.</p></div></blockquote><div>Supporting the current packet format is very important. It ensures your application is interoperable with the network and other applications.</div><div>
A library needs to support at least a minimal subset of the current packet format.<br></div><div>
<div>This is analogous to the cellular network: if you have a GSM 2G phone, you won't be able to use it in South Korea, because they no longer have a 2G network. On the other hand, an LTE phone is not required to have VoLTE.<br></div><div><br></div>

</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><p> Only, when using libraries
      that do not support v0.3, you might need to check out an older NFD
      version as well. This can be done easily with when using the Git
      version of NFD.<br></p></div></blockquote>For beginners it's better to install NFD from PPA packages.</div><div class="gmail_quote">There can be complications trying to use source code installation.<br></div><div class="gmail_quote"> </div></div></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>- You need NFD to make simple consumer/producer setup (is it required or can consumer/producer communicate directly without any daemon between?)<br></div></div></blockquote><div><br></div><div>From an architectural point of view, it is possible for a consumer and a producer to communicate directly without NFD. However, library support is lacking.<br></div><div>PyNDN2 (now dead) used to support this feature, using UDP unicast.</div><div>NDN-Lite (for embedded systems) has this feature, using 802.15.4 broadcast links.<br></div><div>NDNts is getting this feature soon, using UDP multicast.<br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>- miniNDN looks nice if you want to simulate actual network topology (for more hardcore needs see ndnSIM)<br></div></div></blockquote><div><br></div><div>Yes, miniNDN is very powerful. It's mainly used in observing routing and forwarding behaviors, i.e. layer 3 and below.<br></div><div>You'll need a big server to run large experiments.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><br>So should I get next familiar with the NDN Packet Format Specification (v0.3) or what would be the next steps when you know how to implement simple producer / consumer?</div></div></blockquote><div><br></div><div>Reading the packet format is a necessary step.</div><div><br></div><div>Yours, Junxiao<br></div><div> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="gmail_quote"><div dir="ltr" class="gmail_attr">ma 11. toukok. 2020 klo 8.43 Junxiao Shi (<a href="mailto:shijunxiao@email.arizona.edu" target="_blank">shijunxiao@email.arizona.edu</a>) kirjoitti:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Dear folks</div><div><br></div><div>I wrote a blog post about how to get started with NDNts.</div><div><font size="4"><a href="https://yoursunny.com/t/2020/NDNts-node-start/" target="_blank">https://yoursunny.com/t/2020/NDNts-node-start/</a></font></div><div><br></div><div>It explains how to send and receive Interest and Data, and introduces two powerful features of NDNts that other libraries do not have.<br></div><div><br></div><div>Yours, Junxiao<br></div><br>
</div></blockquote></div></blockquote></div></div>