greater flexibility, innovation, cost-efficiency, design flexibility, operational adaptability, system functionality, deployment scalability, and function expandability to RANs, while also supporting the demands of next-generation networks and services such as 5G/6G, Internet of Things (IoT), and edge computing. Over the past couple of decades, wireless communications have gone through several transformations to support massive connectivity and to meet the demands of modern real-time and mission-critical applications, as the target 5G and 6G Key Performance Indicators (KPIs) include ultra-high reliability, low latency, and high-throughput. However, despite of all advancements made in wireless systems, particularly in 5G, achieving all these goals remains challenging. The key problems confronting stakeholders in 5G and 6G systems include efficiently supporting wireless access across diverse frequency bands, dealing with heterogeneous technologies, addressing a wide variety of application requirements leading to complex protocol stacks, and managing the rising capital and operational expenditure (CapEx and OpEx) needed for infrastructure upgrades and maintenance [1]. These challenges include the need to design an independent, service-focused network architecture due to the diversity of Quality of Service (QoS) requirements, achieving network agility while ensuring backward compatibility with existing equipment and support for future upgrades, and guaranteeing network efficiency to avoid increased computational complexity and a heavy load on the backhaul network [2]. The motivation behind the development of the O-RAN concept lies on the fact that traditional RAN systems are proprietary, i.e., closed systems, limiting mobile network operators (MNO) to obtaining all the radio, hardware, and software systems from a single supplier when deploying a network at each region. Aside from the considerable impact on RAN deployment CapEx and OpEx, this implies the lack of openness and interoperability, which can hinder innovation and agility. Traditional RANs are monolithic systems, which are designed to operate as integrated products, seen by the operators as black-boxes. Traditionally, at its most basic level, the RAN architecture consists of a radio unit (RU) or remote radio unit (RRU), a baseband unit (BBU), antennas, and various software-based interfaces. As described above, this results in difficulty meeting the very strict and diverse KPIs of modern networks. Consequently, the consensus was that the mobile network should be more software driven, virtualized, flexible, and intelligent to provide all the KPI goals and address the aforementioned challenges. The RAN evolution towards O-RAN started with disaggregation, defined by 3 GPP in Release 15 [3], where the 5G NR RAN (more specifically gNB) functionalities split into three logical nodes: the Central Unit (CU), the Distributed Unit (DU), and the Radio Unit (RU). The CU handles gNB functions like transfer of user data, radio access management, positioning, mobility, and session management. A DU function is dependent on the functional split option, but mainly manages baseband processing functions across cell sites. The CU operation is controlled by the CU. The RU component is located near or integrated into the antenna unit where the radio signals are transmitted, received, amplified, and digitized. In traditional RAN configuration, sometimes called distributed RAN (D-RAN), BBU and RRH are co-located in the same place in the cell site, in which they are directly connected via Common Public Radio Interface (CPRI). Disaggregation option provides new levels of flexibility and efficiency at RAN level by enabling the network operators to decide where to locate each function and maximize performance. In 2009, centralized or cloud RAN (C-RAN) has emerged as an efficient solution, exploiting disaggregation to move the BBU functionalities to a centralized location, called BBU pool, while leaving the RRU and antenna on cell site.