Commit Graph
100 Commits
Author SHA1 Message Date
Teodora 83df3c5e79 Add OSC nearRT-RIC J release contribution and xDevSM framework 2025-06-10 10:51:32 +02:00
Teodora 26b3b16aa5 Move the OSC nearRT-RIC tutorial in OAI E2 agent from FlexRIC 2025-06-07 14:41:17 +02:00
Teodora 5b837f9250 Remove unnecessary shared volume for SMs
Follow-up for https://gitlab.eurecom.fr/mosaic5g/flexric/-/commit/497b4d345171ab92b7060b68c12f4e2e58621444.
2025-06-05 11:23:58 +02:00
Teodora a84a5328f2 Make xApp duration flexible
Improvement introduced in https://gitlab.eurecom.fr/mosaic5g/flexric/-/commit/0410c023726b18b9002f5adb39f7df95f49a7d7a.
2025-06-03 17:07:31 +02:00
Teodora 498d2f8b37 Improve OAI-FlexRIC CI pipeline
Instead of running xApps from oai-flexric container,
create dedicated xApp containers.

In addition, modify the flexric.conf: DB_PATH doesn't exist;
DB_DIR is the correct name.
2025-06-03 17:07:03 +02:00
Teodora 735bc2fa05 Delete unnecessary test cases for OAI-FlexRIC CI pipeline
Needless sleep time test case, and duplicated test case for
the xApp with custom SMs.
2025-06-03 17:07:03 +02:00
Teodora bd97d11654 Update FlexRIC submodule commit ID 2025-06-03 17:07:03 +02:00
Teodora 227f9e92f6 Properly fill RC RAN Function Name
Follow-up for https://gitlab.eurecom.fr/mosaic5g/flexric/-/commit/143c0238e977035ce9cf5491ff41f06b29f6a278.
2025-06-03 17:07:03 +02:00
Teodora dfa1bd4efe Add the NSSAI logging condition in KPM
It is a periodic output, based on the reporting period.
2025-06-03 17:07:03 +02:00
Teodora 2644594c32 Update the E2AP README
- prerequisites - use the links to FlexRIC tutorial
  - build FlexRIC - use the build tutorial from FlexRIC tutorial
  - explain in more details the supported service model functionalities
  - explanation if no RIC INDICATION is being sent
  - use multi-UE rfsim tutorial from doc/, not oai-workshops repository
2025-06-03 17:06:44 +02:00
Teodora 2b3e1772d6 Add e2_agent section in CU/DU split configuration 2025-06-02 15:22:35 +02:00
Teodora 3f930551ff Fix CU to not contain the pointer for MAC/RLC stats
Segmentation fault occured since the commit ID 9e5c5497ab,
where we try to copy the pointer which was not even been allocated. Before, we were
copying the address of a NULL pointer and therefore no segmentation fault.

This commit fixes the segmentation fault by checking if the memory was allocated, i.e. should not be
in the case of CU (as it doesn't contain MAC/RLC layers).
2025-06-02 15:22:35 +02:00
Teodora f5a75caa4c Do not check E2AP/KPM versions if E2 agent disabled 2025-06-02 15:22:35 +02:00
Teodora 4f7b44e862 Remove the cmake option XAPP_MULTILANGUAGE from all Dockerfiles
The FlexRIC main CMakeLists.txt sets XAPP_MULTILANGUAGE to OFF by default.
Related commit ID: https://gitlab.eurecom.fr/mosaic5g/flexric/-/commit/637f718c3241f2f9ee809ecbd8a67ccb88575e65
2025-06-02 15:22:02 +02:00
Teodora e6e9aaed7f Clarification on the packet length needed to configure VFs
As per CUS spec, the MTU can be 1500 or 9000 B, where MTU = IQ data format.

Packet length = ethernet header + RTE_PKTMBUF_HEADROOM + MTU

However, xran assumes different definitions of the MTU:
(1) in xran_init_mbuf_pool(): MTU = ethernet header + IQ data format;
(2) in xran_get_num_prb_elm(), xran_init_PrbMap_from_cfg(), xran_init_PrbMap_from_cfg_for_rx(), xran_init_PrbMap_by_symbol_from_cfg(): MTU = complitely wrong (as the IQ data format is not well included).

Additionally, xran assumes that the max MTU 9600 B, instead of 9000 B as per spec.
Nevertheless, I left 9600 B in all config files and docs due to wrong calculation of (2) for the total number of PRBs per fragment.
2025-05-13 12:55:18 +02:00
Teodora 29acc08f9e Add new Benetel supported versions 2025-05-13 12:55:18 +02:00
Teodora 3a1fc2ef65 Fix Liteon for xran F release and improve docs
1. Closes #884 - increase the XRAN_MAX_FRAGMENT from 4 to 6 (sufficient for MTU 1500 with compression 8b)
2. Add new firmware version that supports jumbo frames
3. Update the config file to align with the new Liteon unit in our lab - center frequency, jumbo frames, compression and RU MAC address,
as well as the max DL MIMO layers.
2025-05-13 12:53:16 +02:00
Teodora 83afb8b852 Set common E&F releases for CUS and CUSM 2025-05-10 00:31:03 +02:00
Teodora bf6012084c Fill Event Trigger Condition ID in the Indication Header
- it is optional, but xApp must somehow know for which trigger event
    an E2 node sent the Indication Message
2025-04-01 20:35:51 +02:00
Teodora e9be8bc233 Use the enum struct for RRC State defined in FlexRIC 2025-04-01 20:35:51 +02:00
Teodora 7beb88425f Use [HW] logging instead of [PHY] or [NR_PHY] 2025-03-31 12:16:18 +02:00
Teodora a4479a2e65 Add M-plane tutorial 2025-03-31 12:16:18 +02:00
Teodora bf0a0aa06b Clarification on delay profile 2025-03-31 12:16:18 +02:00
Teodora 75d5b31f4a Add Benetel650 8x8 reference DU config file for M-plane 2025-03-31 12:16:18 +02:00
Teodora c7dffd416a Add Benetel550 4x4 reference gNB config file for M-plane 2025-03-31 12:16:18 +02:00
Teodora d5fceb8e1f Parsing RU M-plane info to xran 2025-03-31 12:16:18 +02:00
Teodora 430026f1ec Wait until RUs are ready and add <disconnect> RPC for M-plane
- if RU(s) are not well configured, disconnect immediately and stop the DU
  - if all RUs are well configured, proceed with waiting until ready. The RU is
    ready when the carriers are activated. Either the RU already has preconfigured
    carriers (previous M-plane client configured), or the DU has to wait until receives
    the notifications.
2025-03-31 12:16:16 +02:00
Teodora f22bc5acc7 Add <commit> RPC for M-plane 2025-03-31 12:15:20 +02:00
Teodora b478930a04 Add <validate> RPC for M-plane 2025-03-31 12:15:20 +02:00
Teodora e79c79b82e Add <edit-config> RPC for M-plane
- generate CU-planes RU configuration based on the loaded yang models
    and DU config file
  - not yet implemented for libyang and libnetconf2 v1
2025-03-31 12:15:18 +02:00
Teodora dd8a6eaaf5 Load yang models
Ideally, we should load the yang models from the RU operational datastore, but the issues are following:
  1) the yang models order is not good - dependancy models have to be loaded first
  2) earlier O-RAN yang versions (e.g. v4) is not properly defined (i.e. optional parameters should not be included by default)

Added support in both cases, loading from RU with <get-schema> RPC, and loading statically from "radio/fhi_72/mplane/yang/models" folder.
2025-03-31 12:14:33 +02:00
Teodora e0ffba49ae Store U-plane related info from xml
- interface name,
  - TX/RX carrier names, and
  - TX/RX endpoint names
2025-03-31 12:14:30 +02:00
Teodora 45d0eaf3c4 Get and store M-plane related params for xran 2025-03-31 12:13:44 +02:00
Teodora 2cd5c1faf7 Add <supervision-watchdog-reset> RPC for M-plane 2025-03-31 12:12:38 +02:00
Teodora 6266239c34 Add <subscribe> RPC for M-plane 2025-03-31 12:11:58 +02:00
Teodora 07bab2a707 Get the current sync status from operational datastore 2025-03-31 12:11:11 +02:00
Teodora fb670db91e Get info from xml operational datastore
- obtain one or multiple node values
2025-03-31 12:10:10 +02:00
Teodora 064866459c Add <get> RPC for M-plane 2025-03-31 12:10:03 +02:00
Teodora 93aaaef50e Add RPC send and receive functionalities 2025-03-29 12:51:07 +01:00
Teodora 3f98ec50ef Add ssh connect function for M-plane 2025-03-29 12:51:07 +01:00
Teodora da63bf9f9f M-plane integration - initial commit 2025-03-29 12:51:07 +01:00
Teodora 0be72c1917 Install dependencies for M-plane support 2025-03-29 12:51:07 +01:00
Teodora efcc9fc9d4 Properly include xran_common.h in ${xran_INCLUDE_DIRS}
- ${xran_LOCATION}/src/xran_common.h
  - delete unnecessary target_include_directories() from FHI72
2025-03-29 12:51:07 +01:00
Teodora 978fa2ed05 These commands are unnecessary
- the FHI72 CMakeLists.txt exists and POST_BUILD properly links oran_fhlib_5g library
2025-03-29 12:51:07 +01:00
Teodora 3219d0a5a1 Delete duplicated FindLibXml2.cmake file
- cmake version 3.12 defines libxml2 module; the default path is
    /usr/share/cmake-3.<sub-version>/Modules/FindLibXml2.cmake
  - OAI requires minimum cmake version 3.16
2025-03-29 12:51:07 +01:00
Teodora 3a095ac57e M-plane support - explanation on needed parameters
- RU IP address - to connect to RUs via netconf
  - DU MAC address - for setting up the CU-planes on RU; not used in xran
  - VLAN tag (*) - for setting up the CU-planes on RU; not used in xran
  - DU keypair - for authentication when connecting to RU(s)

The parameters that RU-controller shall retreive from RU list of
capabilities:
  - MTU
  - compression
  - RU MAC address
  - PRACH offset (**)

(*) VLAN tag is not used in xran but an option is given in fh_config struct.
In my opinion, it is not a very suitable place, as it is needed for VFs.
Therefore, I moved it in the initialization part for M-plane purposes.

(**) PRACH offset shall be >= max(Ntx,Nrx), as per O-RAN CUS specification:
"The O-DU may decide to use same eAxC ID value to address endpoints on different O-RUs,
but eAxC ID values assigned to one O-RU must be unique within the O-RU’s endpoints of same direction."
=> however, LITEON supports flexible assignment of PRACH eAxC IDs, so
we made a workaround in the xran library to support PRACH eAxC IDs same
as PUSCH eAxC IDs.
2025-03-29 12:51:07 +01:00
9e2c889dba Multi RC REPORT service styles support
Issue: unforeseen capability of having the same RAN Parameter ID across different
REPORT service styles.

Solution: keep only RAN Parameter IDs from REPORT styles that are supported by OAI.
Implement sequence array where each element is combination of RIC request ID (unique per RIC SUBSCRIPTION)
and Event Trigger Definition. This way we can properly check further conditions for a certain RAN Parameter ID.
(e.g. if xApp is subscribed to RRC Connected and/or other modes, for "RRC State Changed To" RAN Parameter ID)

Next steps: for new RAN Parameter ID, add new sequence array.

Co-authored-by: Bischoff <tano.bischoff@hhi.fraunhofer.de>
Co-authored-by: Shrinish Donde <shrinish.donde@hhi.fraunhofer.de>
Co-authored-by: Khanh Toan Pham <khanh.toan.pham@hhi.fraunhofer.de>
2025-02-17 16:33:03 +01:00
Teodora 04bfabcbb1 F release: fix for a distributed antenna array
- in the Rx callback I reset the number of section descriptions/number of fragments to 0,
    but for each antenna up to max number of antennas per RU, instead of up to max number of a distributed antenna array
2025-01-31 12:12:06 +01:00
Teodora f1076605f2 FDD mode support in 7.2
- extend get_xran_prb_map() function to handle mixed slot
  - properly fill PRB configuration based on DL/UL direction and duplex mode
  - do not implicitly assume TDD
2025-01-16 21:34:53 +01:00
Teodora 72d5c77e3b Harmonize DL/UL PRB mapping in one get_xran_prb_map() function
- the parameters used in DL/UL are exactly the same, except the direction and the number of PRBs;
    therefore, passing the direction seems convenient for visibility purposes and reduces the code.

Note: Number of PRBs we store in fh_config for both DL/UL is num_rb_dl of openair0_config struct.
At the end, it is actually the same info.
2025-01-16 13:40:10 +01:00
Teodora b7c3d593c2 Update FHI build image to support xran F release 2024-12-06 12:33:00 +01:00
Teodora 2b007b5d59 Add warning that E release support will be removed 2024-12-05 23:00:07 +01:00
Teodora 825543f456 Update FHI README regarding F release support 2024-12-05 23:00:07 +01:00
Teodora 574b3eb348 Fronthaul xran library F release support
Major improvements:
  1) bbu_offload - enable packet handling on BBU cores
  2) dlCpProcBurst - DL CP processing on one or more symbols
  3) SRS CP processing - depends on the RU capabilities that can be
    retreived via M-plane (if RU is CAT B)
  4) nSecDesc - the number of section descriptors per symbol; it was hardcoded to 0 in E release;
    depends on the RU capabilities that can be retreived via M-plane
  5) RunSlotPrbMapBySymbolEnable - enable PRB mapping by symbol with multisection;
    depends on the RU capabilities that can be retreived via M-plane
  6) DSS (Dynamic Spectrum Sharing) support - depends on the RU capabilities that can be retreived via M-plane

Minor fixes in F that exist in E:
  1) prach_config->nPrachFilterIdx - explained in commit ID f3045396
  2) T1a_min_cp_dl - explained in the commit under title "Clarification on DU delay profile"
  3) fh_config->nULRBs - explained in commit under title "Further clarification on xran E release parameters"

Removed const for prb_conf argument in oran_allocate_cplane_buffers()
function, as F release requires the not const struct for
xran_init_PrbMap_by_symbol_from_cfg() and xran_init_PrbMap_from_cfg()
even though the struct is not modified inside of these functions.
2024-12-05 22:59:58 +01:00
Teodora 197db6a65f Correction on PRACH offset in FHI README
- this should have been done in the commit ID b334feb9
2024-12-05 22:59:58 +01:00
Teodora 698245c7e9 Further clarification on xran E release parameters
- remove xran parameter io_cfg->port logging => this parameter
    is filled within xran library in both E and F releases
  - PRACH offset explanation; not limited to >= max(Ntx, Nrx);
    workaround done in xran to support PRACH eAxC IDs same as PUSCH eAxC IDs
  - DL PRB not used in xran; UL PRB used in xran F release, therefore
    removed from the patch
  - these fixes should have been done in the commit ID f3045396
2024-12-05 22:59:58 +01:00
Teodora dd4ffe3439 Clarification on One-Way Delay Measurements 2024-12-05 22:59:47 +01:00
Teodora 83c88affec Clarification on DU delay profile
- explanation on DU delay parameters used in E and F xran releases
2024-12-04 18:59:16 +01:00
Teodora 68a3435689 Remove RU delay profile
- xran E release (and later F) doesn't use them
  - update fhi_72 section in fronthaul config files by removing
    unnecessary RU delay parameters
2024-12-04 18:59:16 +01:00
Teodora b334feb92b Update gNB fhi_72 configuration steps in README 2024-11-25 14:40:25 +01:00
Teodora b55ee54183 Update steps for configuring VF(s) in README
- add option to configure one or two VFs
  - add support for Mellanox NIC
2024-11-25 14:40:19 +01:00
Teodora 4ed939e4a9 Correct CI VVDN 4x4 100MHz config file 2024-11-22 12:51:46 +01:00
Teodora 6a810f154d Correct CI Benetel 550 4x4 100MHz config file 2024-11-22 12:51:46 +01:00
Teodora d27dd1554d Change 8x8 100MHz Benetel config file
- 650-550 config file deleted
  - 650-650 config file added
2024-11-22 12:51:46 +01:00
Teodora 1121d86e76 Change 4x4 100MHz Benetel 650 config file 2024-11-22 12:51:46 +01:00
Teodora c2d169094f Add 4x4 100MHz Metanoia config file 2024-11-22 12:51:46 +01:00
Teodora 6dfa051ecd Add 4x4 40MHz VVDN config file 2024-11-22 12:51:46 +01:00
Teodora 83367ee7ff Add 2x2 100MHz VVDN config file 2024-11-22 12:51:46 +01:00
Teodora cd259132f1 Add 4x2 100MHz Benetel550 config file 2024-11-22 12:51:46 +01:00
Teodora c58ab971af Update fhi_72 section in config files 2024-11-22 12:51:46 +01:00
Teodora d246520f77 Correct LITEON config file
- remove useless whitespaces
  - add comments for used frequencies
2024-11-22 12:51:46 +01:00
Teodora 31613ec8bc Correct VVDN config file
- add frequency values (center frequency, SSB and point A)
  - CN interface fixed
  - adjust puxch_TargetSNRx10, and ru_thread_core
2024-11-22 12:51:46 +01:00
Teodora 306e7538d9 Correct Benetel550 config file
- match PLMN to CN
  - correct frequency point A to match desired center frequency
  - adjust puxch_TargetSNRx10
2024-11-22 12:51:46 +01:00
Teodora f30453968f xran integration improvements
- identification of each parameter in fh_init and fh_config structs
  - identification of unused parameters in xran library
  - identification of parameters used for CAT A O-RU
  => CAT B not supported in this release
2024-11-22 12:51:39 +01:00
Teodora 676ba4355c RRC_CONNECTED state signaling for E2 moved
- E2SM UE ID requires guami -> therefore RRC_CONNECTED state signaling
    to RIC is now done after receiving Initial Context Setup Request
from AMF, which contains the guami info
2024-07-10 16:06:58 +02:00
Teodora df9e5ccdd2 Fix selectedPLMNId from RRCSetupComplete
- r_amf->plmn_Identity was interpreted incorrectly, therefore remove it
- selected_plmn_identity selects one of the list of PLMNs; at the
  moment, OAI supports only 1 PLMN ID; print a warning if it is
  different, and proceed with index 0

More information in issue #801
2024-07-08 15:54:41 +02:00
Teodora 0a603a1000 Correctly store GUAMI in gNB_RRC_UE_t 2024-06-29 17:46:23 +02:00
Teodora b09d241151 GUAMI decoding fixed
- GUAMI is received from INITIAL UE CONTEXT SETUP REQUEST
  - using BIT STRING instead of OCTET STRING, as per spec
2024-06-17 14:20:53 +02:00
Teodora c70a9dc9eb FlexRIC commit ID update 2024-04-08 17:42:27 +02:00
Teodora f571043da8 Fix E2 Setup Request memory leakage 2024-04-08 15:26:00 +02:00
Teodora 7535e99944 E2AP README & FlexRIC commit ID update 2024-03-25 18:13:01 +01:00
Teodora 7bfa2d71f4 E2SM cmake update
- hardcoded data for E2 Setup Request; fill_rnd_data_e2_setup_req.c dependancy taken
    out
2024-03-25 15:08:39 +01:00
Teodora 6a0e636f00 RAN Control cleanup
- RAN Function Definition implemented
  - use mutual E2SM UE ID file
  - write_ctrl_rc_sm function cleanup
2024-03-25 15:08:39 +01:00
Teodora ba003cc649 KPM cleanup
- RAN Function Definition implemented
  - ran_func_kpm.c - use function pointers based on the matching condition,
    and node type
  - ran_func_kpm_subs.h/c - for measurement collection within
    MAC/RLC/PDCP layers; for CU-UP node only PDCP included (otherwise,
we would get undefined reference to MAC/RLC)
  - use mutual E2SM UE ID file
2024-03-25 15:08:28 +01:00
Teodora fc4c4fc599 Add mutual O-RAN E2SM UE ID filling info 2024-03-25 13:10:44 +01:00
Teodora 1675e6e155 Update FlexRIC commit and E2AP README 2024-02-07 17:19:18 +01:00
Teodora d7ff30db55 Enable multiple RC subscriptions
- create hash table to save ric_req_id (key) and array of ran_param_id(s) (values), per each subscription
  - create RB tree to store list of ric_req_id(s) for each ran_param_id
    => when the async event occurs, it is easier and faster to search per ran_param_id and send the indication message to all xApps (ric_req_id(s)) subscribed to the same ran_param_id
  - it is important to mention that both data structures need to be maintained, especially when unsubscription occurs (free_aperiodic_subscription)
2024-02-07 15:14:27 +01:00
Teodora 3cc3bbbabc Support RC aperiodic subscription
- subscribe to "UE RRC State Change" RAN Parameter ID
  - expected asynchronous events from E2 node
2024-02-07 14:32:23 +01:00
Teodora dcf215e5d2 Correct FlexRIC commit and update E2AP README 2024-01-17 15:54:18 +01:00
Teodora 9f699fcfee Add node type in read_setup_ran function 2024-01-17 15:54:18 +01:00
Teodora 9207e13467 Service Models support in CU-UP
- e2_ran_func library divided into e2_ran_func_cuup (CU-UP only) and e2_ran_func_du_cucp_cuup (DU, CU, CU-CP and gNB-mono)
  - GTP SM is not yet implemented in CU-UP -> CU-UP doesn't store PDU session information
  - PDCP SM support for gNB-mono, CU and CU-UP
  - KPM SM support for all node types (DU, CU, CU-UP, CU-CP and gNB-mono)
2024-01-17 15:53:52 +01:00
Teodora 56843fc1d7 Add E2 agent in CU-UP 2024-01-17 15:51:52 +01:00
Teodora a2b881a443 FlexRIC release v2
- update KPM available versions
 - bool return when reading Service Models
2024-01-17 10:53:41 +01:00
Teodora 2eaac0351d Fix compile error when --build-e2 option included
- modify byte_array.h in order to avoid conflict for same file names
2023-10-02 15:40:36 +02:00
Teodora fec1396fb0 Fix CU as E2 node
- when CU is used, UE ID data is filled as GNB_UE_ID_E2SM with
  CU UE ID value included
2023-09-14 12:59:08 +02:00
Teodora 6c73828cd5 Add option to collect data from CU and DU for KPM 2023-09-14 09:38:27 +02:00
Teodora Vladic 505a00c3b3 Update README file in E2AP folder 2023-09-14 09:38:27 +02:00
Teodora Vladic c1864711cd Remove unnecessary include 2023-08-23 17:15:48 +02:00
Teodora Vladic 011a5a3b56 Add O-RAN KPM E2 Service Model
- Add O-RAN KPM SM with DRB.RlcSduDelayDl, DRB.UEThpDl and DRB.UEThpUl measurements
- Add L1M.PHR1.BinX KPM meas
- Add comments for all KPM meas; deleted few outputs (but added in xApp)
- Add DRB.PdcpSduVolumeDL and DRB.PdcpSduVolumeUL KPM meas
- Delete unnecessary rnd functions in ran_func_kpm.c -> path set to
  flexric submodule
2023-08-23 17:15:48 +02:00
Teodora Vladic 2fef830d42 Update FlexRIC submodule 2023-08-23 17:15:48 +02:00