[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
works.

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
format.
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
lacking.
PyNDN2 (now dead) used to support this feature, using UDP unicast.
NDN-Lite (for embedded systems) has this feature, using 802.15.4 broadcast
links.
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