Remove Healthcheck usecase
[nonrtric.git] / docs / overview.rst
index 3824f31..2d3ee66 100644 (file)
 .. This work is licensed under a Creative Commons Attribution 4.0 International License.
 .. SPDX-License-Identifier: CC-BY-4.0
+.. Copyright (C) 2021 Nordix
 
+.. |archpic| image:: ./images/nonrtric-architecture-E.png
+  :alt: Image: O-RAN SC - NONRTRIC Overall Architecture
 
-Requirements for the Non-RT RIC project
-==========================================
+Summary
+-------
 
-Find detailed description of what Non-RT RIC is on this `page`_.
+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.
 
-.. _page: https://wiki.o-ran-sc.org/display/RICNR/
+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.
 
-There are functional requirements emitted by O-RAN WG2 for the Non-RT RIC, which are the following:
+Non-RealTime RIC functions include service and policy management, RAN analytics and model-training for the near-RealTime RICs.
+The Non-RealTime RIC platform hosts and coordinates rApps (Non-RT RIC applications) to perform Non-RealTime RIC tasks.
+The Non-RealTime RIC also hosts the new R1 interface (between rApps and SMO/Non-RealTime-RIC services).
 
-#. Non-RT RIC shall support data retrieval and analysis; the data may include performance, configuration or other data related to the application (recommended data shown in required data section for  different use cases).
-#. Non-RT RIC shall support relevant AI/ML model training based on the data in 1. for non-real-time optimization of configuration parameters in RAN or Near-RT RIC, as applicable for the use case.
-#. Non-RT RIC shall support relevant AI/ML model training based on the data in 1. for generating/optimizing policies and intents to guide the behavior of applications in Near-RT RIC or RAN, as applicable for the use case.
-#. Non-RT RIC shall support training of relevant AI/ML models based on the data in 1. to be deployed/updated in Near-RT RIC as required by the applications.
-#. Non-RT RIC shall support performance monitoring and evaluation.
-#. Non-RT RIC shall support a fallback mechanism to prevent drastic degradation/fluctuation of performance, e.g. to restore to the previous policy or configuration.
+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.
+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.
 
-The non-functional requirements are the following ones:
+|archpic|
 
-#. Non-RT RIC shall not update the same policy or configuration parameter for a given near-RT RIC or RAN function more often than once per second.
-#. Non-RT RIC shall be able to update policies in several near-RT RICs.
+Find detailed description of the NONRTRIC project see the `O-RAN SC NONRTRIC Project Wiki <https://wiki.o-ran-sc.org/display/RICNR/>`_.
 
-Moreover, there are functional requirements regarding the A1 interface:
+NONRTRIC components
+-------------------
 
-#. A1 interface shall support communication of policies/intents from Non-RT RIC to Near-RT RIC.
-#. A1 interface shall support AI/ML model deployment and update from Non-RT RIC to Near-RT RIC.
-#. A1 interface shall support communication of enrichment information from Non-RT RIC to Near-RT RIC.
-#. A1 interface shall support feedback from Near-RT RIC for monitoring AI/ML model performance.
-#. A1 interface shall support the policy/intents feedback from Near-RT RIC to Non-RT RIC.
+These are the components that make up the Non-RT-RIC:
 
-A1 policy procedure
--------------------
+* Non-RT-RIC Control Panel
+* Information Coordinator Service
+* A1 Policy Management Service
+* A1 Policy Controller / Adapter
+* Near-RT RIC A1 Simulator
+* Non-RT-RIC (Spring Cloud) Service Gateway
+* Non-RT-RIC (Kong) Service Exposure Prototyping
+* DMaaP/Kafka Information Producer Adapters
+* Initial Non-RT-RIC App Catalogue
+* Initial K8S Helm Chart LCM Manager
+* Test Framework
+* Use Cases
+
+  + "Helloworld" O-RU Fronthaul Recovery use case
+  + "Helloworld" O-DU Slice Assurance use case
+
+The source code for "E" Release is in the `NONRTRIC <https://gerrit.o-ran-sc.org/r/admin/repos/nonrtric>`_, `NONRTRIC-ControlPanel <https://gerrit.o-ran-sc.org/r/admin/repos/portal/nonrtric-controlpanel>`_, and `Near-RT-RIC A1-Simulator <https://gerrit.o-ran-sc.org/r/admin/repos/sim/a1-interface>`_ Gerrit source repositories (E-Release Branch).
+
+Non-RT-RIC Control Panel / NONRTRIC Dashboard
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Graphical user interface.
+
+* View and Manage A1 policies in the RAN (near-RT-RICs)
+* Graphical A1 policy creation/editing is model-driven, based on policy type's JSON schema
+* View and manage producers and jobs for the Information coordinator service
+* Configure A1 Policy Management Service (e.g. add/remove near-rt-rics)
+* Interacts with the A1-Policy Management Service & Information Coordination Service (REST NBIs) via Service Exposure gateway
+
+Implementation:
+
+* Frontend: Angular framework
+* Repo: *portal/nonrtric-controlpanel*
+
+Please refer the developer guide and the `Wiki <https://wiki.o-ran-sc.org/display/RICNR/>`_ to set up in your local environment.
+
+More details available at the `NONRTRIC-Portal documentation site <https://docs.o-ran-sc.org/projects/o-ran-sc-portal-nonrtric-controlpanel>`_.
+
+Information Coordination Service
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Coordinate/Register Information Types, Producers, Consumers, and Jobs.
+
+Coordinate/Register A1-EI Types, Producers, Consumers, and Jobs (A1 Enrichment Information Job Coordination).
+
+* Maintains a registry of:
+
+  + Information Types / schemas
+  + Information Producers
+  + Information Consumers
+  + Information Jobs
+
+* Information Query API (e.g. per producer, per consumer, per types).
+* Query status of Information jobs.
+* After Information-type/Producer/Consumer/Job is successfully registered delivery/flow can happen directly between Information Producers and Information Consumers.
+* The Information Coordinator Service natively supports the O-RAN A1 Enrichment Information (A1-EI) interface, supporting coordination A1-EI Jobs where information (A1-EI)flow from the SMO/Non-RT-RIC/rApps to near-RT-RICs over the A1 interface.
+
+Implementation:
+
+* Implemented as a Java Spring Boot application.
+
+A1 Policy Management Service (from ONAP CCSDK)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+A1 Controller Service above A1 Controller/Adaptor that provides:
+
+* Unified REST & DMaaP NBI APIs for managing A1 Policies in all near-RT-RICs.
+
+  + Query A1 Policy Types in near-RT-RICs.
+  + Create/Query/Update/Delete A1 Policy Instances in near-RT-RICs.
+  + Query Status for A1 Policy Instances.
+
+* Maintains (persistent) cache of RAN's A1 Policy information.
+
+  * Support RAN-wide view of A1 Policy information.
+  * Streamline A1 traffic.
+  * Enable (optional) re-synchronization after inconsistencies / near-RT-RIC restarts.
+  * Supports a large number of near-RT-RICs (& multi-version support).
+
+* Converged ONAP & O-RAN-SC A1 Adapter/Controller functions in ONAP SDNC/CCSDK (Optionally deploy without A1 Adaptor to connect direct to near-RT-RICs).
+* 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.
+
+See also: `A1 Policy Management Service in ONAP <https://wiki.onap.org/pages/viewpage.action?pageId=84672221>`_ .
+
+Implementation:
+
+* Implemented as a Java Spring Boot application.
+
+A1/SDNC Controller & A1 Adapter (Controller plugin)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Mediation point for A1 interface termination in SMO/NONRTRIC.
+
+* Implemented as CCSDK OSGI Feature/Bundles.
+* A1 REST southbound.
+* RESTCONF Northbound.
+* NETCONF YANG > RESTCONF adapter.
+* SLI Mapping logic supported.
+* Can be included in an any controller based on ONAP CCSDK.
+
+See also: `A1 Adapter/Controller Functions in ONAP <https://wiki.onap.org/pages/viewpage.action?pageId=84672221>`_ .
+
+A1 Interface / Near-RT-RIC Simulator
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Stateful A1 test stub.
+
+* Used to create multiple stateful A1 providers (simulated near-rt-rics).
+* Supports A1-Policy and A1-Enrichment Information.
+* Swagger-based northbound interface, so easy to change the A1 profile exposed (e.g. A1 version, A1 Policy Types, A1-E1 consumers, etc).
+* All A1-AP versions supported.
+
+Implementation:
+
+* Implemented as a Python application.
+* Repo: *sim/a1-interface*.
+
+More details available at the `A1 Simulator documentation site <https://docs.o-ran-sc.org/projects/o-ran-sc-sim-a1-interface>`_
+
+Non-RT-RIC (Spring Cloud) Service Gateway
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Support Apps to use A1 Services.
+
+* `Spring Cloud Gateway <https://cloud.spring.io/spring-cloud-gateway>`_ provides the library to build a basic API gateway.
+* Exposes A1 Policy Management Service & Information Coordinator Service.
+* Additional predicates can be added in code or preferably in the Gateway yaml configuration.
+
+Implementation:
+
+* Implemented as a Java Spring Cloud application.
+* Repo: *portal/nonrtric-controlpanel*.
+
+
+Non-RT-RIC (Kong) Service Exposure Prototyping
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Support Apps to use NONRTRIC, SMO and other App interfaces.
+A building block for coming releases as the R1 Interface concept matures .
 
-As for A-release, the methods are as follows:
+* Support dynamic registration and exposure of service interfaces to Non-RT-RIC applications (& NONRTRIC Control panel).
+* Extends a static gateway function specifically for NONRTRIC Control panel (described above).
+* Initial version based on `Kong API Gateway <https://docs.konghq.com/gateway-oss>`_ function.
+* Initial exposure candidates include A1 (NONRTRIC) services & O1 (OAM/SMO) services.
 
-+---------------------+--------------------------+--------------------------+
-| A1 policy procedure | Single policy method     | Multiple policies method |
-+---------------------+--------------------------+--------------------------+
-| Create policy       | PUT                      |                          |
-+---------------------+--------------------------+--------------------------+
-| Query policy        | GET                      | GET (sequence of \*)     |
-+---------------------+--------------------------+--------------------------+
-| Update policy       | PUT                      |                          |
-+---------------------+--------------------------+--------------------------+
-| Delete policy       | DELETE                   |                          |
-+---------------------+--------------------------+--------------------------+
-| Notify policy       | POST                     | POST                     |
-+---------------------+--------------------------+--------------------------+
+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.
 
-Policy Agent Overview
-=======================
+DMaaP/Kafka Information Producer Adapters
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-The Policy Agent maintains a transient ropository of the following items to support R-Apps:
+Configurable mediators to take information from DMaaP and Kafka and present it as a coordinated Information Producer.
 
- * All NearRT RICs in the network. This information is configured using the ONAP CDS database (which is using the Cloudify Consul database).
- * All Policy types for all NearRT RICs
- * All configured Policy instances in the network
+These mediators/adapters are generic information producers, which register themselves as information producers of defined information types in Information Coordination Service (ICS).
+The information types are defined in a configuration file.
+Information jobs defined using ICS then allow information consumers to retrieve data from DMaaP MR or Kafka topics (accessing the ICS API).
 
-It provides an NBI for the R-Apps (and for the dashboard) for policy management. This is a REST API.
-As an option, policy management can also be done via asynchronous messages through ONAP/Dmaap.
-The NBI provides support for an R-APP to locate the correct NearRT RIC based on identifiers as defined in O1.
+There are two alternative implementations to allow Information Consumers to consume DMaaP or Kafka events as coordinated Information Jobs.
 
-The agent monitors all Near-RT RICs and recovers from data inconsistencies, which may happen when (for instance) an Near-RT RIC restarts.
+1. A version implemented in Java Spring (DMaaP Adaptor Service), see `DMaaP Adapter documentation site <https://docs.o-ran-sc.org/projects/o-ran-sc-nonrtric-plt-dmaapadapter/en/latest/>`_.
+2. A version implemented in Go (DMaaP Mediator Producer), see `DMaaP Mediator Producer documentation site <https://docs.o-ran-sc.org/projects/o-ran-sc-nonrtric-plt-dmaapmediatorproducer>`_.
 
-The R-Apps can be monitored so that their Policies can be automatically removed when an R-App is stopped/removed.
+Initial Non-RT-RIC App Catalogue
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-On its southbound side the agent can connect to a number of different A1 providers:
+Register for Non-RT-RIC Apps.
 
- * Directly to the NonRT RIC:
+* Non-RT-RIC Apps can be registered / queried.
+* Limited functionality/integration for now.
+* *More work required in coming releases as the rApp concept matures*.
+* Repo: *portal/nonrtric-plt-rappcatalogue*
 
-      - OSC API, which is influenced by the A1 standard
-      - The NonRT RIC simulator, which supports the A1 standard with a number of not yet CRs included.
- * To an ONAP style controller.
+More details available at the `documentation site <https://docs.o-ran-sc.org/projects/o-ran-sc-nonrtric-plt-rappcatalogue>`_.
 
-Amber release Policy Agent architecture
------------------------------------------
+Initial K8S Helm Chart LCM Manager
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-.. image:: ./images/NonRtRicComponents.png
-   :scale: 50 %
+Onboard, start, stop, and modify Non-RT-RIC App µServices as Helm Charts.
+*A building block for coming releases as the R-APP concept matures*.
 
-NonRT RIC components:
+* Interfaces that accepts Non-RT-RIC App µServices Helm Charts.
+* Support basic LCM operations.
+* Onboard, Start, Stop, Modify, Monitor.
+* Initial version co-developed with v. similar functions in ONAP.
+* *Limited functionality/integration for now*.
 
- #. Non-RT RIC Dashboard
- #. Policy agent
- #. SDNC A1 Controller
- #. Near-RT RIC Simulator
+Test Framework
+~~~~~~~~~~~~~~
 
-Dashboard Overview
-===================
+A full test environment with extensive test cases/scripts can be found in the ``test`` directory in the *nonrtric* source code.
 
-The NonRT RIC Dashboard is a graphical user  user interface that enables the user to manage the Policies in the network. The dashboard interacts with the Policy agent via a REST API.
-The dashboard generates its GUI from JSON schemas in a model driven fashion.
+Use Cases
+~~~~~~~~~
 
-The dashboards consists of a back end implemented as a Java Springboot application and a fronted developed using the Angular framework.
+"Helloworld" O-RU Fronthaul Recovery use case
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-Amber release Dashboard architecture
------------------------------------------
+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'.
 
-The architecture of the dashboardis as shown on the following picture:
+"Helloworld" O-DU Slice Assurance use case
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-.. image:: ./images/architecture.png
-   :scale: 50 %
+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'.
+* Repo: *nonrtric/rapp/ransliceassurance*
 
-The dashboard itself is split
-into the backend and the frontend, and can be deployed following the instructions in the README.md file in the repo.
\ No newline at end of file
+More details available at the `documentation site <https://docs.o-ran-sc.org/projects/o-ran-sc-nonrtric-rapp-ransliceassurance>`__.
\ No newline at end of file