From 7535e999443ad31307a5259a66e6f579b1b779be Mon Sep 17 00:00:00 2001 From: Teodora Date: Thu, 7 Mar 2024 21:01:51 +0100 Subject: [PATCH] E2AP README & FlexRIC commit ID update --- openair2/E2AP/README.md | 176 ++++++++++++++++++++++++---------------- openair2/E2AP/flexric | 2 +- 2 files changed, 107 insertions(+), 71 deletions(-) diff --git a/openair2/E2AP/README.md b/openair2/E2AP/README.md index cf6e8b8cd5..08cdf37067 100644 --- a/openair2/E2AP/README.md +++ b/openair2/E2AP/README.md @@ -13,6 +13,8 @@ Please see [NOTICE](NOTICE.md) file for third party software that is included in This tutorial describes the steps of deployment 5G OAI RAN, with integrated E2 agent and a nearRT-RIC using O-RAN compliant FlexRIC. +[[_TOC_]] + # 1. Installation ## 1.1 Install prerequisites @@ -21,7 +23,7 @@ This tutorial describes the steps of deployment 5G OAI RAN, with integrated E2 a On Ubuntu, you might want to use [this PPA](https://apt.kitware.com/) to install an up-to-date version. -- SWIG (at least v.4.0). +- SWIG (at least v.4.1). We use SWIG as an interface generator to enable the multi-language feature (i.e., C/C++ and Python) for the xApps. Please, check your SWIG version (i.e, `swig -version`) and install it from scratch if necessary as described here: https://swig.org/svn.html or via the code below: @@ -69,17 +71,11 @@ Currently available versions: | E2AP v2.03 | Y | Y | | E2AP v3.01 | Y | Y | - Please note that KPM SM v2.01 is supported only in FlexRIC, but not in OAI. +Please note that KPM SM v2.01 is supported only in FlexRIC, but not in OAI. ```bash cd cmake_targets/ ./build_oai -I -w SIMU --gNB --nrUE --build-e2 --ninja -``` -If the openair2/E2AP/flexric folder is empty, try manually the following commands - -```bash -git submodule init -git submodule update ``` * `-I` option is to install pre-requisites, you only need it the first time you build the softmodem or when some oai dependencies have changed. @@ -89,16 +85,22 @@ git submodule update * `--ninja` is to use the ninja build tool, which speeds up compilation * `--build-e2` option is to use the E2 agent, integrated within RAN. +If the openair2/E2AP/flexric folder is empty, try manually the following commands: +```bash +git submodule init +git submodule update +``` + ## 2.2 FlexRIC -- By default, FlexRIC will build the nearRT-RIC with E2AP v2 and KPM v2. If you want a different version, edit the variable E2AP\_VERSION and KPM\_VERSION at FlexRIC's CMakeLists.txt file. Note that OAI's and FlexRIC's E2AP\_VERSION and KPM\_VERSION need to match due to O-RAN incompatibilities among versions. +By default, FlexRIC will build the nearRT-RIC with E2AP v2 and KPM v2. If you want a different version, edit the variable E2AP\_VERSION and KPM\_VERSION at FlexRIC's CMakeLists.txt file. Note that OAI's and FlexRIC's E2AP\_VERSION and KPM\_VERSION need to match due to O-RAN incompatibilities among versions. ### 2.2.1 Clone the FlexRIC repository ```bash git clone https://gitlab.eurecom.fr/mosaic5g/flexric flexric cd flexric/ -git checkout 29af8408afad3da36824bd7912562202023ae924 +git checkout 34d6810f9ab435ac3a4023d5e1917669e24341da ``` ### 2.2.2 Build FlexRIC @@ -113,27 +115,47 @@ sudo make install By default the service model libraries will be installed in the path `/usr/local/lib/flexric` while the configuration file in `/usr/local/etc/flexric`. -#### 2.2.3.1 Available Service Models -1. KPM v02.03 and KPM v03.00 (`xapp_kpm_moni`) -At the moment, the following measurements are supported in OAI RAN: -* "DRB.PdcpSduVolumeDL" -* "DRB.PdcpSduVolumeUL" -* "DRB.RlcSduDelayDl" -* "DRB.UEThpDl" -* "DRB.UEThpUl" -* "RRU.PrbTotDl" -* "RRU.PrbTotUl" +# 3. Service Models available in OAI RAN -2. RC v01.03 -Currently available RC xApps: -* `xapp_kpm_rc` - RAN control function "QoS flow mapping configuration" support, i.e. creating a new DRB. -* `xapp_rc_moni` - aperiodic subscription support for "UE RRC State Change" +## 3.1 O-RAN -3. MAC + RLC + PDCP + GTP (`xapp_gtp_mac_rlc_pdcp_moni`) +We assume that user is familiar with O-RAN WG3 specifications that can be found at https://orandownloadsweb.azurewebsites.net/specifications. + +### 3.1.1 E2SM-KPM + +As mentioned in section [2.1.2 Build OAI with E2 Agent](#212-build-oai-with-e2-agent), we support KPM v2.03/v3.00. Uses ASN.1 encoding. + +Per O-RAN specifications, 5G measurements supported by KPM are specified in 3GPP TS 28.552. + +From 3GPP TS 28.552, we support the following list: + * "DRB.PdcpSduVolumeDL" + * "DRB.PdcpSduVolumeUL" + * "DRB.RlcSduDelayDl" + * "DRB.UEThpDl" + * "DRB.UEThpUl" + * "RRU.PrbTotDl" + * "RRU.PrbTotUl" + +From O-RAN.WG3.E2SM-KPM-version specification, we implemented: + * REPORT Service Style 4 ("Common condition-based, UE-level" - section 7.4.5) - fetch above measurements per each UE that matches common criteria (e.g. S-NSSAI). + +### 3.1.2 E2SM-RC + +We support RC v1.03. Uses ASN.1 encoding. + +From ORAN.WG3.E2SM-RC-v01.03 specification, we implemented: + * REPORT Service Style 4 ("UE Information" - section 7.4.5) - aperiodic subscription for "UE RRC State Change" + * CONTROL Service Style 1 ("Radio Bearer Control" - section 7.6.2) - "QoS flow mapping configuration" (e.g creating a new DRB) + +## 3.2 Custom Service Models + +In addition, we support custom Service Models, such are MAC, RLC, PDCP, and GTP. Use plain encoding. If you are interested in TC and SLICE SMs, please follow the instructions at https://gitlab.eurecom.fr/mosaic5g/flexric. -# 3. Start the process +# 4. Start the process + +At this point, we assume the 5G Core Network is already running in the background. For more information, please follow the tutorial at https://gitlab.eurecom.fr/oai/openairinterface5g/-/blob/develop/doc/NR_SA_Tutorial_OAI_CN5G.md. In order to configure E2 agent, please, add the following block in OAI's configuration file: ```bash @@ -142,61 +164,75 @@ e2_agent = { sm_dir = "/usr/local/lib/flexric/" } ``` +* start E2 Node agents -* start the gNB-mono -```bash -cd oai/cmake_targets/ran_build/build -sudo ./nr-softmodem -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf --rfsim --sa -E -``` + As per O-RAN.WG3.E2SM-v02.00 specifications, UE ID (section 6.2.2.6) representation in OAI is: + | | gNB-mono | CU | CU-CP | CU-UP | DU | + |:----------------------|:----------------|:----------------|:----------------|:----------------------|:-------------------| + | CHOICE UE ID case | GNB_UE_ID_E2SM | GNB_UE_ID_E2SM | GNB_UE_ID_E2SM | GNB_CU_UP_UE_ID_E2SM | GNB_DU_UE_ID_E2SM | + | AMF UE NGAP ID | amf_ue_ngap_id | amf_ue_ngap_id | amf_ue_ngap_id | | | + | GUAMI | guami | guami | guami | | | + | gNB-CU UE F1AP ID | | rrc_ue_id | | | rrc_ue_id | + | gNB-CU-CP UE E1AP ID | | | rrc_ue_id | rrc_ue_id | | + | RAN UE ID | rrc_ue_id | rrc_ue_id | rrc_ue_id | rrc_ue_id | rrc_ue_id | -* if CU/DU split is used, start the gNB as follows -```bash -sudo ./nr-softmodem -O --rfsim --sa -E -sudo ./nr-softmodem -O --sa -``` + * start the gNB-mono + ```bash + cd oai/cmake_targets/ran_build/build + sudo ./nr-softmodem -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf --rfsim --sa -E + ``` -* if CU-CP/CU-UP/DU split is used, start the gNB as follows -```bash -sudo ./nr-softmodem -O --rfsim --sa -E -sudo ./nr-softmodem -O --sa -sudo ./nr-cuup -O --sa -``` + * if CU/DU split is used, start the gNB as follows + ```bash + sudo ./nr-softmodem -O --rfsim --sa -E + sudo ./nr-softmodem -O --sa + ``` + + * if CU-CP/CU-UP/DU split is used, start the gNB as follows + ```bash + sudo ./nr-softmodem -O --rfsim --sa -E + sudo ./nr-softmodem -O --sa + sudo ./nr-cuup -O --sa + ``` * start the nrUE -```bash -cd oai/cmake_targets/ran_build/build -sudo ./nr-uesoftmodem -r 106 --numerology 1 --band 78 -C 3619200000 --rfsim --sa --uicc0.imsi 001010000000001 --rfsimulator.serveraddr 127.0.0.1 -``` + ```bash + cd oai/cmake_targets/ran_build/build + sudo ./nr-uesoftmodem -r 106 --numerology 1 --band 78 -C 3619200000 --rfsim --sa --uicc0.imsi 001010000000001 --rfsimulator.serveraddr 127.0.0.1 + ``` * start the nearRT-RIC -```bash -cd flexric -./build/examples/ric/nearRT-RIC -``` + ```bash + cd flexric + ./build/examples/ric/nearRT-RIC + ``` -* start the KPM monitor xApp -```bash -cd flexric -./build/examples/xApp/c/monitor/xapp_kpm_moni -``` +* Start different xApps -* start the RC monitor xApp -```bash -cd flexric -./build/examples/xApp/c/monitor/xapp_rc_moni -``` + * start the KPM monitor xApp - measurements stated in [3.1.1 E2SM-KPM](#311-e2sm-kpm) for each UE that matches S-NSSAI common criteria + ```bash + cd flexric + ./build/examples/xApp/c/monitor/xapp_kpm_moni + ``` + Note: we assume that each UE has only 1 DRB; CU-UP does not store the slices, therefore "coarse filtering" is used -* start the RC control xApp -```bash -cd flexric -./build/examples/xApp/c/kpm_rc/xapp_kpm_rc -``` + * start the RC monitor xApp - aperiodic subscription for "UE RRC State Change" + ```bash + cd flexric + ./build/examples/xApp/c/monitor/xapp_rc_moni + ``` -* start the (MAC + RLC + PDCP + GTP) monitor xApp -```bash -cd flexric -./build/examples/xApp/c/monitor/xapp_gtp_mac_rlc_pdcp_moni -``` + * start the RC control xApp - RAN control function "QoS flow mapping configuration" (e.g. creating a new DRB) + ```bash + cd flexric + ./build/examples/xApp/c/kpm_rc/xapp_kpm_rc + ``` + + * start the (MAC + RLC + PDCP + GTP) monitor xApp + ```bash + cd flexric + ./build/examples/xApp/c/monitor/xapp_gtp_mac_rlc_pdcp_moni + ``` The latency that you observe in your monitor xApp is the latency from the E2 Agent to the nearRT-RIC and xApp. Therefore, FlexRIC is well suited for use cases with ultra low-latency requirements. Additionally, all the data received in the `xapp_gtp_mac_rlc_pdcp_moni` xApp is also written to /tmp/xapp_db in case that offline data processing is wanted (e.g., Machine Learning/Artificial Intelligence applications). You can browse the data using e.g., sqlitebrowser. diff --git a/openair2/E2AP/flexric b/openair2/E2AP/flexric index 7c424e882a..34d6810f9a 160000 --- a/openair2/E2AP/flexric +++ b/openair2/E2AP/flexric @@ -1 +1 @@ -Subproject commit 7c424e882adae6ad72a24470d8c3e731189062c0 +Subproject commit 34d6810f9ab435ac3a4023d5e1917669e24341da