| ; the general section contains all the general settings for router |
| |
| general |
| { |
| ; mandatory configuration command section network, site and router |
| |
| network /ndn ; name of the network the router belongs to in ndn URI format |
| site /edu/memphis ; name of the site the router belongs to in ndn URI format |
| router /%C1.Router/cs/pollux ; name of the router in ndn URI format |
| |
| ; lsa-refresh-time is the time in seconds, after which router will refresh its LSAs |
| lsa-refresh-time 1800 ; default value 1800. Valid values 240-7200 |
| |
| ; router-dead-interval is the time in seconds after which an inactive routers |
| ; LSAs are removed |
| ;router-dead-interval 3600 ; default value: 2*lsa-refresh-time. Value must be larger |
| ; than lsa-refresh-time |
| |
| ; InterestLifetime (in seconds) for LSA fetching |
| lsa-interest-lifetime 4 ; default value 4. Valid values 1-60 |
| |
| ; select sync protocol: chronosync or psync |
| sync-protocol psync |
| |
| ; sync interest lifetime of ChronoSync/PSync in milliseconds |
| sync-interest-lifetime 60000 ; default value 60000. Valid values 1000-120,000 |
| |
| state-dir /var/lib/nlsr ; path for intermediate state files including sequence directory (Absolute path) |
| } |
| |
| ; the neighbors section contains the configuration for router's neighbors and hello protocol behavior |
| |
| neighbors |
| { |
| ; in case hello interest timed out, router will try 'hello-retries' times at 'hello-timeout' |
| ; seconds interval before giving up for any neighbors (deciding link is down) |
| |
| hello-retries 3 ; interest retries number in integer. Default value 3 |
| ; valid values 1-10 |
| |
| hello-timeout 1 ; interest time out value in seconds. Default value 1 |
| ; Valid values 1-15 |
| |
| hello-interval 60 ; interest sending interval in seconds. Default value 60 |
| ; valid values 30-90 |
| |
| ; adj-lsa-build-interval is the time to wait in seconds after an Adjacency LSA build is scheduled |
| ; before actually building the Adjacency LSA |
| |
| adj-lsa-build-interval 10 ; default value 10. Valid values 5-30. |
| |
| face-dataset-fetch-tries 3 ; default is 3. Valid values 1-10. The FaceDataset is |
| ; gotten from NFD, and is needed to configure NLSR |
| ; correctly. It is recommended not to set this |
| ; variable too high, because it could cause |
| ; congestion for NFD. |
| |
| face-dataset-fetch-interval 3600 ; default is 3600. Valid values 1800-5400. |
| ; This controls how often (in seconds) NLSR will attempt to |
| ; fetch a FaceStatus dataset from NFD. |
| |
| ; neighbor command is used to configure router's neighbor. Each neighbor will need |
| ; one block of neighbor command |
| |
| neighbor |
| { |
| name /ndn/edu/memphis/%C1.Router/cs/castor ; name prefix of the neighbor router consists |
| ; of network, site-name and router-name |
| |
| face-uri udp://castor.cs.memphis.edu ; face uri of the face connected to the neighbor |
| link-cost 25 ; cost of the connecting link to neighbor |
| } |
| |
| neighbor |
| { |
| name /ndn/edu/memphis/%C1.Router/cs/mira ; name prefix of the neighbor router consists |
| ; of network, site-name and router-name |
| |
| face-uri udp://mira.cs.memphis.edu ; face uri of the face connected to the neighbor |
| link-cost 30 ; cost of the connecting link to neighbor |
| } |
| } |
| |
| ; the hyperbolic section contains the configuration settings of enabling a router to calculate |
| ; routing table using [hyperbolic routing table calculation](http://arxiv.org/abs/0805.1266) method |
| |
| hyperbolic |
| { |
| ; commands in this section follows a strict order |
| ; the switch is used to set hyperbolic routing calculation in NLSR |
| |
| state off ; default value 'off', set value 'on' to enable hyperbolic routing table |
| ; calculation which turns link state routing 'off'. set value to 'dry-run' |
| ; to test hyperbolic routing and compare with link state routing. |
| |
| |
| radius 123.456 ; radius of the router in hyperbolic coordinate system |
| angle 1.45,2.36 ; angle of the router in hyperbolic coordinate system |
| } |
| |
| |
| ; the fib section is used to configure fib entrys type to ndn FIB updated by NLSR |
| |
| fib |
| { |
| ; the max-faces-per-prefix is used to limit the number of faces for each name prefixes |
| ; by NLSR in ndn FIB |
| |
| max-faces-per-prefix 3 ; default value 0. Valid value 0-60. By default (value 0) NLSR adds |
| ; all available faces for each reachable name prefixes in NDN FIB |
| |
| ; routing-calc-interval is the time to wait in seconds after a routing table calculation is |
| ; scheduled before actually performing the routing table calculation |
| |
| routing-calc-interval 15 ; default value 15. Valid values 0-15. It is recommended that |
| ; routing-calc-interval have a higher value than adj-lsa-build-interval |
| } |
| |
| ; the advertising section contains the configuration settings of the name prefixes |
| ; hosted by this router |
| |
| advertising |
| { |
| ; the ndnname is used to advertised name from the router. To advertise each name prefix |
| ; configure one block of ndnname configuration command for every name prefix. |
| |
| prefix /ndn/edu/memphis/cs/netlab ; name in ndn URI format |
| prefix /ndn/edu/memphis/sports/basketball |
| } |
| |
| security |
| { |
| validator |
| { |
| rule |
| { |
| id "NLSR Hello Rule" |
| for data |
| filter |
| { |
| type name |
| regex ^[^<nlsr><INFO>]*<nlsr><INFO><><>$ |
| } |
| checker |
| { |
| type customized |
| sig-type ecdsa-sha256 |
| key-locator |
| { |
| type name |
| hyper-relation |
| { |
| k-regex ^([^<KEY><nlsr>]*)<nlsr><KEY><>{1,3}$ |
| k-expand \\1 |
| h-relation equal |
| p-regex ^([^<nlsr><INFO>]*)<nlsr><INFO><><>$ |
| p-expand \\1 |
| } |
| } |
| } |
| } |
| |
| rule |
| { |
| id "NLSR LSA Rule" |
| for data |
| filter |
| { |
| type name |
| regex ^[^<nlsr><LSA>]*<nlsr><LSA> |
| } |
| checker |
| { |
| type customized |
| sig-type ecdsa-sha256 |
| key-locator |
| { |
| type name |
| hyper-relation |
| { |
| k-regex ^([^<KEY><nlsr>]*)<nlsr><KEY><>{1,3}$ |
| k-expand \\1 |
| h-relation equal |
| ; the last four components in the prefix should be <lsaType><seqNo><version><segmentNo> |
| p-regex ^<localhop>([^<nlsr><LSA>]*)<nlsr><LSA>(<>*)<><><><>$ |
| p-expand \\1\\2 |
| } |
| } |
| } |
| } |
| |
| rule |
| { |
| id "NLSR datasets" |
| for data |
| filter |
| { |
| type name |
| regex ^[^<nlsr>]*<nlsr>[<lsdb><routing-table>] |
| } |
| checker |
| { |
| type customized |
| sig-type ecdsa-sha256 |
| key-locator |
| { |
| type name |
| hyper-relation |
| { |
| k-regex ^([^<KEY>]*)<KEY><>{1,3}$ ; router key or certificate |
| k-expand \\1 |
| h-relation equal |
| p-regex ^([^<nlsr>]*)<nlsr>[<lsdb><routing-table>] |
| p-expand \\1 |
| } |
| } |
| } |
| } |
| |
| rule |
| { |
| id "NLSR Hierarchy Exception Rule" |
| for data |
| filter |
| { |
| type name |
| regex ^[^<KEY><%C1.Router>]*<%C1.Router>[^<KEY><nlsr>]*<KEY><><><>$ |
| } |
| checker |
| { |
| type customized |
| sig-type ecdsa-sha256 |
| key-locator |
| { |
| type name |
| hyper-relation |
| { |
| k-regex ^([^<KEY><%C1.Operator>]*)<%C1.Operator>[^<KEY>]*<KEY><>{1,3}$ |
| k-expand \\1 |
| h-relation equal |
| p-regex ^([^<KEY><%C1.Router>]*)<%C1.Router>[^<KEY>]*<KEY><><><>$ |
| p-expand \\1 |
| } |
| } |
| } |
| } |
| |
| rule |
| { |
| id "NLSR Hierarchical Rule" |
| for data |
| filter |
| { |
| type name |
| regex ^[^<KEY>]*<KEY><><><>$ |
| } |
| checker |
| { |
| type hierarchical |
| sig-type ecdsa-sha256 |
| } |
| } |
| |
| trust-anchor |
| { |
| type file |
| file-name "root.cert" |
| } |
| } |
| |
| prefix-update-validator |
| { |
| rule |
| { |
| id "NLSR ControlCommand Rule" |
| for interest |
| filter |
| { |
| type name |
| ; /<prefix>/<management-module>/<command-verb>/<control-parameters> |
| ; /<timestamp>/<random-value>/<signed-interests-components> |
| regex ^<localhost><nlsr><prefix-update>[<advertise><withdraw>]<><><>$ |
| } |
| checker |
| { |
| type customized |
| sig-type ecdsa-sha256 |
| key-locator |
| { |
| type name |
| regex ^([^<KEY><%C1.Operator>]*)<%C1.Operator>[^<KEY>]*<KEY><>{1,3}$ |
| } |
| } |
| } |
| |
| rule |
| { |
| id "NLSR Hierarchy Rule" |
| for data |
| filter |
| { |
| type name |
| regex ^[^<KEY>]*<KEY><><><>$ |
| } |
| checker |
| { |
| type hierarchical |
| sig-type ecdsa-sha256 |
| } |
| } |
| |
| trust-anchor |
| { |
| type file |
| file-name "site.cert" |
| } |
| } |
| |
| ; cert-to-publish "root.cert" ; optional, a file containing the root certificate |
| ; Only the router that is designated to publish the root cert |
| ; needs to specify this |
| |
| ; cert-to-publish "site.cert" ; optional, a file containing the site certificate |
| ; Only the router that is designated to publish the site cert |
| ; needs to specify this |
| |
| ; cert-to-publish "operator.cert" ; optional, a file containing the operator certificate |
| ; Only the router that is designated to publish the operator |
| ; cert needs to specify this |
| |
| cert-to-publish "router.cert" ; required, a file containing the router certificate. |
| } |