.. Copyright (c) 2019 Intel .. .. Licensed under the Apache License, Version 2.0 (the "License"); .. you may not use this file except in compliance with the License. .. You may obtain a copy of the License at .. .. http://www.apache.org/licenses/LICENSE-2.0 .. .. Unless required by applicable law or agreed to in writing, software .. distributed under the License is distributed on an "AS IS" BASIS, .. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. .. See the License for the specific language governing permissions and .. limitations under the License. Architecture Overview ===================== .. contents:: :depth: 3 :local: This section provides an overview of the O-RAN architecture. .. _introduction-1: Introduction ------------ The front haul interface, according to the O-RAN Fronthaul specification, is part of the 5G NR L1 reference implementation provided with the FlexRAN software package. It performs communication between O-RAN Distributed Unit (O-DU) and O-RAN Radio Unit (O-RU) and consists of multiple HW and SW components. The logical representation of HW and SW components is shown in *Figure 1*. The same architecture design is applicable for LTE; however, the FH library is not integrated with the PHY pipeline for FlexRAN LTE. .. image:: images/Architecture-Block-Diagram.jpg :width: 600 :alt: Figure 1. Architecture Block Diagram Figure 1. Architecture Block Diagram From the hardware perspective, two networking ports are used to communicate to the Front Haul and Back (Mid) Haul network as well as to receive PTP synchronization. The system timer is used to provide a “sense” of time to the gNB application. From the software perspective, the following components are used: * Linux\* PTP provides synchronization of system timer to GPS time: - ptp4l is used to synchronize oscillator on Network Interface Controller (NIC) to PTP GM. - phc2sys is used to synchronize system timer to oscillator on NIC. * The DPDK to provide the interface to the Ethernet port. * O-RAN library is built on top of DPDK to perform U-plane and C-plane functionality according to the O-RAN Fronthaul specification. * 5GNR reference PHY uses the O-RAN library to access interface to O-RU. The interface between the library and PHY is defined to communicate TTI event, symbol time, C-plane information as well as IQ sample data. * 5G NR PHY communicates with the L2 application using the set of MAC/PHY APIs and the shared memory interface defined as WLS. * L2, in turn, can use Back (Mid) Haul networking port to connect to the CU unit in the context of 3GPP specification. In this document, we focus on details of the design and implementation of the O-RAN library for providing Front Haul functionality for both mmWave and Sub-6 scenarios as well as LTE. The O-RAN M-plane is not implemented and is outside of the scope of this description. Configuration files are used to specify selected M-plane level parameters. 5G NR L1 Application Threads ---------------------------- The specifics of the L1 application design and configuration for the given scenario can be found in document 603577, *FlexRAN 5G NR Reference Solution RefPHY* (Doxygen) (refer to *Table 2*) Only information relevant to front haul is presented in this section. Configuration of l1app with O-RAN interface for Front Haul is illustrated acting as an O-DU in *Figure 2*. .. image:: images/5G-NR-L1app-Threads.jpg :width: 600 :alt: Figure 2. 5G NR L1app Threads Figure 2. 5G NR L1app Threads In this configuration of L1app, the base architecture of 5G NR L1 is not changed. The original Front Haul FPGA interface was updated with the O-RAN fronthaul interface abstracted via the O-RAN library. O-RAN FH Thread Performs: - Symbol base “time event” to the rest of the system based on System Clock synchronized to GPS time via PTP - Baseline polling mode driver performing TX and RX of Ethernet packets - Most of the packet processing such as Transport header, Application header, Data section header, and interactions with the rest of the PHY processing pipeline. - Polling of BBDev for FEC on PAC N3000 acceleration card The other threads are standard for the L1app and created the independent usage of O-RAN as an interface to the Radio. Communication between L1 and O-RAN layer is performed using a set of callback functions where L1 assigned callback and O-RAN layer executes those functions at a particular event or time moment. Detailed information on callback function options and setting, as well as design, can be found in the sections below. Design and installation of the l1app do not depend on the Host, VM, or container environment and the same for all cases. Sample Application Thread Model ------------------------------- Configuration of a sample application for both the O-DU and O-RU follows the model of 5G NR l1app application in *Figure 2*, but no BBU or FEC related threads are needed as minimal O-RAN FH functionality is used only. .. image:: images/Sample-Application-Threads.jpg :width: 600 :alt: Figure 3. Sample Application Threads Figure 3. Sample Application Threads In this scenario, the main thread is used only for initializing and closing the application. No execution happens on core 0 during run time. Functional Split ---------------- Figure 1 corresponds to the O-RU part of the O-RAN split. Implementation of the RU side of the O-RAN protocol is not covered in this document. .. image:: images/eNB-gNB-Architecture-with-O-DU-and-RU.jpg :width: 600 :alt: Figure 4. eNB/gNB Architecture with O-DU and RU Figure 4. eNB/gNB Architecture with O-DU and RU More than one RU can be supported with the same implementation of the O-RAN library and depends on the configuration of gNB in general. In this document, we address details of implementation for a single O-DU – O-RU connection. The O-RAN Fronthaul specification provides two categories of the split of Layer 1 functionality between O-DU and O-RU: Category A and Category B. .. image:: images/Functional-Split.jpg :width: 600 :alt: Figure 5. Functional Split Figure 5. Functional Split Data Flow --------- Table 3 lists the data flows supported for a single RU with a single Component Carrier. Table 3. Supported Data Flow +---------+----+-----------------+------------------+----------------+ | Plane | ID | Name | Contents | Periodicity | +=========+====+=================+==================+================+ | U-Plane | 1a || DL Frequency || DL user data | symbol | | | || Domain IQ Data || (PDSCH), | | | | | || control channel | | | | | || data (PDCCH, | | | | | || etc.) | | | | | | | | +---------+----+-----------------+------------------+----------------+ | | 1b || UL Frequency || UL user data | symbol | | | || Domain IQ Data || (PUSCH), | | | | | || control channel | | | | | || data (PUCCH, | | | | | || etc.) | | +---------+----+-----------------+------------------+----------------+ | | 1c || PRACH Frequency| UL PRACH data | slot or symbol | | | || Domain IQ Data | | | +---------+----+-----------------+------------------+----------------+ | C-Plane | 2a || Scheduling || Scheduling | ~ slot | | | || Commands || information, | | | | | || FFT size, CP | | | | || (Beamforming is|| length, | | | | || not supported) || Subcarrier | | | | | || spacing, UL | | | | | || PRACH | | | | | || scheduling | | +---------+----+-----------------+------------------+----------------+ | S-Plane | S || Timing and || IEEE 1588 PTP | - | | | || Synchronization|| packets | | +---------+----+-----------------+------------------+----------------+ .. image:: images/Data-Flows.jpg :width: 600 :alt: Figure 6. Data Flows Figure 6. Data Flows Information on specific features of C-Plane and U-plane provided in Sample Application Section Configuration of S-plane used on test setup for simulation is provided in Appendix 2. Data flow separation is based on VLAN (applicable when layer 2 or layer 3 is used for the C/U-plane transport.) * The mechanism for assigning VLAN ID to U-Plane and C-Plane is assumed to be via the M-Plane. * VLAN Tag is configurable via the standard Linux IP tool, refer to Appendix A, Setup Configuration. * No Quality of Service (QoS) is implemented as part of O-RAN library. Standard functionality of ETH port can be used to implement QoS. .. image:: images/C-plane-and-U-plane-Packet-Exchange.jpg :width: 600 :alt: Figure 7. C-plane and U-plane Packet Exchange Figure 7. C-plane and U-plane Packet Exchange Timing, Latency, and Synchronization to GPS ------------------------------------------- The O-RAN Fronthaul specification defines the latency model of the front haul interface and interaction between O-DU and 0-RU. This implementation of the O-RAN library supports only the category with fixed timing advance and Defined Transport methods. It determines O-DU transmit and receive windows based on pre-defined transport network characteristics, and the delay characteristics of the RUs within the timing domain. Table 4 below provides default values used for the implementation of O-DU – O-RU simulation with mmWave scenario. Table 5 and *Table 6* below provide default values used for the implementation of O-DU – O-RU simulation with numerology 0 and numerology 1 for Sub6 scenarios. Configuration can be adjusted via configuration files for sample application and reference PHY. However, simulation of the different range of the settings was not performed, and additional implementation changes might be required as well as testing with actual O-RU. The parameters for the front haul network are out of scope as a direct connection between O-DU and 0-RU is used for simulation. Table 4. Front Haul Interface Latency (numerology 3 - mmWave) +------+------------+---------------+---------------+------------+------------+ | || Model | C-Plane | U-Plane | | || Parameters| | | + + +---------------+---------------+------------+------------+ | | | DL | UL | DL | UL | +------+------------+---------------+---------------+------------+------------+ | O-RU | T2amin || T2a_min_cp_dl|| T2a_min_cp_ul|| T2a_min_up| NA | | | || = 50 || = 50 || = 25 | | + +------------+---------------+---------------+------------+------------+ | | T2amax || T2a_max_cp_dl|| T2a_max_cp_ul|| T2a_max_up| NA | | | || = 140 || = 140 || = 140 | | + +------------+---------------+---------------+------------+------------+ | |   | Tadv_cp_dl | NA | NA | NA | + +------------+---------------+---------------+------------+------------+ | | Ta3min | NA | NA | NA | Ta3_min=20 | + +------------+---------------+---------------+------------+------------+ | | Ta3max | NA | NA | NA | Ta3_max=32 | +------+------------+---------------+---------------+------------+------------+ | O-DU | T1amin || T1a_min_cp_dl|| T1a_min_cp_ul|| T1a_min_up| NA | | | || = 70 || = 60 || = 35 | | + +------------+---------------+---------------+------------+------------+ | | T1amax || T1a_max_cp_dl|| T1a_max_cp_ul|| T1a_max_up| NA | | | || = 100 || = 70 || = 50 | | + +------------+---------------+---------------+------------+------------+ | | Ta4min | NA | NA | NA | Ta4_min=0 | + +------------+---------------+---------------+------------+------------+ | | Ta4max | NA | NA | NA | Ta4_max=45 | +------+------------+---------------+---------------+------------+------------+ Table 5. Front Haul Interface Latency (numerology 0 - Sub6) +------+----------+----------+----------+----------+----------+ | || Model | C-Plane | | U-Plane | | | || Pa\ | | | | | | | rameters | | | | | + + +----------+----------+----------+----------+ | | | DL | UL | DL | UL | +------+----------+----------+----------+----------+----------+ | O-RU | T2amin || T2a_min\|| T2a_min\|| T2a_min\| NA | | | | _cp_dl | _cp_ul | _up | | | | || = 400 || = 400 || = 200 | | + +----------+----------+----------+----------+----------+ | | T2amax || T2a_max\|| T2a_max\|| T2a_max\| NA | | | | _cp_dl | _cp_ul | _up | | | | || = 1120 || = 1120 || = 1120 | | + +----------+----------+----------+----------+----------+ | |   | Ta\ | NA | NA | NA | | | | dv_cp_dl | | | | + +----------+----------+----------+----------+----------+ | | Ta3min | NA | NA | NA || Ta3_min | | | | | | || = 160 | + +----------+----------+----------+----------+----------+ | | Ta3max | NA | NA | NA || Ta3_max | | | | | | || = 256 | +------+----------+----------+----------+----------+----------+ | O-DU | T1amin || T1a_min\|| T1a_min\|| T1a_min\| NA | | | | _cp_dl | _cp_ul | _up | | | | || = 560 || = 480 || = 280 | | + +----------+----------+----------+----------+----------+ | | T1amax || T1a_max\|| T1a_max\|| T1a_max\| NA | | | | _cp_dl | _cp_ul | _up | | | | || = 800 || = 560 || = 400 | | + +----------+----------+----------+----------+----------+ | | Ta4min | NA | NA | NA | T | | | | | | | a4_min=0 | + +----------+----------+----------+----------+----------+ | | Ta4max | NA | NA | NA | Ta4 | | | | | | | _max=360 | +------+----------+----------+----------+----------+----------+ Table 6. Front Haul Interface Latency (numerology 1 - Sub6) +------+------------+---------------+---------------+------------+------------+ | | Model | C-Plane | U-Plane | | | | | Parameters | | | | | + + +---------------+---------------+------------+------------+ | | | DL | UL | DL | UL | +------+------------+---------------+---------------+------------+------------+ | O-RU | T2amin || T2a_min_cp_dl|| T2a_min_cp_ul|| T2a_min_up| NA | | | || = 285 || = 285 || = 71 | | + +------------+---------------+---------------+------------+------------+ | | T2amax || T2a_max_cp_dl|| T2a_max_cp_ul|| T2a_max_up| NA | | | || = 429 || = 429 || = 428 | | + +------------+---------------+---------------+------------+------------+ | |   | Tadv_cp_dl | NA | NA | NA | + +------------+---------------+---------------+------------+------------+ | | Ta3min | NA | NA | NA || Ta3_min | | | | | | || = 20 | + +------------+---------------+---------------+------------+------------+ | | Ta3max | NA | NA | NA || Ta3_max | | | | | | || = 32 | +------+------------+---------------+---------------+------------+------------+ | O-DU | T1amin || T1a_min_cp_dl|| T1a_min_cp_ul|| T1a_min_up| NA | | | || = 285 || = 285 || = 96 | | + +------------+---------------+---------------+------------+------------+ | | T1amax || T1a_max_cp_dl|| T1a_max_cp_ul|| T1a_max_up| NA | | | || = 429 || = 300 || = 196 | | + +------------+---------------+---------------+------------+------------+ | | Ta4min | NA | NA | NA || Ta4_min | | | | | | || = 0 | + +------------+---------------+---------------+------------+------------+ | | Ta4max | NA | NA | NA || Ta4_max | | | | | | || = 75 | +------+------------+---------------+---------------+------------+------------+ IEEE 1588 protocol and PTP for Linux\* implementations are used to synchronize local time to GPS time. Details of the configuration used are provided in Appendix B, PTP Configuration. Local time is used to get Top of the Second (ToS) as a 1 PPS event for SW implementation. Timing event is obtained by performing polling of local time using clock_gettime(CLOCK_REALTIME,..) All-time intervals are specified concerning the GPS time, which corresponds to OTA time. Virtualization and Container-Based Usage ---------------------------------------- O-RAN implementation is deployment agnostic and does not require special changes to be used in virtualized or container-based deployment options. The only requirement is to provide one SRIOV base virtual port for C-plane and one port for U-plane traffic per O-DU instance. This can be achieved with the default Virtual Infrastructure Manager (VIM) as well as using standard container networking. To configure the networking ports, refer to the FlexRAN and Mobile Edge Compute (MEC) Platform Setup Guide (*Table 2*) and readme.md in O-RAN library or Appendix A.