blob: ef569ced1d95041b996eebe57e982fb1648a1c03 [file] [log] [blame]
akmhoque157b0a42014-05-13 00:26:37 -05001; the general section contains all the general settings for router
akmhoqueba094742014-02-28 11:47:21 -06002
akmhoque157b0a42014-05-13 00:26:37 -05003general
4{
Alexander Afanasyev8388ec62014-08-16 18:38:57 -07005 ; mandatory configuration command section network, site and router
akmhoqueba094742014-02-28 11:47:21 -06006
Alexander Afanasyev8388ec62014-08-16 18:38:57 -07007 network /ndn/ ; name of the network the router belongs to in ndn URI format
8 site /edu/memphis ; name of the site the router belongs to in ndn URI format
9 router /%C1.Router/cs/pollux ; name of the router in ndn URI format
akmhoque157b0a42014-05-13 00:26:37 -050010
Alexander Afanasyev8388ec62014-08-16 18:38:57 -070011 ; lsa-refresh-time is the time in seconds, after which router will refresh its LSAs
Alexander Afanasyev8388ec62014-08-16 18:38:57 -070012 lsa-refresh-time 1800 ; default value 1800. Valid values 240-7200
akmhoque157b0a42014-05-13 00:26:37 -050013
Nick Gordond5c1a372016-10-31 13:56:23 -050014 ; router-dead-interval is the time in seconds after which an inactive routers
Vince Lehmanfc7d5b62014-12-05 15:02:47 -060015 ; LSAs are removed
16 ;router-dead-interval 3600 ; default value: 2*lsa-refresh-time. Value must be larger
17 ; than lsa-refresh-time
18
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -070019 ; InterestLifetime (in seconds) for LSA fetching
20 lsa-interest-lifetime 4 ; default value 4. Valid values 1-60
21
Vince Lehmanf99b87f2014-08-26 15:54:27 -050022 ; log-level is used to set the logging level for NLSR.
23 ; All debugging levels listed above the selected value are enabled.
24 ;
25 ; Valid values:
26 ;
27 ; NONE ; no messages
28 ; ERROR ; error messages
29 ; WARN ; warning messages
30 ; INFO ; informational messages (default)
31 ; DEBUG ; debugging messages
32 ; TRACE ; trace messages (most verbose)
33 ; ALL ; all messages
akmhoque157b0a42014-05-13 00:26:37 -050034
Vince Lehmanf99b87f2014-08-26 15:54:27 -050035 log-level INFO
36
Muktadir R Chowdhurybfa27602014-10-31 10:57:41 -050037 log-dir /var/log/nlsr/ ; path for log directory (Absolute path)
38 seq-dir /var/lib/nlsr/ ; path for sequence directory (Absolute path)
39 ;log4cxx-conf /path/to/log4cxx-conf ; path for log4cxx configuration file (Absolute path)
akmhoque157b0a42014-05-13 00:26:37 -050040}
41
Nick Gordond5c1a372016-10-31 13:56:23 -050042; the neighbor's section contains the configuration for router's neighbors and hellos behavior
akmhoque157b0a42014-05-13 00:26:37 -050043
44neighbors
45{
Alexander Afanasyev8388ec62014-08-16 18:38:57 -070046 ; in case hello interest timed out, router will try 'hello-retries' times at 'hello-timeout'
47 ; seconds interval before giving up for any neighbors (deciding link is down)
akmhoque157b0a42014-05-13 00:26:37 -050048
49 hello-retries 3 ; interest retries number in integer. Default value 3
50 ; valid values 1-10
51
52 hello-timeout 1 ; interest time out value in integer. Default value 1
53 ; Valid values 1-15
54
55 hello-interval 60 ; interest sending interval in seconds. Default value 60
56 ; valid values 30-90
akmhoque157b0a42014-05-13 00:26:37 -050057
Vince Lehman7b616582014-10-17 16:25:39 -050058 ; adj-lsa-build-interval is the time to wait in seconds after an Adjacency LSA build is scheduled
59 ; before actually building the Adjacency LSA
60
61 adj-lsa-build-interval 5 ; default value 5. Valid values 0-5. It is recommended that
62 ; adj-lsa-build-interval have a lower value than routing-calc-interval
63
64 ; first-hello-interval is the time to wait in seconds before sending the first Hello Interest
65
66 first-hello-interval 10 ; Default value 10. Valid values 0-10
67
Nick Gordond5c1a372016-10-31 13:56:23 -050068 face-dataset-fetch-tries 3 ; default is 3. Valid values 1-10. The FaceDataset is
69 ; gotten from NFD, and is needed to configure NLSR
70 ; correctly. It is recommended not to set this
71 : variable too high, because it could cause
72 ; congestion for NFD.
73
74 face-dataset-fetch-interval 3600 ; default is 3600. Valid values 1800-5400.
75 ; This controls how often (in seconds) NLSR will attempt to
76 ; fetch a FaceStatus dataset from NFD.
77
Alexander Afanasyev8388ec62014-08-16 18:38:57 -070078 ; neighbor command is used to configure router's neighbor. Each neighbor will need
79 ; one block of neighbor command
80
81 neighbor
82 {
83 name /ndn/edu/memphis/%C1.Router/cs/castor ; name prefix of the neighbor router consists
84 ; of network, site-name and router-name
85
86 face-uri udp://castor.cs.memphis.edu ; face uri of the face connected to the neighbor
87 link-cost 25 ; cost of the connecting link to neighbor
88 }
89
90 neighbor
91 {
92 name /ndn/edu/memphis/%C1.Router/cs/mira ; name prefix of the neighbor router consists
akmhoque157b0a42014-05-13 00:26:37 -050093 ; of network, site-name and router-name
94
Alexander Afanasyev8388ec62014-08-16 18:38:57 -070095 face-uri udp://mira.cs.memphis.edu ; face uri of the face connected to the neighbor
96 link-cost 30 ; cost of the connecting link to neighbor
97 }
akmhoque157b0a42014-05-13 00:26:37 -050098}
99
100; the hyperbolic section contains the configuration settings of enabling a router to calculate
101; routing table using [hyperbolic routing table calculation](http://arxiv.org/abs/0805.1266) method
102
103hyperbolic
104{
Alexander Afanasyev8388ec62014-08-16 18:38:57 -0700105 ; commands in this section follows a strict order
106 ; the switch is used to set hyperbolic routing calculation in NLSR
akmhoque157b0a42014-05-13 00:26:37 -0500107
Alexander Afanasyev8388ec62014-08-16 18:38:57 -0700108 state off ; default value 'off', set value 'on' to enable hyperbolic routing table
Junxiao Shif09e2632015-01-02 18:15:01 -0700109 ; calculation which turns link state routing 'off'. set value to 'dry-run'
Alexander Afanasyev8388ec62014-08-16 18:38:57 -0700110 ; to test hyperbolic routing and compare with link state routing.
akmhoqueba094742014-02-28 11:47:21 -0600111
112
Alexander Afanasyev8388ec62014-08-16 18:38:57 -0700113 radius 123.456 ; radius of the router in hyperbolic coordinate system
Muktadir R Chowdhuryb00dc2a2016-11-05 10:48:58 -0600114 angle 1.45,2.36 ; angle of the router in hyperbolic coordinate system
akmhoque157b0a42014-05-13 00:26:37 -0500115}
116
117
Nick Gordond5c1a372016-10-31 13:56:23 -0500118; the fib section is used to configure fib entrys type to ndn FIB updated by NLSR
akmhoque157b0a42014-05-13 00:26:37 -0500119
120fib
121{
Alexander Afanasyev8388ec62014-08-16 18:38:57 -0700122 ; the max-faces-per-prefix is used to limit the number of faces for each name prefixes
123 ; by NLSR in ndn FIB
akmhoque157b0a42014-05-13 00:26:37 -0500124
Alexander Afanasyev8388ec62014-08-16 18:38:57 -0700125 max-faces-per-prefix 3 ; default value 0. Valid value 0-60. By default (value 0) NLSR adds
126 ; all available faces for each reachable name prefixes in NDN FIB
Vince Lehman7b616582014-10-17 16:25:39 -0500127
128 ; routing-calc-interval is the time to wait in seconds after a routing table calculation is
129 ; scheduled before actually performing the routing table calculation
130
131 routing-calc-interval 15 ; default value 15. Valid values 0-15. It is recommended that
132 ; routing-calc-interval have a higher value than adj-lsa-build-interval
akmhoque157b0a42014-05-13 00:26:37 -0500133}
134
Yingdi Yu20e3a6e2014-05-26 23:16:10 -0700135; the advertising section contains the configuration settings of the name prefixes
akmhoque157b0a42014-05-13 00:26:37 -0500136; hosted by this router
137
138advertising
139{
Alexander Afanasyev8388ec62014-08-16 18:38:57 -0700140 ; the ndnname is used to advertised name from the router. To advertise each name prefix
141 ; configure one block of ndnname configuration command for every name prefix.
akmhoque157b0a42014-05-13 00:26:37 -0500142
Alexander Afanasyev8388ec62014-08-16 18:38:57 -0700143 prefix /ndn/edu/memphis/cs/netlab ; name in ndn URI format
144 prefix /ndn/edu/memphis/sports/basketball
Yingdi Yu20e3a6e2014-05-26 23:16:10 -0700145}
146
147security
148{
149 validator
150 {
151 rule
152 {
Laqin Fand8c9d8c2017-01-18 21:45:14 +0000153 id "NLSR Hello Rule"
Yingdi Yu20e3a6e2014-05-26 23:16:10 -0700154 for data
155 filter
156 {
157 type name
akmhoque93f1a072014-06-19 16:24:28 -0500158 regex ^[^<NLSR><INFO>]*<NLSR><INFO><><>$
Yingdi Yu20e3a6e2014-05-26 23:16:10 -0700159 }
160 checker
161 {
162 type customized
163 sig-type rsa-sha256
164 key-locator
165 {
166 type name
167 hyper-relation
168 {
169 k-regex ^([^<KEY><NLSR>]*)<NLSR><KEY><ksk-.*><ID-CERT>$
Yingdi Yu6a3a4dd2014-06-20 14:10:39 -0700170 k-expand \\1
Yingdi Yu20e3a6e2014-05-26 23:16:10 -0700171 h-relation equal
akmhoque93f1a072014-06-19 16:24:28 -0500172 p-regex ^([^<NLSR><INFO>]*)<NLSR><INFO><><>$
Yingdi Yu20e3a6e2014-05-26 23:16:10 -0700173 p-expand \\1
174 }
175 }
176 }
177 }
178
179 rule
180 {
Laqin Fand8c9d8c2017-01-18 21:45:14 +0000181 id "NLSR LSA Rule"
Yingdi Yu20e3a6e2014-05-26 23:16:10 -0700182 for data
183 filter
184 {
185 type name
akmhoquea816bee2014-06-24 14:37:40 -0500186 regex ^[^<NLSR><LSA>]*<NLSR><LSA>
Yingdi Yu20e3a6e2014-05-26 23:16:10 -0700187 }
188 checker
189 {
190 type customized
191 sig-type rsa-sha256
192 key-locator
193 {
194 type name
195 hyper-relation
196 {
197 k-regex ^([^<KEY><NLSR>]*)<NLSR><KEY><ksk-.*><ID-CERT>$
Yingdi Yu6a3a4dd2014-06-20 14:10:39 -0700198 k-expand \\1
Yingdi Yu20e3a6e2014-05-26 23:16:10 -0700199 h-relation equal
Muktadir R Chowdhuryaa3b0852015-08-06 13:08:56 -0500200 ; the last four components in the prefix should be <lsaType><seqNo><version><segmentNo>
Ashlesh Gawande54e726c2017-01-30 12:48:06 -0600201 p-regex ^<localhop>([^<NLSR><LSA>]*)<NLSR><LSA>(<>*)<><><><>$
Yingdi Yu20e3a6e2014-05-26 23:16:10 -0700202 p-expand \\1\\2
203 }
204 }
205 }
206 }
207
208 rule
209 {
Laqin Fand8c9d8c2017-01-18 21:45:14 +0000210 id "NLSR Hierarchy Exception Rule"
Yingdi Yu20e3a6e2014-05-26 23:16:10 -0700211 for data
212 filter
213 {
214 type name
akmhoquecc827532014-07-09 08:48:49 -0500215 regex ^[^<KEY><%C1.Router>]*<%C1.Router>[^<KEY><NLSR>]*<KEY><ksk-.*><ID-CERT><>$
Yingdi Yu20e3a6e2014-05-26 23:16:10 -0700216 }
217 checker
218 {
219 type customized
220 sig-type rsa-sha256
221 key-locator
222 {
223 type name
224 hyper-relation
225 {
alvy297f4162015-03-03 17:15:33 -0600226 k-regex ^([^<KEY><%C1.Operator>]*)<%C1.Operator>[^<KEY>]*<KEY><ksk-.*><ID-CERT>$
Yingdi Yu20e3a6e2014-05-26 23:16:10 -0700227 k-expand \\1
228 h-relation equal
akmhoquecc827532014-07-09 08:48:49 -0500229 p-regex ^([^<KEY><%C1.Router>]*)<%C1.Router>[^<KEY>]*<KEY><ksk-.*><ID-CERT><>$
Yingdi Yu20e3a6e2014-05-26 23:16:10 -0700230 p-expand \\1
231 }
232 }
233 }
234 }
235
236 rule
237 {
Laqin Fand8c9d8c2017-01-18 21:45:14 +0000238 id "NLSR Hierarchical Rule"
Yingdi Yu20e3a6e2014-05-26 23:16:10 -0700239 for data
240 filter
241 {
242 type name
243 regex ^[^<KEY>]*<KEY><ksk-.*><ID-CERT><>$
244 }
245 checker
246 {
247 type hierarchical
248 sig-type rsa-sha256
249 }
250 }
251
252 trust-anchor
253 {
254 type file
255 file-name "root.cert"
256 }
257 }
alvy297f4162015-03-03 17:15:33 -0600258
259 prefix-update-validator
260 {
261 rule
262 {
263 id "NLSR ControlCommand Rule"
264 for interest
265 filter
266 {
267 type name
268 regex ^<localhost><nlsr><prefix-update>[<advertise><withdraw>]<>$
269 }
270 checker
271 {
272 type customized
273 sig-type rsa-sha256
274 key-locator
275 {
276 type name
277 regex ^([^<KEY><%C1.Operator>]*)<%C1.Operator>[^<KEY>]*<KEY><ksk-.*><ID-CERT>$
278 }
279 }
280 }
281
282 rule
283 {
284 id "NLSR Hierarchy Rule"
285 for data
286 filter
287 {
288 type name
289 regex ^[^<KEY>]*<KEY><ksk-.*><ID-CERT><>$
290 }
291 checker
292 {
293 type hierarchical
294 sig-type rsa-sha256
295 }
296 }
297
298 trust-anchor
299 {
300 type file
301 file-name "site.cert"
302 }
303 }
Vince Lehman9f51efd2014-09-18 14:46:01 -0500304 ; cert-to-publish "root.cert" ; optional, a file containing the root certificate
305 ; Only the router that is designated to publish the root cert
306 ; needs to specify this
307
308 ; cert-to-publish "site.cert" ; optional, a file containing the site certificate
309 ; Only the router that is designated to publish the site cert
310 ; needs to specify this
311
312 ; cert-to-publish "operator.cert" ; optional, a file containing the operator certificate
313 ; Only the router that is designated to publish the operator
314 ; cert needs to specify this
315
akmhoque50125a92014-06-30 08:54:17 -0500316 cert-to-publish "router.cert" ; required, a file containing the router certificate.
akmhoque157b0a42014-05-13 00:26:37 -0500317}