blob: 277d7a30b06ab90b11734fe516f53c0619879fa4 [file] [log] [blame]
Vince Lehmanb722b102014-08-24 16:33:49 -05001Router Configuration
2====================
akmhoquecc827532014-07-09 08:48:49 -05003
Vince Lehmanb722b102014-08-24 16:33:49 -05004.. toctree::
5..
6
7Example network and sample configuration
8----------------------------------------
9
10Assume that three routers in the same network, but at three different sites
11(``memphis.edu``, ``arizona.edu``, and ``colostate.edu``), are connected to each other to
akmhoquecc827532014-07-09 08:48:49 -050012construct the following topology:
13
Vince Lehmanb722b102014-08-24 16:33:49 -050014::
15
16 +-------------------------------------+
akmhoquecc827532014-07-09 08:48:49 -050017 | /ndn/edu/memphis/%C1.Router/router1 |
Vince Lehmanb722b102014-08-24 16:33:49 -050018 +-------------------------------------+
akmhoquecc827532014-07-09 08:48:49 -050019 / 11 12\
20 / \
21 route-cost = 25 / \ route-cost = 30
22 / \
23 17 / \ 13
Vince Lehmanb722b102014-08-24 16:33:49 -050024 +-----------------------------------+ 7 10 +-------------------------------------+
akmhoquecc827532014-07-09 08:48:49 -050025 |/ndn/edu/arizona/%C1.Router/router3|-------------------|/ndn/edu/colostate/%C1.Router/router2|
Vince Lehmanb722b102014-08-24 16:33:49 -050026 +-----------------------------------+ route-cost = 28 +-------------------------------------+
akmhoquecc827532014-07-09 08:48:49 -050027
28 Figure: Network Topology
29
Vince Lehmanb722b102014-08-24 16:33:49 -050030The number represents the connecting face id. For example,
31``/ndn/edu/memphis/%C1.Router/router1`` is connected to
32``/ndn/edu/arizona/%C1.Router/router3`` via face 11 and the route cost is 25. To reach
33``/ndn/edu/colostate/%C1.Router/router2`` via face 12, the route cost is 30.
akmhoquecc827532014-07-09 08:48:49 -050034
35We will walk through setting up the faces and creating the configuration file for
Vince Lehmanb722b102014-08-24 16:33:49 -050036``/ndn/edu/memphis/%C1.Router/router1``.
akmhoquecc827532014-07-09 08:48:49 -050037
Alexander Afanasyev7decbbf2014-08-24 21:29:01 -070038Step 1. Ensuring nfd is running
Vince Lehmanb722b102014-08-24 16:33:49 -050039-------------------------------
40
akmhoquecc827532014-07-09 08:48:49 -050041Type the following in the terminal:
42
Vince Lehmanb722b102014-08-24 16:33:49 -050043::
akmhoquecc827532014-07-09 08:48:49 -050044
Ashlesh Gawandeb4567f42017-04-28 14:40:39 -050045 nfd-status
akmhoquecc827532014-07-09 08:48:49 -050046
Ashlesh Gawandeb4567f42017-04-28 14:40:39 -050047If you see ``error while connecting to the forwarder (No such file or directory)``,
Vince Lehmanb722b102014-08-24 16:33:49 -050048``nfd`` is not running. Follow the instructions in `Getting started with NFD
49<http://named-data.net/doc/NFD/current/INSTALL.html>`_ to run nfd.
akmhoquecc827532014-07-09 08:48:49 -050050
Vince Lehmanb722b102014-08-24 16:33:49 -050051Step 2. Determining FaceUri
52---------------------------
akmhoquecc827532014-07-09 08:48:49 -050053
Junxiao Shif09e2632015-01-02 18:15:01 -070054Assume that ``/ndn/edu/arizona/%C1.Router/router3`` has hostname ``router3.arizona.edu`` and
55``/ndn/edu/colostate/%C1.Router/router2`` has IP address ``79.123.10.145``.
Alexander Afanasyev7decbbf2014-08-24 21:29:01 -070056``/ndn/edu/memphis/%C1.Router/router1`` will consider FaceUri
Junxiao Shif09e2632015-01-02 18:15:01 -070057``udp4://router3.arizona.edu`` for router ``/ndn/edu/arizona/%C1.Router/router3`` and
58FaceUri ``udp4://79.123.10.145`` for router ``/ndn/edu/colostate/%C1.Router/router2``.
Vince Lehmanb722b102014-08-24 16:33:49 -050059
60Step 3: Creating configuration file
61-----------------------------------
62
63Now, assume that ``/ndn/memphis.edu/router1`` wants to advertise three name prefixes
64(``/ndn/memphis/sports/basketball/grizzlies``, ``/ndn/memphis/entertainment/blues``,
Alexander Afanasyev7decbbf2014-08-24 21:29:01 -070065``/ndn/news/memphis/politics/lutherking``). The configuration file with the necessary
Vince Lehmanb722b102014-08-24 16:33:49 -050066configuration commands follows:
67
68::
akmhoquecc827532014-07-09 08:48:49 -050069
70 ; nlsr.conf starts here
71 ; the general section contains all the general settings for router
72
73 general
74 {
75 ; mandatory configuration command section network, site and router
akmhoquecc827532014-07-09 08:48:49 -050076 network /ndn/ ; name of the network the router belongs to in ndn URI format
77 site /edu/memphis/ ; name of the site the router belongs to in ndn URI format
78 router /%C1.Router/router1 ; name of the network the router belongs to in ndn URI format
79
80 ; lsa-refresh-time is the time in seconds, after which router will refresh its LSAs
akmhoquecc827532014-07-09 08:48:49 -050081 lsa-refresh-time 1800 ; default value 1800. Valid values 240-7200
82
Alexander Afanasyev7decbbf2014-08-24 21:29:01 -070083 ; InterestLifetime (in seconds) for LSA fetching
84 lsa-interest-lifetime 4 ; default value 4. Valid values 1-60
akmhoquecc827532014-07-09 08:48:49 -050085
akmhoquecc827532014-07-09 08:48:49 -050086 seq-dir /var/lib/nlsr/
87 }
88
89 ; the neighbors section contains the configuration for router's neighbors and hello's behavior
90
91 neighbors
92 {
93 ; in case hello interest timed out, router will try 'hello-retries' times at 'hello-time-out'
94 ; seconds interval before giving up for any neighbors (deciding link is down)
95
96 hello-retries 3 ; interest retries number in integer. Default value 3
97 ; valid values 1-10
98
99 hello-timeout 1 ; interest time out value in integer. Default value 1
100 ; Valid values 1-15
101
102 hello-interval 60 ; interest sending interval in seconds. Default value 60
103 ; valid values 30-90
Muktadir R Chowdhury800833b2016-07-29 13:43:59 -0500104
Ashlesh Gawandeb4567f42017-04-28 14:40:39 -0500105 ; adj-lsa-build-interval is the time to wait in seconds after an Adjacency LSA
106 ; build is scheduled before actually building the Adjacency LSA
Muktadir R Chowdhury800833b2016-07-29 13:43:59 -0500107
108 adj-lsa-build-interval 5 ; default value 5. Valid values 0-5. It is recommended that
Ashlesh Gawandeb4567f42017-04-28 14:40:39 -0500109 ; adj-lsa-build-interval have a lower value than
110 ; routing-calc-interval
Muktadir R Chowdhury800833b2016-07-29 13:43:59 -0500111
112 ; first-hello-interval is the time to wait in seconds before sending the first Hello Interest
113
114 first-hello-interval 10 ; Default value 10. Valid values 0-10
115
akmhoquecc827532014-07-09 08:48:49 -0500116 ; neighbor command is used to configure router's neighbor. Each neighbor will need
117 ; one block of neighbor command
118
119 neighbor
120 {
Ashlesh Gawandeb4567f42017-04-28 14:40:39 -0500121 name /ndn/edu/arizona/%C1.Router/router3 ; name prefix of the neighbor router consists
122 ; of network, site-name and router-name
akmhoquecc827532014-07-09 08:48:49 -0500123
124 face-uri udp4://router3.arizona.edu ; face uri of the face connected to the neighbor
125 link-cost 25 ; cost of the connecting link to neighbor
126 }
127
128 neighbor
129 {
Ashlesh Gawandeb4567f42017-04-28 14:40:39 -0500130 name /ndn/edu/colostate/%C1.Router/router2 ; name prefix of the neighbor router consists
akmhoquecc827532014-07-09 08:48:49 -0500131 ; of network, site-name and router-name
132
133 face-uri udp4://79.123.10.145 ; face uri of the face connected to the neighbor
134 link-cost 30 ; cost of the connecting link to neighbor
135 }
136 }
137
Vince Lehmanb722b102014-08-24 16:33:49 -0500138 ; the hyperbolic section contains the configuration settings of enabling
139 a router to calculate ; routing table using `hyperbolic routing table
140 calculation`_ method
akmhoquecc827532014-07-09 08:48:49 -0500141
142 hyperbolic
143 {
144 ; commands in this section follows a strict order
145 ; the switch is used to set hyperbolic routing calculation in NLSR
146
Ashlesh Gawandeb4567f42017-04-28 14:40:39 -0500147 state off ; default value 'off', set value 'on' to enable hyperbolic routing table
148 ; calculation which turns link state routing 'off'. set value to 'dry-run'
149 ; to test hyperbolic routing and compare with link state routing.
akmhoquecc827532014-07-09 08:48:49 -0500150
151
152 radius 123.456 ; radius of the router in hyperbolic coordinate system
153 angle 1.45 ; angle of the router in hyperbolic coordinate system
154 }
155
156
157 ; the fib section is used to configure fib entry's type to ndn FIB updated by NLSR
158
159 fib
160 {
161 ; the max-faces-per-prefix is used to limit the number of faces for each name prefixes
162 ; by NLSR in ndn FIB
163
Ashlesh Gawandeb4567f42017-04-28 14:40:39 -0500164 max-faces-per-prefix 3 ; default value 0. Valid value 0-60. By default (value 0) NLSR adds
165 ; all available faces for each reachable name prefixes in NDN FIB
akmhoquecc827532014-07-09 08:48:49 -0500166
167 }
168
Vince Lehmanb722b102014-08-24 16:33:49 -0500169 ; the advertising section contains the configuration settings of the
170 name prefixes ; hosted by this router
akmhoquecc827532014-07-09 08:48:49 -0500171
172 advertising
173 {
174 ; the ndnname is used to advertised name from the router. To advertise each name prefix
175 ; configure one block of ndnname configuration command for every name prefix.
176
177 prefix /ndn/memphis/sports/basketball/grizzlies
178 prefix /ndn/memphis/entertainment/blues
179 prefix /ndn/news/memphis/politics/lutherking
180 }
181
dmcoomescf8d0ed2017-02-21 11:39:01 -0600182By default NLSR's sequence file directory is set to ``/var/lib/nlsr/``. User must create this
183directory before starting NLSR. Since this is a system directory, NLSR must either be executed
184as root, or NLSR can be run as user "nlsr" after configuring the filesystem to grant "nlsr"
185read and write permissions. If user lacks permissions, the following error will occur:
Ashlesh Gawandeb4567f42017-04-28 14:40:39 -0500186
187::
188
189 User does not have read and write permission on the directory
190 Error in configuration file processing! Exiting from NLSR
191
dmcoomescf8d0ed2017-02-21 11:39:01 -0600192To avoid this, the directory can be set in a user-owned directory. For example:
Ashlesh Gawandeb4567f42017-04-28 14:40:39 -0500193
194::
195
196 general
197 {
198 ...
199
Ashlesh Gawandeb4567f42017-04-28 14:40:39 -0500200 seq-dir /home/username/nlsr/log ; path for sequence directory (Absolute path)
201
202 }
203 ...
204
205The user will encounter errors such as the following if security is not configured:
206
207::
208
209 Cannot read certificate from file: /home/username/NLSR/root.cert
210
211To get rid of this and similar errors relating to security one has to configure security
212as described in :doc:`SECURITY-CONFIG`. Security can be disabled for testing purposes as follows:
213
214::
215
216 ...
217 trust-anchor
218 {
219 type any
220 ;file-name "root.cert"
221 }
222 ...
223 trust-anchor
224 {
225 type any
226 ;file-name "site.cert"
227 }
228 ; cert-to-publish "root.cert"
229 ; cert-to-publish "router.cert"
230 ; cert-to-publish "site.cert"
231 ; cert-to-publish "router.cert"
232
233Or by simply replacing the whole security section with:
234
235::
236
237 security
238 {
239 validator
240 {
241 trust-anchor
242 {
243 type any
244 }
245 }
246 prefix-update-validator
247 {
248 trust-anchor
249 {
250 type any
251 }
252 }
253 }
Vince Lehmanb722b102014-08-24 16:33:49 -0500254
255Step 4: Running NLSR on /ndn/memphis.edu/router1
akmhoquecc827532014-07-09 08:48:49 -0500256-------------------------------------------------
Vince Lehmanb722b102014-08-24 16:33:49 -0500257
258Assuming the configuration file is saved as ``nlsr.conf``, type the following to run nlsr:
259
260::
akmhoquecc827532014-07-09 08:48:49 -0500261
262 $ nlsr -f nlsr.conf
263
Vince Lehmanb722b102014-08-24 16:33:49 -0500264NLSR will look for nlsr.conf in the current directory. If nlsr.conf is not in the current
265directory, please provide the absolute path with the file name as the value. If
266``nlsr.conf`` resides in ``/home/ndnuser/configuration`` directory, type ``nlsr -f
267/home/ndnuser/configuration/nlsr.conf`` to run nlsr.
akmhoquecc827532014-07-09 08:48:49 -0500268
Vince Lehmanb722b102014-08-24 16:33:49 -0500269The same process needs to be followed for ``/ndn/arizona.edu/router3`` and
270``/ndn/colostate.edu/router2`` to run NLSR on these routers.
akmhoquecc827532014-07-09 08:48:49 -0500271
Vince Lehmanb722b102014-08-24 16:33:49 -0500272Expected Output
akmhoquecc827532014-07-09 08:48:49 -0500273----------------
Vince Lehmanb722b102014-08-24 16:33:49 -0500274
Ashlesh Gawandeb4567f42017-04-28 14:40:39 -0500275Assuming that all three routers are configured correctly and routing has converged,
276``nfd-status`` in ``/ndn/edu/colostate/%C1.Router/router2`` will have the following (or similar)
277entries for the name advertised by ``/ndn/edu/memphis/%C1.Router/router1``:
akmhoquecc827532014-07-09 08:48:49 -0500278
Alexander Afanasyev7decbbf2014-08-24 21:29:01 -0700279RIB:
akmhoquecc827532014-07-09 08:48:49 -0500280
Vince Lehmanb722b102014-08-24 16:33:49 -0500281::
282
Alexander Afanasyev7decbbf2014-08-24 21:29:01 -0700283 /ndn/memphis/entertainment/blues route={faceid=17 (origin=128 cost=25 ChildInherit), faceid=7 (origin=128 cost=58 ChildInherit)}
284 /ndn/memphis/sports/basketball/grizzlies route={faceid=17 (origin=128 cost=25 ChildInherit), faceid=7 (origin=128 cost=58 ChildInherit)}
285 /ndn/news/memphis/politics/lutherking route={faceid=17 (origin=128 cost=25 ChildInherit, faceid=7 (origin=128 cost=58 ChildInherit)}
akmhoquecc827532014-07-09 08:48:49 -0500286
Ashlesh Gawandeb4567f42017-04-28 14:40:39 -0500287This output can be seen by typing ``nfdc route list`` in the terminal. Please refer to the
Vince Lehmanb722b102014-08-24 16:33:49 -0500288network figure for face IDs.
289
290.. _hyperbolic routing table calculation: http://arxiv.org/abs/0805.1266