1 .. This work is licensed under a Creative Commons Attribution 4.0 International License.
2 .. SPDX-License-Identifier: CC-BY-4.0
3 .. CAUTION: this document is generated from source in doc/src/rtd.
4 .. To make changes edit the source and recompile the document.
5 .. Do NOT make changes directly to .rst or .md files.
7 ============================================================================================
8 Configuration and Deployment
9 ============================================================================================
15 The RIC Message Router (RMR) is a library for peer-to-peer
16 communication. Applications use the library to send and
17 receive messages where the message routing and endpoint
18 selection is based on the message type rather than DNS host
19 name-IP port combinations.
21 This document contains information regarding the
22 configuration of RMR when it is embedded by a *user
23 application* . RMR itself is a library, not a deployable
30 Many aspects of RMR behavior are controlled via environment
31 variables. These values are read when a user application
32 invokes the RMR initialization function. This allows these
33 variables to be set before the application is started as a
34 function of the true environment, or set by the application
35 as a means for the application to influence RMR's behaviour.
36 The following is a list of environment variables which RMR
37 recognizes. Also see the main RMR manual page in the
38 development package for more details.
45 * - **RMR_ASYNC_CONN**
47 Allows the async connection mode to be turned off (by setting
48 the value to 0). When set to 1, or missing from the
49 environment, RMR will invoke the connection interface in the
50 transport mechanism using the non-blocking (async) mode. This
51 will likely result in many "soft failures" (retry) until the
52 connection is established, but allows the application to
53 continue unimpeded should the connection be slow to set up.
57 This provides the interface that RMR will bind listen ports
58 to, allowing for a single interface to be used rather than
59 listening across all interfaces. This should be the IP
60 address assigned to the interface that RMR should listen on,
61 and if not defined RMR will listen on all interfaces.
65 This variable defines the port that RMR should open for
66 communications with Route Manager, and other RMR control
67 applications. If not defined, the port 4561 is assumed.
69 Previously, the ``RMR_RTG_SVC`` (route table generator
70 service port) was used to define this port. However, a future
71 version of Route Manager will require RMR to connect and
72 request tables, thus that variable is now used to supply the
73 Route Manager's well-known address and port.
75 To maintain backwards compatibility with the older Route
76 Manager versions, the presence of this variable in the
77 environment will shift RMR's behaviour with respect to the
78 default value used when ``RMR_RTG_SVC`` is **not** defined.
80 When ``RMR_CTL_PORT`` is **defined:** RMR assumes that Route
81 Manager requires RMR to connect and request table updates is
82 made, and the default well-known address for Route manager is
85 When ``RMR_CTL_PORT`` is **undefined:** RMR assumes that
86 Route Manager will connect and push table updates, thus the
87 default listen port (4561) is used.
89 To avoid any possible misinterpretation and/or incorrect
90 assumptions on the part of RMR, it is recommended that both
91 the ``RMR_CTL_PORT`` and ``RMR_RTG_SVC`` be defined. In the
92 case where both variables are defined, RMR will behave
93 exactly as is communicated with the variable's values.
97 The value of this variable depends on the Route Manager in
100 When the Route Manager is expecting to connect to an xAPP and
101 push route tables, this variable must indicate the
102 ``port`` which RMR should use to listen for these
105 When the Route Manager is expecting RMR to connect and
106 request a table update during initialisation, the variable
107 should be the ``host`` of the Route Manager process.
109 The ``RMR_CTL_PORT`` variable (added with the support of
110 sending table update requests to Route manager), controls the
111 behaviour if this variable is not set. See the description of
112 that variable for details.
116 By default RMR writes messages to standard error (incorrectly
117 referred to as log messages) in human readable format. If
118 this environment variable is set to 0, the format of standard
119 error messages might be written in some format not easily
120 read by humans. If missing, a value of 1 is assumed.
122 * - **RMR_LOG_VLEVEL**
124 This is a numeric value which corresponds to the verbosity
125 level used to limit messages written to standard error. The
126 lower the number the less chatty RMR functions are during
127 execution. The following is the current relationship between
128 the value set on this variable and the messages written:
138 Off; no messages of any sort are written.
142 Only critical messages are written (default if this variable
147 Errors and all messages written with a lower value.
151 Warnings and all messages written with a lower value.
155 Informational and all messages written with a lower value.
159 Debugging mode -- all messages written, however this requires
160 RMR to have been compiled with debugging support enabled.
164 * - **RMR_RTG_ISRAW**
166 **Deprecated.** Should be set to 1 if the route table
167 generator is sending "plain" messages (not using RMR to send
168 messages), 0 if the RTG is using RMR to send. The default is
169 1 as we don't expect the RTG to use RMR.
171 This variable is only recognised when using the NNG transport
172 library as it is not possible to support NNG "raw"
173 communications with other transport libraries. It is also
174 necessary to match the value of this variable with the
175 capabilities of the Route Manager; at some point in the
176 future RMR will assume that all Route Manager messages will
177 arrive via an RMR connection and will ignore this variable.
181 This is used to supply a static route table which can be used
182 for debugging, testing, or if no route table generator
183 process is being used to supply the route table. If not
184 defined, no static table is used and RMR will not report
185 *ready* until a table is received. The static route table may
186 contain both the route table (between newrt start and end
187 records), and the MEID map (between meid_map start and end
192 This is either the name or IP address which is placed into
193 outbound messages as the message source. This will used when
194 an RMR based application uses the rmr_rts_msg() function to
195 return a response to the sender. If not supplied RMR will use
196 the hostname which in some container environments might not
199 The value of this variable is also used for Route Manager
200 messages which are sent via an RMR connection.
202 * - **RMR_VCTL_FILE**
204 This supplies the name of a verbosity control file. The core
205 RMR functions do not produce messages unless there is a
206 critical failure. However, the route table collection thread,
207 not a part of the main message processing component, can
208 write additional messages to standard error. If this variable
209 is set, RMR will extract the verbosity level for these
210 messages (0 is silent) from the first line of the file.
211 Changes to the file are detected and thus the level can be
212 changed dynamically, however RMR will only suss out this
213 variable during initialisation, so it is impossible to enable
214 verbosity after startup.
218 If set to 1, RMR will write some warnings which are
219 non-performance impacting. If the variable is not defined, or
220 set to 0, RMR will not write these additional warnings.