100 Commits
Author SHA1 Message Date
Teodora 6a6588e9cb OAI-FLEXRIC-RAN-Integration-Test CI pipeline
1. Rename oai-flexric to nearRT-RIC. FlexRIC is a project combining nearRT-RIC, xApps, and E2 agent emulators.
2. Instead of undeploying all the containers at the same time, and not checking the logs for xApps and nearRT-RIC, do the following:
- Stop containers (docker compose stop) - one or subgroup of running containers in the following order:
   a) xapp-kpm-moni
   b) xapp-kpm-rc
   c) xapp-gtp-mac-rlc-pdcp-moni
   d) oai-nr-ue oai-nr-ue2
   e) oai-gnb
   f) nearRT-RIC
- Undeploy containers (docker compose down), collect and analyze all the logs.
2025-11-14 14:57:12 +01:00
Teodora b6bda6d974 RIC IP address within fr_args_t struct is not const anymore
Related FlexRIC commit ID: https://gitlab.eurecom.fr/mosaic5g/flexric/-/commit/fd26e7474d18e90097bc1b2487d00598e9383400
2025-11-13 11:58:11 +01:00
Teodora e96cfbd88a Update the FlexRIC submodule
Needed notably due to https://gitlab.eurecom.fr/mosaic5g/flexric/-/merge_requests/68.
2025-11-13 11:58:11 +01:00
Teodora f88b93d147 Use the correct unit for PDCP SDU volume: [Mb] instead of [kb] 2025-11-13 11:58:11 +01:00
Teodora d0a582e73d Implement E2 node level stats
For now, only DL/UL MAC stats.

This commit fixes the "RRU.PrbTotDl" and "RRU.PrbTotUl" measurement calculation
to align with the TS 28.552 specifications.
2025-11-13 11:58:11 +01:00
Teodora 19bb463049 Properly free the memory
1. Create a free_ru_session_list() function to free the memory allocated for the connected RUs
before closing the nr-softmodem.
2. xmlReadMemory() and xmlNodeGetContent() were causing serious memory leakages,
and now all is properly freed using xmlFreeDoc() and xmlFree().
2025-10-30 17:22:40 +01:00
Teodora 163c8de371 Do not use ru_session_list on the stack
This struct is used in multiple source files.

Previously, when stopping the nr-softmodem, the ru_session_list "disappears"
and the M-plane wasn't terminated properly (num_rus = 0 even though DU connected to at least one RU).
2025-10-30 17:22:40 +01:00
Teodora 96b944e5c9 Update the FHI M-plane doc for v16.01 support 2025-10-30 17:22:40 +01:00
Teodora 0ad393f28e Update yang models to the O-RAN.WG4.MP-YANGs-R004-v16.01
It is backwards compatible with the O-RAN.WG4.MP-YANGs-v04.00, previous supported version.
2025-10-30 17:22:40 +01:00
Teodora 4233b89530 Handle MIMO mode
MIMO mode is defined by setting separate carriers to different antenna ports.

Benetel v1.2.2 does not support MIMO mode to be set via M-plane, and therefore
we only created one Tx and one Rx carrier.

Benetel v1.4.1 supports MIMO mode setting via M-plane.

Therefore, this commit introduces the adaptation based on the number of supported carriers by a DUT RU.
2025-10-30 17:22:40 +01:00
Teodora d542021f86 Retrieve the hardware states if available
These 3 states: "oper-state", "admin-state", "availability-state" are optional,
but shall be checked in order to activate the carriers. If an O-RU doesn't support it,
we assume the expected values:
- "oper-state" = "enabled"
- "admin-state" = "unlocked"
- "availability-state" = "NORMAL"

Implement retrieval of the hardware states if O-RU supports, i.e. Benetel release v1.4.1.
2025-10-30 17:22:40 +01:00
Teodora d4b5291c62 Facilitate RU notification initialization
Use X macros for carriers and synchronization states,
by mapping enum with the state values.
2025-10-30 17:22:40 +01:00
Teodora ad6d7a2220 RHEL compilation
error: implicit declaration of function ‘realloc’
2025-10-30 17:22:40 +01:00
Teodora a96d2d0118 Properly pass the arguments in ly_ctx_destroy() v1 function 2025-10-30 17:22:40 +01:00
Teodora 995cccc760 Update the FHI M-plane doc
Performance Management support explanation.

Example run modified according to:
- modification of the frequency offset, frame structure, fft size, cyclic prefix, and Tx gain;
- addition of the managed delay node;
for Tx/Rx endpoints.
2025-08-26 15:17:38 +02:00
Teodora 0367881ba9 Performance Management implementation
Introduced a parameter start_up_timing which indicates if PM activation is supported during the start-up
procedure. We initialize this parameter, based on the vendor.

Notification interval is set to 10s.
2025-08-26 15:17:38 +02:00
Teodora 625b4b0cde Add support for RU username parameter for connection to a RU via M-plane
The "sudo" access group is required by OAI gNB.
2025-08-26 15:17:38 +02:00
Teodora e7db367c9d Rearrange <edit-config>, <validate>, and <commit> RPCs
Refactor these RPCs to facilitate their use in other Management functionalities,
not only Configuration Management.
2025-08-26 15:17:38 +02:00
Teodora 5291afe165 Add a comment for Rx gain correction
Definition in o-ran-uplane-conf.yang model:
"Gain correction of RF path linked with array element or array layers.
 Common part of overall gain_correction.
 gain_correction = common array-carrier gain-correction + eAxC gain correction."
2025-08-26 15:17:38 +02:00
Teodora eee7d976ec Correct the Tx gain 2025-08-26 15:17:38 +02:00
Teodora 2e9101f833 Add managed delay node in Rx endpoint creation 2025-08-26 15:17:38 +02:00
Teodora 9bb15f15b8 Correctly fill the cyclic prefix for Tx/Rx endpoints 2025-08-26 15:17:38 +02:00
Teodora 8bd6e16ad1 Correctly fill the frame structure for Tx/Rx endpoints and fft size for Rx endpoints 2025-08-26 15:17:38 +02:00
Teodora 0b0e804f73 Properly pass the frequency offset to Tx/Rx endpoints 2025-08-26 15:17:38 +02:00
Teodora 10d60f71ce Separate Tx/Rx endpoint creation
As per o-ran-uplane-conf model, some nodes exist in Rx but not in Tx
(e.g. "ul-fft-sampling-offsets"), and vice versa.
2025-08-26 15:17:38 +02:00
Teodora 4e9e2b39e9 Set the correct yang node name for MTU retrieval 2025-08-26 15:17:38 +02:00
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