nlsr.conf

Description

NLSR config file

Example

  1; the general section contains all the general settings for router
  2
  3general
  4{
  5  ; mandatory configuration command section network, site and router
  6
  7  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
 10
 11  ; lsa-refresh-time is the time in seconds, after which router will refresh its LSAs
 12  lsa-refresh-time 1800      ; default value 1800. Valid values 240-7200
 13
 14  ; router-dead-interval is the time in seconds after which an inactive routers
 15  ; LSAs are removed
 16  ;router-dead-interval 3600 ; default value: 2*lsa-refresh-time. Value must be larger
 17                             ; than lsa-refresh-time
 18
 19  ; InterestLifetime (in seconds) for LSA fetching
 20  lsa-interest-lifetime 4    ; default value 4. Valid values 1-60
 21
 22  ; select sync protocol: chronosync / psync / svs
 23  sync-protocol psync
 24
 25  ; sync interest lifetime of ChronoSync/PSync in milliseconds
 26  sync-interest-lifetime 60000  ; default value 60000. Valid values 1000-120,000
 27
 28  state-dir       /var/lib/nlsr        ; path for intermediate state files including sequence directory (Absolute path)
 29}
 30
 31; the neighbors section contains the configuration for router's neighbors and hello protocol behavior
 32
 33neighbors
 34{
 35  ; in case hello interest timed out, router will try 'hello-retries' times at 'hello-timeout'
 36  ; seconds interval before giving up for any neighbors (deciding link is down)
 37
 38   hello-retries 3                     ; interest retries number in integer. Default value 3
 39                                       ; valid values 1-10
 40
 41   hello-timeout 1                     ; interest time out value in seconds. Default value 1
 42                                       ; Valid values 1-15
 43
 44   hello-interval  60                  ; interest sending interval in seconds. Default value 60
 45                                       ; valid values 30-90
 46
 47  ; adj-lsa-build-interval is the time to wait in seconds after an Adjacency LSA build is scheduled
 48  ; before actually building the Adjacency LSA
 49
 50  adj-lsa-build-interval 10   ; default value 10. Valid values 5-30.
 51
 52  face-dataset-fetch-tries 3 ; default is 3. Valid values 1-10. The FaceDataset is
 53                             ; gotten from NFD, and is needed to configure NLSR
 54                             ; correctly. It is recommended not to set this
 55                             ; variable too high, because it could cause
 56                             ; congestion for NFD.
 57
 58  face-dataset-fetch-interval 3600 ; default is 3600. Valid values 1800-5400.
 59                                   ; This controls how often (in seconds) NLSR will attempt to
 60                                   ; fetch a FaceStatus dataset from NFD.
 61
 62  ; neighbor command is used to configure router's neighbor. Each neighbor will need
 63  ; one block of neighbor command
 64
 65  neighbor
 66  {
 67    name /ndn/edu/memphis/%C1.Router/cs/castor  ; name prefix of the neighbor router consists
 68                                                ; of network, site-name and router-name
 69
 70    face-uri  udp://castor.cs.memphis.edu       ; face uri of the face connected to the neighbor
 71    link-cost 25                                ; cost of the connecting link to neighbor
 72  }
 73
 74  neighbor
 75  {
 76    name /ndn/edu/memphis/%C1.Router/cs/mira  ; name prefix of the neighbor router consists
 77                                              ; of network, site-name and router-name
 78
 79    face-uri  udp://mira.cs.memphis.edu       ; face uri of the face connected to the neighbor
 80    link-cost 30                              ; cost of the connecting link to neighbor
 81  }
 82}
 83
 84; the hyperbolic section contains the configuration settings of enabling a router to calculate
 85; routing table using [hyperbolic routing table calculation](http://arxiv.org/abs/0805.1266) method
 86
 87hyperbolic
 88{
 89  ; commands in this section follows a strict order
 90  ; the switch is used to set hyperbolic routing calculation in NLSR
 91
 92  state off             ; default value 'off', set value 'on' to enable hyperbolic routing table
 93                        ; calculation which turns link state routing 'off'. set value to 'dry-run'
 94                        ; to test hyperbolic routing and compare with link state routing.
 95
 96
 97  radius   123.456      ; radius of the router in hyperbolic coordinate system
 98  angle    1.45,2.36    ; angle of the router in hyperbolic coordinate system
 99}
100
101
102; the fib section is used to configure fib entrys type to ndn FIB updated by NLSR
103
104fib
105{
106  ; the max-faces-per-prefix is used to limit the number of faces for each name prefixes
107  ; by NLSR in ndn FIB
108
109  max-faces-per-prefix 3   ; default value 0. Valid value 0-60. By default (value 0) NLSR adds
110                           ; all available faces for each reachable name prefixes in NDN FIB
111
112  ; routing-calc-interval is the time to wait in seconds after a routing table calculation is
113  ; scheduled before actually performing the routing table calculation
114
115  routing-calc-interval 15   ; default value 15. Valid values 0-15. It is recommended that
116                             ; routing-calc-interval have a higher value than adj-lsa-build-interval
117}
118
119; the advertising section contains the configuration settings of the name prefixes
120; hosted by this router
121
122advertising
123{
124  ; the ndnname is used to advertised name from the router. To advertise each name prefix
125  ; configure one block of ndnname configuration command for every name prefix.
126  ; format: <name-prefix> <cost>
127
128  /ndn/edu/memphis/cs/netlab 0
129  /ndn/edu/memphis/sports/basketball 0
130}
131
132security
133{
134  validator
135  {
136    rule
137    {
138      id "NLSR Hello Rule"
139      for data
140      filter
141      {
142        type name
143        regex ^[^<nlsr><INFO>]*<nlsr><INFO><><>$
144      }
145      checker
146      {
147        type customized
148        sig-type ecdsa-sha256
149        key-locator
150        {
151          type name
152          hyper-relation
153          {
154            k-regex ^([^<KEY><nlsr>]*)<nlsr><KEY><>{1,3}$
155            k-expand \\1
156            h-relation equal
157            p-regex ^([^<nlsr><INFO>]*)<nlsr><INFO><><>$
158            p-expand \\1
159          }
160        }
161      }
162    }
163
164    rule
165    {
166      id "NLSR LSA Rule"
167      for data
168      filter
169      {
170        type name
171        regex ^[^<nlsr><LSA>]*<nlsr><LSA>
172      }
173      checker
174      {
175        type customized
176        sig-type ecdsa-sha256
177        key-locator
178        {
179          type name
180          hyper-relation
181          {
182            k-regex ^([^<KEY><nlsr>]*)<nlsr><KEY><>{1,3}$
183            k-expand \\1
184            h-relation equal
185            ; the last four components in the prefix should be <lsaType><seqNo><version><segmentNo>
186            p-regex ^<localhop>([^<nlsr><LSA>]*)<nlsr><LSA>(<>*)<><><><>$
187            p-expand \\1\\2
188          }
189        }
190      }
191    }
192
193    rule
194    {
195      id "NLSR datasets"
196      for data
197      filter
198      {
199        type name
200        regex ^[^<nlsr>]*<nlsr>[<lsdb><routing-table>]
201      }
202      checker
203      {
204        type customized
205        sig-type ecdsa-sha256
206        key-locator
207        {
208          type name
209          hyper-relation
210          {
211            k-regex ^([^<KEY>]*)<KEY><>{1,3}$ ; router key or certificate
212            k-expand \\1
213            h-relation equal
214            p-regex ^([^<nlsr>]*)<nlsr>[<lsdb><routing-table>]
215            p-expand \\1
216          }
217        }
218      }
219    }
220
221    rule
222    {
223      id "NLSR Hierarchy Exception Rule"
224      for data
225      filter
226      {
227        type name
228        regex ^[^<KEY><%C1.Router>]*<%C1.Router>[^<KEY><nlsr>]*<KEY><><><>$
229      }
230      checker
231      {
232        type customized
233        sig-type ecdsa-sha256
234        key-locator
235        {
236          type name
237          hyper-relation
238          {
239            k-regex ^([^<KEY><%C1.Operator>]*)<%C1.Operator>[^<KEY>]*<KEY><>{1,3}$
240            k-expand \\1
241            h-relation equal
242            p-regex ^([^<KEY><%C1.Router>]*)<%C1.Router>[^<KEY>]*<KEY><><><>$
243            p-expand \\1
244          }
245        }
246      }
247    }
248
249    rule
250    {
251      id "NLSR Hierarchical Rule"
252      for data
253      filter
254      {
255        type name
256        regex ^[^<KEY>]*<KEY><><><>$
257      }
258      checker
259      {
260        type hierarchical
261        sig-type ecdsa-sha256
262      }
263    }
264
265    trust-anchor
266    {
267      type file
268      file-name "root.cert"
269    }
270  }
271
272  prefix-update-validator
273  {
274    rule
275    {
276      id "NLSR ControlCommand Rule"
277      for interest
278      filter
279      {
280        type name
281        ; /<prefix>/<management-module>/<command-verb>/<control-parameters>
282        ; /<timestamp>/<random-value>/<signed-interests-components>
283        regex ^<localhost><nlsr><prefix-update>[<advertise><withdraw>]<><><>$
284      }
285      checker
286      {
287        type customized
288        sig-type ecdsa-sha256
289        key-locator
290        {
291          type name
292          regex ^([^<KEY><%C1.Operator>]*)<%C1.Operator>[^<KEY>]*<KEY><>{1,3}$
293        }
294      }
295    }
296
297    rule
298    {
299      id "NLSR Hierarchy Rule"
300      for data
301      filter
302      {
303        type name
304        regex ^[^<KEY>]*<KEY><><><>$
305      }
306      checker
307      {
308        type hierarchical
309        sig-type ecdsa-sha256
310      }
311    }
312
313    trust-anchor
314    {
315      type file
316      file-name "site.cert"
317    }
318  }
319
320  ; cert-to-publish "root.cert"  ; optional, a file containing the root certificate
321                                 ; Only the router that is designated to publish the root cert
322                                 ; needs to specify this
323
324  ; cert-to-publish "site.cert"  ; optional, a file containing the site certificate
325                                 ; Only the router that is designated to publish the site cert
326                                 ; needs to specify this
327
328  ; cert-to-publish "operator.cert" ; optional, a file containing the operator certificate
329                                    ; Only the router that is designated to publish the operator
330                                    ; cert needs to specify this
331
332  cert-to-publish "router.cert"  ; required, a file containing the router certificate.
333}