Update documentation with links
[nonrtric.git] / docs / overview.rst
1 .. This work is licensed under a Creative Commons Attribution 4.0 International License.
2 .. SPDX-License-Identifier: CC-BY-4.0
3 .. Copyright (C) 2021 Nordix
4
5 .. |archpic| image:: ./images/nonrtric-architecture-E.png
6   :alt: Image: O-RAN SC - NONRTRIC Overall Architecture
7
8 Summary
9 -------
10
11 The Non-RealTime RIC (RAN Intelligent Controller) is an Orchestration and Automation function described by the O-RAN Alliance for non-real-time intelligent management of RAN (Radio Access Network) functions.
12
13 The primary goal of the Non-RealTime RIC is to support non-real-time radio resource management, higher layer procedure optimization, policy optimization in RAN, and providing guidance, parameters, policies and AI/ML models to support the operation of near-RealTime RIC functions in the RAN to achieve higher-level non-real-time objectives.
14
15 Non-RealTime RIC functions include service and policy management, RAN analytics and model-training for the near-RealTime RICs.
16 The Non-RealTime RIC platform hosts and coordinates rApps (Non-RT RIC applications) to perform Non-RealTime RIC tasks.
17 The Non-RealTime RIC also hosts the new R1 interface (between rApps and SMO/Non-RealTime-RIC services).
18
19 The O-RAN-SC (OSC) NONRTRIC project provides concepts, architecture and reference implementations as defined and described by the `O-RAN Alliance <https://www.o-ran.org>`_ architecture.
20 The OSC NONRTRIC implementation communicates with near-RealTime RIC elements in the RAN via the A1 interface. Using the A1 interface the NONRTRIC will facilitate the provision of policies for individual UEs or groups of UEs; monitor and provide basic feedback on policy state from near-RealTime RICs; provide enrichment information as required by near-RealTime RICs; and facilitate ML model training, distribution and inference in cooperation with the near-RealTime RICs.
21
22 |archpic|
23
24 Find detailed description of the NONRTRIC project see the `O-RAN SC NONRTRIC Project Wiki <https://wiki.o-ran-sc.org/display/RICNR/>`_.
25
26 NONRTRIC components
27 -------------------
28
29 These are the components that make up the Non-RT-RIC:
30
31 * `Non-RT-RIC Control Panel <#non-rt-ric-control-panel-nonrtric-dashboard>`_. :doc:`Documentation site <controlpanel:index>`.
32 * `Information Coordinator Service <#information-coordination-service>`_. :doc:`Documentation site <informationcoordinatorservice:index>`.
33 * `A1 Policy Management Service <#a1-policy-management-service-from-onap-ccsdk>`_. :doc:`Documentation site <a1policymanagementservice:index>`.
34 * `A1 Policy Controller / Adapter <#a1-sdnc-controller-a1-adapter-controller-plugin>`_.
35 * `Near-RT RIC A1 Simulator <#a1-interface-near-rt-ric-simulator>`_. :doc:`Documentation site <simulator:index>`.
36 * `Non-RT-RIC (Spring Cloud) Service Gateway <#non-rt-ric-spring-cloud-service-gateway>`_.
37 * `Non-RT-RIC (Kong) Service Exposure Prototyping <#non-rt-ric-kong-service-exposure-prototyping>`_.
38 * `DMaaP/Kafka Information Producer Adapters <#dmaap-kafka-information-producer-adapters>`_. :doc:`Documentation site adapter <dmaapadapter:index>`. :doc:`Documentation site mediator <dmaapmediatorproducer:index>`.
39 * `Initial Non-RT-RIC App Catalogue <#initial-non-rt-ric-app-catalogue>`_. :doc:`Documentation site <rappcatalogue:index>`.
40 * `Initial K8S Helm Chart LCM Manager <#id5>`_. :doc:`Documentation site <helmmanager:index>`.
41 * `Test Framework <#id1>`_.
42 * `Use Cases: <#non-rt-ric-use-cases>`_:
43
44   * "Helloworld" O-RU Fronthaul Recovery use case. :doc:`Documentation site <orufhrecovery:index>`.
45   * "Helloworld" O-DU Slice Assurance use case. :doc:`Documentation site <ransliceassurance:index>`.
46
47 Non-RT-RIC Control Panel / NONRTRIC Dashboard
48 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49
50 Graphical user interface.
51
52 - View and Manage A1 policies in the RAN (near-RT-RICs)
53 - Graphical A1 policy creation/editing is model-driven, based on policy type's JSON schema
54 - View and manage producers and jobs for the Information coordinator service
55 - Configure A1 Policy Management Service (e.g. add/remove near-rt-rics)
56 - Interacts with the A1-Policy Management Service & Information Coordination Service (REST NBIs) via Service Exposure gateway
57
58 Implementation:
59
60 - Frontend: Angular framework
61 - Repo: *portal/nonrtric-controlpanel*
62 - `Wiki <https://wiki.o-ran-sc.org/display/RICNR/>`_ to set up in your local environment.
63 - Documentation at the :doc:`NONRTRIC-Portal documentation site <controlpanel:index>`.
64
65 Information Coordination Service
66 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
67
68 The ICS is a data subscription service which decouples data producers from data consumers. A data consumer can create a data subscription (Information Job) without any knowledge of its data producers (one subscription may involve several data producers). A data producer has the ability to produce one or several types of data (Information Type). One type of data can be produced by zero to many producers.
69
70 A data consumer can have several active data subscriptions (Information Job). One Information Job consists of the type of data to produce and additional parameters, which may be different for different data types. These parameters are not defined or limited by this service.
71
72 Maintains a registry of:
73 - Information Types / schemas
74 - Information Producers
75 - Information Consumers
76 - Information Jobs
77
78 The service is not involved in data delivery and hence does not put restrictions on this. 
79
80 Implementation:
81
82 - Implemented as a Java Spring Boot application.
83 - Repo: *nonrtric/plt/informationcoordinatorservice*.
84 - Documentation at the :doc:`Information Coordination Service site <informationcoordinatorservice:index>`.
85
86 A1 Policy Management Service (from ONAP CCSDK)
87 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
88
89 A1 Controller Service above A1 Controller/Adapter that provides:
90
91 - Unified REST & DMaaP NBI APIs for managing A1 Policies in all near-RT-RICs.
92
93   - Query A1 Policy Types in near-RT-RICs.
94   - Create/Query/Update/Delete A1 Policy Instances in near-RT-RICs.
95   - Query Status for A1 Policy Instances.
96
97 Maintains (persistent) cache of RAN's A1 Policy information.
98
99 - Support RAN-wide view of A1 Policy information.
100 - Streamline A1 traffic.
101 - Enable (optional) re-synchronization after inconsistencies / near-RT-RIC restarts.
102 - Supports a large number of near-RT-RICs (& multi-version support).
103
104 - Converged ONAP & O-RAN-SC A1 Adapter/Controller functions in ONAP SDNC/CCSDK (Optionally deploy without A1 Adapter to connect direct to near-RT-RICs).
105 - Support for different Southbound connectors per near-RT-RIC - e.g. different A1 versions, different near-RT-RIC version, different A1 adapter/controllers supports different or proprietary A1 controllers/EMSs.
106
107 Implementation:
108
109 - Implemented as a Java Spring Boot application.
110 - Wiki: `A1 Policy Management Service in ONAP <https://wiki.onap.org/pages/viewpage.action?pageId=84672221>`_ .
111 - Repo: *nonrtric/plt/a1policymanagementservice*.
112 - Documentation at the :doc:`A1 Policy Management Service documentation site <a1policymanagementservice:index>`.
113
114 A1/SDNC Controller & A1 Adapter (Controller plugin)
115 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
116 Mediation point for A1 interface termination in SMO/NONRTRIC.
117
118 - Implemented as CCSDK OSGI Feature/Bundles.
119 - A1 REST southbound.
120 - RESTCONF Northbound.
121 - NETCONF YANG > RESTCONF adapter.
122 - SLI Mapping logic supported.
123 - Can be included in an any controller based on ONAP CCSDK.
124
125 Implementation:
126
127 - Repo: *nonrtric/plt/sdnca1controller*
128 - Wiki: `A1 Adapter/Controller Functions in ONAP <https://wiki.onap.org/pages/viewpage.action?pageId=84672221>`_ .
129
130 A1 Interface / Near-RT-RIC Simulator
131 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
132
133 Stateful A1 test stub.
134
135 - Used to create multiple stateful A1 providers (simulated near-rt-rics).
136 - Supports A1-Policy and A1-Enrichment Information.
137 - Swagger-based northbound interface, so easy to change the A1 profile exposed (e.g. A1 version, A1 Policy Types, A1-E1 consumers, etc).
138 - All A1-AP versions supported.
139
140 Implementation:
141
142 - Implemented as a Python application.
143 - Repo: *sim/a1-interface*.
144 - Documentation at the :doc:`A1 Simulator documentation site <simulator:index>`.
145
146 Non-RT-RIC (Spring Cloud) Service Gateway
147 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
148 Support Apps to use A1 Services.
149
150 - `Spring Cloud Gateway <https://cloud.spring.io/spring-cloud-gateway>`_ provides the library to build a basic API gateway.
151 - Exposes A1 Policy Management Service & Information Coordinator Service.
152 - Additional predicates can be added in code or preferably in the Gateway yaml configuration.
153
154 Implementation:
155
156 - Implemented as a Java Spring Cloud application.
157 - Repo: *portal/nonrtric-controlpanel*.
158
159
160 Non-RT-RIC (Kong) Service Exposure Prototyping
161 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
162
163 Support Apps to use NONRTRIC, SMO and other App interfaces.
164 A building block for coming releases as the R1 Interface concept matures .
165
166 - Support dynamic registration and exposure of service interfaces to Non-RT-RIC applications (& NONRTRIC Control panel).
167 - Extends a static gateway function specifically for NONRTRIC Control panel (described above).
168 - Initial version based on `Kong API Gateway <https://docs.konghq.com/gateway-oss>`_ function.
169 - Initial exposure candidates include A1 (NONRTRIC) services & O1 (OAM/SMO) services.
170
171 NONRTRIC Kubernetes deployment - including Kong configurations can be found in the OSC `it/dep <https://gerrit.o-ran-sc.org/r/gitweb?p=it/dep.git;a=tree;f=nonrtric/helm/nonrtric>`_ Gerrit repo.
172
173 DMaaP/Kafka Information Producer Adapters
174 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
175
176 Configurable mediators to take information from DMaaP and Kafka and present it as a coordinated Information Producer.
177
178 These mediators/adapters are generic information producers, which register themselves as information producers of defined information types in Information Coordination Service (ICS).
179 The information types are defined in a configuration file.
180 Information jobs defined using ICS then allow information consumers to retrieve data from DMaaP MR or Kafka topics (accessing the ICS API).
181
182 There are two alternative implementations to allow Information Consumers to consume DMaaP or Kafka events as coordinated Information Jobs.
183
184 Implementation:
185
186 - Implementation in Java Spring (DMaaP Adapter), repo: *nonrtric/plt/dmaapadapter*, see :doc:`DMaaP Adapter documentation site <dmaapadapter:index>`.
187 - Implemention in Go (DMaaP Mediator Producer), repo: *nonrtric/plt/dmaapmediatorproducer*, see :doc:`DMaaP Mediator Producer documentation site <dmaapmediatorproducer:index>`.
188
189 Initial Non-RT-RIC App Catalogue
190 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
191
192 Register for Non-RT-RIC Apps.
193
194 - Non-RT-RIC Apps can be registered / queried.
195 - Limited functionality/integration for now.
196 - *More work required in coming releases as the rApp concept matures*.
197
198 Implementation:
199
200 - Implemented as a Java Spring Boot application.
201 - Repo: *nonrtric/plt/rappcatalogue*
202 - Documentation at the :doc:`rApp Catalogue documentation site <rappcatalogue:index>`.
203
204 Initial K8S Helm Chart LCM Manager
205 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
206
207 Onboard, start, stop, and modify Non-RT-RIC App µServices as Helm Charts.
208 *A building block for coming releases as the R-APP concept matures*.
209
210 - Interfaces that accepts Non-RT-RIC App µServices Helm Charts.
211 - Support basic LCM operations.
212 - Onboard, Start, Stop, Modify, Monitor.
213 - Initial version co-developed with v. similar functions in ONAP.
214 - *Limited functionality/integration for now*.
215
216 Implementation:
217
218 - Implemented as a Java Spring Boot application.
219 - Repo: *nonrtric/plt/helmmanager*
220 - Documentation at the :doc:`Helm Manager documentation site <helmmanager:index>`.
221
222 Test Framework
223 ~~~~~~~~~~~~~~
224
225 A full test environment with extensive test cases/scripts can be found in the ``test`` directory in the *nonrtric* source code.
226
227 Non-RT-RIC Use Cases
228 ~~~~~~~~~~~~~~~~~~~~
229
230 "Helloworld" O-RU Fronthaul Recovery use case
231 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
232
233 A very simplified closed-loop rApp use case to re-establish front-haul connections between O-DUs and O-RUs if they fail. Not intended to to be 'real-world'.
234
235 Implementation:
236
237 - One version implemented in Python, one in Go as an Information Coordination Service Consumer, and one as an apex policy.
238 - Repo: *nonrtric/rapp/orufhrecovery*
239 - Documentation at the :doc:`O-RU Fronthaul Recovery documentation site <orufhrecovery:index>`.
240
241 "Helloworld" O-DU Slice Assurance use case
242 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
243
244 A very simplified closed-loop rApp use case to re-prioritize a RAN slice's radio resource allocation priority if sufficient throughput cannot be maintained. Not intended to to be 'real-world'.
245
246 Implementation:
247
248 - One version implemented in Go as a micro service, one in Go as an Information Coordination Service Consumer.
249 - Repo: *nonrtric/rapp/ransliceassurance*
250 - Documentation at the :doc:`O-DU Slice Assurance documentation site <ransliceassurance:index>`.