[Ndn-interest] [EXT] Tips for getting started?

Junxiao Shi shijunxiao at email.arizona.edu
Mon May 18 17:59:37 PDT 2020

Hi Erno

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.

What do you mean by "NDN implementation"?
Libraries should be part of NDN implementation, and they are important
because they are what most developers would be using.

> Do you know what's the status of the Go library
> https://github.com/go-ndn/ndn or Rust https://github.com/imp/ndn-rs?

The Go library was started by Tailin Chu. He is a subscriber of
ndn-interest mailing list.
There were no commits for more than two years, so I think it no longer

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.
Thus, it's very incomplete.

I got from this already following valuable information (please correct me
> if I'm wrong):
- Getting started with NDNts looks nice and simple

Yes, that's a smart choice.

> - There's at least basic libraries C++, Python, Java, NodeJS, Go(?), and
> Rust(?) which includes basic implementation but library implementation
> features vary.

C++: choose from ndn-cxx (dynamic memory allocation) or NDNph (static
memory allocation, limited features); don't use ndn-cpp (unmaintained).
Python: use python-ndn; don't use PyNDN2 (unmaintained).
Java: jNDN is the only choice (limited maintenance, but still works).
NodeJS and browsers: use NDNts; don't use ndn-js (unmaintained).

I have not used all the libraries, but I think the most important
> functionality is provided by those libraries.
Every library has its strength and weakness.
Someday I'll make a feature comparison table, with sample snippets of how
to use each common feature in every library.

> 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.
Supporting the current packet format is very important. It ensures your
application is interoperable with the network and other applications.
A library needs to support at least a minimal subset of the current packet
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.

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.
For beginners it's better to install NFD from PPA packages.
There can be complications trying to use source code installation.

> - You need NFD to make simple consumer/producer setup (is it required or
> can consumer/producer communicate directly without any daemon between?)

>From an architectural point of view, it is possible for a consumer and a
producer to communicate directly without NFD. However, library support is
PyNDN2 (now dead) used to support this feature, using UDP unicast.
NDN-Lite (for embedded systems) has this feature, using 802.15.4 broadcast
NDNts is getting this feature soon, using UDP multicast.

- miniNDN looks nice if you want to simulate actual network topology (for
> more hardcore needs see ndnSIM)

Yes, miniNDN is very powerful. It's mainly used in observing routing and
forwarding behaviors, i.e. layer 3 and below.
You'll need a big server to run large experiments.

> 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?

Reading the packet format is a necessary step.

Yours, Junxiao

> ma 11. toukok. 2020 klo 8.43 Junxiao Shi (shijunxiao at email.arizona.edu)
> kirjoitti:
>> Dear folks
>> I wrote a blog post about how to get started with NDNts.
>> https://yoursunny.com/t/2020/NDNts-node-start/
>> It explains how to send and receive Interest and Data, and introduces two
>> powerful features of NDNts that other libraries do not have.
>> Yours, Junxiao
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.lists.cs.ucla.edu/pipermail/ndn-interest/attachments/20200518/437a34ac/attachment.html>

More information about the Ndn-interest mailing list