---
# System prepended metadata

title: '<center><i class="fa fa-edit"></i> xApp Mgr, Route Mgr, Sub Mgr </center>'
tags: [RIC]

---

# <center><i class="fa fa-edit"></i> xApp Mgr, Route Mgr, Sub Mgr </center>
###### tags: `RIC`

:::warning
**References:**
-  [xApp Manager](https://github.com/o-ran-sc/ric-plt-appmgr)
- [Routing Manager](https://github.com/o-ran-sc/ric-plt-rtmgr)
- [Subscription Manager](https://github.com/o-ran-sc/ric-plt-submgr)
- [Connection between the managers](https://docs.o-ran-sc.org/projects/o-ran-sc-ric-plt-rtmgr/en/latest/api-docs.html)
:::

---

## xApp Manager
The **xApp Manager** provides a flexible and secure way to manage xApps on the RIC. It has a REST API that is able to do the following:
* xApp
    * Deploy / undeploy
    * Query status of xApps and xApp instances
    * Perform a health check on the RIC
* Subcriptions (hooks)
    * Add and delete subscription
    * Updating subscriptions
    * Getting subscriptions

The functions may also be called from a command line interface.

xApp status when queried displays the following:
* xApp name and version
* Status
* Instances
    * Individual names and status
    * IP
    * Bound port
    * TX / RX messages

---
## Routing Manager
The **Routing Manager** is responsible for distributing routing policies among other platform components and xApps.

In order to get xApp details from xApp Mgr, it can use:
* **httpGetter** - periodically asks xApp Mgr for a list of xApps
* **httpRESTful** - Creates a webhook subscription in xAppMgr to send the xApp list whenever xApp availability updates there.

The data received is then stored and processed for routing and distributes them to all xApps.

The architecture consists of functions:
* **Northbound (NBI)** - Communications channels towards RIC manager components
    * **httpGet** - `GET` from the xApp list URL.
    * **httpRESTful** - REST API endpoints towards RIC manager components.
* **Routing Policy Engine (RPE)** - Routing policy calculation logic
    * **rmr** - create RIC routing policies
* **SDL** - Access to different kinds of persistent stores
    * **file** - xApp data to filesystem in container
    * **sdl** - SDL backend (Redis)
* **Southbound (SBI)** - Towards RIC tenants and control components
    * **nngpub** - distribute RPE policies via NNG pub
    * **nngpipe** - distribute RPE policies via NNG pipeline
* **Control logic (rtmgr)** - Controls operations of NBI, RPE, SDL, SBI

---
## Subscription Manager
The **Subscription Manager** is esponsible to serve, coordinate and manage xApps' subscriptions.

It acts as an anchor point for subscription related internal messaging.

Every xApp sends its subscription related messages to Submgr, which invokes Routing Manager (Rtmgr) to create or tear down the subscription related routes.

It also sends to the appropriate E2 Termination to signal the subscription related event towards the RAN.

---
## Use Case
This function details how the xApp Manager (`appmgr`), Routing Manager (`rtmgr`) and Subscription Manager (`submgr`) are interconnected.
1. At startup, `rtmgr` queries the xApp list and E2 term list. It also queries the subscription list.
2. Whenever an xApp is loaded or unloaded, `rtmgr` updates its own xApp table and rebuilts the route tables.
3. `submgr` adds/deletes subscriptions. Each time it does, `rtmgr` will update routes.
4. When a subscription ID is updated, `submgr` will send it to `rtmgr` for it to be updated as well.
5. Upon E2 term node add/delete, E2 Manager will signal to `rtmgr` to update/delete FQDN of E2 termination instance in its table, then reconstruct routes.
6. When E2 Manager associates RAN to an E2 term node, it will signal to `rtmgr` to map the RAN to it.