blob: 8cc7e9921464657cf24c8cd799e0c9e00be29968 [file] [log] [blame]
David Arjona2e6c8bb2018-11-14 16:27:09 -06001==========================================================
2A beginners guide to installing and testing NLSR on Fedora
3==========================================================
4
5:Authors: David Arjona-Villicaña, Octavio Renteria-Vidales, Ashlesh Gawande
6:Date: November, 2018
7:Abstract: This is an easy to follow guide on how to install and test the NLSR routing protocol for NDN using two Fedora 28 machines. The commands and the paths used in this guide have been tested only in Fedora, although a similar procedure should be used for other linux systems. Specifically, the testing section `5 <#test>`__) is platform independent. Therefore users who have NLSR already installed may skip to this section. Since neither NDN, NLSR nor Fedora are static software developments, it is expected that some commands and features in this guide will change over time. However, this guide is as accurate as it could be at the time it was published.
8
9.. role:: raw-latex(raw)
10 :format: latex
11
12
13.. _intro:
14
151. Introduction
16===============
17
18The following instructions are based on the information provided at the
19Named Data Networking project web page [NDNmain]_.
20Before installing NLSR it is necessary to install different libraries
Ashlesh Gawande30d96e42021-03-21 19:15:33 -070021and programs: ndn-cxx, NFD, ChronoSync [optional], and PSync. This document describes the
David Arjona2e6c8bb2018-11-14 16:27:09 -060022necessary steps to correctly install these programs `2 <#ndncxx>`__,
23`3 <#nfd>`__ and `4 <#nlsr>`__) and a brief guide on how to configure
24and test NLSR using a simple two-node network `5 <#test>`__).
25
26Many of the commands in this guide need to be executed as *root*.
27Starting from Fedora 28, there is no need to set a root user
28[Kolman2018]_. However it is possible to define it,
29using the following command:
30
31::
32
33 $ sudo -i
34
35And then using the *passwd* command to set up a password. After setting
36up the root user, it is possible to become root by employing the
37following command and providing the root password when prompted:
38
39::
40
41 $ su -
42
43Fedora employs the *dnf* command to install and verify installed
44packages. The following commands may become useful during the
45installation process and should be executed as root:
46
47- To verify that all installed packages are up to date
48
49 ::
50
51 $ dnf update
52
53- To verify if a package is already installed in the system
54
55 ::
56
57 $ dnf list --installed <package-name>
58
59- To search for information about a package or family of packages (not
60 necessarily installed in the system).
61
62 ::
63
64 $ dnf info <package-name>
65
66- To install a package in the system.
67
68 ::
69
70 $ dnf install <package-name>
71
72It is also a good installation practice to download and install all the
73NDN programs in a common directory. Therefore, it is recommended to
74create a directory at the home directory where all the following
75programs may get installed. The name of this directory is not important.
76However, the following are provided as suggestions: project, NDNproject,
77NDNprograms. Each of the programs in the following sections should be
78downloaded to their own directory using the *git* command, and then
79compiled in this directory.
80
81.. _ndncxx:
82
832. Installing ndn-cxx
84=====================
85
862.1 Before installing ndn-cxx
87-----------------------------
88
89An updated list of the packages and programs that need to be installed
90before installing ndn-cxx, is provided at [NDN-cxx]_.
91This list is also reproduced bellow with the commands to verify that all
92the packages have been installed in the system. The following commands
93should be run as root:
94
95#. gcc and gcc-c++
96
97 ::
98
99 $ dnf list --installed gcc
100 $ dnf list --installed gcc-c++
101
102#. Python version 2.6 or later
103
104 ::
105
106 $ python -V
107
108#. libsqlite3
109
110 ::
111
112 $ dnf list --installed sqlite
113 $ dnf list --installed sqlite-devel
114
115#. openssl version 1.0.1 or later
116
117 ::
118
119 $ openssl version
120 $ dnf list --installed openssl-devel
121
122#. pkgconf that replaces pkg-config
123
124 ::
125
126 $ dnf list --installed pkgconf*
127
128#. boost libraries version 1.54 or later
129
130 ::
131
132 $ dnf list --installed boost
133 $ dnf list --installed boost-devel
134
135#. doxygen
136
137 ::
138
139 $ dnf list --installed doxygen
140
141#. graphviz
142
143 ::
144
145 $ dnf list --installed graphviz
146
147#. python2-sphinx that replaces python-sphinx
148
149 ::
150
151 $ dnf list --installed python2-sphinx
152
153#. After verifying that the python-sphinx package has been installed, it
154 is necessary to run the following two commands:
155
156 ::
157
158 $ pip-3 install sphinxcontrib-doxylink
159 $ pip install sphinxcontrib-googleanalytics
160
161 Note: When the two previous commands are run before correctly
162 installing python-sphinx, the following error message is produced
163 when trying to install this latter package: Error unpacking rpm
164 package python2-urllib3-1.22-3.fc27.noarch”. To fix this problem, it
165 is necessary to run the following commands before installing
166 python-sphinx again:
167
168 ::
169
170 $ dnf remove python2-sphinx
171 $ pip uninstall sphinxcontrib-googleanalytics
172 $ pip-3 uninstall sphinxcontrib-doxylink
173 $ pip uninstall urllib3
174
175#. dpkg-architecture
176
177 ::
178
179 $ dnf list --installed dpkg
180 $ dnf list --installed dpkg-dev
181
182#. git and valgrind, which is used when installing NFD (§
183 `3 <#nfd>`__).
184
185 ::
186
187 $ dnf list --installed valgrind
188 $ dnf list --installed valgrind-devel
189 $ dnf list --installed git
190
1912.2 Downloading and installing ndn-cxx
192--------------------------------------
193
194The *git* command allows to download the ndn-cxx library in its own
195folder, also called *ndn-cxx*. Therefore it is recommended to execute
196this command at the directory created at § `1 <#intro>`__:
197
198::
199
200 $ git clone --depth 1 https://github.com/named-data/ndn-cxx.git
201
202Move to the ndn-cxx directory:
203
204::
205
206 $ cd ndn-cxx
207
208Use the following command to verify that everything is ready to compile.
209If an error message displays, it is necessary to fix it before
210continuing:
211
212::
213
214 $ ./waf configure --with-examples
215
216Compile the ndn-cxx library and install the compiled files at the
217systems directories:
218
219::
220
221 $ ./waf
222 $ sudo ./waf install
223
2242.3 Configuring ndn-cxx
225-----------------------
226
227The commands in this subsection need to be run as root. First, it is
228necessary to create file *local.conf*, which contains a line with the
229location for the ndn-cxx library:
230
231::
232
233 $ echo /usr/local/lib64 >> /etc/ld.so.conf.d/local.conf
234
235The following command configures the libraries:
236
237::
238
239 $ ldconfig -v | grep ndn
240
241This command should display a line similar to the following:
242
243::
244
245 libndn-cxx.so.0.6.1 -> libndn-cxx.so.0.6.1
246
247Configure the NDN path:
248
249::
250
251 $ echo export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig >>
252 /etc/profile.d/ndn.sh
253
254After this command has been executed, it is necessary to apply the
255changes by either logging out and back in, and then running the
256following command:
257
258::
259
260 $ printenv | grep PKG
261
262Or by executing the following command:
263
264::
265
266 $ ./etc/profile.d/ndn.sh
267
268For more information and examples about how to compile and configure
269this library, users should read the ndn-cxx guide at
270[NDN-cxx]_.
271
272.. _nfd:
273
2743. Installing NFD
275=================
276
2773.1 Before installing NFD
278-------------------------
279
280An updated list of the packages and programs that need to be installed
281before NFD is provided at [NDNNFD]_. Before installing
282NFD it is necessary to verify that the following packages are installed:
283
284#. libpcap libraries
285
286 ::
287
288 $ dnf list --installed libpcap
289 $ dnf list --installed libpcap-devel
290
2913.2 Downloading and installing NFD
292----------------------------------
293
294This library is downloaded and installed in a folder called *NFD*, which
295should be created at the directory defined at § `1 <#intro>`__. The
296following commands need to be run as a regular user:
297
298::
299
300 $ git clone --depth 1 https://github.com/named-data/NFD.git
301 $ cd NFD
302 $ ./waf configure
303
304If the previous command prints an error message saying that waf cannot
305find WebSocket, it is necessary to follow the instructions provided by
306this same output, which tells the user to execute either of the
307following two set of commands:
308
309::
310
311 $ git submodule init && git submodule update
312
313Or:
314
315::
316
317 $ mkdir websocketpp
318 $ curl -L https://github.com/zaphoyd/websocketpp/archive/0.7.0.tar.gz
319 > websocket.tar.gz
320 $ tar zxf websocket.tar.gz -C websocketpp/ --strip 1
321
322After executing either of these instructions, complete the configuration
323by running *./waf configure* again. Then complete the installation by
324means of the following commands:
325
326::
327
328 $ ./waf
329 $ sudo ./waf install
330
3313.3 Configuring NFD
332-------------------
333
334Create a configuration file by running the following command as root:
335
336::
337
338 $ cp /usr/local/etc/ndn/nfd.conf.sample /usr/local/etc/ndn/nfd.conf
339
340After the configuration file has been created, NFDs behavior may be
341changed by modifying this file. Once the configuration file has been
342created, it is recommended to start NFD by using the following command:
343
344::
345
346 $ nfd-start
347
348This command does not properly allow to employ the command window to
349enter new commands; however it displays the NFD logs. Therefore, it is
350recommended to open a new command window. This second window may be used
351to verify NDFs status and then stop NFD by using the following
352commands:
353
354::
355
356 $ nfd-status
357 $ nfd-stop
358
359.. _nlsr:
360
3614. Installing NLSR
362==================
363
Ashlesh Gawande30d96e42021-03-21 19:15:33 -07003644.1 Installing PSync
365--------------------
366
367Before installing NLSR, it is also necessary to download and install
368PSync. PSync is a synchronization library which allows NLSR to synchronize LSAs
369similar to ChronoSync. More information about PSync may be found at [PSync]_.
370This library may be installed by running the following commands as a regular
371user and at the directory defined at § `1 <#intro>`__:
372
373::
374
375 $ git clone --depth 1 https://github.com/named-data/PSync.git
376 $ cd PSync
377 $ ./waf configure
378 $ ./waf
379 $ sudo ./waf install
380
381The following command needs to be used again to configure the libraries:
382
383::
384
385 $ sudo ldconfig -v | grep -i psync
386
387This command should display a line similar to the following:
388
389::
390
391 libPSync.so.0.1.0 -> libPSync.so.0.1.0
392
3934.2 [Optional] Installing ChronoSync
394------------------------------------
395
396By default NLSR no longer builds with ChronoSync support.
397Since ChronoSync is deprecated, only install it for testing purposes.
David Arjona2e6c8bb2018-11-14 16:27:09 -0600398
399Before installing NLSR, it is necessary to first download and install
Ashlesh Gawande32ec3fd2018-07-18 13:42:32 -0500400ChronoSync, which is a synchronization library which allows NLSR routers
401to synchronize Link State Advertisements (LSAs). More information about
402ChronoSync may be found at [Chronosync]_. This library may be
David Arjona2e6c8bb2018-11-14 16:27:09 -0600403installed by running the following commands as a regular user and at the
404directory defined at § `1 <#intro>`__:
405
406::
407
408 $ git clone --depth 1 https://github.com/named-data/ChronoSync.git
409 $ cd ChronoSync
410 $ ./waf configure
411 $ ./waf
412 $ sudo ./waf install
413
414The following command needs to be used again to configure the libraries:
415
416::
417
Ashlesh Gawande32ec3fd2018-07-18 13:42:32 -0500418 $ sudo ldconfig -v | grep -i chronosync
David Arjona2e6c8bb2018-11-14 16:27:09 -0600419
420This command should display a line similar to the following:
421
422::
423
424 libChronoSync.so.0.5.0 -> libChronoSync.so.0.5.0
425
Ashlesh Gawande32ec3fd2018-07-18 13:42:32 -05004264.3 Downloading and installing NLSR
David Arjona2e6c8bb2018-11-14 16:27:09 -0600427-----------------------------------
428
429NLSR is downloaded and installed in a folder called *NLSR* which should
430be created at the directory defined at § `1 <#intro>`__. The following
431commands need to be run as a regular user:
432
433::
434
435 $ git clone --depth 1 https://github.com/named-data/NLSR.git
436 $ cd NLSR
437 $ ./waf configure
438 $ ./waf
439 $ sudo ./waf install
440
Ashlesh Gawande30d96e42021-03-21 19:15:33 -0700441If ChronoSync support is needed for testing, please configure NLSR with:
442
443::
444
445 $ ./waf configure --with-chronosync
446
Ashlesh Gawande32ec3fd2018-07-18 13:42:32 -05004474.4 Configuring NLSR
David Arjona2e6c8bb2018-11-14 16:27:09 -0600448--------------------
449
450Create and configure the following directory by running the following
451commands as root:
452
453::
454
455 $ mkdir /var/lib/nlsr
456 $ chmod 777 /var/lib/nlsr
457
458.. _test:
459
4605. Configuring and Testing NLSR
461===============================
462
463To test NLSR, the first step is to configure the keys and certificates
464that implement a secure communication between the routers. Then it is
465necessary to verify that the computers in the test network are
466connected, that NFD is running and the faces between the computers are
467configured. Finally, the NLSR configuration file has to be edited before
468running NLSR. The following subsections are provided as a guide to
469define and configure a simple computer network between two computers:
470router1 and router2.
471
472.. _security:
473
4745.1 Setting up the security
475---------------------------
476
477Configuring security in an NDN network requires to generate, exchange
478and install, keys and certificates between the root, site, operator and
479router computers that form the network
480[NLSRsecconf]_, [NLSRdevguide]_, although in practice, it
481is possible to keep more than one of these entities in a single machine.
482The following example and *Figure 1* show how to configure security
483for a single router, called Router X. In this example, the root, site,
484operator and Router X are in different computers:
485
486.. figure:: security_comp.png
487 :alt: Security configuration example for Router X.
488 :width: 19cm
489 :align: center
490
491 Fig. 1. Security configuration example for Router X.
492
493
494#. At the root server, generate the root key:
495
496 ::
497
498 $ ndnsec-key-gen /ndn/ > root.key
499
500#. Generate the certificate for the root key at the root server:
501
502 ::
503
504 $ ndnsec-cert-dump -i /ndn/ > root.cert
505
506#. Install the root certificate at the root server:
507
508 ::
509
510 $ ndnsec-cert-install -f root.cert
511
512#. At the site server, generate the site key:
513
514 ::
515
516 $ ndnsec-key-gen /ndn/edu/uaslp > site.key
517
518#. Copy the site key to the root server and generate the certificate for
519 the site server:
520
521 ::
522
523 $ ndnsec-cert-gen -s /ndn/ site.key > site.cert
524
525#. Copy the site certificate to the site server and install it:
526
527 ::
528
529 $ ndnsec-cert-install -f site.cert
530
531#. At the operator server, generate the operator key:
532
533 ::
534
535 $ ndnsec-key-gen /ndn/edu/uaslp/%C1.Operator/op > op.key
536
537#. Copy the operator key to the site server and generate the certificate
538 for the operator server:
539
540 ::
541
542 $ ndnsec-cert-gen -s /ndn/edu/uaslp op.key > op.cert
543
544#. Copy the operator certificate to the operator server and install it:
545
546 ::
547
548 $ ndnsec-cert-install -f op.cert
549
550#. At the router, generate the router key:
551
552 ::
553
554 $ ndnsec-key-gen /ndn/edu/uaslp/%C1.Router/routerX > routerX.key
555
556#. Copy the router key to the operator server and generate the
557 certificate for the router:
558
559 ::
560
561 $ ndnsec-cert-gen -s /ndn/edu/uaslp/%C1.Operator/op routerX.key >
562 routerX.cert
563
564#. Copy the router certificate to the router and install it:
565
566 ::
567
568 $ ndnsec-cert-install -f routerX.cert
569
570In the previous steps, the *%C1.Router* and *%C1.Operator* labels are
571NDN keywords and should not be changed. These labels will be also used
572by the configuration file `5.4 <#configfile>`__)
573
574The following command may be used to verify that the certificates have
575been installed in a computer:
576
577::
578
579 $ ndnsec-list
580
581This guide recommends that one machine functions as the root, site,
582operator and router1, while a different computer only functions as
583router2. *Figure 2* shows this
584configuration. For router1, the twelve steps described before need to be
585executed except for exchanging files between computers. For the router2,
586only steps 10 to 12 are needed to generate this routers certificate.
587
588Additionally, the following command may be used to print a list and a
589brief description of all the *ndnsec* commands:
590
591::
592
593 $ man ndnsec
594
595
596.. figure:: netwk1.png
597 :alt: Example network.
598 :width: 19cm
599 :align: center
600
601 Fig. 2. Example network.
602
603
6045.2 Configuring the network
605---------------------------
606
607The first step is to configure the physical network. If two computers
608are going to get connected using a single Ethernet cable, it is
609necessary to verify that this cable is a crossover. The other option is
610to employ a switch between two computers that are then connected using
611two regular Ethernet cables.
612
613After the physical network has been assembled, it is necessary to
614configure the network addresses and cards for all the computers in the
615network. It is important to remember that computers that are connected
616to each other should use the same subnetwork address. It is possible to
617verify the network configuration in a Linux computer by means of the *ip
618addr* command
619
620Once the physical network and network cards have been configured, it is
621necessary to verify that the computers can communicate with each other.
622The simplest way to do this is by using the *ping* command:
623
624::
625
626 $ ping <remote-ip-address>
627
6285.3 Starting and configuring NFD
629--------------------------------
630
631To start and configure NFD it is necessary to open two terminal windows.
632The first one will be used to start NFD by means of the *nfd-start*
633command. This terminal will also display the logs that NFD generates. By
634default, NFD only generates informational logs (INFO). However, it is
635possible to obtain different levels of verbosity for these logs. These
636levels can be set before NFD starts by editing the
637*/usr/local/etc/ndn/nfd.conf* file. Open this file using a regular text
638editor, read the information provided about logging and then modify the
639*default-level* variable at the *log* section according to the
640instructions provided in the file. Additional information about NFD
641configuration may be found at [NDNNFDusage]_.
642
643The second terminal will be used to monitor the NFD status:
644
645::
646
647 $ nfd-status
648
649Employ the following command to configure each face that a computer uses
650to connect to a neighboring computer:
651
652::
653
654 $ nfdc face create udp4://<remote-ip-address>
655
656The face id may be displayed by running either *nfd-status* or:
657
658::
659
660 $ nfdc face list
661
662The status of the face may be verified by using the following command:
663
664::
665
666 $ nfdc face show id <face-id>
667
668After finishing NLSR testing, it is necessary to destroy the face before
669stopping NFD. This operation is described at § `5.6 <#turn_off>`__. For
670the two computer network provided as an example (*Figure 2*), it is necessary that both
671machines run NFD and that each one configures a face that connects to
672the other machine.
673
674.. _configfile:
675
6765.4 Setting up the configuration file
677-------------------------------------
678
679Instructions on how to use the configuration file are already provided
680at the NLSRs Router Configuration page [NLSRrtrconf]_.
681Read the information in this page to understand NLSR router
682configuration. The following text describes the instructions that have
683been modified at the default nlsr.conf file for router1:
684
685::
686
687 ; AT general SECTION:
688 {
689 network /ndn/ ; name of the network
690 site /edu/uaslp ; name of the site
691 router /%C1.Router/router1 ; name of the router: router1
692 }
693
694 ;AT neighbors SECTION:
695 neighbors
696 {
697 neighbor
698 {
699 name /ndn/edu/uaslp/%C1.Router/router2 ; Neighbor router: router2
700 face-uri udp://140.220.80.124 ; face to the neighbor
701 link-cost 30 ; cost of the link
702 }
703 }
704
705 ; AT advertising SECTION:
706 advertising
707 {
708 prefix /ndn/edu/uaslp/office/bldg1 ; Advertising destinations
709 prefix /ndn/edu/uaslp/office/bldg2 ; for router1
710 }
711
712 ; AT security SECTION:
713 security
714 {
715 validator
716 {
717 ...
718 trust-anchor
719 {
720 type file
721 file-name "root.cert" ; root certificate file
722 }
723 }
724
725 prefix-update-validator
726 {
727 ...
728 trust-anchor
729 {
730 type file
731 file-name "site.cert" ; site certificate file
732 }
733 }
734
735 cert-to-publish "root.cert" ; root certificate file
736
737 cert-to-publish "site.cert" ; site certificate file
738
739 cert-to-publish "op.cert" ; operator certificate file
740
741 cert-to-publish "router1.cert" ; router1 certificate file
742 }
743
744The following text shows the modified instructions for router2:
745
746::
747
748 ; AT general SECTION:
749 {
750 network /ndn/ ; name of the network
751 site /edu/uaslp ; name of the site
752 router /%C1.Router/router2 ; name of the router: router2
753 }
754
755 ;AT neighbors SECTION:
756 neighbors
757 {
758 neighbor
759 {
760 name /ndn/edu/uaslp/%C1.Router/router1 ; Neighbor router: router1
761 face-uri udp://140.220.80.121 ; face to the neighbor
762 link-cost 30 ; cost of the link
763 }
764 }
765
766 ; AT advertising SECTION:
767 advertising
768 {
769 prefix /ndn/edu/uaslp/labs/networks ; Advertising destinations
770 prefix /ndn/edu/uaslp/labs/hardware ; for router2
771 }
772
773 ; AT security SECTION:
774 security
775 {
776 validator
777 {
778 ...
779 trust-anchor
780 {
781 type file
782 file-name "root.cert" ; root certificate file
783 } ; this file needs to be copied to
784 } ; router2
785
786 prefix-update-validator
787 {
788 ...
789 trust-anchor
790 {
791 type file
792 file-name "site.cert" ; site certificate file
793 } ; this file needs to be copied to
794 } ; router2
795
796 ...
797 cert-to-publish "router2.cert" ; router2 certificate file
798 }
799
800Notice that files *root.cert* and *site.cert*, which were generated at
801router1, need to be copied to router2. Also notice that the *%C1.Router*
802and *%C1.Operator* keywords employed at § `5.1 <#security>`__ are also
803referenced by these configuration files.
804
805.. _starting_nlsr:
806
8075.5 Starting NLSR
808-----------------
809
810It is recommended to open a third command terminal and run NLSR in this
811window. After the NLSR configuration file has been edited and saved as
812*nlsr.conf*, it is possible to start NLSR by running either of the
813following two commands:
814
815::
816
817 $ nlsr
818 $ nlsr -f <configuration-file>
819
820However, to verify what is NLSR doing, it becomes necessary to employ
821NLSRs logging facility [NLSRstarting]_. A brief
822description on how to use NDNs logging facility may be displayed by
823entering the *man ndn-log* command. This guide recommends using one of
824the following two instructions to start NLSR:
825
826::
827
828 $ export NDN_LOG=nlsr.*=TRACE && nlsr
829 $ export NDN_LOG=nlsr.*=TRACE && nlsr -f <configuration-file>
830
831The second terminal window may be used to run *nfd-status* again and it
832should be possible to verify that the status has changed, specially at
833the FIB and RIB sections of the generated report.
834
835.. _turn_off:
836
8375.6 Turning everything off
838--------------------------
839
840In order to stop NLSR and NFD, the following sequence of events is
841recommended:
842
843#. Stop NLSR by pressing the Ctrl+C keys at the third terminal window.
844
845#. Destroy the face to the remote computers using either of the
846 following two commands at the second terminal window:
847
848 ::
849
850 $ nfdc face destroy <face-id>
851 $ nfdc face destroy udp4://<remote-ip-address>
852
853#. Stop NFD by entering the following command at the second terminal
854 window:
855
856 ::
857
858 $ nfd-stop
859
860#. The crossover Ethernet cable may be unplugged and the computers’
861 network configuration restored to its original settings.
862
8635.7 Where to go from here
864-------------------------
865
866Users interested in building and configuring larger networks may want to
867take a look at the NDN Ansible repository
868[NDNAnsible]_. This repository uses Ansible, which is a
869configuration management tool, to manage the official NDN testbed
870deployment [NDNTestbed]_.
871
872
873.. [NDNmain] *Named Data Networking*, http://named-data.net/, March 2018.
874
875.. [Kolman2018] M. Kolman. *Anaconda improvements in Fedora 28*, Fedora Magazine, June 2018.
876
877.. [NDN-cxx] *Getting started with ndn-cxx*, http://named-data.net/doc/ndn-cxx/current/INSTALL.html, April 2018.
878
879.. [NDNNFD] *Getting started with NFD*, http://named-data.net/doc/NFD/current/INSTALL.html, April 2018.
880
881.. [NDNNFDusage] *NFD usage*, http://named-data.net/doc/NFD/current/manpages/nfd.html, May 2018.
882
883.. [Chronosync] Z. Zhu and A. Afanasyev. *Lets ChronoSync: Decentralized dataset state synchronization in Named Data Networking*, in IEEE ICNP, October 2013.
884
Ashlesh Gawande32ec3fd2018-07-18 13:42:32 -0500885.. [PSync] M. Zhang, V. Lehman, and L. Wang. *Scalable Name-based Data Synchronization for Named Data Networking*, in IEEE INFOCOM, May 2017.
886
David Arjona2e6c8bb2018-11-14 16:27:09 -0600887.. [NLSRsecconf] *NLSR Security Configuration*, http://named-data.net/doc/NLSR/current/SECURITY-CONFIG.html June 2018.
888
889.. [NLSRdevguide] V. Lehman, M. Chowdhury, N. Gordon, A. Gawande. *NLSR Developers Guide*, University of Memphis, November 2017.
890
891.. [NLSRrtrconf] *NLSR Router Configuration*, http://named-data.net/doc/NLSR/current/ROUTER-CONFIG.html, April 2018.
892
893.. [NLSRstarting] *Getting Started with NLSR*, http://named-data.net/doc/NLSR/current/GETTING-STARTED.html, May 2018.
894
895.. [NDNAnsible] *NDN Ansible repository*, https://github.com/WU-ARL/NDN_Ansible, October 2018.
896
897.. [NDNTestbed] *NDN Testbed*, https://named-data.net/ndn-testbed/, October 2018.