... | ... | @@ -15,14 +15,22 @@ RAN"](https://dl.acm.org/doi/10.1145/3372224.3417321). |
|
|
Base station applications are FlexRAN applications that are executed directly
|
|
|
on the base station instead of within the controller (cf. Figure below). This
|
|
|
allows to extend base station behavior and lower overhead within the
|
|
|
controller. Apart from using a sample app, we will show this through an
|
|
|
controller. The applications use the FlexRAN RAN API to interface with the base
|
|
|
station user plane, and in general the same protobuf structures used in the
|
|
|
controller, making it easy to port applications from the controller to the base
|
|
|
station.
|
|
|
|
|
|
![FlexRAN Architecture with base station-local apps](fig/flexran-arch.jpg)
|
|
|
|
|
|
Apart from using a sample app, we will show this through an
|
|
|
application that manages the UE-slice application using a regex, without any
|
|
|
intervention of the controller. The applications are compiled within OAI and
|
|
|
then uploaded to a "NetStore" called Store application. Then, they can be
|
|
|
deployed from the store in the base station, configured, and released, all
|
|
|
using the north-bound interface of the controller.
|
|
|
|
|
|
![FlexRAN Architecture with base station-local apps](fig/flexran-arch.jpg)
|
|
|
The MobiCom demo also uses the burst_analysis application which has not been
|
|
|
released yet.
|
|
|
|
|
|
# Compile an application and upload it to the NetStore
|
|
|
|
... | ... | @@ -76,7 +84,7 @@ To release an application, run |
|
|
$ curl -XDELETE localhost:9999/netstore/app/sample
|
|
|
```
|
|
|
|
|
|
# Custom configuration per application
|
|
|
# Application presentation and custom configuration
|
|
|
|
|
|
The configuration is specific to every application. Since they are deployed
|
|
|
dynamically, FlexRAN cannot expose a specific north-bound interface unless a
|
... | ... | @@ -103,8 +111,56 @@ objects of either type string (`str`), `integer`, float (`floating`), or bool |
|
|
|
|
|
## Sample
|
|
|
|
|
|
The sample application's purpose is to provide a basic foundation for
|
|
|
developing new applications. It shows:
|
|
|
|
|
|
1. how to respond to configuration received from the controller
|
|
|
2. how to use FlexRAN timers to enable continuous operation
|
|
|
3. how to use the RAN API
|
|
|
|
|
|
Regarding 1., after loading the applications, you can "configure" the
|
|
|
applications with the above shown JSON like so:
|
|
|
```bash
|
|
|
$ curl -XPOST localhost:9999/netstore/app/sample --data-binary @app_reconfiguration.json
|
|
|
```
|
|
|
The application should show the following output:
|
|
|
```
|
|
|
```
|
|
|
|
|
|
Regarding 2. and 3., have a look into the application source code in
|
|
|
`openair2/ENB_APP/flexran_apps/sample.c`. In particular, FlexRAN timers are
|
|
|
started and stopped using `flexran_agent_create_timer()` and
|
|
|
`flexran_agent_destroy_timer()`. The use of the RAN API is exemplified through
|
|
|
the function `flexran_get_mac_num_ues()`. The RAN API is defined in
|
|
|
`openair2/ENB_APP/flexran_agent_ran_api.c`.
|
|
|
|
|
|
## IMSI-slice association
|
|
|
|
|
|
The imsi app is contained in `openair2/ENB_APP/flexran_apps/imsi.c`. Its
|
|
|
purpose is to automatically associate UEs to slices. Slices have to be
|
|
|
pre-configured. UEs are recognized by IMSI (individual IMSIs or via a regex),
|
|
|
i.e., it is necessary that they actually send it, e.g., when leaving flight
|
|
|
mode.
|
|
|
|
|
|
Suppose you configured OAI with two different PLMNs and core networks, one with
|
|
|
PLMN 20895 and the other 20894. Furthermore, you configured two different
|
|
|
slices, 0 and 3, in both downlink and uplink direction. By configuring the imsi
|
|
|
application with the following JSON, you can have all UEs belonging to PLMN
|
|
|
20894 be associated to slice 3.
|
|
|
```JSON
|
|
|
{
|
|
|
"params" : {
|
|
|
"regex": { "str": "^20894" },
|
|
|
"slice_dl": { "integer": 3 },
|
|
|
"slice_ul": { "integer": 3 },
|
|
|
}
|
|
|
}
|
|
|
```
|
|
|
Configure using
|
|
|
```bash
|
|
|
$ curl -XPOST localhost:9999/netstore/app/imsi --data-binary @imsi-reconfiguration.json
|
|
|
```
|
|
|
|
|
|
# Reproducing the MobiCom demo
|
|
|
|
|
|
## Auto-loading new scheduling algorithms
|
... | ... | |