Fix potential pointer use err in SI95
[ric-plt/lib/rmr.git] / docs / config-deploy.rst
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.
6
7 ============================================================================================
8 Configuration and Deployment
9 ============================================================================================
10
11
12 OVERVIEW
13 ========
14
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.
20
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
24 entity.
25
26
27 Configuration
28 -------------
29
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.
39
40     .. list-table::
41       :widths: auto
42       :header-rows: 0
43       :class: borderless
44
45       * - **RMR_ASYNC_CONN**
46         -
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.
54
55       * - **RMR_BIND_IF**
56         -
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.
62
63       * - **RMR_CTL_PORT**
64         -
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.
68
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.
74
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.
79
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
83           used (routemgr:4561).
84
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.
88
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.
94
95       * - **RMR_RTG_SVC**
96         -
97           The value of this variable depends on the Route Manager in
98           use.
99
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
103           connections.
104
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.
108
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.
113
114       * - **RMR_HR_LOG**
115         -
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.
121
122       * - **RMR_LOG_VLEVEL**
123         -
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:
129
130
131               .. list-table::
132                 :widths: auto
133                 :header-rows: 0
134                 :class: borderless
135
136                 * - **0**
137                   -
138                     Off; no messages of any sort are written.
139
140                 * - **1**
141                   -
142                     Only critical messages are written (default if this variable
143                     does not exist)
144
145                 * - **2**
146                   -
147                     Errors and all messages written with a lower value.
148
149                 * - **3**
150                   -
151                     Warnings and all messages written with a lower value.
152
153                 * - **4**
154                   -
155                     Informational and all messages written with a lower value.
156
157                 * - **5**
158                   -
159                     Debugging mode -- all messages written, however this requires
160                     RMR to have been compiled with debugging support enabled.
161
162
163
164       * - **RMR_RTG_ISRAW**
165         -
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.
170
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.
178
179       * - **RMR_SEED_RT**
180         -
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
188           records).
189
190       * - **RMR_SRC_ID**
191         -
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
197           be routable.
198
199           The value of this variable is also used for Route Manager
200           messages which are sent via an RMR connection.
201
202       * - **RMR_VCTL_FILE**
203         -
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.
215
216       * - **RMR_WARNINGS**
217         -
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.
221
222