blob: 1a56ec22d78be01934dc53f90cd6457851e68e82 [file] [log] [blame]
Nick Gordonf3a9ecb2017-01-24 13:55:14 -06001\section{Configuration File}
2\label{sec:configuration}
3
4NLSR's configuration file contains numerous parameters to control the behavior and performance of NLSR.
5The configuration file also includes the trust schema used by NLSR to verify LSA Data, Hello Data, and prefix update command Interests.
6The configuration file is divided into six sections each with parameters that mainly affect a specific module.
7
8\subsection{General Section}
9
10The \texttt{general} section in the configuration file includes parameters which deal with the general setup of the router, the behavior of the LSDB, and logging configuration.
11
12There are three parameters used to configure the router prefix of the router.
13The router prefix is the name that other routers in the network know this router by.
14\begin{itemize}
15\item \texttt{network} - the name of the network to which the router belongs; e.g., \texttt{/ndn}.
16\item \texttt{site} - the name of the site to which the router belongs; e.g., \texttt{/edu/memphis}.
17\item \texttt{router} - the name to identify the router; e.g., \texttt{/\%C1.Router/cs/pollux}.
18\end{itemize}
19The router prefix is constructed by combining the three parameters following the format: \texttt{/<network>/<site>/<router>}.
20
21There are three parameters which affect the behavior of the LSDB.
22\begin{itemize}
23\item \texttt{lsa-refresh-time} - the time in seconds the router will wait before refreshing its LSAs (Default value: 1800; Valid values: 240 - 7200).
24\item \texttt{router-dead-interval} - the time in seconds after which an inactive router's LSAs are removed.
25The configured value for this parameter must be greater than \texttt{lsa-refresh-time}. (Default value: two times the value configured in \texttt{lsa-refresh-time}).
26\item \texttt{lsa-interest-lifetime} - the interest lifetime used for LSA Interests (Default value: 4; Valid values: 1 - 60).
27\end{itemize}
28
29The \texttt{log-level} parameter configures the verbosity of NLSR's logging.
30The possible \texttt{log-level} values are listed in increasing verbosity:
31\begin{itemize}
32\item \texttt{NONE} - no messages
33\item \texttt{ERROR} - error messages
34\item \texttt{WARN} - warning messages
35\item \texttt{INFO} - informational messages (default)
36\item \texttt{DEBUG} - debugging messages
37\item \texttt{TRACE} - trace messages (most verbose)
38\item \texttt{ALL} - all messages
39\end{itemize}
40Note that all debugging levels listed above the selected value will also be enabled.
41
42The \texttt{general} configuration section also includes parameters to choose where the NLSR log file and the NLSR sequence number file are stored.
43The \texttt{log-dir} parameter is an absolute path to the directory where the NLSR log file should be written, and \texttt{seq-dir} is an absolute path to the directory where the NLSR sequence number should be written.
44
45\subsection{Neighbors Section}
46
47The \texttt{neighbors} section in the configuration file contains parameters that define the behavior of the Hello Protocol and the neighboring routers of the router.
48\begin{itemize}
49\item \texttt{hello-retries} - the number of times to retry a Hello Interest before deciding the neighbor is down (Default value: 3; Valid values: 1 - 10).
50\item \texttt{hello-timeout} - the interest lifetime for Hello Interests in seconds (Default value: 1, Valid values: 1 - 15).
51\item \texttt{hello-interval} - the time in seconds between sending each Hello Interest to a neighbor. (Default value: 60; Valid values: 30 - 90).
52\item \texttt{first-hello-interval} - the time to wait in seconds before sending the first Hello Interests (Default value: 10; Valid values: 0 - 10).
53\item \texttt{adj-lsa-build-interval} - when the Hello Protocol triggers an Adjacency LSA build, the LSDB will wait this amount of time in seconds before performing the Adjacency LSA build. This parameter is intended to allow for Adjacency LSA build requests to be aggregated and the build can then be performed once. (Default value: 5; Valid values: 0 - 5)
54\end{itemize}
55
56The \texttt{neighbors} section also includes multiple \texttt{neighbor} subsections, each of which configures a neighbor of the router.
57The \texttt{neighbor} subsection includes:
58\begin{itemize}
59\item \texttt{name} - the router prefix of the neighboring router
60\item \texttt{face-uri} - the face that should be used to connect to the neighboring router
61\item \texttt{link-cost} - the cost metric for the link connecting this router to the neighbor router.
62\end{itemize}
63
64\subsection{Hyperbolic Section}
65
66The \texttt{hyperbolic} section in the configuration file is used to enable/disable hyperbolic routing and to specify the hyperbolic coordinates of the router.
67
68The \texttt{state} parameter indicates whether or not hyperbolic routing should be enabled. There are three possible values for this parameter: \texttt{on}, \texttt{off}, and \texttt{dry-run}. \texttt{on} enables hyperbolic routing; \texttt{off} disables hyperbolic routing (link-state routing is used); \texttt{dry-run} uses link-state routing to populate NFD's FIB, but will also perform the hyperbolic routing calculations and write them to the log file for debugging purposes.
69
Ashlesh Gawande69903472017-06-28 13:30:46 -050070The \texttt{radius} parameter defines the router's radius in the hyperbolic coordinate system and \texttt{angle} defines the router's angle(s) in the hyperbolic coordinate system. There can be (d-1) angular coordinates in d-dimensional hyperbolic routing. Currently the testbed uses 2-dimensional hyperbolic routing with one radial and one angular coordinate.
Nick Gordonf3a9ecb2017-01-24 13:55:14 -060071
72\subsection{FIB Section}
73
74The \texttt{fib} section in the configuration file contains two parameters: one to limit the number of next hops registered for each name prefix, and the amount of time to wait before calculating the routing table after a request is made.
75
76\texttt{max-faces-per-prefix} defines the maximum number of next hops that can be registered for a name prefix.
77This value is intended to reduce the FIB size for routers with a large number of neighbors.
78The default value for \texttt{max-faces-per-prefix} is \texttt{0} which indicates that all available next hops may be added to each name prefix. \texttt{max-faces-per-prefix} allows values between 0 and 60.
79
80\texttt{routing-calc-interval} is the time to wait in seconds after a routing table calculation is requested before actually performing the routing table calculation.
81This parameter is intended to limit the number of routing table calculations, which may be performance intensive on some systems.
82The default value for \texttt{max-faces-per-prefix} is 15 seconds and can be configured to be in the range of 0 to 15 seconds.
83
84\subsection{Advertising Section}
85
86The \texttt{advertising} section includes a list of name prefixes that the router should advertise as reachable through itself.
87Each name prefix that should be advertised should be in the following format: \texttt{prefix /name/to/advertise}.
88This section allows for static configuration of the advertised prefixes, but prefixes can be dynamically advertised and withdrawn using the Prefix Update Processor.
89
90\subsection{Security Section}
91
92The \texttt{security} section of the configuration file includes the configuration for NLSR's validators and the locations of certificates that should be published by the router.
93
94The \texttt{validator} subsection includes the configuration for the validator used by NLSR to verify the signatures of Hello Data and LSA Data.
95
96The \texttt{prefix-update-validator} configures the validator used by the Prefix Update Processor to verify that prefix update command Interests are signed by the operator of the router.
97
98The \texttt{security} section also allows configuration of which certificates should be published by the router using the \texttt{cert-to-publish} keyword.
99If the router should publish a certificate, the absolute path for the certificate file can be configured as \texttt{cert-to-publish} value.