From 5a887c87e831cb1738f3d867e95f32d0d78133b0 Mon Sep 17 00:00:00 2001 From: fransiscus bimo Date: Tue, 15 Feb 2022 18:51:38 +0800 Subject: [PATCH] Update docs according to xRAN Front Haul SAS v21.03 Signed-off-by: fransiscus bimo Change-Id: Id5898381cbbc0b52c09fc6e10ea9a2b98b1756cf --- docs/Architecture-Overview_fh.rst | 798 ++-- docs/Assumptions_Dependencies.rst | 160 +- docs/Introduction_fh.rst | 67 +- docs/PTP-configuration_fh.rst | 1163 ++---- docs/Sample-Application_fh.rst | 352 +- docs/Setup-Configuration_fh.rst | 4216 +++++++++++++++++--- ...d-ORAN-Fronthaul-Protocol-Implementation_fh.rst | 3055 +++++++------- docs/ecpri_ddp_profile.rst | 875 ++++ docs/images/5G-NR-L1app-Threads.jpg | Bin 0 -> 72626 bytes docs/images/O-RAN-FH-VNF.jpg | Bin 0 -> 182529 bytes ...N-Testing-with-PHY-and-Configuration-C3-for.jpg | Bin 0 -> 349572 bytes ...-xRAN-Testing-with-PHY-and-Configuration-C3.jpg | Bin 71719 -> 289957 bytes docs/images/Setup-for-xRAN-Testing.jpg | Bin 47659 -> 250348 bytes .../ecpri-one-way-delay-measurement-message.jpg | Bin 0 -> 97552 bytes docs/overview1.rst | 447 ++- docs/xRAN-Library-Design_fh.rst | 3815 +++++++++--------- 16 files changed, 9681 insertions(+), 5267 deletions(-) create mode 100644 docs/ecpri_ddp_profile.rst create mode 100644 docs/images/5G-NR-L1app-Threads.jpg create mode 100644 docs/images/O-RAN-FH-VNF.jpg create mode 100644 docs/images/Setup-for-xRAN-Testing-with-PHY-and-Configuration-C3-for.jpg create mode 100644 docs/images/ecpri-one-way-delay-measurement-message.jpg diff --git a/docs/Architecture-Overview_fh.rst b/docs/Architecture-Overview_fh.rst index 3538e69..8e4d21e 100644 --- a/docs/Architecture-Overview_fh.rst +++ b/docs/Architecture-Overview_fh.rst @@ -1,399 +1,399 @@ -.. 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. - -.. |br| raw:: html - -
- -Architecture Overview -===================== - -.. contents:: - :depth: 3 - :local: - -This section provides an overview of the xRAN architecture. - -.. _introduction-1: - -Introduction ------------- - -The front haul interface, according to the ORAN Fronthaul specification, -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. - -.. image:: images/Architecture-Block-Diagram.jpg - :width: 600 - :alt: Figure 1. Architecture Block Diagram - -Figure 1. Architecture Block Diagram - -|br| -|br| - -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. - -* DPDK to provide the interface to the Ethernet port. - -* xRAN library is built on top of DPDK to perform U-plane and C-plane - functionality according to the ORAN Fronthaul specification. - -* 5GNR reference PHY uses the xRAN 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 the details of the design and -implementation of the xRAN library with respect to providing Front Haul -functionality for both mmWave and Sub-6 scenarios. - -The xRAN 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. - -ORAN FH Threads ---------------- - -ORAN 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 other call back function that was registered. - -ORAN FH thread created the independent of usage of xRAN as an interface -to the Radio. - -Communication between L1 and xRAN layer is performed using a set of -callback functions where L1 assigned callback and xRAN 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. - -Sample Application Thread Model -------------------------------- - -Configuration of a sample application for both O-DU and O-RU follows the -model of 5G NR l1app application in the section of xRAN only. No BBU or -FEC related threads are needed as minimal xRAN functionality is used -only. - -.. image:: images/Sample-Application-Threads.jpg - :width: 600 - :alt: Figure 3. Sample Application Threads - -Figure 3. Sample Application Threads - -|br| -|br| - -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 xRAN split. Implementation -of the RU side of the xRAN 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 - -|br| -|br| - -More than one RU can be supported with the same implementation of the -xRAN library and depends on the configuration of gNB in general. In this -document, we address details of implementation for single O-DU – O-RU -connection. - -The ORAN 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 - -|br| - -Data Flow ---------- - -|br| - -Table 3 lists the data flows supported for a single RU with a single -Component Carrier. - -|br| -|br| - -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 | | -+---------+----+-----------------+-----------------+----------------+ - -|br| -|br| - -.. image:: images/Data-Flows.jpg - :width: 600 - :alt: Figure 6. Data Flows - -Figure 6. Data Flows - -|br| -|br| - -Information on specific features of C-Plane and U-plane provided in -Section 6.0. Configuration of S-plane used on test setup for simulation -is provided in Appendix 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 Appendix 1). - -No Quality of Service (QoS) is supported. - -|br| -|br| - -.. 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 - -|br| -|br| - -Timing, Latency, and Synchronization to GPS -------------------------------------------- - -The ORAN Fronthaul specification defines the latency model of the front -haul interface and interaction between O-DU and O-RU. This -implementation of the xRAN library supports only the category with fixed -timing advance and Defined Transport method. 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 |br| -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. - -|br| -|br| - -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=50 | T2a_min_cp_ul=50 | T2a_min_up=25 | NA | -+------+------------+-------------------+-------------------+----------------+------------+ -| | T2amax | T2a_max_cp_dl=140 | T2a_max_cp_ul=140 | T2a_max_up=140 | NA | -+------+------------+-------------------+-------------------+----------------+------------+ -| |   | 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=70 | T1a_min_cp_ul=60 | T1a_min_up=35 | NA | -+------+------------+-------------------+-------------------+----------------+------------+ -| | T1amax | T1a_max_cp_dl=100 | T1a_max_cp_ul=70 | T1a_max_up=50 | NA | -+------+------------+-------------------+-------------------+----------------+------------+ -| | Ta4min | NA | NA | NA | Ta4_min=0 | -+------+------------+-------------------+-------------------+----------------+------------+ -| | Ta4max | NA | NA | NA | Ta4_max=45 | -+------+------------+-------------------+-------------------+----------------+------------+ - -|br| -|br| -|br| - -Table 5. Front Haul Interface Latency (numerology 0 - Sub6) - -+------+----------+----------+----------+----------+----------+ -| | Model | C-Plane | U-Plane | | | -| | Pa | | | | | -| | rameters | | | | | -+------+----------+----------+----------+----------+----------+ -| | | DL | UL | DL | UL | -+------+----------+----------+----------+----------+----------+ -| O-RU | T2amin | T | T | T2a_mi | NA | -| | | 2a_min_c | 2a_min_c | n_up=200 | | -| | | p_dl=400 | p_ul=400 | | | -+------+----------+----------+----------+----------+----------+ -| | T2amax | T2 | T2 | T2a_max | NA | -| | | a_max_cp | a_max_cp | _up=1120 | | -| | | _dl=1120 | _ul=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 | T | T | T1a_mi | NA | -| | | 1a_min_c | 1a_min_c | n_up=280 | | -| | | p_dl=560 | p_ul=480 | | | -+------+----------+----------+----------+----------+----------+ -| | T1amax | T | T | T1a_ma | NA | -| | | 1a_max_c | 1a_max_c | x_up=400 | | -| | | p_dl=800 | p_ul=560 | | | -+------+----------+----------+----------+----------+----------+ -| | Ta4min | NA | NA | NA | T | -| | | | | | a4_min=0 | -+------+----------+----------+----------+----------+----------+ -| | Ta4max | NA | NA | NA | Ta4 | -| | | | | | _max=360 | -+------+----------+----------+----------+----------+----------+ - -|br| -|br| -|br| - -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=285 | T2a_min_cp_ul=285 | T2a_min_up=71 | NA | -+------+------------+-------------------+-------------------+----------------+------------+ -| | T2amax | T2a_max_cp_dl=429 | T2a_max_cp_ul=429 | T2a_max_up=428 | NA | -+------+------------+-------------------+-------------------+----------------+------------+ -| |   | 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=285 | T1a_min_cp_ul=285 | T1a_min_up=96 | NA | -+------+------------+-------------------+-------------------+----------------+------------+ -| | T1amax | T1a_max_cp_dl=429 | T1a_max_cp_ul=300 | T1a_max_up=196 | NA | -+------+------------+-------------------+-------------------+----------------+------------+ -| | Ta4min | NA | NA | NA | Ta4_min=0 | -+------+------------+-------------------+-------------------+----------------+------------+ -| | Ta4max | NA | NA | NA | Ta4_max=75 | -+------+------------+-------------------+-------------------+----------------+------------+ - -|br| -|br| -|br| - -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 Appendix 2. Local time is used to get Top of -the Second (ToS) as a 1pps event for SW implementation. Timing event is -obtained by performing polling of local time using clock_gettime(CLOCK_REALTIME,..) - -All-time intervals are specified with respect to GPS time which -corresponds to OTA time. - -|br| -|br| -|br| - -Virtualization and Container-Based Usage ----------------------------------------- - -xRAN implementation is deployment agnostic and does not require special -changes to be used in virtualized or |br| -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. - - - +.. 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. + +* xRAN 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 xRAN 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 xRAN library for providing Front Haul functionality for both +mmWave and Sub-6 scenarios as well as LTE. + +The xRAN 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 xRAN 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 xRAN 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 +xRAN 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 xRAN 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 xRAN 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=50 | T2a_min_cp_ul=50 | T2a_min_up=25 | NA | ++ +------------+-------------------+-------------------+----------------+------------+ +| | T2amax | T2a_max_cp_dl=140 | T2a_max_cp_ul=140 | T2a_max_up=140 | NA | ++ +------------+-------------------+-------------------+----------------+------------+ +| |   | 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=70 | T1a_min_cp_ul=60 | T1a_min_up=35 | NA | ++ +------------+-------------------+-------------------+----------------+------------+ +| | T1amax | T1a_max_cp_dl=100 | T1a_max_cp_ul=70 | T1a_max_up=50 | NA | ++ +------------+-------------------+-------------------+----------------+------------+ +| | 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 | T | T | T2a_mi | NA | +| | | 2a_min_c | 2a_min_c | n_up=200 | | +| | | p_dl=400 | p_ul=400 | | | ++ +----------+----------+----------+----------+----------+ +| | T2amax | T2 | T2 | T2a_max | NA | +| | | a_max_cp | a_max_cp | _up=1120 | | +| | | _dl=1120 | _ul=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 | T | T | T1a_mi | NA | +| | | 1a_min_c | 1a_min_c | n_up=280 | | +| | | p_dl=560 | p_ul=480 | | | ++ +----------+----------+----------+----------+----------+ +| | T1amax | T | T | T1a_ma | NA | +| | | 1a_max_c | 1a_max_c | x_up=400 | | +| | | p_dl=800 | p_ul=560 | | | ++ +----------+----------+----------+----------+----------+ +| | 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=285 | T2a_min_cp_ul=285 | T2a_min_up=71 | NA | ++ +------------+-------------------+-------------------+----------------+------------+ +| | T2amax | T2a_max_cp_dl=429 | T2a_max_cp_ul=429 | T2a_max_up=428 | NA | ++ +------------+-------------------+-------------------+----------------+------------+ +| |   | 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=285 | T1a_min_cp_ul=285 | T1a_min_up=96 | NA | ++ +------------+-------------------+-------------------+----------------+------------+ +| | T1amax | T1a_max_cp_dl=429 | T1a_max_cp_ul=300 | T1a_max_up=196 | NA | ++ +------------+-------------------+-------------------+----------------+------------+ +| | 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 +---------------------------------------- + +xRAN 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 xRAN +library or Appendix A. diff --git a/docs/Assumptions_Dependencies.rst b/docs/Assumptions_Dependencies.rst index 29aae62..9b40c90 100644 --- a/docs/Assumptions_Dependencies.rst +++ b/docs/Assumptions_Dependencies.rst @@ -1,63 +1,97 @@ -.. 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. - -.. |br| raw:: html - -
- - -Assumptions and Dependencies -=============================== - -.. contents:: - :depth: 3 - :local: - -This chapter contains the assumptions, requirements and dependencies for the O-DU Low current implementation. - -Assumptions ------------ - -An L1 with a proprietary interface and a testmac supporting the FAPI interface are available through the Open Source Community(OSC) github in binary blob form and with the reference -files that support the tests required for the ORAN Bronze Release. The required header files that are needed to build the 5G FAPI TM and to run validation tests and to integrate with the O-DU -High to check network functionality are available from the same site. -The L1 App and Testmac repository is at https://github.com/intel/FlexRAN/ - -Requirements ------------- -* Only Xeon® series Processor with Intel Architecture are supported and the platform should be |br| - either Intel® Xeon® SkyLake or CascadeLake with at least 2.0 GHz core frequency. -* FPGA/ASIC card for FEC acceleration that is compliant with the BBDev framework and interface. Only needed to run high throughput cases with the HW FEC card assistance. -* Bios setting steps and options may have differences, however at least you should have the same Bios setting as decribed in the README.md file available at https://github.com/intel/FlexRAN Bios settings section. -* Running with FH requires PTP for Linux\* version 2.0 (or later) to be installed to provide IEEE 1588 synchronization. - -Dependencies ------------- - -* Centos OS 7 (7.5+) (7.7 was used for the L1 and testmac binaries). - -* RT Kernel kernel-rt-3.10.0-1062.12.1.rt56.1042 - -* Data Plane Development Kit (DPDK v19.11) with corresponding DPDK patch according to |br| O-RAN FH setup configuration section. - -* FEC SDK lib which is needed when you run the FEC in SW mode, download through: https://software.intel.com/en-us/articles/flexran-lte-and-5g-nr-fec-software-development-kit-modules - -* Intel® C++ Compiler v19.0.3 is used for test application and system integration. Free Intel® C++ Compiler can be gotten through below link with community license, however the version you get is always the latest ICC version, the verification for that version might not have been performed yet, please feedback through O-DU Low WIKI page if you meet any issues. - https://software.intel.com/en-us/system-studio/choose-download - -* Optionally Octave v3.8.2 can be used to generate reference IQ samples (octave-3.8.2-20.el7.x86_64) for O-RAN FH Sample App. Only needed to run the sample APP for O-RAN FHI. - - - - +.. 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. + + +Assumptions, Dependencies, and Constraints +========================================== + +.. contents:: + :depth: 3 + :local: + +This chapter contains limitations on the scope of the document. + +Assumptions +----------- + +An L1 with a proprietary interface and a testmac supporting the FAPI interface are available through the Open Source Community(OSC) github in binary blob form and with the reference +files that support the tests required for the ORAN Bronze Release. The required header files that are needed to build the 5G FAPI TM and to run validation tests and to integrate with the O-DU +High to check network functionality are available from the same site. +The L1 App and Testmac repository is at https://github.com/intel/FlexRAN/ + + +Requirements +------------ +* Only Xeon® series Processor with Intel Architecture are supported and the platform should be either Intel® Xeon® SkyLake or CascadeLake with at least 2.0 GHz core frequency. +* FPGA/ASIC card for FEC acceleration that is compliant with the BBDev framework and interface. Only needed to run high throughput cases with the HW FEC card assistance. +* Bios setting steps and options may have differences, however at least you should have the same Bios setting as decribed in the README.md file available at https://github.com/intel/FlexRAN Bios settings section. +* Running with FH requires PTP for Linux\* version 2.0 (or later) to be installed to provide IEEE 1588 synchronization. + + +Dependencies +------------ + +xRAN library implementation depends on the Data Plane Development Kit +(DPDK v20.11). + +DPDK v20.11 should be patched with corresponding DPDK patch provided +with FlexRAN release (see *Table 1*, FlexRAN Reference Solution Software +Release Notes) + +Intel® C++ Compiler v19.0.3 is used. + +- Optionally Octave v3.8.2 can be used to generate reference IQ samples (octave-3.8.2-20.el7.x86_64). + +Constraints +----------- + +This release has been designed and implemented to support the following +numerologies defined in the 3GPP specifications for LTE and 5GNR (refer +to *Table 2*): + +5G NR +~~~~~ + +Category A support: + +- Numerology 0 with bandwidth 5/10/20 MHz with up to 12 cells + +- Numerology 1 with bandwidth 100 MHz with up to 1 cell + +- Numerology 3 with bandwidth 100 MHz with up to 1 cell + +Category B support: + +Numerology 1 with bandwidth 100 MHz where the antenna panel is up to +64T64R with up to 3 cells. + +LTE +~~~ + +Category A support: + +Bandwidth 5/10/20 MHz with up to 12 cells + +Category B support: + +Bandwidth 5/10/20 MHz for 1 cell + +The feature set of O-RAN protocol should be aligned with Radio Unit +(O-RU) implementation. Inter-operability testing (IoT) is required to +confirm the correctness of functionality on both sides. The exact +feature set supported is described in Chapter *4.0* *Transport Layer and +O-RAN Fronthaul Protocol Implementation* of this document. + +- + diff --git a/docs/Introduction_fh.rst b/docs/Introduction_fh.rst index 06861aa..7a87f7f 100644 --- a/docs/Introduction_fh.rst +++ b/docs/Introduction_fh.rst @@ -1,33 +1,34 @@ -.. 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. - - -O-RAN FH Lib Introduction -========================== - -.. toctree:: - :maxdepth: 2 - :caption: Contents: - - Architecture-Overview_fh.rst - Transport-Layer-and-ORAN-Fronthaul-Protocol-Implementation_fh.rst - xRAN-Library-Design_fh.rst - Sample-Application_fh.rst - Setup-Configuration_fh.rst - PTP-configuration_fh.rst - - - - - +.. 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. + + +O-RAN FH Lib Introduction +========================== + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + Architecture-Overview_fh.rst + Transport-Layer-and-ORAN-Fronthaul-Protocol-Implementation_fh.rst + xRAN-Library-Design_fh.rst + Sample-Application_fh.rst + Setup-Configuration_fh.rst + PTP-configuration_fh.rst + ecpri_ddp_profile.rst + + + + + diff --git a/docs/PTP-configuration_fh.rst b/docs/PTP-configuration_fh.rst index 52e35ce..80ed436 100644 --- a/docs/PTP-configuration_fh.rst +++ b/docs/PTP-configuration_fh.rst @@ -1,730 +1,433 @@ -.. 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. - -.. |br| raw:: html - -
- -PTP configuration -================= - -A.5 PTP Synchronization ------------------------ -Precision Time Protocol (PTP) provides an efficient way to synchronize -time on the network nodes. This protocol uses Primary-Slave architecture. -Main Reference Clock (Primary) is a reference clock for the other nodes, -which adapt their clocks to the Primary. - -Using Physical Hardware Clock (PHC) from the Main Reference Clock, NIC port -precision timestamp packets can be served for other network nodes. Secondary -nodes adjust their PHC to the Primary following the IEEE 1588 -specification. - -There are existing implementations of PTP protocol that are widely used -in the industry. One of them is PTP for Linux, which is a set of tools -providing necessary PTP functionality. There is no need to re-implement -the 1588 protocol because PTP for Linux is precise and efficient enough -to be used out of the box. - -To meet xRAN requirements, two tools from PTP for Linux package are -required: ptp4l and phc2sys. - -PTP for Linux\* Requirements ----------------------------- - -PTP for Linux\* introduces some software and hardware requirements. The -machine on which the tools will be run needs to use at least a 3.10 -Kernel version (built-in PTP support). There are several Kernel options -that need to be enabled in Kernel configuration: - -- CONFIG_PPS - -- CONFIG_NETWORK_PHY_TIMESTAMPING - -- PTP_1588_CLOCK - -Be sure that the Kernel is compiled with these options. - -For the best precision, PTP uses hardware timestamping. NIC has its own -clock, called Physical Hardware Clock (PHC) to read current time just a -moment before the packet is sent to minimalize the delays added by the -Kernel processing the packet. Not every NIC supports that feature. To -confirm that currently attached NIC support Hardware Timestamps, use -ethtool with the command: - -ethtool -T eth0 - -where eth0 is the potential PHC port. The output from the command should -say that there is Hardware Timestamps support. - -To set up PTP for Linux*: - -1.Download source code:: - - git clone http://git.code.sf.net/p/linuxptp/code linuxptp - - git checkout v2.0 - -2.Apply patch (this is required to work around issue with some of the -GM PTP packet size.):: - - diff --git a/msg.c b/msg.c - - old mode 100644 - - new mode 100755 - - index d1619d4..40d1538 - - --- a/msg.c - - +++ b/msg.c - - @@ -399,9 +399,11 @@ int msg_post_recv(struct ptp_message \*m, int cnt) - - port_id_post_recv(&m->pdelay_resp.requestingPortIdentity); - - break; - - case FOLLOW_UP: - - + cnt -= 4; - - timestamp_post_recv(m, &m->follow_up.preciseOriginTimestamp); - - break; - - case DELAY_RESP: - - + cnt -= 4; - - timestamp_post_recv(m, &m->delay_resp.receiveTimestamp); - - port_id_post_recv(&m->delay_resp.requestingPortIdentity); - - break; - -3.Build and install ptp41:: - - # make && make install - -4.Modify configs/default.cfg to control frequency of Sync interval to -0.0625s:: - - logSyncInterval -4 - -ptp4l ----------- - -This tool handles all PTP traffic on the provided NIC port and updated -PHC. It also determines the Primary Reference Clock and tracks synchronization -status. This tool can be run as a daemon or as a regular Linux\* -application. When the synchronization is reached, it gives output on the -screen for precision tracking. The configuration file of ptp4l contains -many options that can be set to get the best synchronization precision. -Although, even with default.cfg the synchronization quality is good. - -To start the synchronization process run:: - - cd linuxptp - - ./ptp4l -f ./configs/default.cfg -2 -i -m - -The output below shows what the output on non-Primary node should look -like when synchronization is started. This means that PHC on this -machine is synchronized to the Primary PHC:: - - ptp4l[1434165.358]: port 1: INITIALIZING to LISTENING on INIT_COMPLETE - - ptp4l[1434165.358]: port 0: INITIALIZING to LISTENING on INIT_COMPLETE - - ptp4l[1434166.384]: port 1: new foreign primary fcaf6a.fffe.029708-1 - - ptp4l[1434170.352]: selected best primary clock fcaf6a.fffe.029708 - - ptp4l[1434170.352]: updating UTC offset to 37 - - ptp4l[1434170.352]: port 1: LISTENING to UNCALIBRATED on RS_SLAVE - - ptp4l[1434171.763]: primary offset -5873 s0 freq -18397 path delay 2778 - - ptp4l[1434172.763]: primary offset -6088 s2 freq -18612 path delay 2778 - - ptp4l[1434172.763]: port 1: UNCALIBRATED to SLAVE on - MASTER_CLOCK_SELECTED - - ptp4l[1434173.763]: primary offset -5886 s2 freq -24498 path delay 2732 - - ptp4l[1434174.763]: primary offset 221 s2 freq -20157 path delay 2728 - - ptp4l[1434175.763]: primary offset 1911 s2 freq -18401 path delay 2724 - - ptp4l[1434176.763]: primary offset 1774 s2 freq -17964 path delay 2728 - - ptp4l[1434177.763]: primary offset 1198 s2 freq -18008 path delay 2728 - - ptp4l[1434178.763]: primary offset 746 s2 freq -18101 path delay 2755 - - ptp4l[1434179.763]: primary offset 218 s2 freq -18405 path delay 2792 - - ptp4l[1434180.763]: primary offset 103 s2 freq -18454 path delay 2792 - - ptp4l[1434181.763]: primary offset -13 s2 freq -18540 path delay 2813 - - ptp4l[1434182.763]: primary offset 9 s2 freq -18521 path delay 2813 - - ptp4l[1434183.763]: primary offset 11 s2 freq -18517 path delay 2813 - -phc2sys ------------ - -The PHC clock is independent from the system clock. Synchronizing only -PHC does not make the system clock exactly the same as the primary. The -xRAN library requires use of the system clock to determine a common -point in time on two machines (O-DU and RU) to start transmission at the -same moment and keep time frames defined by ORAN Fronthaul specification. - -This application keeps the system clock updated to PHC. It makes it -possible to use POSIX timers as a time reference in xRAN application. - -Run phc2sys with the command:: - - cd linuxptp - - ./phc2sys -s enp25s0f0 -w -m -R 8 - -Command output will look like:: - - ptp4l[1434165.342]: selected /dev/ptp4 as PTP - - phc2sys[1434344.651]: CLOCK_REALTIME phc offset 450 s2 freq -39119 delay - 1354 - - phc2sys[1434344.776]: CLOCK_REALTIME phc offset 499 s2 freq -38620 delay - 1344 - - phc2sys[1434344.902]: CLOCK_REALTIME phc offset 485 s2 freq -38484 delay - 1347 - - phc2sys[1434345.027]: CLOCK_REALTIME phc offset 476 s2 freq -38348 delay - 1346 - - phc2sys[1434345.153]: CLOCK_REALTIME phc offset 392 s2 freq -38289 delay - 1340 - - phc2sys[1434345.278]: CLOCK_REALTIME phc offset 319 s2 freq -38244 delay - 1340 - - phc2sys[1434345.404]: CLOCK_REALTIME phc offset 278 s2 freq -38190 delay - 1349 - - phc2sys[1434345.529]: CLOCK_REALTIME phc offset 221 s2 freq -38163 delay - 1343 - - phc2sys[1434345.654]: CLOCK_REALTIME phc offset 97 s2 freq -38221 delay - 1342 - - phc2sys[1434345.780]: CLOCK_REALTIME phc offset 67 s2 freq -38222 delay - 1344 - - phc2sys[1434345.905]: CLOCK_REALTIME phc offset 68 s2 freq -38201 delay - 1341 - - phc2sys[1434346.031]: CLOCK_REALTIME phc offset 104 s2 freq -38144 delay - 1340 - - phc2sys[1434346.156]: CLOCK_REALTIME phc offset 58 s2 freq -38159 delay - 1340 - - phc2sys[1434346.281]: CLOCK_REALTIME phc offset 12 s2 freq -38188 delay - 1343 - - phc2sys[1434346.407]: CLOCK_REALTIME phc offset -36 s2 freq -38232 delay - 1342 - - phc2sys[1434346.532]: CLOCK_REALTIME phc offset -103 s2 freq -38310 - delay 1348 - -Configuration C3 ------------------- - -Configuration C3 27 can be simulated for O-DU using a separate server -acting as Fronthaul Network and O-RU at the same time. O-RU server can -be configured to relay PTP and act as PTP primary for O-DU. Settings -below can be used to instantiate this scenario. The difference is that -on the O-DU side, the Fronthaul port can be used as the source of PTP as -well as for U-plane and C-plane traffic. - -1.Follow the steps in Section A.6.1 to install PTP on the O-RU server. - -2.Copy configs/default.cfg to configs/default_slave.cfg and modify the -copied file as below:: - - diff --git a/configs/default.cfg b/configs/default.cfg - - old mode 100644 - - new mode 100755 - - index e23dfd7..f1ecaf1 - - --- a/configs/default.cfg - - +++ b/configs/default.cfg - - @@ -3,26 +3,26 @@ - - # Default Data Set - - # - - twoStepFlag 1 - - -slaveOnly 0 - - +slaveOnly 1 - - priority1 128 - - -priority2 128 - - +priority2 255 - - domainNumber 0 - - #utc_offset 37 - - -clockClass 248 - - +clockClass 255 - - clockAccuracy 0xFE - - offsetScaledLogVariance 0xFFFF - - free_running 0 - - freq_est_interval 1 - - dscp_event 0 - - dscp_general 0 - - -dataset_comparison ieee1588 - - +dataset_comparison G.8275.x - - G.8275.defaultDS.localPriority 128 - - maxStepsRemoved 255 - - # - - # Port Data Set - - # - - logAnnounceInterval 1 - - -logSyncInterval 0 - - +logSyncInterval -4 - - operLogSyncInterval 0 - - logMinDelayReqInterval 0 - - logMinPdelayReqInterval 0 - - @@ -37,7 +37,7 @@ G.8275.portDS.localPriority 128 - - asCapable auto - - BMCA ptp - - inhibit_announce 0 - - -inhibit_pdelay_req 0 - - +#inhibit_pdelay_req 0 - - ignore_source_id 0 - - # - - # Run time options - -1.Start secondary port toward PTP GM:: - - ./ptp4l -f ./configs/default_slave.cfg -2 -i enp25s0f0 –m - -Example of output:: - - ./ptp4l -f ./configs/default_slave.cfg -2 -i enp25s0f0 -m - - ptp4l[3904470.256]: selected /dev/ptp6 as PTP clock - - ptp4l[3904470.274]: port 1: INITIALIZING to LISTENING on INIT_COMPLETE - - ptp4l[3904470.275]: port 0: INITIALIZING to LISTENING on INIT_COMPLETE - - ptp4l[3904471.085]: port 1: new foreign primary fcaf6a.fffe.029708-1 - - ptp4l[3904475.053]: selected best primary clock fcaf6a.fffe.029708 - - ptp4l[3904475.053]: updating UTC offset to 37 - - ptp4l[3904475.053]: port 1: LISTENING to UNCALIBRATED on RS_SLAVE - - ptp4l[3904477.029]: primary offset 196 s0 freq -18570 path delay 1109 - - ptp4l[3904478.029]: primary offset 212 s2 freq -18554 path delay 1109 - - ptp4l[3904478.029]: port 1: UNCALIBRATED to SLAVE on - MASTER_CLOCK_SELECTED - - ptp4l[3904479.029]: primary offset 86 s2 freq -18468 path delay 1109 - - ptp4l[3904480.029]: primary offset 23 s2 freq -18505 path delay 1124 - - ptp4l[3904481.029]: primary offset 3 s2 freq -18518 path delay 1132 - - ptp4l[3904482.029]: primary offset -169 s2 freq -18689 path delay 1141 - -2.Synchronize local timer clock on O-RU for sample application:: - - ./phc2sys -s enp25s0f0 -w -m -R 8 - -Example of output:: - - ./phc2sys -s enp25s0f0 -w -m -R 8 - - phc2sys[3904510.892]: CLOCK_REALTIME phc offset 343 s0 freq -38967 delay - 1530 - - phc2sys[3904511.017]: CLOCK_REALTIME phc offset 368 s2 freq -38767 delay - 1537 - - phc2sys[3904511.142]: CLOCK_REALTIME phc offset 339 s2 freq -38428 delay - 1534 - - phc2sys[3904511.267]: CLOCK_REALTIME phc offset 298 s2 freq -38368 delay - 1532 - - phc2sys[3904511.392]: CLOCK_REALTIME phc offset 239 s2 freq -38337 delay - 1534 - - phc2sys[3904511.518]: CLOCK_REALTIME phc offset 145 s2 freq -38360 delay - 1530 - - phc2sys[3904511.643]: CLOCK_REALTIME phc offset 106 s2 freq -38355 delay - 1527 - - phc2sys[3904511.768]: CLOCK_REALTIME phc offset -30 s2 freq -38459 delay - 1534 - - phc2sys[3904511.893]: CLOCK_REALTIME phc offset -92 s2 freq -38530 delay - 1530 - - phc2sys[3904512.018]: CLOCK_REALTIME phc offset -173 s2 freq -38639 - delay 1528 - - phc2sys[3904512.143]: CLOCK_REALTIME phc offset -246 s2 freq -38764 - delay 1530 - - phc2sys[3904512.268]: CLOCK_REALTIME phc offset -300 s2 freq -38892 - delay 1532 - -3. Modify configs/default.cfg as shown below to run PTP primary on -Fronthaul of O-RU:: - - diff --git a/configs/default.cfg b/configs/default.cfg - - old mode 100644 - - new mode 100755 - - index e23dfd7..c9e9d4c - - --- a/configs/default.cfg - - +++ b/configs/default.cfg - - @@ -15,14 +15,14 @@ free_running 0 - - freq_est_interval 1 - - dscp_event 0 - - dscp_general 0 - - -dataset_comparison ieee1588 - - +dataset_comparison G.8275.x - - G.8275.defaultDS.localPriority 128 - - maxStepsRemoved 255 - - # - - # Port Data Set - - # - - logAnnounceInterval 1 - - -logSyncInterval 0 - - +logSyncInterval -4 - - operLogSyncInterval 0 - - logMinDelayReqInterval 0 - - logMinPdelayReqInterval 0 - - @@ -37,7 +37,7 @@ G.8275.portDS.localPriority 128 - - asCapable auto - - BMCA ptp - - inhibit_announce 0 - - -inhibit_pdelay_req 0 - - +#inhibit_pdelay_req 0 - - ignore_source_id 0 - - # - - # Run time options - -4.Start PTP primary toward O-DU:: - - ./ptp4l -f ./configs/default.cfg -2 -i enp175s0f1 –m - -Example of output:: - - ./ptp4l -f ./configs/default.cfg -2 -i enp175s0f1 -m - - ptp4l[3903857.249]: selected /dev/ptp3 as PTP clock - - ptp4l[3903857.266]: port 1: INITIALIZING to LISTENING on INIT_COMPLETE - - ptp4l[3903857.267]: port 0: INITIALIZING to LISTENING on INIT_COMPLETE - - ptp4l[3903863.734]: port 1: LISTENING to MASTER on - ANNOUNCE_RECEIPT_TIMEOUT_EXPIRES - - ptp4l[3903863.734]: selected local clock 3cfdfe.fffe.bd005d as best - primary - - ptp4l[3903863.734]: assuming the main reference role - -5.Synchronize local NIC PTP primary clock to local NIC PTP secondary clock:: - - ./phc2sys -c enp175s0f1 -s enp25s0f0 -w -m -R 8 - -Example of output:: - - ./phc2sys -c enp175s0f1 -s enp25s0f0 -w -m -R 8 - - phc2sys[3904600.332]: enp175s0f1 phc offset 2042 s0 freq -2445 delay - 4525 - - phc2sys[3904600.458]: enp175s0f1 phc offset 2070 s2 freq -2223 delay - 4506 - - phc2sys[3904600.584]: enp175s0f1 phc offset 2125 s2 freq -98 delay 4505 - - phc2sys[3904600.710]: enp175s0f1 phc offset 1847 s2 freq +262 delay 4518 - - phc2sys[3904600.836]: enp175s0f1 phc offset 1500 s2 freq +469 delay 4515 - - phc2sys[3904600.961]: enp175s0f1 phc offset 1146 s2 freq +565 delay 4547 - - phc2sys[3904601.086]: enp175s0f1 phc offset 877 s2 freq +640 delay 4542 - - phc2sys[3904601.212]: enp175s0f1 phc offset 517 s2 freq +543 delay 4517 - - phc2sys[3904601.337]: enp175s0f1 phc offset 189 s2 freq +370 delay 4510 - - phc2sys[3904601.462]: enp175s0f1 phc offset -125 s2 freq +113 delay 4554 - - phc2sys[3904601.587]: enp175s0f1 phc offset -412 s2 freq -212 delay 4513 - - phc2sys[3904601.712]: enp175s0f1 phc offset -693 s2 freq -617 delay 4519 - - phc2sys[3904601.837]: enp175s0f1 phc offset -878 s2 freq -1009 delay - 4515 - - phc2sys[3904601.962]: enp175s0f1 phc offset -965 s2 freq -1360 delay - 4518 - - phc2sys[3904602.088]: enp175s0f1 phc offset -1048 s2 freq -1732 delay - 4510 - - phc2sys[3904602.213]: enp175s0f1 phc offset -1087 s2 freq -2086 delay - 4531 - - phc2sys[3904602.338]: enp175s0f1 phc offset -1014 s2 freq -2339 delay - 4528 - - phc2sys[3904602.463]: enp175s0f1 phc offset -1009 s2 freq -2638 delay - 4531 - -6. On O-DU Install PTP for Linux tools from source code the same way as -on O-RU above but no need to apply the patch for msg.c - -7. Start secondary port toward PTP primary from O-RU using the same -default_slave.cfg as on O-RU (see above):: - - ./ptp4l -f ./configs/default_slave.cfg -2 -i enp181s0f0 –m - -Example of output:: - - ./ptp4l -f ./configs/default_slave.cfg -2 -i enp181s0f0 -m - - ptp4l[809092.918]: selected /dev/ptp6 as PTP clock - - ptp4l[809092.934]: port 1: INITIALIZING to LISTENING on INIT_COMPLETE - - ptp4l[809092.934]: port 0: INITIALIZING to LISTENING on INIT_COMPLETE - - ptp4l[809092.949]: port 1: new foreign primary 3cfdfe.fffe.bd005d-1 - - ptp4l[809096.949]: selected best primary clock 3cfdfe.fffe.bd005d - - ptp4l[809096.950]: port 1: LISTENING to UNCALIBRATED on RS_SLAVE - - ptp4l[809098.363]: port 1: UNCALIBRATED to SLAVE on - MASTER_CLOCK_SELECTED - - ptp4l[809099.051]: rms 38643 max 77557 freq +719 +/- 1326 delay 1905 +/- - 0 - - ptp4l[809100.051]: rms 1134 max 1935 freq -103 +/- 680 delay 1891 +/- 4 - - ptp4l[809101.051]: rms 453 max 855 freq +341 +/- 642 delay 1888 +/- 0 - - ptp4l[809102.052]: rms 491 max 772 freq +1120 +/- 752 delay 1702 +/- 0 - - ptp4l[809103.052]: rms 423 max 654 freq +1352 +/- 653 delay 1888 +/- 0 - - ptp4l[809104.052]: rms 412 max 579 freq +1001 +/- 672 delay 1702 +/- 0 - - ptp4l[809105.053]: rms 441 max 672 freq +807 +/- 709 delay 1826 +/- 88 - - ptp4l[809106.053]: rms 422 max 607 freq +1353 +/- 636 delay 1702 +/- 0 - - ptp4l[809107.054]: rms 401 max 466 freq +946 +/- 646 delay 1702 +/- 0 - - ptp4l[809108.055]: rms 401 max 502 freq +912 +/- 659 - -8. Synchronize local clock on O-DU for sample application or l1 -application:: - - ./phc2sys -s enp181s0f0 -w -m -R 8 - -Example of output:: - - ./phc2sys -s enp181s0f0 -w -m -R 8 - - phc2sys[809127.123]: CLOCK_REALTIME phc offset 675 s0 freq -37379 delay - 1646 - - phc2sys[809127.249]: CLOCK_REALTIME phc offset 696 s2 freq -37212 delay - 1654 - - phc2sys[809127.374]: CLOCK_REALTIME phc offset 630 s2 freq -36582 delay - 1648 - - phc2sys[809127.500]: CLOCK_REALTIME phc offset 461 s2 freq -36562 delay - 1642 - - phc2sys[809127.625]: CLOCK_REALTIME phc offset 374 s2 freq -36510 delay - 1643 - - phc2sys[809127.751]: CLOCK_REALTIME phc offset 122 s2 freq -36650 delay - 1649 - - phc2sys[809127.876]: CLOCK_REALTIME phc offset 34 s2 freq -36702 delay - 1650 - - phc2sys[809128.002]: CLOCK_REALTIME phc offset -112 s2 freq -36837 delay - 1645 - - phc2sys[809128.127]: CLOCK_REALTIME phc offset -160 s2 freq -36919 delay - 1643 - - phc2sys[809128.252]: CLOCK_REALTIME phc offset -270 s2 freq -37077 delay - 1657 - - phc2sys[809128.378]: CLOCK_REALTIME phc offset -285 s2 freq -37173 delay - 1644 - - phc2sys[809128.503]: CLOCK_REALTIME phc offset -349 s2 freq -37322 delay - 1644 - - phc2sys[809128.629]: CLOCK_REALTIME phc offset -402 s2 freq -37480 delay - 1641 - - phc2sys[809128.754]: CLOCK_REALTIME phc offset -377 s2 freq -37576 delay - 1648 - - phc2sys[809128.879]: CLOCK_REALTIME phc offset -467 s2 freq -37779 delay - 1650 - - phc2sys[809129.005]: CLOCK_REALTIME phc offset -408 s2 freq -37860 delay - 1648 - - phc2sys[809129.130]: CLOCK_REALTIME phc offset -480 s2 freq -38054 delay - 1655 - - phc2sys[809129.256]: CLOCK_REALTIME phc offset -350 s2 freq -38068 delay - 1650 - -Support in xRAN Library ----------------------------- - -The xRAN library provides an API to check whether PTP for Linux is -running correctly. There is a function called xran_is_synchronized(). It -checks if ptp4l and phc2sys are running in the system by making PMC tool -requests for current port state and comparing it with the expected -value. This verification should be done before initialization. - -*notes. “SECONDARY” is the only expected value in this release; only a -non-primary scenario is supported currently.* - -*notes1. Inclusive language terms were used except for the PTP traces where the source code has -not been updated to support the inclusive language terms yet.* - -.. |image0| image:: media/image3.png - :width: 2.52364in - :height: 3.77174in -.. |image1| image:: media/image8.png - :width: 6.258in - :height: 1.40538in -.. |image2| image:: media/image10.emf - :width: 6.18493in - :height: 0.53448in -.. |image3| image:: media/image15.png - :width: 6.27856in - :height: 2.672in -.. |image4| image:: media/image21.JPG - :width: 6.17708in - :height: 6.09375in +.. 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. + + +PTP Configuration +================= + +PTP Synchronization +=================== + +Precision Time Protocol (PTP) provides an efficient way to synchronize +time on the network nodes. This protocol uses Master-Slave architecture. +Grandmaster Clock (Master) is a reference clock for the other nodes, +which adapt their clocks to the master. + +Using Physical Hardware Clock (PHC) from the Grandmaster Clock, NIC port +precision timestamp packets can be served for other network nodes. Slave +nodes adjust their PHC to the master following the IEEE 1588 +specification. + +There are existing implementations of PTP protocol that are widely used +in the industry. One of them is PTP for Linux, which is a set of tools +providing necessary PTP functionality. There is no need to re-implement +the 1588 protocol because PTP for Linux is precise and efficient enough +to be used out of the box. + +To meet O-RAN requirements, two tools from PTP for Linux package are +required: ptp4l and phc2sys. + +PTP for Linux\* Requirements +============================ + +PTP for Linux\* introduces some software and hardware requirements. The +machine on which the tools will be run needs to use at least a 3.10 +Kernel version (built-in PTP support). Several Kernel options need to be +enabled in Kernel configuration: + +- CONFIG_PPS + +- CONFIG_NETWORK_PHY_TIMESTAMPING + +- PTP_1588_CLOCK + +Be sure that the Kernel is compiled with these options. + +For the best precision, PTP uses hardware timestamping. NIC has its own +clock, called Physical Hardware Clock (PHC), to read current time just a +moment before the packet is sent to minimalize the delays added by the +Kernel processing the packet. Not every NIC supports that feature. To +confirm that currently attached NIC support Hardware Timestamps, use +ethtool with the command:: + + ethtool -T eth0 + +Where the eth0 is the potential PHC port. The output from the command +should say that there is Hardware Timestamps support. + +To set up PTP for Linux*: + +1. Download source code:: + + git clone http://git.code.sf.net/p/linuxptp/code linuxptp + git checkout v2.0 + +*Note* Apply patch (this is required to work around an issue with some of the GM PTP packet sizes.) :: + + diff --git a/msg.c b/msg.c + old mode 100644 + new mode 100755 + index d1619d4..40d1538 + --- a/msg.c + +++ b/msg.c + @@ -399,9 +399,11 @@ int msg_post_recv(struct ptp_message *m, int cnt) + port_id_post_recv(&m->pdelay_resp.requestingPortIdentity); + break; + case FOLLOW_UP: + + cnt -= 4; + timestamp_post_recv(m, &m->follow_up.preciseOriginTimestamp); + break; + case DELAY_RESP: + + cnt -= 4; + timestamp_post_recv(m, &m->delay_resp.receiveTimestamp); + port_id_post_recv(&m->delay_resp.requestingPortIdentity); + break; + +2. Build and install ptp41. :: + + # make && make install + +22. Modify configs/default.cfg to control frequency of Sync interval to 0.0625 s. :: + + logSyncInterval -4 + +ptp4l +===== + +This tool handles all PTP traffic on the provided NIC port and updated +PHC. It also determines the Grandmaster Clock and tracks synchronization +status. This tool can be run as a daemon or as a regular Linux\* +application. When the synchronization is reached, it gives output on the +screen for precision tracking. The configuration file of ptp4l contains +many options that can be set to get the best synchronization precision. +Although, even with default.cfg the synchronization quality is +excellent. + +To start the synchronization process run:: + + cd linuxptp + ./ptp4l -f ./configs/default.cfg -2 -i -m + +The output below shows what the output on non-master node should look +like when synchronization is started. This means that PHC on this +machine is synchronized to the master PHC. :: + + ptp4l[1434165.358]: port 1: INITIALIZING to LISTENING on INIT_COMPLETE + ptp4l[1434165.358]: port 0: INITIALIZING to LISTENING on INIT_COMPLETE + ptp4l[1434166.384]: port 1: new foreign master fcaf6a.fffe.029708-1 + ptp4l[1434170.352]: selected best master clock fcaf6a.fffe.029708 + ptp4l[1434170.352]: updating UTC offset to 37 + ptp4l[1434170.352]: port 1: LISTENING to UNCALIBRATED on RS_SLAVE + ptp4l[1434171.763]: master offset -5873 s0 freq -18397 path delay 2778 + ptp4l[1434172.763]: master offset -6088 s2 freq -18612 path delay 2778 + ptp4l[1434172.763]: port 1: UNCALIBRATED to SLAVE on MASTER_CLOCK_SELECTED + ptp4l[1434173.763]: master offset -5886 s2 freq -24498 path delay 2732 + ptp4l[1434174.763]: master offset 221 s2 freq -20157 path delay 2728 + ptp4l[1434175.763]: master offset 1911 s2 freq -18401 path delay 2724 + ptp4l[1434176.763]: master offset 1774 s2 freq -17964 path delay 2728 + ptp4l[1434177.763]: master offset 1198 s2 freq -18008 path delay 2728 + ptp4l[1434178.763]: master offset 746 s2 freq -18101 path delay 2755 + ptp4l[1434179.763]: master offset 218 s2 freq -18405 path delay 2792 + ptp4l[1434180.763]: master offset 103 s2 freq -18454 path delay 2792 + ptp4l[1434181.763]: master offset -13 s2 freq -18540 path delay 2813 + ptp4l[1434182.763]: master offset 9 s2 freq -18521 path delay 2813 + ptp4l[1434183.763]: master offset 11 s2 freq -18517 path delay 2813 + +phc2sys +======= + +The PHC clock is independent from the system clock. Synchronizing only +PHC does not make the system clock exactly the same as the master. The +xRAN library requires use of the system clock to determine a common +point in time on two machines (O-DU and RU) to start transmission at the +same moment and keep time frames defined by O-RAN Fronthaul +specification. + +This application keeps the system clock updated to PHC. It makes it +possible to use POSIX timers as a time reference in xRAN application. + +Run phc2sys with the command:: + + cd linuxptp + ./phc2sys -s enp25s0f0 -w -m -R 8 + +Command output will look like:: + + ptp4l[1434165.342]: selected /dev/ptp4 as PTP + phc2sys[1434344.651]: CLOCK_REALTIME phc offset 450 s2 freq -39119 delay 1354 + phc2sys[1434344.776]: CLOCK_REALTIME phc offset 499 s2 freq -38620 delay 1344 + phc2sys[1434344.902]: CLOCK_REALTIME phc offset 485 s2 freq -38484 delay 1347 + phc2sys[1434345.027]: CLOCK_REALTIME phc offset 476 s2 freq -38348 delay 1346 + phc2sys[1434345.153]: CLOCK_REALTIME phc offset 392 s2 freq -38289 delay 1340 + phc2sys[1434345.278]: CLOCK_REALTIME phc offset 319 s2 freq -38244 delay 1340 + phc2sys[1434345.404]: CLOCK_REALTIME phc offset 278 s2 freq -38190 delay 1349 + phc2sys[1434345.529]: CLOCK_REALTIME phc offset 221 s2 freq -38163 delay 1343 + phc2sys[1434345.654]: CLOCK_REALTIME phc offset 97 s2 freq -38221 delay 1342 + phc2sys[1434345.780]: CLOCK_REALTIME phc offset 67 s2 freq -38222 delay 1344 + phc2sys[1434345.905]: CLOCK_REALTIME phc offset 68 s2 freq -38201 delay 1341 + phc2sys[1434346.031]: CLOCK_REALTIME phc offset 104 s2 freq -38144 delay 1340 + phc2sys[1434346.156]: CLOCK_REALTIME phc offset 58 s2 freq -38159 delay 1340 + phc2sys[1434346.281]: CLOCK_REALTIME phc offset 12 s2 freq -38188 delay 1343 + phc2sys[1434346.407]: CLOCK_REALTIME phc offset -36 s2 freq -38232 delay 1342 + phc2sys[1434346.532]: CLOCK_REALTIME phc offset -103 s2 freq -38310 delay 1348 + +Configuration C3 +================ + +Configuration C3 27 can be simulated for O-DU using a separate server +acting as Fronthaul Network and O-RU at the same time. O-RU server can +be configured to relay PTP and act as PTP master for O-DU. Settings +below can be used to instantiate this scenario. The difference is that +on the O-DU side, the Fronthaul port can be used as the source of PTP as +well as for U-plane and C-plane traffic. + +1. Follow the steps in Appendix *B.1.1,* *PTP for Linux\* Requirements* +to install PTP on the O-RU server. + +2. Copy configs/default.cfg to configs/default_slave.cfg and modify the +Copied file as below:: + + diff --git a/configs/default.cfg b/configs/default.cfg + old mode 100644 + new mode 100755 + index e23dfd7..f1ecaf1 + --- a/configs/default.cfg + +++ b/configs/default.cfg + @@ -3,26 +3,26 @@ + # Default Data Set + # + twoStepFlag 1 + -slaveOnly 0 + +slaveOnly 1 + priority1 128 + -priority2 128 + +priority2 255 + domainNumber 0 + #utc_offset 37 + -clockClass 248 + +clockClass 255 + clockAccuracy 0xFE + offsetScaledLogVariance 0xFFFF + free_running 0 + freq_est_interval 1 + dscp_event 0 + dscp_general 0 + -dataset_comparison ieee1588 + +dataset_comparison G.8275.x + G.8275.defaultDS.localPriority 128 + maxStepsRemoved 255 + # + # Port Data Set + # + logAnnounceInterval 1 + -logSyncInterval 0 + +logSyncInterval -4 + operLogSyncInterval 0 + logMinDelayReqInterval 0 + logMinPdelayReqInterval 0 + @@ -37,7 +37,7 @@ G.8275.portDS.localPriority 128 + asCapable auto + BMCA ptp + inhibit_announce 0 + -inhibit_pdelay_req 0 + +#inhibit_pdelay_req 0 + ignore_source_id 0 + # + # Run time options + + +3. Start slave port toward PTP GM:: + + ./ptp4l -f ./configs/default_slave.cfg -2 -i enp25s0f0 –m + +Example of output:: + + ./ptp4l -f ./configs/default_slave.cfg -2 -i enp25s0f0 -m + ptp4l[3904470.256]: selected /dev/ptp6 as PTP clock + ptp4l[3904470.274]: port 1: INITIALIZING to LISTENING on INIT_COMPLETE + ptp4l[3904470.275]: port 0: INITIALIZING to LISTENING on INIT_COMPLETE + ptp4l[3904471.085]: port 1: new foreign master fcaf6a.fffe.029708-1 + ptp4l[3904475.053]: selected best master clock fcaf6a.fffe.029708 + ptp4l[3904475.053]: updating UTC offset to 37 + ptp4l[3904475.053]: port 1: LISTENING to UNCALIBRATED on RS_SLAVE + ptp4l[3904477.029]: master offset 196 s0 freq -18570 path delay 1109 + ptp4l[3904478.029]: master offset 212 s2 freq -18554 path delay 1109 + ptp4l[3904478.029]: port 1: UNCALIBRATED to SLAVE on MASTER_CLOCK_SELECTED + ptp4l[3904479.029]: master offset 86 s2 freq -18468 path delay 1109 + ptp4l[3904480.029]: master offset 23 s2 freq -18505 path delay 1124 + ptp4l[3904481.029]: master offset 3 s2 freq -18518 path delay 1132 + ptp4l[3904482.029]: master offset -169 s2 freq -18689 path delay 1141 + +4. Synchronize local timer clock on O-RU for sample application :: + + ./phc2sys -s enp25s0f0 -w -m -R 8 + +Example of output:: + + ./phc2sys -s enp25s0f0 -w -m -R 8 + phc2sys[3904510.892]: CLOCK_REALTIME phc offset 343 s0 freq -38967 delay 1530 + phc2sys[3904511.017]: CLOCK_REALTIME phc offset 368 s2 freq -38767 delay 1537 + phc2sys[3904511.142]: CLOCK_REALTIME phc offset 339 s2 freq -38428 delay 1534 + phc2sys[3904511.267]: CLOCK_REALTIME phc offset 298 s2 freq -38368 delay 1532 + phc2sys[3904511.392]: CLOCK_REALTIME phc offset 239 s2 freq -38337 delay 1534 + phc2sys[3904511.518]: CLOCK_REALTIME phc offset 145 s2 freq -38360 delay 1530 + phc2sys[3904511.643]: CLOCK_REALTIME phc offset 106 s2 freq -38355 delay 1527 + phc2sys[3904511.768]: CLOCK_REALTIME phc offset -30 s2 freq -38459 delay 1534 + phc2sys[3904511.893]: CLOCK_REALTIME phc offset -92 s2 freq -38530 delay 1530 + phc2sys[3904512.018]: CLOCK_REALTIME phc offset -173 s2 freq -38639 delay 1528 + phc2sys[3904512.143]: CLOCK_REALTIME phc offset -246 s2 freq -38764 delay 1530 + phc2sys[3904512.268]: CLOCK_REALTIME phc offset -300 s2 freq -38892 delay 1532 + +5. Modify configs/default.cfg as shown below to run PTP master on Fronthaul of O-RU. :: + + diff --git a/configs/default.cfg b/configs/default.cfg + old mode 100644 + new mode 100755 + index e23dfd7..c9e9d4c + --- a/configs/default.cfg + +++ b/configs/default.cfg + @@ -15,14 +15,14 @@ free_running 0 + freq_est_interval 1 + dscp_event 0 + dscp_general 0 + -dataset_comparison ieee1588 + +dataset_comparison G.8275.x + G.8275.defaultDS.localPriority 128 + maxStepsRemoved 255 + # + # Port Data Set + # + logAnnounceInterval 1 + -logSyncInterval 0 + +logSyncInterval -4 + operLogSyncInterval 0 + logMinDelayReqInterval 0 + logMinPdelayReqInterval 0 + @@ -37,7 +37,7 @@ G.8275.portDS.localPriority 128 + asCapable auto + BMCA ptp + inhibit_announce 0 + -inhibit_pdelay_req 0 + +#inhibit_pdelay_req 0 + ignore_source_id 0 + # + # Run time options + +6. Start PTP master toward O-DU:: + + ./ptp4l -f ./configs/default.cfg -2 -i enp175s0f1 –m + +Example of output:: + + ./ptp4l -f ./configs/default.cfg -2 -i enp175s0f1 -m + ptp4l[3903857.249]: selected /dev/ptp3 as PTP clock + ptp4l[3903857.266]: port 1: INITIALIZING to LISTENING on INIT_COMPLETE + ptp4l[3903857.267]: port 0: INITIALIZING to LISTENING on INIT_COMPLETE + ptp4l[3903863.734]: port 1: LISTENING to MASTER on ANNOUNCE_RECEIPT_TIMEOUT_EXPIRES + ptp4l[3903863.734]: selected local clock 3cfdfe.fffe.bd005d as best master + ptp4l[3903863.734]: assuming the grand master role + +7. Synchronize local NIC PTP master clock to local NIC PTP slave clock. :: + + ./phc2sys -c enp175s0f1 -s enp25s0f0 -w -m -R 8 + +Example of output:: + + ./phc2sys -c enp175s0f1 -s enp25s0f0 -w -m -R 8 + phc2sys[3904600.332]: enp175s0f1 phc offset 2042 s0 freq -2445 delay 4525 + phc2sys[3904600.458]: enp175s0f1 phc offset 2070 s2 freq -2223 delay 4506 + phc2sys[3904600.584]: enp175s0f1 phc offset 2125 s2 freq -98 delay 4505 + phc2sys[3904600.710]: enp175s0f1 phc offset 1847 s2 freq +262 delay 4518 + phc2sys[3904600.836]: enp175s0f1 phc offset 1500 s2 freq +469 delay 4515 + phc2sys[3904600.961]: enp175s0f1 phc offset 1146 s2 freq +565 delay 4547 + phc2sys[3904601.086]: enp175s0f1 phc offset 877 s2 freq +640 delay 4542 + phc2sys[3904601.212]: enp175s0f1 phc offset 517 s2 freq +543 delay 4517 + phc2sys[3904601.337]: enp175s0f1 phc offset 189 s2 freq +370 delay 4510 + phc2sys[3904601.462]: enp175s0f1 phc offset -125 s2 freq +113 delay 4554 + phc2sys[3904601.587]: enp175s0f1 phc offset -412 s2 freq -212 delay 4513 + phc2sys[3904601.712]: enp175s0f1 phc offset -693 s2 freq -617 delay 4519 + phc2sys[3904601.837]: enp175s0f1 phc offset -878 s2 freq -1009 delay 4515 + phc2sys[3904601.962]: enp175s0f1 phc offset -965 s2 freq -1360 delay 4518 + phc2sys[3904602.088]: enp175s0f1 phc offset -1048 s2 freq -1732 delay 4510 + phc2sys[3904602.213]: enp175s0f1 phc offset -1087 s2 freq -2086 delay 4531 + phc2sys[3904602.338]: enp175s0f1 phc offset -1014 s2 freq -2339 delay 4528 + phc2sys[3904602.463]: enp175s0f1 phc offset -1009 s2 freq -2638 delay 4531 + +8. On O-DU Install PTP for Linux tools from source code the same way as +on O-RU above but no need to apply the patch for msg.c + +9. Start slave port toward PTP master from O-RU using the same +default_slave.cfg as on O-RU (see above) :: + + ./ptp4l -f ./configs/default_slave.cfg -2 -i enp181s0f0 –m + +Example of output:: + + ./ptp4l -f ./configs/default_slave.cfg -2 -i enp181s0f0 -m + ptp4l[809092.918]: selected /dev/ptp6 as PTP clock + ptp4l[809092.934]: port 1: INITIALIZING to LISTENING on INIT_COMPLETE + ptp4l[809092.934]: port 0: INITIALIZING to LISTENING on INIT_COMPLETE + ptp4l[809092.949]: port 1: new foreign master 3cfdfe.fffe.bd005d-1 + ptp4l[809096.949]: selected best master clock 3cfdfe.fffe.bd005d + ptp4l[809096.950]: port 1: LISTENING to UNCALIBRATED on RS_SLAVE + ptp4l[809098.363]: port 1: UNCALIBRATED to SLAVE on MASTER_CLOCK_SELECTED + ptp4l[809099.051]: rms 38643 max 77557 freq +719 +/- 1326 delay 1905 +/- 0 + ptp4l[809100.051]: rms 1134 max 1935 freq -103 +/- 680 delay 1891 +/- 4 + ptp4l[809101.051]: rms 453 max 855 freq +341 +/- 642 delay 1888 +/- 0 + ptp4l[809102.052]: rms 491 max 772 freq +1120 +/- 752 delay 1702 +/- 0 + ptp4l[809103.052]: rms 423 max 654 freq +1352 +/- 653 delay 1888 +/- 0 + ptp4l[809104.052]: rms 412 max 579 freq +1001 +/- 672 delay 1702 +/- 0 + ptp4l[809105.053]: rms 441 max 672 freq +807 +/- 709 delay 1826 +/- 88 + ptp4l[809106.053]: rms 422 max 607 freq +1353 +/- 636 delay 1702 +/- 0 + ptp4l[809107.054]: rms 401 max 466 freq +946 +/- 646 delay 1702 +/- 0 + ptp4l[809108.055]: rms 401 max 502 freq +912 +/- 659 + +10. Synchronize local clock on O-DU for sample application or l1 +Application. :: + + ./phc2sys -s enp181s0f0 -w -m -R 8 + +Example of output:: + + ./phc2sys -s enp181s0f0 -w -m -R 8 + phc2sys[809127.123]: CLOCK_REALTIME phc offset 675 s0 freq -37379 delay 1646 + phc2sys[809127.249]: CLOCK_REALTIME phc offset 696 s2 freq -37212 delay 1654 + phc2sys[809127.374]: CLOCK_REALTIME phc offset 630 s2 freq -36582 delay 1648 + phc2sys[809127.500]: CLOCK_REALTIME phc offset 461 s2 freq -36562 delay 1642 + phc2sys[809127.625]: CLOCK_REALTIME phc offset 374 s2 freq -36510 delay 1643 + phc2sys[809127.751]: CLOCK_REALTIME phc offset 122 s2 freq -36650 delay 1649 + phc2sys[809127.876]: CLOCK_REALTIME phc offset 34 s2 freq -36702 delay 1650 + phc2sys[809128.002]: CLOCK_REALTIME phc offset -112 s2 freq -36837 delay 1645 + phc2sys[809128.127]: CLOCK_REALTIME phc offset -160 s2 freq -36919 delay 1643 + phc2sys[809128.252]: CLOCK_REALTIME phc offset -270 s2 freq -37077 delay 1657 + phc2sys[809128.378]: CLOCK_REALTIME phc offset -285 s2 freq -37173 delay 1644 + phc2sys[809128.503]: CLOCK_REALTIME phc offset -349 s2 freq -37322 delay 1644 + phc2sys[809128.629]: CLOCK_REALTIME phc offset -402 s2 freq -37480 delay 1641 + phc2sys[809128.754]: CLOCK_REALTIME phc offset -377 s2 freq -37576 delay 1648 + phc2sys[809128.879]: CLOCK_REALTIME phc offset -467 s2 freq -37779 delay 1650 + phc2sys[809129.005]: CLOCK_REALTIME phc offset -408 s2 freq -37860 delay 1648 + phc2sys[809129.130]: CLOCK_REALTIME phc offset -480 s2 freq -38054 delay 1655 + phc2sys[809129.256]: CLOCK_REALTIME phc offset -350 s2 freq -38068 delay 1650 + +Support in xRAN Library +======================= + +The xRAN library provides an API to check whether PTP for Linux is +running correctly. There is a function called xran_is_synchronized(). It +checks if ptp4l and phc2sys are running in the system by making PMC tool +requests for the current port state and comparing it with the expected +value. This verification should be done before initialization. + +- “SLAVE” is the only expected value in this release; only a non-master scenario is supported currently. + diff --git a/docs/Sample-Application_fh.rst b/docs/Sample-Application_fh.rst index 3df722e..0d3f91d 100644 --- a/docs/Sample-Application_fh.rst +++ b/docs/Sample-Application_fh.rst @@ -1,145 +1,207 @@ -.. 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. - -.. |br| raw:: html - -
- -Sample Application -================== - -.. contents:: - :depth: 3 - :local: - -Figure 25 illustrates a sample xRAN application. - -.. image:: images/Sample-Application.jpg - :width: 600 - :alt: Figure 25. Sample Application - -Figure 25. Sample Application - -The sample application was created to execute test scenarios with -features of the xRAN library and test external API as well as timing. -The sample application is named sample-app, and depending on -configuration file settings can act as O-DU or simplified simulation of -O-RU. The first O-DU should be run on the machine that acts as O-DU and -the second as O-RU. Both machines are connected via ETH. The sample -application on both sides executes using a constant configuration |br| -according to settings in corresponding config files -(./app/usecase/mu0_10mhz/config_file_o_du.dat and |br| -./app/usecase/mu0_10mhz/config_file_o_ru.dat) and uses binary files -(ant.bin) with IQ samples as input. Multiple-use |br| -cases for different -numerologies and different BW are available as examples. Configuration -files provide descriptions of each |br| -parameter and in general, those are -related to M-plane level settings as per the ORAN Fronthaul -specification. - -From the start of the process, the application (O-DU) sends DL packets -for the U-plane and C-plane and receives U-plane UL packets. -Synchronization of O-DU and O-RU sides is achieved via IEEE 1588. - -U-plane packets for UL and DL direction are constructed the same way -except for the direction field. - -The several default configurations used with the sample app for v20.02 -release are: - -1 Cell mmWave 100MHz TDD DDDS: - - -- Numerology 3 (mmWave) - -- TTI period 125 µs - -- 100 Mhz Bandwidth: 792 subcarriers (all 66 RB utilized at all times) - -- 4x4 MIMO - -- No beamforming - -- 1 Component carrier - -- Jumbo Frame for Ethernet (up to 9728 bytes) - -- Front haul throughput ~11.5 Gbps. - -12 Cells Sub6 10MHz FDD: - - -- Numerology 0 (Sub-6) - -- TTI period 1000 µs - -- 10Mhz Bandwidth: 624 subcarriers (all 52 RB utilized at all times) - -- 4x4 MIMO - -- No beamforming - -- 12 Component carrier - -- Jumbo Frame for Ethernet (up to 9728 bytes) - -- Front haul throughput ~13.7Gbps. - -1 Cell Sub6 100MHz TDD: - - -- Numerology 1 (Sub-6) - -- TTI period 500us - -- 100Mhz Bandwidth: 3276 subcarriers (all 273RB utilized at all times) - -- 4x4 MIMO - -- No beamforming - -- 1 Component carrier - -- Jumbo Frame for Ethernet (up to 9728 bytes) - -- Front haul throughput ~11.7 Gbps. - -.. _cell-sub6-100mhz-tdd-1: - -1 Cell Sub6 100MHz TDD: - - -- Numerology 1 (Sub-6) - -- TTI period 500 µs - -- 100 Mhz Bandwidth: 3276 subcarriers (all 273RB utilized at all - times). 8 UEs per TTI per layer - -- 8DL /4UL MIMO Layers - -- Digital beamforming with 32T32R - -- 1 Component carrier - -- Jumbo Frame for Ethernet (up to 9728 bytes) - -- Front haul throughput ~23.5 Gbps. - -Other configurations can be constructed by modifying config files -(please see app/usecase/) - - - +.. 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. + + +Sample Application +================== + +.. contents:: + :depth: 3 + :local: + +Figure 26 illustrates a sample xRAN application. + +.. image:: images/Sample-Application.jpg + :width: 600 + :alt: Figure 26. Sample Application + +Figure 26. Sample Application + +The sample application was created to execute test scenarios with +features of the xRAN library and test external API as well as timing. +The sample application is named sample-app, and depending on +configuration file settings can act as O-DU or simplified simulation of +O-RU. The first O-DU should be run on the machine that acts as O-DU and +the second as O-RU. Both machines are connected via ETH. The sample +application on both sides executes using a constant configuration +according to settings in corresponding config files +(./app/usecase/mu0_10mhz/config_file_o_du.dat and +./app/usecase/mu0_10mhz/config_file_o_ru.dat) and uses binary files +(ant.bin) with IQ samples as input. Multiple-use cases for different +numerologies and different BW are available as examples. Configuration +files provide descriptions of each parameter, and in general, those are +related to M-plane level settings as per the O-RAN Fronthaul +specification, refer to *Table 2*. + +From the start of the process, the application (O-DU) sends DL packets +for the U-plane and C-plane and receives U-plane UL packets. +Synchronization of O-DU and O-RU sides is achieved via IEEE 1588. + +U-plane packets for UL and DL direction are constructed the same way +except for the direction field. + +Examples of default configurations used with the sample application for +v20.04 release provided below: + +1 Cell mmWave 100MHz TDD DDDS: +------------------------------ + +- Numerology 3 (mmWave) + +- TTI period 125 µs + +- 100 MHz Bandwidth: 792 subcarriers (all 66 RB utilized at all times) + +- 4x4 MIMO + +- No beamforming + +- 1 Component carrier + +- Jumbo Frame for Ethernet (up to 9728 bytes) + +- Front haul throughput ~11.5 Gbps. + +12 Cells Sub6 10MHz FDD: +------------------------ + +- Numerology 0 (Sub-6) + +- TTI period 1000 µs + +- 10 MHz Bandwidth: 624 subcarriers (all 52 RB utilized at all times) + +- 4x4 MIMO + +- No beamforming + +- 12 Component carrier + +- Jumbo Frame for Ethernet (up to 9728 bytes) + +- Front haul throughput ~13.7Gbps. + +1 Cell Sub6 100 MHz TDD +----------------------- + +- Numerology 1 (Sub-6) + +- TTI period 500 µs + +- 100 MHz Bandwidth: 3276 subcarriers (all 273 RB utilized at all times) + +- 4x4 MIMO + +- No beamforming + +- 1 Component carrier + +- Jumbo Frame for Ethernet (up to 9728 bytes) + +- Front haul throughput ~11.7 Gbps. + +1 Cell Sub6 100 MHz TDD (Category B): +------------------------------------- + +- Numerology 1 (Sub-6) + +- TTI period 500 µs + +- 100 MHz Bandwidth: 3276 subcarriers (all 273 RB utilized at all times). 8 UEs per TTI per layer + +- 8DL /4UL MIMO Layers + +- Digital beamforming with 32T32R + +- 1 Component carrier + +- Jumbo Frame for Ethernet (up to 9728 bytes) + +- Front haul throughput ~23.5 Gbps. + +3 Cell Sub6 100MHz TDD Massive MIMO (Category B): +------------------------------------------------- + +- Numerology 1 (Sub-6) + +- TTI period 500 µs + +- 100 Mhz Bandwidth: 3276 subcarriers (all 273 RB utilized at all times). 8 UEs per TTI per layer + +- 16DL /8UL MIMO Layers + +- Digital beamforming with 64T64R + +- 1 Component carrier for each Cell + +- Jumbo Frame for Ethernet (up to 9728 bytes) + +- Front haul throughput ~44 Gbps. + +Other configurations can be constructed by modifying the config files +(see app/usecase/) + +One_way Delay Measurements: +--------------------------- + +There are 4 usecases defined that are based on cat a, numerology 0 and +20 MHz Bw: + +Common to all cases the following parameters are needed in the +usecase_xu.cfg files where x=r for ORU and x=d for ODU. + +oXuOwdmNumSamps=8 # Run 8 samples per port + +oXuOwdmFltrType=0 # Simple average + +oXuOwdmRespTimeOut=10000000 # 10 ms expressed in ns (Currently not +enforced) + +oXuOwdmMeasState=0 # Measurement state is INIT + +oXuOwdmMeasId=0 # Measurement Id seed + +oXuOwdmEnabled=1 # Measurements are enabled + +oXuOwdmPlLength= n # with 40 <= n <= 1400 bytes + +For the ORU + +oXuOwdmInitEn=0 #O-RU is always the recipient + +For the ODU + +oXuOwdmInitEn=1 #O-DU is always initiator + +20 Corresponds to the Request/Response usecase with Payload Size 40 +bytes + +oXuOwdmMeasMeth=0 # Measurement Method REQUEST + +21 Corresponds to the Remote Request usecase with Payload Size 512 bytes + +oXuOwdmMeasMeth=1 # Measurement Method REM_REQ + +22 Corresponds to the Request with Follow Up usecase with Payload Size +1024 bytes + +oXuOwdmMeasMeth=2 # Measurement Method REQUESTwFUP + +23 Corresponds to the Remote Request with Follow Up usecase with default +Payload Size + +oXuOwdmMeasMeth=3 # Measurement Method REM_REQ_WFUP + +- + diff --git a/docs/Setup-Configuration_fh.rst b/docs/Setup-Configuration_fh.rst index 3a93e81..d356181 100644 --- a/docs/Setup-Configuration_fh.rst +++ b/docs/Setup-Configuration_fh.rst @@ -1,495 +1,3721 @@ -.. 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. - -.. |br| raw:: html - -
- -Setup Configuration -=================== - -A.1 Setup Configuration ------------------------ -The configuration shown in Figure 26 shows how to set up a test -environment to execute xRAN scenarios where O-DU and 0-RU are simulated -using the sample application. This setup allows development and -prototyping as well as testing of xRAN specific functionality. The O-DU -side can be instantiated with a full 5G NR L1 reference as well. The -configuration differences of the 5G NR l1app configuration are provided -below. Steps for running the sample application on the O-DU side and -0-RU side are the same, except configuration file options may be -different. - -.. image:: images/Setup-for-xRAN-Testing.jpg - :width: 400 - :alt: Figure 26. Setup for xRAN Testing - -Figure 26. Setup for xRAN Testing - -.. image:: images/Setup-for-xRAN-Testing-with-PHY-and-Configuration-C3.jpg - :width: 400 - :alt: Figure 27. Setup for xRAN Testing with PHY and Configuration C3 - -Figure 27. Setup for xRAN Testing with PHY and Configuration C3 - -A.2 Prerequisites ------------------ -Each server in Figure 26 requires the following: - -- Wolfpass server according to recommended BOM for FlexRAN such as - Intel® Xeon® Skylake Gold 6148 FC-LGA3647 2.4 GHz 27.5 MB 150W 20 - cores (two sockets) - -- BIOS settings: - -- Intel(R) Virtualization Technology Enabled - -- Intel(R) VT for Directed I/O - Enabled - -- ACS Control - Enabled - -- Coherency Support - Disabled - -- Front Haul networking cards: - -- Intel® Ethernet Converged Network Adapter XL710-QDA2 - -- Intel® Ethernet Converged Network Adapter XXV710-DA2 - -- Intel® FPGA Programmable Acceleration Card (Intel® FPGA PAC) N3000 - -**The Front Haul NIC requires support for PTP HW timestamping.** - -The recommended configuration for NICs is:: - - - ethtool -i enp33s0f0 - driver: i40e - version: 2.10.19.82 - firmware-version: 7.20 0x80007949 1.2585.0 - expansion-rom-version: - bus-info: 0000:21:00.0 - supports-statistics: yes - supports-test: yes - supports-eeprom-access: yes - supports-register-dump: yes - supports-priv-flags: yes - ethtool -T enp33s0f0 - Time stamping parameters for enp33s0f0: - Capabilities: - hardware-transmit (SOF_TIMESTAMPING_TX_HARDWARE) - software-transmit (SOF_TIMESTAMPING_TX_SOFTWARE) - hardware-receive (SOF_TIMESTAMPING_RX_HARDWARE) - software-receive (SOF_TIMESTAMPING_RX_SOFTWARE) - software-system-clock (SOF_TIMESTAMPING_SOFTWARE) - hardware-raw-clock (SOF_TIMESTAMPING_RAW_HARDWARE) - PTP Hardware Clock: 4 - Hardware Transmit Timestamp Modes: - off (HWTSTAMP_TX_OFF) - on (HWTSTAMP_TX_ON) - Hardware Receive Filter Modes: - none (HWTSTAMP_FILTER_NONE) - ptpv1-l4-sync (HWTSTAMP_FILTER_PTP_V1_L4_SYNC) - ptpv1-l4-delay-req (HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ) - ptpv2-l4-event (HWTSTAMP_FILTER_PTP_V2_L4_EVENT) - ptpv2-l4-sync (HWTSTAMP_FILTER_PTP_V2_L4_SYNC) - ptpv2-l4-delay-req (HWTSTAMP_FILTER_PTP_V2_L4_DELAY_REQ) - ptpv2-l2-event (HWTSTAMP_FILTER_PTP_V2_L2_EVENT) - ptpv2-l2-sync (HWTSTAMP_FILTER_PTP_V2_L2_SYNC) - ptpv2-l2-delay-req (HWTSTAMP_FILTER_PTP_V2_L2_DELAY_REQ) - ptpv2-event (HWTSTAMP_FILTER_PTP_V2_EVENT) - ptpv2-sync (HWTSTAMP_FILTER_PTP_V2_SYNC) - ptpv2-delay-req (HWTSTAMP_FILTER_PTP_V2_DELAY_REQ) - - -A PTP Main Reference Clock is required to be available in the network to provide -synchronization of both O-DU and RU to GPS time. - -1.Installing Intel® C++ Compiler v19.0.3 is preferred. or you could get -Intel® C++ Compiler through below link with community license, -however the version you could get is always latest version, the -verification for that version might not be performed yet, please -feedback through O-DU Low project WIKI page if you meet an issue. |br| -`https://software.intel.com/en-us/system-studio/choose-download `__ - -2.Download DPDK 19.11. - -3.Change DPDK files according to below diff information which relevant to O-RAN FH:: - - diff --git a/drivers/net/i40e/i40e_ethdev.c - b/drivers/net/i40e/i40e_ethdev.c - - index 85a6a86..236fbe0 100644 - - --- a/drivers/net/i40e/i40e_ethdev.c - - +++ b/drivers/net/i40e/i40e_ethdev.c - - @@ -2207,7 +2207,7 @@ void i40e_flex_payload_reg_set_default(struct - i40e_hw \*hw) - - /\* Map queues with MSIX interrupt \*/ - - main_vsi->nb_used_qps = dev->data->nb_rx_queues - - - pf->nb_cfg_vmdq_vsi \* RTE_LIBRTE_I40E_QUEUE_NUM_PER_VM; - - - i40e_vsi_queues_bind_intr(main_vsi, I40E_ITR_INDEX_DEFAULT); - - + i40e_vsi_queues_bind_intr(main_vsi, I40E_ITR_INDEX_NONE); - - i40e_vsi_enable_queues_intr(main_vsi); - - /\* Map VMDQ VSI queues with MSIX interrupt \*/ - - @@ -2218,6 +2218,10 @@ void i40e_flex_payload_reg_set_default(struct - i40e_hw \*hw) - - i40e_vsi_enable_queues_intr(pf->vmdq[i].vsi); - - } - - + i40e_aq_debug_write_global_register(hw, - - + 0x0012A504, - - + 0, NULL); - - + - - /\* enable FDIR MSIX interrupt \*/ - - if (pf->fdir.fdir_vsi) { - - i40e_vsi_queues_bind_intr(pf->fdir.fdir_vsi, - - diff --git a/drivers/net/i40e/i40e_ethdev_vf.c - b/drivers/net/i40e/i40e_ethdev_vf.c - - index 001c301..6f9ffdb 100644 - - --- a/drivers/net/i40e/i40e_ethdev_vf.c - - +++ b/drivers/net/i40e/i40e_ethdev_vf.c - - @@ -640,7 +640,7 @@ struct rte_i40evf_xstats_name_off { - - map_info = (struct virtchnl_irq_map_info \*)cmd_buffer; - - map_info->num_vectors = 1; - - - map_info->vecmap[0].rxitr_idx = I40E_ITR_INDEX_DEFAULT; - - + map_info->vecmap[0].rxitr_idx = I40E_ITR_INDEX_NONE; - - map_info->vecmap[0].vsi_id = vf->vsi_res->vsi_id; - - /\* Alway use default dynamic MSIX interrupt \*/ - - map_info->vecmap[0].vector_id = vector_id; - - diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c - b/drivers/net/ixgbe/ixgbe_ethdev.c - - index 26b1927..018eb8f 100644 - - --- a/drivers/net/ixgbe/ixgbe_ethdev.c - - +++ b/drivers/net/ixgbe/ixgbe_ethdev.c - - @@ -3705,7 +3705,7 @@ static int - ixgbevf_dev_xstats_get_names(__rte_unused struct rte_eth_dev \*dev, - - \* except for 82598EB, which remains constant. - - \*/ - - if (dev_conf->txmode.mq_mode == ETH_MQ_TX_NONE && - - - hw->mac.type != ixgbe_mac_82598EB) - - + hw->mac.type != ixgbe_mac_82598EB && hw->mac.type != - ixgbe_mac_82599EB) - - dev_info->max_tx_queues = IXGBE_NONE_MODE_TX_NB_QUEUES; - - } - - dev_info->min_rx_bufsize = 1024; /\* cf BSIZEPACKET in SRRCTL register - \*/ - - diff --git a/lib/librte_eal/common/include/rte_dev.h - b/lib/librte_eal/common/include/rte_dev.h - - old mode 100644 - - new mode 100755 - -5.Build and install DPDK:: - - [root@xran dpdk]# ./usertools/dpdk-setup.sh - - select [39] x86_64-native-linuxapp-icc - - select [46] Insert VFIO module - - exit [62] Exit Script - -6.Make below file changes in dpdk that assure i40e to get best -latency of packet processing:: - - --- i40e.h 2018-11-30 11:27:00.000000000 +0000 - - +++ i40e_patched.h 2019-03-06 15:49:06.877522427 +0000 - - @@ -451,7 +451,7 @@ - - #define I40E_QINT_RQCTL_VAL(qp, vector, nextq_type) \\ - - (I40E_QINT_RQCTL_CAUSE_ENA_MASK \| \\ - - - (I40E_RX_ITR << I40E_QINT_RQCTL_ITR_INDX_SHIFT) \| \\ - - + (I40E_ITR_NONE << I40E_QINT_RQCTL_ITR_INDX_SHIFT) \| \\ - - ((vector) << I40E_QINT_RQCTL_MSIX_INDX_SHIFT) \| \\ - - ((qp) << I40E_QINT_RQCTL_NEXTQ_INDX_SHIFT) \| \\ - - (I40E_QUEUE_TYPE_##nextq_type << I40E_QINT_RQCTL_NEXTQ_TYPE_SHIFT)) - - --- i40e_main.c 2018-11-30 11:27:00.000000000 +0000 - - +++ i40e_main_patched.c 2019-03-06 15:46:13.521518062 +0000 - - @@ -15296,6 +15296,9 @@ - - pf->hw_features \|= I40E_HW_HAVE_CRT_RETIMER; - - /\* print a string summarizing features \*/ - - i40e_print_features(pf); - - + - - + /\* write to this register to clear rx descriptor \*/ - - + i40e_aq_debug_write_register(hw, 0x0012A504, 0, NULL); - - return 0; - -A.3 Configuration of System ---------------------------- -1.Boot Linux with the following arguments:: - - cat /proc/cmdline - - BOOT_IMAGE=/vmlinuz-3.10.0-1062.12.1.rt56.1042.el7.x86_64 root=/dev/mapper/centos-root ro - crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap intel_iommu=on iommu=pt - usbcore.autosuspend=-1 selinux=0 enforcing=0 nmi_watchdog=0 softlockup_panic=0 audit=0 - intel_pstate=disable cgroup_memory=1 cgroup_enable=memory mce=off idle=poll - hugepagesz=1G hugepages=16 hugepagesz=2M hugepages=0 default_hugepagesz=1G - isolcpus=1-19,21-39 rcu_nocbs=1-19,21-39 kthread_cpus=0,20 irqaffinity=0,20 - nohz_full=1-19,21-39 - -2.Download from Intel Website and install updated version of i40e -driver if needed. The current recommended version of i40e is 2.10.19.82. -However, any latest version of i40e after x2.9.21 expected to be functional for ORAN FH. - -3.Identify PCIe Bus address of the Front Haul NIC:: - - lspci |grep Eth - 19:00.0 Ethernet controller: Intel Corporation Ethernet Controller XXV710 Intel(R) FPGA Programmable Acceleration Card N3000 for Networking (rev 02) - 19:00.1 Ethernet controller: Intel Corporation Ethernet Controller XXV710 Intel(R) FPGA Programmable Acceleration Card N3000 for Networking (rev 02) - 1d:00.0 Ethernet controller: Intel Corporation Ethernet Controller XXV710 Intel(R) FPGA Programmable Acceleration Card N3000 for Networking (rev 02) - 1d:00.1 Ethernet controller: Intel Corporation Ethernet Controller XXV710 Intel(R) FPGA Programmable Acceleration Card N3000 for Networking (rev 02) - 21:00.0 Ethernet controller: Intel Corporation Ethernet Controller XXV710 for 25GbE SFP28 (rev 02) - 21:00.1 Ethernet controller: Intel Corporation Ethernet Controller XXV710 for 25GbE SFP28 (rev 02) - 67:00.0 Ethernet controller: Intel Corporation Ethernet Connection X722 for 10GBASE-T (rev 09) - - -4.Identify the Ethernet device name:: - - ethtool -i enp33s0f0 - driver: i40e - version: 2.10.19.82 - firmware-version: 7.20 0x80007949 1.2585.0 - expansion-rom-version: - bus-info: 0000:21:00.0 - supports-statistics: yes - supports-test: yes - supports-eeprom-access: yes - supports-register-dump: yes - supports-priv-flags: yes - Enable - - -5.Enable two virtual functions (VF) on the device:: - - echo 2 > /sys/class/net/enp33s0f0/device/sriov_numvfs - -More information about VFs supported by Intel NICs can be found at -https://doc.dpdk.org/guides/nics/intel_vf.html. - -The resulting configuration can look like the listing below, where two -new VFs were added:: - - lspci|grep Eth - - 21:00.0 Ethernet controller: Intel Corporation Ethernet Controller XXV710 for 25GbE SFP28 (rev 02) - 21:00.1 Ethernet controller: Intel Corporation Ethernet Controller XXV710 for 25GbE SFP28 (rev 02) - 21:02.0 Ethernet controller: Intel Corporation Ethernet Virtual Function 700 Series (rev 02) - 21:02.1 Ethernet controller: Intel Corporation Ethernet Virtual Function 700 Series (rev 02) - - -6.Configure MAC address and VLAN settings for VFs for XRAN, based on -requirements for xRAN scenario and assignment of VLAN ID using IP -tool perform configuration of VF. - - Example where O-DU and O-RU simulation run on the same sytem:: - - #!/bin/bash - - echo 2 > /sys/bus/pci/devices/0000\:21\:00.0/sriov_numvfs - ip link set enp33s0f0 vf 1 mac 00:11:22:33:44:66 vlan 1 - ip link set enp33s0f0 vf 0 mac 00:11:22:33:44:66 vlan 2 - echo 2 > /sys/bus/pci/devices/0000\:21\:00.1/sriov_numvfs - ip link set enp33s0f1 vf 1 mac 00:11:22:33:44:55 vlan 1 - ip link set enp33s0f1 vf 0 mac 00:11:22:33:44:55 vlan 2 - - where output is next:: - - [root@xran app]# ip link show - - 1: lo: mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 - - link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 - - 2: enp25s0f0: mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000 - - link/ether 64:4c:36:10:1f:30 brd ff:ff:ff:ff:ff:ff - - 3: enp25s0f1: mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000 - - link/ether 64:4c:36:10:1f:31 brd ff:ff:ff:ff:ff:ff - - 4: enp29s0f0: mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000 - - link/ether 64:4c:36:10:1f:34 brd ff:ff:ff:ff:ff:ff - - 5: enp29s0f1: mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000 - - link/ether 64:4c:36:10:1f:35 brd ff:ff:ff:ff:ff:ff - - 6: enp33s0f0: mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000 - - link/ether 3c:fd:fe:b9:f8:b4 brd ff:ff:ff:ff:ff:ff - - vf 0 MAC 00:11:22:33:44:66, vlan 2, spoof checking on, link-state auto, trust off - - vf 1 MAC 00:11:22:33:44:66, vlan 1, spoof checking on, link-state auto, trust off - - 7: enp33s0f1: mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000 - - link/ether 3c:fd:fe:b9:f8:b5 brd ff:ff:ff:ff:ff:ff - - vf 0 MAC 00:11:22:33:44:55, vlan 2, spoof checking on, link-state auto, trust off - - vf 1 MAC 00:11:22:33:44:55, vlan 1, spoof checking on, link-state auto, trust off - - 8: eno1: mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000 - - link/ether a4:bf:01:3e:1f:be brd ff:ff:ff:ff:ff:ff - - 9: eno2: mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000 - - link/ether a4:bf:01:3e:1f:bf brd ff:ff:ff:ff:ff:ff - - 10: npacf0g0l0: mtu 9600 qdisc noop state UNKNOWN mode DEFAULT group default qlen 1000 - - link/generic - - 11: npacf0g0l1: mtu 9600 qdisc noop state UNKNOWN mode DEFAULT group default qlen 1000 - - link/generic - - 12: npacf0g0l2: mtu 9600 qdisc noop state UNKNOWN mode DEFAULT group default qlen 1000 - - link/generic - - 13: npacf0g0l3: mtu 9600 qdisc noop state UNKNOWN mode DEFAULT group default qlen 1000 - - link/generic - -After this step FH NIC is configured. - -O-DU - -VF for C-plane is VF1 on PFH enp33s0f0enp216s0f0, it has ETH mac address 00:11:22:33:44:66 and VLAN tag 1. PCIe Bus address is VF1 is 21d8:02.1 - -VF for U-plane is VF0 on PFH enp33s0f0enp216s0f0, it has ETH mac address 00:11:22:33:44:66 and VLAN tag 2. PCIe Bus address is VF1 is 21d8:02.0 - -O-RU - -VF for C-plane is VF1 on PF enp33s0f1, it has ETH mac address 00:11:22:33:44:55 and VLAN tag 1. PCIe Bus address is VF1 is 21:0a.1 - -VF for U-plane is VF0 on PF enp33s0f1, it has ETH mac address 00:11:22:33:44:55 and VLAN tag 2. PCIe Bus address is VF1 is 21:0a.0 - - -A.4 Install and Configure Sample Application --------------------------------------------- -To install and configure the sample application: - -1. Set up the environment: - - export GTEST_ROOT=`pwd`/gtest-1.7.0 - - export RTE_SDK=`pwd`/dpdk-19.11 - - export RTE_TARGET=x86_64-native-linuxapp-icc - - export MLOG_DIR=`pwd`/flexran_l1_sw/libs/mlog - - export XRAN_DIR=`pwd`/flexran_xran - -2. Compile xRAN library and test the application: - - [turner@xran home]$ cd $XRAN_DIR - - [turner@xran xran]$ ./build.sh - -3. Configure the sample app. - -IQ samples can be generated using Octave\* and script -libs/xran/app/gen_test.m. (CentOS\* has octave-3.8.2-20.el7.x86_64 -compatible with get_test.m) - -Other IQ sample test vectors can be used as well. The format of IQ -samples is binary int16_t I and Q for N slots of the OTA RF signal. For -example, for mmWave, it corresponds to 792RE*2*14symbol*8slots*10 ms = -3548160 bytes per antenna. Refer to comments in gen_test.m to correctly -specify the configuration for IQ test vector generation. - -Update config_file_o_du.dat (or config_file_o_ru.dat) with a suitable -configuration for your scenario. - -Update run_o_du.sh (run_o_ru.sh) with PCIe bus address of VF0 and VF1 -used for U-plane and C-plane correspondingly:: - - ./build/sample-app -c ./usecase/mu0_10mhz/config_file_o_du.dat -p 2 0000:21d8:02.0 0000:21d8:02.1 - -4. Run application using run_o_du.sh (run_o_ru.sh). - - - +.. 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. + +.. |br| raw:: html + +
+ +Setup Configuration +=================== + +A.1 Setup Configuration +----------------------- +The configuration shown in Figure 26 shows how to set up a test +environment to execute xRAN scenarios where O-DU and 0-RU are simulated +using the sample application. This setup allows development and +prototyping as well as testing of xRAN specific functionality. The O-DU +side can be instantiated with a full 5G NR L1 reference as well. The +configuration differences of the 5G NR l1app configuration are provided +below. Steps for running the sample application on the O-DU side and +0-RU side are the same, except configuration file options may be +different. + +.. image:: images/Setup-for-xRAN-Testing.jpg + :width: 400 + :alt: Figure 26. Setup for xRAN Testing + +Figure 26. Setup for xRAN Testing + +.. image:: images/Setup-for-xRAN-Testing-with-PHY-and-Configuration-C3.jpg + :width: 400 + :alt: Figure 27. Setup for xRAN Testing with PHY and Configuration C3 + +Figure 27. Setup for xRAN Testing with PHY and Configuration C3 + +A.2 Prerequisites +----------------- +Each server in Figure 26 requires the following: + +- Wolfpass server according to recommended BOM for FlexRAN such as + Intel® Xeon® Skylake Gold 6148 FC-LGA3647 2.4 GHz 27.5 MB 150W 20 + cores (two sockets) + +- BIOS settings: + + - Intel® Virtualization Technology Enabled + + - Intel® VT for Directed I/O - Enabled + + - ACS Control - Enabled + + - Coherency Support - Disabled + +- Front Haul networking cards: + + - Intel® Ethernet Converged Network Adapter XL710-QDA2 + + - Intel® Ethernet Converged Network Adapter XXV710-DA2 + + - Intel® Ethernet Converged Network Adapter E810-CQDA2 + + - Intel® FPGA Programmable Acceleration Card (Intel® FPGA PAC) N3000 + +- Back (Mid) Haul networking card can be either: + + - Intel® Ethernet Connection X722 for 10GBASE-T + + - Intel® 82599ES 10-Gigabit SFI/SFP+ Network Connection + + - Other networking cards capable of HW timestamping for PTP synchronization. + + - Both Back (mid) Haul and Front Haul NIC require support for PTP HW timestamping. + +The recommended configuration for NICs is:: + + ethtool -i enp33s0f0 + driver: i40e + version: 2.14.13 + firmware-version: 8.20 0x80009bd4 1.2879.0 + expansion-rom-version: + bus-info: 0000:21:00.0 + supports-statistics: yes + supports-test: yes + supports-eeprom-access: yes + supports-register-dump: yes + supports-priv-flags: yes + ethtool -T enp33s0f0 + Time stamping parameters for enp33s0f0: + Capabilities: + hardware-transmit (SOF_TIMESTAMPING_TX_HARDWARE) + software-transmit (SOF_TIMESTAMPING_TX_SOFTWARE) + hardware-receive (SOF_TIMESTAMPING_RX_HARDWARE) + software-receive (SOF_TIMESTAMPING_RX_SOFTWARE) + software-system-clock (SOF_TIMESTAMPING_SOFTWARE) + hardware-raw-clock (SOF_TIMESTAMPING_RAW_HARDWARE) + PTP Hardware Clock: 4 + Hardware Transmit Timestamp Modes: + off (HWTSTAMP_TX_OFF) + on (HWTSTAMP_TX_ON) + Hardware Receive Filter Modes: + none (HWTSTAMP_FILTER_NONE) + ptpv1-l4-sync (HWTSTAMP_FILTER_PTP_V1_L4_SYNC) + ptpv1-l4-delay-req (HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ) + ptpv2-l4-event (HWTSTAMP_FILTER_PTP_V2_L4_EVENT) + ptpv2-l4-sync (HWTSTAMP_FILTER_PTP_V2_L4_SYNC) + ptpv2-l4-delay-req (HWTSTAMP_FILTER_PTP_V2_L4_DELAY_REQ) + ptpv2-l2-event (HWTSTAMP_FILTER_PTP_V2_L2_EVENT) + ptpv2-l2-sync (HWTSTAMP_FILTER_PTP_V2_L2_SYNC) + ptpv2-l2-delay-req (HWTSTAMP_FILTER_PTP_V2_L2_DELAY_REQ) + ptpv2-event (HWTSTAMP_FILTER_PTP_V2_EVENT) + ptpv2-sync (HWTSTAMP_FILTER_PTP_V2_SYNC) + ptpv2-delay-req (HWTSTAMP_FILTER_PTP_V2_DELAY_REQ) + +The recommended configuration for Columbiaville NICs (base on Intel® +Ethernet 800 Series (Columbiaville) CVL 2.3 release is:: + + ethtool -i enp81s0f0 + driver: ice + version: 1.3.2 + firmware-version: 2.3 0x80005D18 + expansion-rom-version: + bus-info: 0000:51:00.0 + supports-statistics: yes + supports-test: yes + supports-eeprom-access: yes + supports-register-dump: yes + supports-priv-flags: yes + ethtool -T enp81s0f0 + Time stamping parameters for enp81s0f0: + Capabilities: + hardware-transmit (SOF_TIMESTAMPING_TX_HARDWARE) + software-transmit (SOF_TIMESTAMPING_TX_SOFTWARE) + hardware-receive (SOF_TIMESTAMPING_RX_HARDWARE) + software-receive (SOF_TIMESTAMPING_RX_SOFTWARE) + software-system-clock (SOF_TIMESTAMPING_SOFTWARE) + hardware-raw-clock (SOF_TIMESTAMPING_RAW_HARDWARE) + PTP Hardware Clock: 1 + Hardware Transmit Timestamp Modes: + off (HWTSTAMP_TX_OFF) + on (HWTSTAMP_TX_ON) + Hardware Receive Filter Modes: + none (HWTSTAMP_FILTER_NONE) + all (HWTSTAMP_FILTER_ALL) + + Recommended version of + iavf driver 4.0.2 + ICE COMMS Package version 1.3.24.0 + +*Note*. If your firmware version does not match with the ones in the output +images, you can download the correct version from the Intel Download +Center. It is Intel's repository for the latest software and drivers +for Intel products. The NVM Update Packages for Windows*, Linux*, +ESX*, FreeBSD*, and EFI/EFI2 are located at: + +.. + +https://downloadcenter.intel.com/download/24769 (700 series) + +https://downloadcenter.intel.com/download/29736 (E810 series) + +PTP Grand Master is required to be available in the network to provide +synchronization of both O-DU and RU to GPS time. + +The software package includes Linux\* CentOS\* operating system and RT +patch according to FlexRAN Reference Solution Cloud-Native Setup +document (refer to Table 2). Only real-time HOST is required. + +1. Install Intel® C++ Compiler v19.0.3 + +2. Download DPDK v20.11 + +3. Patch DPDK with FlexRAN BBDev patch as per given release. + +4. Double check that FlexRAN DPDK patch includes changes below relevant +to O-RAN Front haul:: + + For Fortville: + diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c + index 85a6a86..236fbe0 100644 + --- a/drivers/net/i40e/i40e_ethdev.c + +++ b/drivers/net/i40e/i40e_ethdev.c + @@ -2207,7 +2207,7 @@ void i40e_flex_payload_reg_set_default(struct i40e_hw *hw) + /* Map queues with MSIX interrupt */ + main_vsi->nb_used_qps = dev->data->nb_rx_queues - + pf->nb_cfg_vmdq_vsi * RTE_LIBRTE_I40E_QUEUE_NUM_PER_VM; + - i40e_vsi_queues_bind_intr(main_vsi, I40E_ITR_INDEX_DEFAULT); + + i40e_vsi_queues_bind_intr(main_vsi, I40E_ITR_INDEX_NONE); + i40e_vsi_enable_queues_intr(main_vsi); + + /* Map VMDQ VSI queues with MSIX interrupt */ + @@ -2218,6 +2218,10 @@ void i40e_flex_payload_reg_set_default(struct i40e_hw *hw) + i40e_vsi_enable_queues_intr(pf->vmdq[i].vsi); + } + + i40e_aq_debug_write_global_register(hw, + + 0x0012A504, + + 0, NULL); + + + /* enable FDIR MSIX interrupt */ + if (pf->fdir.fdir_vsi) { + i40e_vsi_queues_bind_intr(pf->fdir.fdir_vsi, + diff --git a/drivers/net/i40e/i40e_ethdev_vf.c b/drivers/net/i40e/i40e_ethdev_vf.c + index 001c301..6f9ffdb 100644 + --- a/drivers/net/i40e/i40e_ethdev_vf.c + +++ b/drivers/net/i40e/i40e_ethdev_vf.c + @@ -640,7 +640,7 @@ struct rte_i40evf_xstats_name_off { + + map_info = (struct virtchnl_irq_map_info *)cmd_buffer; + map_info->num_vectors = 1; + - map_info->vecmap[0].rxitr_idx = I40E_ITR_INDEX_DEFAULT; + + map_info->vecmap[0].rxitr_idx = I40E_ITR_INDEX_NONE; + map_info->vecmap[0].vsi_id = vf->vsi_res->vsi_id; + /* Alway use default dynamic MSIX interrupt */ + map_info->vecmap[0].vector_id = vector_id; + diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c + index 26b1927..018eb8f 100644 + --- a/drivers/net/ixgbe/ixgbe_ethdev.c + +++ b/drivers/net/ixgbe/ixgbe_ethdev.c + @@ -3705,7 +3705,7 @@ static int ixgbevf_dev_xstats_get_names(__rte_unused struct rte_eth_dev *dev, + * except for 82598EB, which remains constant. + */ + if (dev_conf->txmode.mq_mode == ETH_MQ_TX_NONE && + - hw->mac.type != ixgbe_mac_82598EB) + + hw->mac.type != ixgbe_mac_82598EB && hw->mac.type != ixgbe_mac_82599EB) + dev_info->max_tx_queues = IXGBE_NONE_MODE_TX_NB_QUEUES; + } + dev_info->min_rx_bufsize = 1024; /* cf BSIZEPACKET in SRRCTL register */ + diff --git a/lib/librte_eal/common/include/rte_dev.h b/lib/librte_eal/common/include/rte_dev.h + old mode 100644 + new mode 100755 + + for Columbiaville + diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c + index de189daba..d9aff341c 100644 + --- a/drivers/net/ice/ice_ethdev.c + +++ b/drivers/net/ice/ice_ethdev.c + @@ -2604,8 +2604,13 @@ __vsi_queues_bind_intr(struct ice_vsi *vsi, uint16_t msix_vect, + + PMD_DRV_LOG(INFO, "queue %d is binding to vect %d", + base_queue + i, msix_vect); + - /* set ITR0 value */ + - ICE_WRITE_REG(hw, GLINT_ITR(0, msix_vect), 0x10); + + /* set ITR0 value + + * Empirical configuration for optimal real time latency + + * reduced interrupt throttling to 2 ms + + * Columbiaville pre-PRQ : local patch subject to change + + */ + + ICE_WRITE_REG(hw, GLINT_ITR(0, msix_vect), 0x1); + + ICE_WRITE_REG(hw, QRX_ITR(base_queue + i), QRX_ITR_NO_EXPR_M); + ICE_WRITE_REG(hw, QINT_RQCTL(base_queue + i), val); + ICE_WRITE_REG(hw, QINT_TQCTL(base_queue + i), val_tx); + } + +5.Build and install DPDK:: + + See https://doc.dpdk.org/guides/prog_guide/build-sdk-meson.html + +6.Make below file changes in dpdk that assure i40e to get best +latency of packet processing:: + + --- i40e.h 2018-11-30 11:27:00.000000000 +0000 + +++ i40e_patched.h 2019-03-06 15:49:06.877522427 +0000 + @@ -451,7 +451,7 @@ + + #define I40E_QINT_RQCTL_VAL(qp, vector, nextq_type) \ + (I40E_QINT_RQCTL_CAUSE_ENA_MASK | \ + - (I40E_RX_ITR << I40E_QINT_RQCTL_ITR_INDX_SHIFT) | \ + + (I40E_ITR_NONE << I40E_QINT_RQCTL_ITR_INDX_SHIFT) | \ + ((vector) << I40E_QINT_RQCTL_MSIX_INDX_SHIFT) | \ + ((qp) << I40E_QINT_RQCTL_NEXTQ_INDX_SHIFT) | \ + (I40E_QUEUE_TYPE_##nextq_type << I40E_QINT_RQCTL_NEXTQ_TYPE_SHIFT)) + + --- i40e_main.c 2018-11-30 11:27:00.000000000 +0000 + +++ i40e_main_patched.c 2019-03-06 15:46:13.521518062 +0000 + @@ -15296,6 +15296,9 @@ + pf->hw_features |= I40E_HW_HAVE_CRT_RETIMER; + /* print a string summarizing features */ + i40e_print_features(pf); + + + + /* write to this register to clear rx descriptor */ + + i40e_aq_debug_write_register(hw, 0x0012A504, 0, NULL); + + return 0; + +A.3 Configuration of System +--------------------------- +1.Boot Linux with the following arguments:: + + cat /proc/cmdline + BOOT_IMAGE=/vmlinuz-3.10.0-1062.12.1.rt56.1042.el7.x86_64 root=/dev/mapper/centos-root ro + crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap intel_iommu=on iommu=pt + usbcore.autosuspend=-1 selinux=0 enforcing=0 nmi_watchdog=0 softlockup_panic=0 audit=0 + intel_pstate=disable cgroup_memory=1 cgroup_enable=memory mce=off idle=poll + hugepagesz=1G hugepages=16 hugepagesz=2M hugepages=0 default_hugepagesz=1G + isolcpus=1-19,21-39 rcu_nocbs=1-19,21-39 kthread_cpus=0,20 irqaffinity=0,20 + nohz_full=1-19,21-39 + +2. Boot Linux with the following arguments for Icelake CPU:: + + cat /proc/cmdline + BOOT_IMAGE=/vmlinuz-3.10.0-957.10.1.rt56.921.el7.x86_64 + root=/dev/mapper/centos-root ro crashkernel=auto rd.lvm.lv=centos/root + rd.lvm.lv=centos/swap rhgb quiet intel_iommu=off usbcore.autosuspend=-1 + selinux=0 enforcing=0 nmi_watchdog=0 softlockup_panic=0 audit=0 + intel_pstate=disable cgroup_disable=memory mce=off hugepagesz=1G + hugepages=40 hugepagesz=2M hugepages=0 default_hugepagesz=1G + isolcpus=1-23,25-47 rcu_nocbs=1-23,25-47 kthread_cpus=0 irqaffinity=0 + nohz_full=1-23,25-47 + +3. Download from Intel Website and install updated version of i40e +driver if needed. The current recommended version of i40e is 2.14.13. +However, any latest version of i40e after 2.9.21 expected to be +functional for O-RAN FH. + +4. For Columbiaville download Intel® Ethernet 800 Series (Columbiaville) +CVL2.3 B0/C0 Sampling Sample Validation Kit (SVK) from Intel Customer +Content Library. The current recommended version of ICE driver is +1.3.2 with ICE COMMS Package version 1.3.24.0. IAVF recommended +version 4.0.2 + +5. Identify PCIe Bus address of the Front Haul NIC (Fortville):: + + lspci|grep Eth + 86:00.0 Ethernet controller: Intel Corporation Ethernet Controller XXV710 for 25GbE SFP28 (rev 02) + 86:00.1 Ethernet controller: Intel Corporation Ethernet Controller XXV710 for 25GbE SFP28 (rev 02) + 88:00.0 Ethernet controller: Intel Corporation Ethernet Controller XXV710 for 25GbE SFP28 (rev 02) + 88:00.1 Ethernet controller: Intel Corporation Ethernet Controller XXV710 for 25GbE SFP28 (rev 02) + +6. Identify PCIe Bus address of the Front Haul NIC (Columbiaville):: + + lspci \|grep Eth + 18:00.0 Ethernet controller: Intel Corporation Device 1593 (rev 02) + 18:00.1 Ethernet controller: Intel Corporation Device 1593 (rev 02) + 18:00.2 Ethernet controller: Intel Corporation Device 1593 (rev 02) + 18:00.3 Ethernet controller: Intel Corporation Device 1593 (rev 02) + 51:00.0 Ethernet controller: Intel Corporation Device 1593 (rev 02) + 51:00.1 Ethernet controller: Intel Corporation Device 1593 (rev 02) + 51:00.2 Ethernet controller: Intel Corporation Device 1593 (rev 02) + 51:00.3 Ethernet controller: Intel Corporation Device 1593 (rev 02) + +7. Identify the Ethernet device name:: + + ethtool -i enp33s0f0 + driver: i40e + version: 2.14.13 + firmware-version: 8.20 0x80009bd4 1.2879.0 + expansion-rom-version: + bus-info: 0000:21:00.0 + supports-statistics: yes + supports-test: yes + supports-eeprom-access: yes + supports-register-dump: yes + supports-priv-flags: yesEnable + +or :: + + ethtool -i enp81s0f0 + driver: ice + version: 1.3.2 + firmware-version: 2.3 0x80005D18 + expansion-rom-version: + bus-info: 0000:51:00.0 + supports-statistics: yes + supports-test: yes + supports-eeprom-access: yes + supports-register-dump: yes + supports-priv-flags: yes + +8. Enable 3 virtual functions (VFs) on the each of two ports of each +NIC:: + + #!/bin/bash + + echo 0 > /sys/bus/pci/devices/0000\:88\:00.0/sriov_numvfs + echo 0 > /sys/bus/pci/devices/0000\:88\:00.1/sriov_numvfs + + echo 0 > /sys/bus/pci/devices/0000\:86\:00.0/sriov_numvfs + echo 0 > /sys/bus/pci/devices/0000\:86\:00.1/sriov_numvfs + + modprobe -r iavf + modprobe iavf + + echo 3 > /sys/bus/pci/devices/0000\:88\:00.0/sriov_numvfs + echo 3 > /sys/bus/pci/devices/0000\:88\:00.1/sriov_numvfs + + echo 3 > /sys/bus/pci/devices/0000\:86\:00.0/sriov_numvfs + echo 3 > /sys/bus/pci/devices/0000\:86\:00.1/sriov_numvfs + + a=8 + + if [ -z "$1" ] + then + b=0 + elif [ $1 -lt $a ] + then + b=$1 + else + echo " Usage $0 qos with 0<= qos <= 7 with 0 as a default if no qos is provided" + exit 1 + fi + + #O-DU + ip link set enp136s0f0 vf 0 mac 00:11:22:33:00:00 vlan 1 qos $b + ip link set enp136s0f1 vf 0 mac 00:11:22:33:00:10 vlan 1 qos $b + + ip link set enp136s0f0 vf 1 mac 00:11:22:33:01:00 vlan 2 qos $b + ip link set enp136s0f1 vf 1 mac 00:11:22:33:01:10 vlan 2 qos $b + + ip link set enp136s0f0 vf 2 mac 00:11:22:33:02:00 vlan 3 qos $b + ip link set enp136s0f1 vf 2 mac 00:11:22:33:02:10 vlan 3 qos $b + + #O-RU + ip link set enp134s0f0 vf 0 mac 00:11:22:33:00:01 vlan 1 qos $b + ip link set enp134s0f1 vf 0 mac 00:11:22:33:00:11 vlan 1 qos $b + + ip link set enp134s0f0 vf 1 mac 00:11:22:33:01:01 vlan 2 qos $b + ip link set enp134s0f1 vf 1 mac 00:11:22:33:01:11 vlan 2 qos $b + + ip link set enp134s0f0 vf 2 mac 00:11:22:33:02:01 vlan 3 qos $b + ip link set enp134s0f1 vf 2 mac 00:11:22:33:02:11 vlan 3 qos $b + +where output is next:: + + ip link show + ... + 9: enp134s0f0: mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000 + link/ether 3c:fd:fe:b9:f9:60 brd ff:ff:ff:ff:ff:ff + vf 0 MAC 00:11:22:33:00:01, vlan 1, spoof checking on, link-state auto, trust off + vf 1 MAC 00:11:22:33:01:01, vlan 2, spoof checking on, link-state auto, trust off + vf 2 MAC 00:11:22:33:02:01, vlan 3, spoof checking on, link-state auto, trust off + 11: enp134s0f1: mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000 + link/ether 3c:fd:fe:b9:f9:61 brd ff:ff:ff:ff:ff:ff + vf 0 MAC 00:11:22:33:00:11, vlan 1, spoof checking on, link-state auto, trust off + vf 1 MAC 00:11:22:33:01:11, vlan 2, spoof checking on, link-state auto, trust off + vf 2 MAC 00:11:22:33:02:11, vlan 3, spoof checking on, link-state auto, trust off + 12: enp136s0f0: mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000 + link/ether 3c:fd:fe:b9:f8:b4 brd ff:ff:ff:ff:ff:ff + vf 0 MAC 00:11:22:33:00:00, vlan 1, spoof checking on, link-state auto, trust off + vf 1 MAC 00:11:22:33:01:00, vlan 2, spoof checking on, link-state auto, trust off + vf 2 MAC 00:11:22:33:02:00, vlan 3, spoof checking on, link-state auto, trust off + 14: enp136s0f1: mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000 + link/ether 3c:fd:fe:b9:f8:b5 brd ff:ff:ff:ff:ff:ff + vf 0 MAC 00:11:22:33:00:10, vlan 1, spoof checking on, link-state auto, trust off + vf 1 MAC 00:11:22:33:01:10, vlan 2, spoof checking on, link-state auto, trust off + vf 2 MAC 00:11:22:33:02:10, vlan 3, spoof checking on, link-state auto, trust off + ... + + + + +More information about VFs supported by Intel NICs can be found at +https://doc.dpdk.org/guides/nics/intel_vf.html. + +The resulting configuration can look like the listing below, where six +new VFs were added for each O-DU and O-RU port::: + + lspci|grep Eth + 86:00.0 Ethernet controller: Intel Corporation Ethernet Controller XXV710 for 25GbE SFP28 (rev 02) + 86:00.1 Ethernet controller: Intel Corporation Ethernet Controller XXV710 for 25GbE SFP28 (rev 02) + 86:02.0 Ethernet controller: Intel Corporation Ethernet Virtual Function 700 Series (rev 02) + 86:02.1 Ethernet controller: Intel Corporation Ethernet Virtual Function 700 Series (rev 02) + 86:02.2 Ethernet controller: Intel Corporation Ethernet Virtual Function 700 Series (rev 02) + 86:0a.0 Ethernet controller: Intel Corporation Ethernet Virtual Function 700 Series (rev 02) + 86:0a.1 Ethernet controller: Intel Corporation Ethernet Virtual Function 700 Series (rev 02) + 86:0a.2 Ethernet controller: Intel Corporation Ethernet Virtual Function 700 Series (rev 02) + 88:00.0 Ethernet controller: Intel Corporation Ethernet Controller XXV710 for 25GbE SFP28 (rev 02) + 88:00.1 Ethernet controller: Intel Corporation Ethernet Controller XXV710 for 25GbE SFP28 (rev 02) + 88:02.0 Ethernet controller: Intel Corporation Ethernet Virtual Function 700 Series (rev 02) + 88:02.1 Ethernet controller: Intel Corporation Ethernet Virtual Function 700 Series (rev 02) + 88:02.2 Ethernet controller: Intel Corporation Ethernet Virtual Function 700 Series (rev 02) + 88:0a.0 Ethernet controller: Intel Corporation Ethernet Virtual Function 700 Series (rev 02) + 88:0a.1 Ethernet controller: Intel Corporation Ethernet Virtual Function 700 Series (rev 02) + 88:0a.2 Ethernet controller: Intel Corporation Ethernet Virtual Function 700 Series (rev 02) + +9. Example where O-DU and O-RU simulation run on the same system: + +O-DU::: + + cat ./run_o_du.sh + #! /bin/bash + + ulimit -c unlimited + echo 1 > /proc/sys/kernel/core_uses_pid + + ./build/sample-app --usecasefile ./usecase/cat_b/mu1_100mhz/301/usecase_du.cfg --num_eth_vfs 6 \ + --vf_addr_o_xu_a "0000:88:02.0,0000:88:0a.0" \ + --vf_addr_o_xu_b "0000:88:02.1,0000:88:0a.1" \ + --vf_addr_o_xu_c "0000:88:02.2,0000:88:0a.2" + + +O-RU:: + + cat ./run_o_ru.sh + #! /bin/bash + ulimit -c unlimited + echo 1 > /proc/sys/kernel/core_uses_pid + + ./build/sample-app --usecasefile ./usecase/cat_b/mu1_100mhz/301/usecase_ru.cfg --num_eth_vfs 6 \ + --vf_addr_o_xu_a "0000:86:02.0,0000:86:0a.0" \ + --vf_addr_o_xu_b "0000:86:02.1,0000:86:0a.1" \ + --vf_addr_o_xu_c "0000:86:02.2,0000:86:0a.2" + + +Install and Configure Sample Application +======================================== + +To install and configure the sample application: + +1. Set up the environment:: + + For Skylake and Cascadelake + export GTEST_ROOT=pwd/gtest-1.7.0 + export RTE_SDK=pwd/dpdk-20.11 + export RTE_TARGET=x86_64-native-linuxapp-icc + export DIR_WIRELESS_SDK_ROOT=pwd/wireless_sdk + export WIRELESS_SDK_TARGET_ISA=avx512 + export SDK_BUILD=build-${WIRELESS_SDK_TARGET_ISA}-icc + export DIR_WIRELESS_SDK=${DIR_WIRELESS_SDK_ROOT}/${SDK_BUILD} + export MLOG_DIR=pwd/flexran_l1_sw/libs/mlog + export XRAN_DIR=pwd/flexran_xran + + for Icelake + export GTEST_ROOT=pwd/gtest-1.7.0 + export RTE_SDK=pwd/dpdk-20.11 + export RTE_TARGET=x86_64-native-linuxapp-icc + export DIR_WIRELESS_SDK_ROOT=pwd/wireless_sdk + export WIRELESS_SDK_TARGET_ISA=snc + export SDK_BUILD=build-${WIRELESS_SDK_TARGET_ISA}-icc + export DIR_WIRELESS_SDK=${DIR_WIRELESS_SDK_ROOT}/${SDK_BUILD} + export MLOG_DIR=pwd/flexran_l1_sw/libs/mlog + export XRAN_DIR=pwd/flexran_xran + +2. export FLEXRAN_SDK=${DIR_WIRELESS_SDK}/install Compile mlog library:: + + [turner@xran home]$ cd $MLOG_DIR + [turner@xran xran]$ ./build.sh + +3. Compile xRAN library and test the application:: + + [turner@xran home]$ cd $XRAN_DIR + [turner@xran xran]$ ./build.sh + +4. Configure the sample app. + +IQ samples can be generated using Octave\* and script +libs/xran/app/gen_test.m. (CentOS\* has octave-3.8.2-20.el7.x86_64 +compatible with get_test.m) + +Other IQ sample test vectors can be used as well. The format of IQ +samples is binary int16_t I and Q for N slots of the OTA RF signal. For +example, for mmWave, it corresponds to 792RE*2*14symbol*8slots*10 ms = +3548160 bytes per antenna. Refer to comments in gen_test.m to correctly +specify the configuration for IQ test vector generation. + +Update usecase_du.dat (or usecase_ru.cfg) with a suitable configuration +for your scenario. + +Update config_file_o_du.dat (or config_file_o_ru.dat) with a suitable +configuration for your scenario. + +Update run_o_du.sh (run_o_ru.sh) with PCIe bus address of VF0 and VF1 +used for U-plane and C-plane correspondingly. + +5. Run the application using run_o_du.sh (run_o_ru.sh). + +Install and Configure FlexRAN 5G NR L1 Application +================================================== + +The 5G NR layer 1 application can be used for executing the scenario for +mmWave with either the RU sample application or just the O-DU side. The +current release supports the constant configuration of the slot pattern +and RB allocation on the PHY side. The build process follows the same +basic steps as for the sample application above and is similar to +compiling 5G NR l1app for mmWave with Front Haul FPGA. Please follow the +general build process in the FlexRAN 5G NR Reference Solution L1 User +Guide (refer to *Table 2*.) + +1. xRAN library is enabled by default l1 application: + +2. Build the 5G NR L1 application using the command:: + + ./flexran_build.sh -r 5gnr_mmw -i avx512 -m sdk -m fb -m mlog –m wls -m + 5gnr_l1app_mmw -m xran -m 5gnr_testmac + +3. Configure the L1app using bin/nr5g/gnb/l1/phycfg_xran.xml and +xrancfg_sub6.xml (or other xml if it is mmwave or massive MIMO). :: + + + 20.08 + + 1 + + 25 + + 1 + + + 0000:51:01.0 + 0000:51:01.1 + 0000:51:01.2 + 0000:51:01.3 + + + 0000:51:01.4 + 0000:51:01.5 + 0000:51:01.6 + 0000:51:01.7 + + + 0000:51:02.0 + 0000:51:02.1 + 0000:51:02.2 + 0000:51:02.3 + + + 0000:00:00.0 + 0000:00:00.0 + 0000:00:00.0 + 0000:00:00.0 + + + 00:11:22:33:00:01 + 00:11:22:33:00:11 + + 00:11:22:33:00:21 + 00:11:22:33:00:31 + + + 00:11:22:33:01:01 + 00:11:22:33:01:11 + + 00:11:22:33:01:21 + 00:11:22:33:01:31 + + + 00:11:22:33:02:01 + 00:11:22:33:02:11 + + 00:11:22:33:02:21 + 00:11:22:33:02:31 + + + 00:11:22:33:03:01 + 00:11:22:33:03:11 + + 00:11:22:33:03:21 + 00:11:22:33:03:31 + + + 1 + + 0 + + 1 + + 2 + + 3 + + 4 + + 5 + + 6 + + 7 + + 8 + + 9 + + 10 + + 11 + + + 1 + + 1 + + 1 + + 2 + + 3 + + + 1 + + 2 + + 1 + + 2 + + 3 + + + 19, 96, 0 + + + 0x0, 96, 0 + + 0 + + + 0 + + + + 25 + + 50 + 140 + + 50 + 140 + + 25 + 140 + + 20 + 32 + + + + 9600 + + 1 + 2 + + + 70 + 100 + + 60 + 70 + + 35 + 50 + + 0 + 45 + + + 1 + + 0 + + 0 + 0 + + 0 + + 0 + + 0 + + 0 + + + 0 + + 1 + + + 0,48,0,14,1,1,1,9,1,0,0 + 48,48,0,14,2,1,1,9,1,0,0 + 96,48,0,14,3,1,1,9,1,0,0 + 144,48,0,14,4,1,1,9,1,0,0 + 144,36,0,14,5,1,1,9,1,0,0 + 180,36,0,14,6,1,1,9,1,0,0 + 216,36,0,14,7,1,1,9,1,0,0 + 252,21,0,14,8,1,1,9,1,0,0 + 1 + + + 0,48,0,14,1,1,1,9,1,0,0 + 48,48,0,14,2,1,1,9,1,0,0 + 72,36,0,14,3,1,1,9,1,0,0 + 108,36,0,14,4,1,1,9,1,0,0 + 144,36,0,14,5,1,1,9,1,0,0 + 180,36,0,14,6,1,1,9,1,0,0 + 216,36,0,14,7,1,1,9,1,0,0 + 252,21,0,14,8,1,1,9,1,0,0 + + + +4. Modify bin/nr5g/gnb/l1/dpdk.sh (change PCIe addresses from VFs). :: + + $RTE_SDK/usertools/dpdk-devbind.py --bind=vfio-pci 0000:21:02.0 + $RTE_SDK/usertools/dpdk-devbind.py --bind=vfio-pci 0000:21:02.1 + +5. Use configuration of test mac per:: + + /bin/nr5g/gnb.testmac/cascade_lake-sp/csxsp_mu1_100mhz_mmimo_hton_xran.cfg + phystart 4 0 40200 + + TEST_FD, 1002, 1, fd/mu3_100mhz/2/fd_testconfig_tst2.cfg + + +6. To execute l1app with O-DU functionality according to O-RAN Fronthaul specification, enter:: + + [root@xran flexran] cd ./bin/nr5g/gnb/l1 + [root@xran l1]#./l1.sh –xran + +where output corresponding L1 is:: + + [root@sc12-xran-sub6 l1]# ./l1.sh -xranmmw + Radio mode with XRAN - mmWave 100Mhz + DPDK WLS MODE + kernel.sched_rt_runtime_us = -1 + kernel.shmmax = 2147483648 + kernel.shmall = 2147483648 + Note: Forwarding request to 'systemctl disable irqbalance.service'. + using configuration file phycfg_xran_mmw.xml + >> Running... ./l1app table 0 1 --cfgfile=phycfg_xran_mmw.xml + FlexRAN SDK bblib_layerdemapping_5gnr version #DIRTY# + FlexRAN SDK bblib_layermapping_5gnr version #DIRTY# + FlexRAN SDK bblib_cestimate_5gnr_version #DIRTY# + FlexRAN SDK bblib_pucch_cestimate_5gnr version #DIRTY# + FlexRAN SDK bblib_llr_demapping version #DIRTY# + FlexRAN SDK bblib_pdcch_remapping_5gnr_version version #DIRTY# + FlexRAN SDK bblib_reed_muller version #DIRTY# + FlexRAN SDK bblib_lte_modulation version #DIRTY# + FlexRAN SDK bblib_polar_decoder_5gnr version #DIRTY# + FlexRAN SDK bblib_polar_rate_dematching_5gnr version #DIRTY# + FlexRAN SDK bblib_PhaseNoise_5G version #DIRTY# + FlexRAN SDK bblib_mimo_mmse_detection_5gnr version #DIRTY# + FlexRAN SDK bblib_fd_correlation version #DIRTY# + FlexRAN SDK bblib_scramble_5gnr version #DIRTY# + FlexRAN SDK bblib_pucch_equ_5gnr version #DIRTY# + FlexRAN SDK bblib_ta_compensation_version_5gnr #DIRTY# + FlexRAN SDK bblib_polar_encoder_5gnr version #DIRTY# + FlexRAN SDK bblib_prach_5gnr version #DIRTY# + FlexRAN SDK bblib_fft_ifft version #DIRTY# + FlexRAN SDK bblib_pucch_5gnr version #DIRTY# + FlexRAN SDK bblib_common version #DIRTY# + FlexRAN SDK bblib_lte_crc version #DIRTY# + FlexRAN SDK bblib_lte_dft_idft version #DIRTY# + FlexRAN SDK bblib_irc_rnn_calculation_5gnr_version #DIRTY# + FlexRAN SDK bblib_mmse_irc_mimo_5gnr_version #DIRTY# + FlexRAN SDK bblib_srs_cestimate_5gnr version #DIRTY# + FlexRAN SDK bblib_zf_matrix_gen version #DIRTY# + FlexRAN SDK bblib_beamforming_dl_expand version #DIRTY# + ========================= + 5GNR PHY Application + ========================= + --------------------------- + PhyCfg.xml Version: 20.04 + --------------------------- + --version=20.04 + --successiveNoApi=15 + --wls_dev_name=wls0 + --wlsMemorySize=0x3F600000 + --dlIqLog=0 + --ulIqLog=0 + --iqLogDumpToFile=0x0 + --phyMlog=1 + --phyStats=1 + --dpdkMemorySize=8192 + --dpdkIovaMode=0 + --dpdkBasebandFecMode=1 + --dpdkBasebandDevice=0000:1f:00.1 + --radioEnable=4 + --ferryBridgeMode=1 + --ferryBridgeEthPort=1 + --ferryBridgeSyncPorts=0 + --ferryBridgeOptCableLoopback=0 + --radioCfg0PCIeEthDev=0000:19:00.0 + --radioCfg0DpdkRx=1 + --radioCfg0DpdkTx=2 + --radioCfg0TxAnt=2 + --radioCfg0RxAnt=2 + --radioCfg0RxAgc=0 + --radioCfg0NumCell=1 + --radioCfg0Cell0PhyId=0 + --radioCfg0Cell1PhyId=1 + --radioCfg0Cell2PhyId=2 + --radioCfg0Cell3PhyId=3 + --radioCfg0Cell4PhyId=4 + --radioCfg0Cell5PhyId=5 + --radioCfg0riuMac=11:22:33:44:55:66 + --radioCfg1PCIeEthDev=0000:03:00.1 + --radioCfg1DpdkRx=1 + --radioCfg1DpdkTx=1 + --radioCfg1TxAnt=4 + --radioCfg1RxAnt=4 + --radioCfg1RxAgc=0 + --radioCfg1NumCell=1 + --radioCfg1Cell0PhyId=2 + --radioCfg1Cell1PhyId=3 + --radioCfg1Cell2PhyId=2 + --radioCfg1Cell3PhyId=3 + --radioCfg1riuMac=ac:1f:6b:2c:9f:07 + --radioCfg2PCIeEthDev=0000:05:00.0 + --radioCfg2DpdkRx=10 + --radioCfg2DpdkTx=11 + --radioCfg2TxAnt=4 + --radioCfg2RxAnt=4 + --radioCfg2RxAgc=0 + --radioCfg2NumCell=2 + --radioCfg2Cell0PhyId=4 + --radioCfg2Cell1PhyId=5 + --radioCfg2Cell2PhyId=2 + --radioCfg2Cell3PhyId=3 + --radioCfg2riuMac=ac:1f:6b:2c:9f:07 + --radioCfg3PCIeEthDev=0000:05:00.1 + --radioCfg3DpdkRx=12 + --radioCfg3DpdkTx=13 + --radioCfg3TxAnt=4 + --radioCfg3RxAnt=4 + --radioCfg3RxAgc=0 + --radioCfg3NumCell=2 + --radioCfg3Cell0PhyId=6 + --radioCfg3Cell1PhyId=7 + --radioCfg3Cell2PhyId=2 + --radioCfg3Cell3PhyId=3 + --radioCfg3riuMac=ac:1f:6b:2c:9f:07 + --radioCfg4PCIeEthDev=0000:00:08.0 + --radioCfg4DpdkRx=14 + --radioCfg4DpdkTx=15 + --radioCfg4TxAnt=4 + --radioCfg4RxAnt=4 + --radioCfg4RxAgc=0 + --radioCfg4NumCell=2 + --radioCfg4Cell0PhyId=8 + --radioCfg4Cell1PhyId=9 + --radioCfg4Cell2PhyId=2 + --radioCfg4Cell3PhyId=3 + --radioCfg4riuMac=ac:1f:6b:2c:9f:07 + --radioCfg5PCIeEthDev=0000:08:00.0 + --radioCfg5DpdkRx=16 + --radioCfg5DpdkTx=16 + --radioCfg5TxAnt=4 + --radioCfg5RxAnt=4 + --radioCfg5RxAgc=0 + --radioCfg5NumCell=2 + --radioCfg5Cell0PhyId=10 + --radioCfg5Cell1PhyId=11 + --radioCfg5Cell2PhyId=2 + --radioCfg5Cell3PhyId=3 + --radioCfg5riuMac=ac:1f:6b:2c:9f:07 + --radioCfg6PCIeEthDev=0000:00:05.0 + --radioCfg6DpdkRx=16 + --radioCfg6DpdkTx=16 + --radioCfg6TxAnt=4 + --radioCfg6RxAnt=4 + --radioCfg1RxAgc=0 + --radioCfg6NumCell=2 + --radioCfg6Cell0PhyId=12 + --radioCfg6Cell1PhyId=13 + --radioCfg6Cell2PhyId=2 + --radioCfg6Cell3PhyId=3 + --radioCfg6riuMac=ac:1f:6b:2c:9f:07 + --radioCfg7PCIeEthDev=0000:00:06.0 + --radioCfg7DpdkRx=16 + --radioCfg7DpdkTx=16 + --radioCfg7TxAnt=4 + --radioCfg7RxAnt=4 + --radioCfg7RxAgc=0 + --radioCfg7NumCell=2 + --radioCfg7Cell0PhyId=14 + --radioCfg7Cell1PhyId=15 + --radioCfg7Cell2PhyId=2 + --radioCfg7Cell3PhyId=3 + --radioCfg7riuMac=ac:1f:6b:2c:9f:07 + --radioPort0=0 + --radioPort1=1 + --radioPort2=2 + --radioPort3=3 + --radioPort4=4 + --radioPort5=5 + --radioPort6=6 + --radioPort7=7 + --PdschSymbolSplit=0 + --PdschDlWeightSplit=0 + --FecEncSplit=4 + --PuschChanEstSplit=0 + --PuschMmseSplit=0 + --PuschLlrRxSplit=0 + --PuschUlWeightSplit=0 + --FecDecEarlyTermDisable=0 + --FecDecNumIter=0 + --FecDecSplit=4 + --llrOutDecimalDigit=2 + --IrcEnableThreshold=-10 + --CEInterpMethod=0 + --PucchSplit=0 + --SrsCeSplit=0 + --prachDetectThreshold=10000 + --MlogSubframes=128 + --MlogCores=20 + --MlogSize=3084 + --systemThread=0, 0, 0 + --timerThread=0, 96, 0 + --xRANThread=4, 96, 0 + --xRANWorker=0x0, 96, 0 + --FpgaDriverCpuInfo=2, 96, 0 + --FrontHaulCpuInfo=3, 96, 0 + --radioDpdkMaster=2, 99, 0 + --BbuPoolSleepEnable=1 + --BbuPoolThreadCorePriority=94 + --BbuPoolThreadCorePolicy=0 + --BbuPoolThreadDefault_0_63=0x68 + --BbuPoolThreadDefault_64_127=0x0 + --BbuPoolThreadSrs_0_63=0x0 + --BbuPoolThreadSrs_64_127=0x0 + --BbuPoolThreadDlbeam_0_63=0x0 + --BbuPoolThreadDlbeam_64_127=0x0 + --BbuPoolThreadUrllc=8 + --FrontHaulTimeAdvance=9450 + --nEthPorts=459523 + --nPhaseCompFlag=1 + --nFecFpgaVersionMu3=0xFC101800 + --nFecFpgaVersionMu0_1=0x0319d420 + --nFhFpgaVersionMu3=0x8001000F + --nFhFpgaVersionMu0_1=0x90010008 + --dpdkXranDeviceCP=0000:21:02.1 + --dpdkXranDeviceUP=0000:21:02.0 + --DuMac=00:11:22:33:44:66 + --RuMac=00:11:22:33:44:55 + --Category=0 + --xranPmdSleep=0 + --Tadv_cp_dl=25 + --T2a_min_cp_dl=50 + --T2a_max_cp_dl=140 + --T2a_min_cp_ul=50 + --T2a_max_cp_ul=140 + --T2a_min_up=25 + --T2a_max_up=140 + --Ta3_min=20 + --Ta3_max=32 + --MTU=9600 + --c_plane_vlan_tag=1 + --u_plane_vlan_tag=2 + --T1a_min_cp_dl=70 + --T1a_max_cp_dl=100 + --T1a_min_cp_ul=60 + --T1a_max_cp_ul=70 + --T1a_min_up=35 + --T1a_max_up=50 + --Ta4_min=0 + --Ta4_max=45 + --DynamicSectionEna=0 + --xRANSFNWrap=0 + --xRANNumDLPRBs=0 + --xRANNumULPRBs=0 + --Gps_Alpha=0 + --Gps_Beta=0 + --xranCompMethod=0 + --nPrbElemDl=0 + --PrbElemDl0=0,48,0,14,1,1,1,9,1 + --PrbElemDl1=48,48,0,14,2,1,1,9,1 + --PrbElemDl2=96,48,0,14,3,1,1,9,1 + --PrbElemDl3=144,48,0,14,4,1,1,9,1 + --PrbElemDl4=144,36,0,14,5,1,1,9,1 + --PrbElemDl5=180,36,0,14,6,1,1,9,1 + --PrbElemDl6=216,36,0,14,7,1,1,9,1 + --PrbElemDl7=252,21,0,14,8,1,1,9,1 + --nPrbElemUl=0 + --PrbElemUl0=0,48,0,14,1,1,1,9,1 + --PrbElemUl1=48,48,0,14,2,1,1,9,1 + --PrbElemUl2=72,36,0,14,3,1,1,9,1 + --PrbElemUl3=108,36,0,14,4,1,1,9,1 + --PrbElemUl4=144,36,0,14,5,1,1,9,1 + --PrbElemUl5=180,36,0,14,6,1,1,9,1 + --PrbElemUl6=216,36,0,14,7,1,1,9,1 + --PrbElemUl7=252,21,0,14,8,1,1,9,1 + --StreamStats=0 + --StreamIp=127.0.0.1 + --StreamPort=2000 + + wls_dev_filename: wls0 + phycfg_apply: Initialize Radio Interface with XRAN library + Setting FecEncSplit to 1 to run on HW accelerator + Setting FecDecSplit to 1 to run on HW accelerator + + timer_set_tsc_freq_from_clock: System clock (rdtsc) resolution 1596249953 [Hz] + Ticks per usec 1596 + MLogOpen: filename(l1mlog.bin) mlogSubframes (128), mlogCores(20), mlogSize(3084) mlog_mask (-1) + mlogSubframes (128), mlogCores(20), mlogSize(3084) + localMLogTimerInit + System clock (rdtsc) resolution 1596250020 [Hz] + Ticks per us 1596 + MLog Storage: 0x7f6e5b0e3100 -> 0x7f6e5b86b52c [ 7898156 bytes ] + localMLogFreqReg: 1596. Storing: 1596 + Mlog Open successful + + di_xran_init + di_xran_cfg_setup successful + xran_init: MTU 9600 + BBDEV_FEC_ACCL_NR5G + hw-accelerated bbdev 0000:1f:00.1 + total cores 40 c_mask 0x14 core 4 [id] system_core 2 [id] pkt_proc_core 0x0 [mask] pkt_aux_core 0 [id] timing_core 4 [id] + xran_ethdi_init_dpdk_io: Calling rte_eal_init:wls0 -c 0x14 -n2 --iova-mode=pa --socket-mem=8192 --socket-limit=8192 --proc-type=auto --file-prefix wls0 -w 0000:00:00.0 -w 0000:1f:00.1 + EAL: Detected 40 lcore(s) + EAL: Detected 1 NUMA nodes + EAL: Auto-detected process type: PRIMARY + EAL: Multi-process socket /var/run/dpdk/wls0/mp_socket + EAL: Selected IOVA mode 'PA' + EAL: No available hugepages reported in hugepages-2048kB + EAL: Probing VFIO support... + EAL: VFIO support initialized + EAL: PCI device 0000:1f:00.1 on NUMA socket 0 + EAL: probe driver: 8086:d90 intel_fpga_5gnr_fec_vf + EAL: using IOMMU type 1 (Type 1) + EAL: PCI device 0000:21:02.0 on NUMA socket 0 + EAL: probe driver: 8086:154c net_i40e_vf + initializing port 0 for TX, drv=net_i40e_vf + Port 0 MAC: 00 11 22 33 44 66 + Port 0: nb_rxd 4096 nb_txd 4096 + + Checking link status portid [0] EAL: PCI device 0000:21:02.1 on NUMA socket 0 + EAL: probe driver: 8086:154c net_i40e_vf + initializing port 1 for TX, drv=net_i40e_vf + Port 1 MAC: 00 11 22 33 44 66 + Port 1: nb_rxd 4096 nb_txd 4096 + Checking link status portid [1] vf 0 local SRC MAC: 00 11 22 33 44 66 + vf 0 remote DST MAC: 00 11 22 33 44 55 + vf 1 local SRC MAC: 00 11 22 33 44 66 + vf 1 remote DST MAC: 00 11 22 33 44 55 + xran_init successful, pHandle = 0x5581f440 + bbdev_init: + Socket ID: 0 + FEC is accelerated through BBDEV: 0000:1f:00.1 + wls_layer_init[wls0] nWlsMemorySize[1063256064] + wls_lib: Open wls0 (DPDK memzone) + wls_lib: WLS_Open 0x2bf600000 + wls_lib: link: 0 <-> 1 + wls_lib: Mode 0 + wls_lib: WLS shared management memzone: wls0 + wls_lib: hugePageSize on the system is 1073741824 + wls_lib: WLS_Alloc [1063256064] bytes + + + =========================================================================================================== + PHY VERSION + =========================================================================================================== + Version: #DIRTY# + IMG-date: Apr 27 2020 + IMG-time: 12:54:54 + =========================================================================================================== + DEPENDENCIES VERSIONS + =========================================================================================================== + FlexRAN BBU pooling version #DIRTY# + FlexRAN SDK bblib_layerdemapping_5gnr version #DIRTY# + FlexRAN SDK bblib_layermapping_5gnr version #DIRTY# + FlexRAN SDK bblib_cestimate_5gnr_version #DIRTY# + FlexRAN SDK bblib_pucch_cestimate_5gnr version #DIRTY# + FlexRAN SDK bblib_llr_demapping version #DIRTY# + FlexRAN SDK bblib_pdcch_remapping_5gnr_version version #DIRTY# + FlexRAN SDK bblib_reed_muller version #DIRTY# + FlexRAN SDK bblib_lte_modulation version #DIRTY# + FlexRAN SDK bblib_polar_decoder_5gnr version #DIRTY# + FlexRAN SDK bblib_polar_rate_dematching_5gnr version #DIRTY# + FlexRAN SDK bblib_PhaseNoise_5G version #DIRTY# + FlexRAN SDK bblib_mimo_mmse_detection_5gnr version #DIRTY# + FlexRAN SDK bblib_fd_correlation version #DIRTY# + FlexRAN SDK bblib_scramble_5gnr version #DIRTY# + FlexRAN SDK bblib_pucch_equ_5gnr version #DIRTY# + FlexRAN SDK bblib_ta_compensation_version_5gnr #DIRTY# + FlexRAN SDK bblib_polar_encoder_5gnr version #DIRTY# + FlexRAN SDK bblib_prach_5gnr version #DIRTY# + FlexRAN SDK bblib_fft_ifft version #DIRTY# + FlexRAN SDK bblib_pucch_5gnr version #DIRTY# + FlexRAN SDK bblib_lte_crc version #DIRTY# + FlexRAN SDK bblib_common version #DIRTY# + =========================================================================================================== + + =========================================================================================================== + Non BBU threads in application + =========================================================================================================== + nr5g_gnb_phy2mac_api_proc_stats_thread: [PID: 112583] binding on [CPU 0] [PRIO: 0] [POLICY: 1] + wls_rx_handler (non-rt): [PID: 112587] binding on [CPU 0] + =========================================================================================================== + PHY>welcome to application console + PHY>Received MSG_TYPE_PHY_UL_IQ_SAMPLES + Processing MSG_TYPE_PHY_UL_IQ_SAMPLES: 0 + phydi_read_write_iq_samples: direction[1] nNumerologyMult[8] fftSize[1024, 11088, SRS: 792] numSubframe[80] numAntenna[2] numPorts[2] nIsRadioMode[1] carrNum[0] TimerModeFreqDomain[1] PhaseCompensationEnable[0] filename_in_ul_iq[/home/turner/xran/master/npg_wireless-flexran_l1_5g_test/fd/mu3_100mhz/2/../../../ul/mu3_100mhz/1/uliq00_tst1.bin] filename_in_prach_iq[] + Received MSG_TYPE_PHY_CONFIG_REQ: 0 + Processing MSG_TYPE_PHY_CONFIG_REQ: 0 + phy_bbupool_set_config: Using cores: 0x0000000000000068 for BBU Pool nBbuPoolSleepEnable: 1 + BBU Pooling: queueId = 0, the according nCoreNum = 3, the according cpuSetMask = 0x68 + BBU Pooling: gCoreIdxMap[0] = 3 is available! + BBU Pooling: gCoreIdxMap[1] = 5 is available! + BBU Pooling: gCoreIdxMap[2] = 6 is available! + BBU Pooling: taskId = 0 taskName = DL_L1_CONFIG is registered + BBU Pooling: taskId = 1 taskName = DL_L1_PDSCH_TB is registered + BBU Pooling: taskId = 2 taskName = DL_L1_PDSCH_SCRAMBLER is registered + BBU Pooling: taskId = 3 taskName = DL_L1_PDSCH_SYMBOL_TX is registered + BBU Pooling: taskId = 4 taskName = DL_L1_PDSCH_RS_GEN is registered + BBU Pooling: taskId = 5 taskName = DL_L1_CONTROL_CHANNELS is registered + BBU Pooling: taskId = 6 taskName = UL_L1_CONFIG is registered + BBU Pooling: taskId = 7 taskName = UL_L1_PUSCH_CE0 is registered + BBU Pooling: taskId = 8 taskName = UL_L1_PUSCH_CE7 is registered + BBU Pooling: taskId = 9 taskName = UL_L1_PUSCH_MMSE0_PRE is registered + BBU Pooling: taskId = 10 taskName = UL_L1_PUSCH_MMSE7_PRE is registered + BBU Pooling: taskId = 11 taskName = UL_L1_PUSCH_MMSE0 is registered + BBU Pooling: taskId = 12 taskName = UL_L1_PUSCH_MMSE7 is registered + BBU Pooling: taskId = 13 taskName = UL_L1_PUSCH_LLR is registered + BBU Pooling: taskId = 14 taskName = UL_L1_PUSCH_DECODE is registered + BBU Pooling: taskId = 15 taskName = UL_L1_PUSCH_TB is registered + BBU Pooling: taskId = 16 taskName = UL_L1_PUCCH is registered + BBU Pooling: taskId = 17 taskName = UL_L1_PRACH is registered + BBU Pooling: taskId = 18 taskName = UL_L1_SRS is registered + BBU Pooling: taskId = 19 taskName = DL_L1_POST is registered + BBU Pooling: taskId = 20 taskName = UL_L1_POST is registered + BBU Pooling: next taskList of DL_L1_CONFIG: DL_L1_PDSCH_TB DL_L1_PDSCH_RS_GEN DL_L1_CONTROL_CHANNELS + BBU Pooling: next taskList of DL_L1_PDSCH_TB: N/A + + BBU Pooling: next taskList of DL_L1_PDSCH_SCRAMBLER: DL_L1_PDSCH_SYMBOL_TX + BBU Pooling: next taskList of DL_L1_PDSCH_SYMBOL_TX: DL_L1_POST + BBU Pooling: next taskList of DL_L1_PDSCH_RS_GEN: DL_L1_PDSCH_SYMBOL_TX + BBU Pooling: next taskList of DL_L1_CONTROL_CHANNELS: DL_L1_POST + BBU Pooling: next taskList of UL_L1_CONFIG: UL_L1_POST + BBU Pooling: next taskList of UL_L1_PUSCH_CE0: UL_L1_PUSCH_MMSE0 UL_L1_PUSCH_MMSE7 + BBU Pooling: next taskList of UL_L1_PUSCH_CE7: UL_L1_PUSCH_MMSE7 + BBU Pooling: next taskList of UL_L1_PUSCH_MMSE0_PRE: UL_L1_PUSCH_MMSE0 UL_L1_PUSCH_MMSE7 + BBU Pooling: next taskList of UL_L1_PUSCH_MMSE7_PRE: UL_L1_PUSCH_MMSE7 + BBU Pooling: next taskList of UL_L1_PUSCH_MMSE0: UL_L1_PUSCH_LLR + BBU Pooling: next taskList of UL_L1_PUSCH_MMSE7: UL_L1_PUSCH_LLR + BBU Pooling: next taskList of UL_L1_PUSCH_LLR: UL_L1_PUSCH_DECODE + BBU Pooling: next taskList of UL_L1_PUSCH_DECODE: N/A + + BBU Pooling: next taskList of UL_L1_PUSCH_TB: UL_L1_POST + BBU Pooling: next taskList of UL_L1_PUCCH: UL_L1_POST + BBU Pooling: next taskList of UL_L1_PRACH: UL_L1_POST + BBU Pooling: next taskList of UL_L1_SRS: UL_L1_POST + BBU Pooling: next taskList of DL_L1_POST: N/A + + BBU Pooling: next taskList of UL_L1_POST: N/A + + enter RtThread Launch + 3 thread associated with queue 0:coreIdx 0 1 2 + Leave RtThread Launch + launching Thread 0 Queue 0 uCoreIdx 0 CoreId 3 Priority 94 Policy 1 nRtCoreSleep 1 nFriendCnt 0 nCurrentSfIdx -1 + + launching Thread 1 Queue 0 uCoreIdx 1 CoreId 5 Priority 94 Policy 1 nRtCoreSleep 1 nFriendCnt 0 nCurrentSfIdx -1 + + launching Thread 2 Queue 0 uCoreIdx 2 CoreId 6 Priority 94 Policy 1 nRtCoreSleep 1 nFriendCnt 0 nCurrentSfIdx -1 + + bbupool_core_main: the server's coreNum = 40, the nCore = 3,nRtCoreMask = 0x68, the nFeIfCore = 0,nFeIfCoreMask = 0x0 + bbupool_core_main pthread_setaffinity_np succeed: coreId = 0, result = 0 + nr5g_gnb_mac2phy_api_proc_print_phy_init [0]: + nCarrierIdx: 0 + nDMRSTypeAPos: 2 + nPhyCellId: 100 + nDLAbsFrePointA: 27968160 + nULAbsFrePointA: 27968160 + nDLBandwidth: 100 + nULBandwidth: 100 + nDLFftSize: 1024 + nULFftSize: 1024 + nSSBPwr: 0 + nSSBAbsFre: 0 + nSSBPeriod: 2 + nSSBSubcSpacing: 3 + nSSBSubcOffset: 0 + nSSBPrbOffset: 0 + nMIB[0]: 255 + nMIB[1]: 255 + nMIB[2]: 255 + nDLK0: 0 + nULK0: 0 + nSSBMask[0]: 63 + nSSBMask[1]: 0 + nNrOfTxAnt: 2 + nNrOfRxAnt: 2 + nNrOfDLPorts: 2 + nNrOfULPorts: 2 + nCarrierAggregationLevel: 0 + nFrameDuplexType: 1 + nSubcCommon: 3 + nTddPeriod: 5 (TDD) + SlotConfig: + Slot Sym 0 Sym 1 Sym 2 Sym 3 Sym 4 Sym 5 Sym 6 Sym 7 Sym 8 Sym 9 Sym10 Sym11 Sym12 Sym13 + 0 DL DL DL DL DL DL DL DL DL DL DL DL DL DL + 1 DL DL DL DL DL DL DL DL DL DL DL DL DL DL + 2 DL DL DL DL DL DL DL DL DL DL DL DL DL DL + 3 DL DL DL DL DL DL DL DL DL DL GD GD UL UL + 4 UL UL UL UL UL UL UL UL UL UL UL UL UL UL + + nPrachConfIdx: 81 + nPrachSubcSpacing: 3 + nPrachZeroCorrConf: 2 + nPrachRestrictSet: 0 + nPrachRootSeqIdx: 0 + nPrachFreqStart: 0 + nPrachFdm: 1 + nPrachSsbRach: 0 + nPrachNrofRxRU: 2 + nCyclicPrefix: 0 + nGroupHopFlag: 0 + nSequenceHopFlag: 0 + nHoppingId: 0 + read_table: File table/common/pss_table.bin of size 381 read_size: 381 + read_table: File table/common/sss_table.bin of size 128016 read_size: 128016 + read_table: File table/common/srs_zc_36_plus.bin of size 905916 read_size: 905916 + read_table: File table/common/pucch_zc_36_plus.bin of size 383040 read_size: 383040 + read_table: File table/common/srs_wiener_sinc_comb2.bin of size 81216 read_size: 81216 + read_table: File table/common/srs_wiener_sinc_comb4.bin of size 81216 read_size: 81216 + BBU Pooling Info: maximum period length was configured, preMaxSF = 8000, postMasSF = 8000 + set_slot_type SlotPattern: + Slot: 0 1 2 3 4 + 0 DL DL DL SP UL + + PHYDI-INIT[from 0] PhyInstance: 0 + + --------------------------------------------------------- + Global Variables: + --------------------------------------------------------- + gCarrierAggLevel: 0 + gCarrierAggLevelInit: 1 + gSupportedAVX2 1 + --------------------------------------------------------- + + Received MSG_TYPE_PHY_START_REQ: 0 + Processing MSG_TYPE_PHY_START_REQ: 0 + + xran_max_frame 99 + XRAN_UP_VF: 0x0000 + XRAN_CP_VF: 0x0001 + xran_timing_source_thread [CPU 4] [PID: 112582] + O-DU: thread_run start time: 04/27/20 20:20:33.000000010 UTC [125] + Start C-plane DL 25 us after TTI [trigger on sym 3] + Start C-plane UL 55 us after TTI [trigger on sym 7] + Start U-plane DL 50 us before OTA [offset in sym -5] + Start U-plane UL 45 us OTA [offset in sym 6] + C-plane to U-plane delay 25 us after TTI + Start Sym timer 8928 ns + interval_us 125 + PHYDI-START[from 0] PhyInstance: 0, Mode: 4, Count: 100040207, Period: 0, NumSlotPerSfn: 80 + gnb_start_xran: gxRANStarted[0] CC 1 Ant 4 AntElm 0 + XRAN front haul xran_mm_init + xran_sector_get_instances [0]: CC 0 handle 0x7f6e397307c0 + Handle: 0x1994ce00 Instance: 0x7f6e397307c0 + gnb_start_xran [0]: CC 0 handle 0x7f6e397307c0 + Sucess xran_mm_init Instance 0x7f6e397307c0 + nSectorNum 1 + ru_0_cc_0_idx_0: [ handle 0x7f6e397307c0 0 0 ] [nPoolIndex 0] nNumberOfBuffers 2240 nBufferSize 5856 + CC:[ handle 0x7f6e397307c0 ru 0 cc_idx 0 ] [nPoolIndex 0] mb pool 0x2e817b900 + ru_0_cc_0_idx_1: [ handle 0x7f6e397307c0 0 0 ] [nPoolIndex 1] nNumberOfBuffers 35840 nBufferSize 24 + CC:[ handle 0x7f6e397307c0 ru 0 cc_idx 0 ] [nPoolIndex 1] mb pool 0x2e7266c40 + ru_0_cc_0_idx_2: [ handle 0x7f6e397307c0 0 0 ] [nPoolIndex 2] nNumberOfBuffers 2240 nBufferSize 48416 + CC:[ handle 0x7f6e397307c0 ru 0 cc_idx 0 ] [nPoolIndex 2] mb pool 0x2e5cb4600 + ru_0_cc_0_idx_3: [ handle 0x7f6e397307c0 0 0 ] [nPoolIndex 3] nNumberOfBuffers 2240 nBufferSize 5856 + CC:[ handle 0x7f6e397307c0 ru 0 cc_idx 0 ] [nPoolIndex 3] mb pool 0x2df2872c0 + ru_0_cc_0_idx_4: [ handle 0x7f6e397307c0 0 0 ] [nPoolIndex 4] nNumberOfBuffers 35840 nBufferSize 24 + CC:[ handle 0x7f6e397307c0 ru 0 cc_idx 0 ] [nPoolIndex 4] mb pool 0x2de372600 + ru_0_cc_0_idx_5: [ handle 0x7f6e397307c0 0 0 ] [nPoolIndex 5] nNumberOfBuffers 2240 nBufferSize 48416 + CC:[ handle 0x7f6e397307c0 ru 0 cc_idx 0 ] [nPoolIndex 5] mb pool 0x2dcdbffc0 + ru_0_cc_0_idx_6: [ handle 0x7f6e397307c0 0 0 ] [nPoolIndex 6] nNumberOfBuffers 2240 nBufferSize 8192 + CC:[ handle 0x7f6e397307c0 ru 0 cc_idx 0 ] [nPoolIndex 6] mb pool 0x2d6392c80 + gnb_init_xran_cp + init xran successfully + ---------------------------------------------------------------------------- + mem_mgr_display_size: + Num Memory Alloc: 5,186 + Total Memory Size: 4,389,524,920 + ---------------------------------------------------------------------------- + + + BBU Pooling: enter multicell Activate! + BBU Pooling Info: bbupool rt thread start on CoreIdx 2 coreId 6 at 547270377116554 at sf=0 with queue 0 successfully + BBU Pooling: active result: Q_id = 0,currenSf = 0, curCellNum = 0, activesfn = 4, CellNumInActSfn = 1 + BBU Pooling: multiCell Activate sucessfully! + BBU Pooling Info: bbupool rt thread start on CoreIdx 0 coreId 3 at 547270377104408 at sf=0 with queue 0 successfully + BBU Pooling Info: bbupool rt thread start on CoreIdx 1 coreId 5 at 547270377117634 at sf=0 with queue 0 successfully + phy_bbupool_rx_handler: PhyId[0] nSfIdx[4] frame,slot[0,5] gNumSlotPerSfn[80] + ==== l1app Time: 5001 ms NumCarrier: 1 NumBbuCores: 3 rxPcktCnt: 93621 rachPcktCnt 46811 Total Proc Time: [ 62.00.. 98.39..209.00] usces==== + ==== [o-du][rx 619683 pps 123936 kbps 2621619][tx 1996407 pps 399281 kbps 9181862] [on_time 619683 early 0 late 0 corrupt 0 pkt_dupl 16 Total 619683] IO Util: 79.61 % + + +7. To execute testmac with O-DU functionality according to O-RAN Fronthaul specification, enter:: + + [root@xran flexran] cd ./bin/nr5g/gnb/testmac + + +8. To execute test case type:: + + ./l2.sh + --testfile=./cascade_lake-sp/csxsp_mu1_100mhz_mmimo_hton_xran.cfg + + +where output corresponding to Test MAC:: + + [root@sc12-xran-sub6 testmac]# ./l2.sh --testfile=./cascade_lake-sp/csxsp_mu1_100mhz_mmimo_hton_xran.cfg + kernel.sched_rt_runtime_us = -1 + kernel.shmmax = 2147483648 + kernel.shmall = 2147483648 + Note: Forwarding request to 'systemctl disable irqbalance.service'. + start 5GNR Test MAC + ========================= + 5GNR Testmac Application + ========================= + testmac_cfg_set_cfg_filename: Coult not find string 'cfgfile' in command line. Using default File: testmac_cfg.xml + --------------------------- + TestMacCfg.xml Version: 20.04 + --------------------------- + --version=20.04 + --wls_dev_name=wls0 + --wlsMemorySize=0x3F600000 + --dpdkIovaMode=0 + --PhyStartMode=1 + --PhyStartPeriod=40 + --PhyStartCount=0 + --MlogSubframes=128 + --MlogCores=3 + --MlogSize=2048 + --wlsRxThread=1, 90, 0 + --systemThread=0, 0, 0 + --runThread=0, 89, 0 + --urllcThread=19, 90, 0 + + wls_dev_filename: wls0 + sys_reg_signal_handler:[err] signal handler in NULL + sys_reg_signal_handler:[err] signal handler in NULL + timer_set_tsc_freq_from_clock: System clock (rdtsc) resolution 1596245684 [Hz] + Ticks per usec 1596 + MLogOpen: filename(testmac-mlog.bin) mlogSubframes (128), mlogCores(3), mlogSize(2048) mlog_mask (-1) + mlogSubframes (128), mlogCores(3), mlogSize(2048) + localMLogTimerInit + System clock (rdtsc) resolution 1596250375 [Hz] + Ticks per us 1596 + MLog Storage: 0x7f84cae86100 -> 0x7f84caf46920 [ 788512 bytes ] + localMLogFreqReg: 1596. Storing: 1596 + Mlog Open successful + Calling rte_eal_init: testmac -c1 --proc-type=auto --file-prefix wls0 --iova-mode=pa + EAL: Detected 40 lcore(s) + EAL: Detected 1 NUMA nodes + EAL: Auto-detected process type: SECONDARY + EAL: Multi-process socket /var/run/dpdk/wls0/mp_socket_112640_1f1baf0a9b316 + EAL: Selected IOVA mode 'PA' + EAL: Probing VFIO support... + EAL: VFIO support initialized + EAL: PCI device 0000:19:00.0 on NUMA socket 0 + EAL: probe driver: 8086:d58 net_i40e + EAL: PCI device 0000:19:00.1 on NUMA socket 0 + EAL: probe driver: 8086:d58 net_i40e + EAL: PCI device 0000:1d:00.0 on NUMA socket 0 + EAL: probe driver: 8086:d58 net_i40e + EAL: PCI device 0000:1d:00.1 on NUMA socket 0 + EAL: probe driver: 8086:d58 net_i40e + EAL: PCI device 0000:21:00.0 on NUMA socket 0 + EAL: probe driver: 8086:158b net_i40e + EAL: PCI device 0000:21:00.1 on NUMA socket 0 + EAL: probe driver: 8086:158b net_i40e + EAL: PCI device 0000:21:02.0 on NUMA socket 0 + EAL: probe driver: 8086:154c net_i40e_vf + EAL: using IOMMU type 1 (Type 1) + EAL: PCI device 0000:21:02.1 on NUMA socket 0 + EAL: probe driver: 8086:154c net_i40e_vf + EAL: PCI device 0000:21:0a.0 on NUMA socket 0 + EAL: probe driver: 8086:154c net_i40e_vf + EAL: 0000:21:0a.0 cannot find TAILQ entry for PCI device! + EAL: Requested device 0000:21:0a.0 cannot be used + EAL: PCI device 0000:21:0a.1 on NUMA socket 0 + EAL: probe driver: 8086:154c net_i40e_vf + EAL: 0000:21:0a.1 cannot find TAILQ entry for PCI device! + EAL: Requested device 0000:21:0a.1 cannot be used + EAL: PCI device 0000:67:00.0 on NUMA socket 0 + EAL: probe driver: 8086:37d2 net_i40e + EAL: PCI device 0000:67:00.1 on NUMA socket 0 + EAL: probe driver: 8086:37d2 net_i40e + wls_lib: Open wls0 (DPDK memzone) + wls_lib: WLS_Open 0x2bf600000 + wls_lib: link: 1 <-> 0 + wls_lib: Mode 1 + wls_lib: WLS shared management memzone: wls0 + wls_lib: hugePageSize on the system is 1073741824 + wls_lib: WLS_Alloc [1063256064] bytes + wls_lib: Connecting to remote peer ... + wls_lib: Connected to remote peer + wls_mac_create_mem_array: pMemArray[0xf3500f0] pMemArrayMemory[0x280000000] totalSize[1063256064] nBlockSize[262144] numBlocks[4056] + WLS_EnqueueBlock [1] + WLS inited ok [383] + =========================================================================================================== + TESTMAC VERSION + =========================================================================================================== + $Version: #DIRTY# $ (x86) + IMG-date: Apr 27 2020 + IMG-time: 12:55:58 + =========================================================================================================== + =========================================================================================================== + Testmac threads in application + =========================================================================================================== + testmac_run_thread: [PID: 112644] binding on [CPU 0] [PRIO: 89] [POLICY: 1] + wls_mac_rx_task: [PID: 112643] binding on [CPU 1] [PRIO: 90] [POLICY: 1] + =========================================================================================================== + + testmac_set_phy_start: mode[1], period[40], count[0] + + testmac_run_load_files: + Loading DL Config Files: + testmac_run_parse_file Parsing config file: /home/turner/xran/master/npg_wireless-flexran_l1_5g_test/dl/testmac_dl_mu0_5mhz.cfg + testmac_run_parse_file Parsing config file: /home/turner/xran/master/npg_wireless-flexran_l1_5g_test/dl/testmac_dl_mu0_10mhz.cfg + testmac_run_parse_file Parsing config file: /home/turner/xran/master/npg_wireless-flexran_l1_5g_test/dl/testmac_dl_mu0_20mhz.cfg + testmac_run_parse_file Parsing config file: /home/turner/xran/master/npg_wireless-flexran_l1_5g_test/dl/testmac_dl_mu1_100mhz.cfg + testmac_run_parse_file Parsing config file: /home/turner/xran/master/npg_wireless-flexran_l1_5g_test/dl/testmac_dl_mu3_100mhz.cfg + Loading UL Config Files: + testmac_run_parse_file Parsing config file: /home/turner/xran/master/npg_wireless-flexran_l1_5g_test/ul/testmac_ul_mu0_5mhz.cfg + testmac_run_parse_file Parsing config file: /home/turner/xran/master/npg_wireless-flexran_l1_5g_test/ul/testmac_ul_mu0_10mhz.cfg + testmac_run_parse_file Parsing config file: /home/turner/xran/master/npg_wireless-flexran_l1_5g_test/ul/testmac_ul_mu0_20mhz.cfg + testmac_run_parse_file Parsing config file: /home/turner/xran/master/npg_wireless-flexran_l1_5g_test/ul/testmac_ul_mu1_100mhz.cfg + testmac_run_parse_file Parsing config file: /home/turner/xran/master/npg_wireless-flexran_l1_5g_test/ul/testmac_ul_mu3_100mhz.cfg + Loading FD Config Files: + testmac_run_parse_file Parsing config file: /home/turner/xran/master/npg_wireless-flexran_l1_5g_test/fd/testmac_fd_mu0_5mhz.cfg + testmac_run_parse_file Parsing config file: /home/turner/xran/master/npg_wireless-flexran_l1_5g_test/fd/testmac_fd_mu0_10mhz.cfg + testmac_run_parse_file Parsing config file: /home/turner/xran/master/npg_wireless-flexran_l1_5g_test/fd/testmac_fd_mu0_20mhz.cfg + testmac_run_parse_file Parsing config file: /home/turner/xran/master/npg_wireless-flexran_l1_5g_test/fd/testmac_fd_mu1_40mhz.cfg + testmac_run_parse_file Parsing config file: /home/turner/xran/master/npg_wireless-flexran_l1_5g_test/fd/testmac_fd_mu1_100mhz.cfg + testmac_run_parse_file Parsing config file: /home/turner/xran/master/npg_wireless-flexran_l1_5g_test/fd/testmac_fd_mu3_100mhz.cfg + + TESTMAC DL TESTS: + Numerology[0] Bandwidth[5] + 1001 1002 1003 1004 1005 1006 1007 1008 + Numerology[0] Bandwidth[10] + 1001 1002 1003 1004 1005 1006 1007 1008 + Numerology[0] Bandwidth[20] + 1001 1002 1003 1004 1005 1006 1007 1008 + Numerology[1] Bandwidth[100] + 1200 1201 1202 1203 1204 1205 1206 1207 1210 1211 + 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 + 1222 1223 1224 1225 1226 1227 1228 1229 1230 1241 + 1242 1243 1244 1245 1250 1251 1252 1300 1301 1302 + 1303 1304 1305 1402 1404 1408 1416 1500 1501 1502 + 1503 1504 1505 1506 2213 2214 2215 2217 2218 2219 + 2223 2224 2225 2227 2228 2229 2500 2501 2502 2503 + 2504 3213 3214 3215 3217 3218 3219 3223 3224 3225 + 3227 3228 3229 + Numerology[3] Bandwidth[100] + 1001 1002 1003 1005 1006 1007 1008 1009 1010 1011 + 1012 1013 1014 1015 1016 1017 1018 1019 1030 1031 + 1032 1033 2001 2002 2003 2030 2033 3001 3002 3003 + 3030 + + TESTMAC UL TESTS: + Numerology[0] Bandwidth[5] + 1001 1002 1003 + Numerology[0] Bandwidth[10] + 1001 1002 + Numerology[0] Bandwidth[20] + 1001 1002 1003 1004 1005 1006 1007 1008 + Numerology[1] Bandwidth[100] + 1010 1030 1031 1032 1033 1034 1035 1036 1037 1038 + 1039 1040 1041 1042 1043 1070 1071 1072 1073 1074 + 1080 1081 1082 1083 1084 1085 1086 1087 1091 1092 + 1093 1094 1095 1096 1100 1101 1102 1103 1104 1105 + 1106 1107 1108 1110 1111 1113 1114 1115 1116 1117 + 1118 1119 1120 1121 1122 1123 1124 1130 1131 1132 + 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 + 1143 1150 1152 1153 1154 1155 1156 1157 1159 1160 + 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 + 1171 1172 1173 1200 1201 1202 1203 1204 1205 1206 + 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 + 1217 1218 1219 1220 1221 1222 1230 1231 1232 1233 + 1234 1235 1236 1237 1402 1404 1408 1416 1420 1421 + 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 + 1432 1433 1434 1435 1436 1437 1438 1500 1503 1504 + 1505 1506 1507 1508 1511 1512 1513 1514 1515 1516 + 1540 1541 1542 1563 1564 1565 1566 1567 1568 1569 + 1570 1571 1572 1573 1574 1600 1601 1602 1603 1604 + 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 + 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 + 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 + 1635 1636 1637 1638 1639 1640 1641 1642 1700 1701 + 2236 2237 3236 3237 + Numerology[3] Bandwidth[100] + 1001 1002 1003 1004 1005 1006 1007 1010 1011 1012 + 1013 1014 1015 1020 1021 1022 1023 1024 1025 1026 + 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 + 1037 1040 1041 1042 1043 1044 1045 1046 1050 1051 + 1052 1053 1054 1059 1060 1061 1062 1063 1064 1065 + 1066 1067 1070 1071 1073 1074 1081 1082 1083 1084 + 1085 1086 2001 2002 2003 3001 3002 3003 + + TESTMAC FD TESTS: + Numerology[0] Bandwidth[5] + 1001 6001 8001 10001 12001 + Numerology[0] Bandwidth[10] + 1001 2001 4001 6001 8001 10001 12001 1002 2002 4002 + 6002 8002 10002 12002 1003 + Numerology[0] Bandwidth[20] + 1002 1004 1012 1014 1015 1016 1017 1018 1020 1021 + 1022 1023 1024 1025 1030 1031 1032 1033 1200 1201 + 1202 1206 1207 1208 1209 1210 1211 1212 1220 1221 + 1222 1223 1224 1225 1226 1227 1228 + Numerology[1] Bandwidth[40] + 1001 1002 1003 + Numerology[1] Bandwidth[100] + 1001 1200 1201 1202 1203 1204 1205 1206 1207 1208 + 1209 1210 1300 1301 1302 1303 1304 1305 1306 1307 + 1308 1350 1351 1352 1353 1354 1355 1356 1357 1358 + 1370 1371 1372 1373 1401 1402 1403 1404 1405 1406 + 1411 1412 1490 1494 1500 1501 1502 1503 1504 1510 + 1511 1512 1513 1514 1515 1520 1521 1522 1523 1524 + 1525 1526 1527 1528 1529 1530 1531 1532 1540 1541 + 1700 1701 1702 2520 2521 2522 2523 2524 2525 2526 + 2527 2528 2529 2530 2531 2532 3524 3525 3526 3527 + 3528 3529 3530 3531 3532 4524 4525 4526 4527 4528 + 4529 4530 4531 4532 + Numerology[3] Bandwidth[100] + 1001 1002 1004 1005 1006 1007 1008 1009 1010 1011 + 1012 1013 1014 1015 1061 1062 1063 1064 1065 1080 + 1081 1082 2001 3001 + testmac_run_parse_file Parsing config file: ./cascade_lake-sp/csxsp_mu1_100mhz_mmimo_hton_xran.cfg + testmac_set_phy_start: mode[4], period[0], count[100040200] + Adding Test[1002]. NumCarr[1], Current Directory: /home/turner/xran/master/npg_wireless-flexran_l1_5g_test/ + Carrier[0]: ConfigFile: fd/mu3_100mhz/2/fd_testconfig_tst2.cfg + ---------------------------------------------------------------------------------------- + Running Test[1002]. NumCarr[1], Current Directory: /home/turner/xran/master/npg_wireless-flexran_l1_5g_test/ + Carrier[0]: ConfigFile: fd/mu3_100mhz/2/fd_testconfig_tst2.cfg + TESTMAC>welcome to application console + + MLogRestart + MLogOpen: filename(testmac-mlog.bin) mlogSubframes (128), mlogCores(3), mlogSize(2048) mlog_mask (-1) + mlogSubframes (128), mlogCores(3), mlogSize(2048) + localMLogTimerInit + System clock (rdtsc) resolution 1596249901 [Hz] + Ticks per us 1596 + MLog Storage: 0x7f84bc000900 -> 0x7f84bc0c1120 [ 788512 bytes ] + localMLogFreqReg: 1596. Storing: 1596 + Mlog Open successful + + testmac_mac2phy_set_num_cells: Setting Max Cells: 1 + testmac_config_parse: test_num[1002] test_type[2] numcarrier[1] + host_config_set_int Error(nPrachSsbRach, 3): Out of range: [min(0), max(1)] + Queueing MSG_TYPE_PHY_UL_IQ_SAMPLES(0) + Received MSG_TYPE_PHY_UL_IQ_SAMPLES(0) + Queueing MSG_TYPE_PHY_CONFIG_REQ(0) and sending list + Received MSG_TYPE_PHY_CONFIG_RESP(0) + Queueing MSG_TYPE_PHY_START_REQ(0) and sending list + Received MSG_TYPE_PHY_START_RESP(0) + ==== testmac Time: 5000 ms NumCarrier: 1 Total Proc Time: [ 0.00.. 4.11.. 14.00] usces==== + Core Utilization [Core: 1] [Util %: 2.97%] + ==== testmac Time: 10000 ms NumCarrier: 1 Total Proc Time: [ 2.00.. 4.10.. 13.00] usces==== + Core Utilization [Core: 1] [Util %: 4.81%] + ==== testmac Time: 15000 ms NumCarrier: 1 Total Proc Time: [ 2.00.. 4.10.. 6.00] usces==== + + +Configure FlexRAN 5G NR L1 Application for multiple O-RUs with multiple numerologies +==================================================================================== + +The 5G NR layer 1 application can be used for executing the scenario for +multiple cells with multiple numerologies. The current release supports +the constant configuration of different numerologies on different O-RU +ports. It is required that the first O-RU (O-RU0) to be configured with +highest numerology. The configuration procedure is similar as described +in above section. Please refer to the configuration file located in +bin\nr5g\gnb\l1\orancfg\sub3_mu0_20mhz_sub6_mu1_100mhz_4x4\gnb\xrancfg_sub6_oru.xml + +Install and Configure FlexRAN 5G NR L1 Application for Massive - MIMO +===================================================================== + +The 5G NR layer 1 application can be used for executing the scenario for +Massive-MIMO with either the RU sample application or just the O-DU +side. 3 cells scenario with 64T64R Massive MIMO is targeted for Icelake +system with Columbiavile NIC. The current release supports the constant +configuration of the slot pattern and RB allocation on the PHY side. +Please follow the general build process in the FlexRAN 5G NR Reference +Solution L1 User Guide (refer to Table 2.) + +1. xRAN library is enabled by default l1 application + +2. Build the 5G NR L1 application using the command:: + + ./flexran_build.sh -r 5gnr_l1app_sub6 -i snc -m sdk -m fb -m mlog –m wls + -m 5gnr_l1app_mmw -m xran -m 5gnr_testmac + +3. Configure the L1app using bin/nr5g/gnb/l1/xrancfg_sub6_mmimo.xml. :: + + + 20.08 + + 3 + + 25 + + 2 + + 1 + + + 0000:51:01.0 + 0000:51:01.1 + 0000:51:01.2 + 0000:51:01.3 + + + 0000:51:01.2 + 0000:51:01.3 + 0000:51:01.6 + 0000:51:01.7 + + + 0000:51:01.4 + 0000:51:01.5 + 0000:51:02.2 + 0000:51:02.3 + + + 0000:00:00.0 + 0000:00:00.0 + 0000:00:00.0 + 0000:00:00.0 + + + 00:11:22:33:00:01 + 00:11:22:33:00:11 + + 00:11:22:33:00:21 + 00:11:22:33:00:31 + + + 00:11:22:33:01:01 + 00:11:22:33:01:11 + + 00:11:22:33:01:21 + 00:11:22:33:01:31 + + + 00:11:22:33:02:01 + 00:11:22:33:02:11 + + 00:11:22:33:02:21 + 00:11:22:33:02:31 + + + 00:11:22:33:03:01 + 00:11:22:33:03:11 + + 00:11:22:33:03:21 + 00:11:22:33:03:31 + + + 1 + + 0 + + 1 + + 2 + + 3 + + + 1 + + 1 + + 1 + + 2 + + 3 + + + 1 + + 2 + + 1 + + 2 + + 3 + + + 22, 96, 0 + + + 0x3800000, 96, 0 + + 1 + + + 0 + + + 25 + + 285 + 429 + + 285 + 429 + + 71 + 428 + + 20 + 32 + + + + 9600 + + 1 + 2 + + + 258 + 429 + + 285 + 300 + + 96 + 196 + + 0 + 75 + + + 1 + + 0 + + 0 + 1 + + 0 + + 0 + + 0 + + 0 + + + 1 + + 6 + + + 0,48,0,14,1,1,1,9,1,0,0 + 48,48,0,14,2,1,1,9,1,0,0 + 96,48,0,14,2,1,1,9,1,0,0 + 144,48,0,14,4,1,1,9,1,0,0 + 192,48,0,14,5,1,1,9,1,0,0 + 240,33,0,14,6,1,1,9,1,0,0 + 240,33,0,14,7,1,1,9,1,0,0 + 252,21,0,14,8,1,1,9,1,0,0 + + + 2,24,0,0,9,1 + 2,24,0,0,9,1 + 2,24,0,0,9,1 + 2,24,0,0,9,1 + 2,24,0,0,9,1 + 2,17,0,0,9,1 + + 6 + + + 0,48,0,14,1,1,1,9,1,0,0 + 48,48,0,14,2,1,1,9,1,0,0 + 96,48,0,14,2,1,1,9,1,0,0 + 144,48,0,14,4,1,1,9,1,0,0 + 192,48,0,14,5,1,1,9,1,0,0 + 240,33,0,14,6,1,1,9,1,0,0 + 240,33,0,14,7,1,1,9,1,0,0 + 252,21,0,14,8,1,1,9,1,0,0 + + + 2,24,0,0,9,1 + 2,24,0,0,9,1 + 2,24,0,0,9,1 + 2,24,0,0,9,1 + 2,24,0,0,9,1 + 2,17,0,0,9,1 + + 1 + + + 0,273,0,14,1,1,1,9,1,0,0 + + 2 + + + 0,48,0,14,0,1,1,9,1,0,0 + 48,48,0,14,2,1,1,9,1,0,0 + 96,48,0,14,3,1,1,9,1,0,0 + 144,48,0,14,4,1,1,9,1,0,0 + 144,36,0,14,5,1,1,9,1,0,0 + 180,36,0,14,6,1,1,9,1,0,0 + 216,36,0,14,7,1,1,9,1,0,0 + 252,21,0,14,8,1,1,9,1,0,0 + + + 2,24,0,0,9,1 + 2,24,0,0,9,1 + + 2 + + + 0,48,0,14,1,1,1,9,1,0,0 + 48,48,0,14,2,1,1,9,1,0,0 + 72,36,0,14,3,1,1,9,1,0,0 + 108,36,0,14,4,1,1,9,1,0,0 + 144,36,0,14,5,1,1,9,1,0,0 + 180,36,0,14,6,1,1,9,1,0,0 + 216,36,0,14,7,1,1,9,1,0,0 + 252,21,0,14,8,1,1,9,1,0,0 + + + 2,24,0,0,9,1 + 2,24,0,0,9,1 + + 1 + + + 0,273,0,14,1,1,1,9,1,0,0 + + 2 + + + 0,48,0,14,1,1,1,9,1,0,0 + 48,48,0,14,2,1,1,9,1,0,0 + 96,48,0,14,3,1,1,9,1,0,0 + 144,48,0,14,4,1,1,9,1,0,0 + 144,36,0,14,5,1,1,9,1,0,0 + 180,36,0,14,6,1,1,9,1,0,0 + 216,36,0,14,7,1,1,9,1,0,0 + 252,21,0,14,8,1,1,9,1,0,0 + + + 2,24,0,0,9,1 + 2,24,0,0,9,1 + + 2 + + + 0,48,0,14,1,1,1,9,1,0,0 + 48,48,0,14,2,1,1,9,1,0,0 + 72,36,0,14,3,1,1,9,1,0,0 + 108,36,0,14,4,1,1,9,1,0,0 + 144,36,0,14,5,1,1,9,1,0,0 + 180,36,0,14,6,1,1,9,1,0,0 + 216,36,0,14,7,1,1,9,1,0,0 + 252,21,0,14,8,1,1,9,1,0,0 + + + 2,24,0,0,9,1 + 2,24,0,0,9,1 + + 1 + + + 0,273,0,14,1,1,1,9,1,0,0 + + + + +4. Modify ./bin/nr5g/gnb/l1/dpdk.sh (change PCIe addresses from VFs). :: + + ethDevice0=0000:51:01.0 + ethDevice1=0000:51:01.1 + ethDevice2=0000:51:01.2 + ethDevice3=0000:51:01.3 + ethDevice4=0000:51:01.4 + ethDevice5=0000:51:01.5 + ethDevice6= + ethDevice7= + ethDevice8= + ethDevice9= + ethDevice10= + ethDevice11= + fecDevice0=0000:92:00.0 + +5. Use configuration of test mac per:: + + /bin/nr5g/gnb/testmac/icelake-sp/icxsp_mu1_100mhz_mmimo_64x64_hton_xran.cfg + phystart 4 0 100200 + TEST_FD, 3370, 3, fd/mu1_100mhz/376/fd_testconfig_tst376.cfg, + fd/mu1_100mhz/377/fd_testconfig_tst377.cfg, + fd/mu1_100mhz/377/fd_testconfig_tst377.cfg + +6. To execute l1app with O-DU functionality according to O-RAN Fronthaul specification, enter:: + + [root@xran flexran] cd ./bin/nr5g/gnb/l1 + ./l1.sh -xranmmimo + Radio mode with XRAN - Sub6 100Mhz Massive-MIMO (CatB) + DPDK WLS MODE + kernel.sched_rt_runtime_us = -1 + kernel.shmmax = 2147483648 + kernel.shmall = 2147483648 + Note: Forwarding request to 'systemctl disable irqbalance.service'. + using configuration file phycfg_xran.xml + using configuration file xrancfg_sub6_mmimo.xml + >> Running... ./l1app table 0 1 --cfgfile=phycfg_xran.xml --xranfile=xrancfg_sub6_mmimo.xml + FlexRAN SDK bblib_layerdemapping_5gnr version #DIRTY# + FlexRAN SDK bblib_layermapping_5gnr version #DIRTY# + FlexRAN SDK bblib_cestimate_5gnr_version #DIRTY# + FlexRAN SDK bblib_pucch_cestimate_5gnr version #DIRTY# + FlexRAN SDK bblib_llr_demapping version #DIRTY# + FlexRAN SDK bblib_pdcch_remapping_5gnr_version version #DIRTY# + FlexRAN SDK bblib_reed_muller version #DIRTY# + FlexRAN SDK bblib_lte_modulation version #DIRTY# + FlexRAN SDK bblib_polar_decoder_5gnr version #DIRTY# + FlexRAN SDK bblib_polar_rate_dematching_5gnr version #DIRTY# + FlexRAN SDK bblib_PhaseNoise_5G version #DIRTY# + FlexRAN SDK bblib_mimo_mmse_detection_5gnr version #DIRTY# + FlexRAN SDK bblib_fd_correlation version #DIRTY# + FlexRAN SDK bblib_scramble_5gnr version #DIRTY# + FlexRAN SDK bblib_pucch_equ_5gnr version #DIRTY# + FlexRAN SDK bblib_ta_compensation_version_5gnr #DIRTY# + FlexRAN SDK bblib_polar_encoder_5gnr version #DIRTY# + FlexRAN SDK bblib_prach_5gnr version #DIRTY# + FlexRAN SDK bblib_fft_ifft version #DIRTY# + FlexRAN SDK bblib_pucch_5gnr version #DIRTY# + FlexRAN SDK bblib_lte_ldpc_decoder version #DIRTY# + FlexRAN SDK bblib_lte_ldpc_encoder version #DIRTY# + FlexRAN SDK bblib_lte_LDPC_ratematch version #DIRTY# + FlexRAN SDK bblib_lte_rate_dematching_5gnr version #DIRTY# + FlexRAN SDK bblib_common version #DIRTY# + FlexRAN SDK bblib_lte_crc version #DIRTY# + FlexRAN SDK bblib_lte_dft_idft version #DIRTY# + FlexRAN SDK bblib_irc_rnn_calculation_5gnr_version #DIRTY# + FlexRAN SDK bblib_mmse_irc_mimo_5gnr_version #DIRTY# + FlexRAN SDK bblib_srs_cestimate_5gnr version #DIRTY# + FlexRAN SDK bblib_zf_matrix_gen version #DIRTY# + FlexRAN SDK bblib_beamforming_dl_expand version #DIRTY# + ========================= + 5GNR PHY Application + ========================= + + + -------------------------------------------------------- + File[phycfg_xran.xml] Version: 20.08 + -------------------------------------------------------- + --version=20.08 + --successiveNoApi=15 + --wls_dev_name=wls0 + --wlsMemorySize=0x3F600000 + --dlIqLog=0 + --ulIqLog=0 + --iqLogDumpToFile=0 + --phyMlog=1 + --phyStats=1 + --dpdkMemorySize=18432 + --dpdkIovaMode=0 + --dpdkBasebandFecMode=1 + --dpdkBasebandDevice=0000:92:00.0 + --radioEnable=4 + --ferryBridgeMode=1 + --ferryBridgeEthPort=1 + --ferryBridgeSyncPorts=0 + --ferryBridgeOptCableLoopback=0 + --radioCfg0PCIeEthDev=0000:19:00.0 + --radioCfg0DpdkRx=1 + --radioCfg0DpdkTx=2 + --radioCfg0TxAnt=2 + --radioCfg0RxAnt=2 + --radioCfg0RxAgc=0 + --radioCfg0NumCell=1 + --radioCfg0Cell0PhyId=0 + --radioCfg0Cell1PhyId=1 + --radioCfg0Cell2PhyId=2 + --radioCfg0Cell3PhyId=3 + --radioCfg0Cell4PhyId=4 + --radioCfg0Cell5PhyId=5 + --radioCfg0riuMac=11:22:33:44:55:66 + --radioCfg1PCIeEthDev=0000:03:00.1 + --radioCfg1DpdkRx=1 + --radioCfg1DpdkTx=1 + --radioCfg1TxAnt=4 + --radioCfg1RxAnt=4 + --radioCfg1RxAgc=0 + --radioCfg1NumCell=1 + --radioCfg1Cell0PhyId=2 + --radioCfg1Cell1PhyId=3 + --radioCfg1Cell2PhyId=2 + --radioCfg1Cell3PhyId=3 + --radioCfg1riuMac=ac:1f:6b:2c:9f:07 + --radioCfg2PCIeEthDev=0000:05:00.0 + --radioCfg2DpdkRx=10 + --radioCfg2DpdkTx=11 + --radioCfg2TxAnt=4 + --radioCfg2RxAnt=4 + --radioCfg2RxAgc=0 + --radioCfg2NumCell=2 + --radioCfg2Cell0PhyId=4 + --radioCfg2Cell1PhyId=5 + --radioCfg2Cell2PhyId=2 + --radioCfg2Cell3PhyId=3 + --radioCfg2riuMac=ac:1f:6b:2c:9f:07 + --radioCfg3PCIeEthDev=0000:05:00.1 + --radioCfg3DpdkRx=12 + --radioCfg3DpdkTx=13 + --radioCfg3TxAnt=4 + --radioCfg3RxAnt=4 + --radioCfg3RxAgc=0 + --radioCfg3NumCell=2 + --radioCfg3Cell0PhyId=6 + --radioCfg3Cell1PhyId=7 + --radioCfg3Cell2PhyId=2 + --radioCfg3Cell3PhyId=3 + --radioCfg3riuMac=ac:1f:6b:2c:9f:07 + --radioCfg4PCIeEthDev=0000:00:08.0 + --radioCfg4DpdkRx=14 + --radioCfg4DpdkTx=15 + --radioCfg4TxAnt=4 + --radioCfg4RxAnt=4 + --radioCfg4RxAgc=0 + --radioCfg4NumCell=2 + --radioCfg4Cell0PhyId=8 + --radioCfg4Cell1PhyId=9 + --radioCfg4Cell2PhyId=2 + --radioCfg4Cell3PhyId=3 + --radioCfg4riuMac=ac:1f:6b:2c:9f:07 + --radioCfg5PCIeEthDev=0000:08:00.0 + --radioCfg5DpdkRx=16 + --radioCfg5DpdkTx=16 + --radioCfg5TxAnt=4 + --radioCfg5RxAnt=4 + --radioCfg5RxAgc=0 + --radioCfg5NumCell=2 + --radioCfg5Cell0PhyId=10 + --radioCfg5Cell1PhyId=11 + --radioCfg5Cell2PhyId=2 + --radioCfg5Cell3PhyId=3 + --radioCfg5riuMac=ac:1f:6b:2c:9f:07 + --radioCfg6PCIeEthDev=0000:00:05.0 + --radioCfg6DpdkRx=16 + --radioCfg6DpdkTx=16 + --radioCfg6TxAnt=4 + --radioCfg6RxAnt=4 + --radioCfg1RxAgc=0 + --radioCfg6NumCell=2 + --radioCfg6Cell0PhyId=12 + --radioCfg6Cell1PhyId=13 + --radioCfg6Cell2PhyId=2 + --radioCfg6Cell3PhyId=3 + --radioCfg6riuMac=ac:1f:6b:2c:9f:07 + --radioCfg7PCIeEthDev=0000:00:06.0 + --radioCfg7DpdkRx=16 + --radioCfg7DpdkTx=16 + --radioCfg7TxAnt=4 + --radioCfg7RxAnt=4 + --radioCfg7RxAgc=0 + --radioCfg7NumCell=2 + --radioCfg7Cell0PhyId=14 + --radioCfg7Cell1PhyId=15 + --radioCfg7Cell2PhyId=2 + --radioCfg7Cell3PhyId=3 + --radioCfg7riuMac=ac:1f:6b:2c:9f:07 + --radioPort0=0 + --radioPort1=1 + --radioPort2=2 + --radioPort3=3 + --radioPort4=4 + --radioPort5=5 + --radioPort6=6 + --radioPort7=7 + --PdschSymbolSplit=0 + --PdschDlWeightSplit=0 + --FecEncSplit=4 + --PuschChanEstSplit=0 + --PuschMmseSplit=0 + --PuschLlrRxSplit=0 + --PuschUlWeightSplit=0 + --FecDecEarlyTermDisable=0 + --FecDecNumIter=12 + --FecDecSplit=4 + --llrOutDecimalDigit=2 + --IrcEnableThreshold=-10 + --PuschNoiseScale=2 + --CEInterpMethod=0 + --PucchSplit=0 + --SrsCeSplit=0 + --prachDetectThreshold=0 + --MlogSubframes=128 + --MlogCores=40 + --MlogSize=10000 + --systemThread=2, 0, 0 + --timerThread=0, 96, 0 + --FpgaDriverCpuInfo=3, 96, 0 + --FrontHaulCpuInfo=3, 96, 0 + --radioDpdkMaster=2, 99, 0 + --BbuPoolSleepEnable=1 + --BbuPoolThreadCorePriority=94 + --BbuPoolThreadCorePolicy=0 + --BbuPoolThreadDefault_0_63=0xF0 + --BbuPoolThreadDefault_64_127=0x0 + --BbuPoolThreadSrs_0_63=0x0 + --BbuPoolThreadSrs_64_127=0x0 + --BbuPoolThreadDlbeam_0_63=0x0 + --BbuPoolThreadDlbeam_64_127=0x0 + --BbuPoolThreadUrllc=0x100 + --FrontHaulTimeAdvance=7450 + --nEthPorts=462607 + --nPhaseCompFlag=0 + --nFecFpgaVersionMu3=0x20010900 + --nFecFpgaVersionMu0_1=0x0423D420 + --nFhFpgaVersionMu3=0x8001000F + --nFhFpgaVersionMu0_1=0x90010008 + --StreamStats=0 + --StreamIp=10.255.83.5 + --StreamPort=4010 + + wls_dev_filename: wls0 + phycfg_apply: Initialize Radio Interface with XRAN library + Setting FecEncSplit to 1 to run on HW accelerator + Setting FecDecSplit to 1 to run on HW accelerator + + + + -------------------------------------------------------- + File[xrancfg_sub6_mmimo.xml] Version: 20.08 + -------------------------------------------------------- + --version=20.08 + --oRuNum=3 + --oRuEthLinkSpeed=25 + --oRuLinesNumber=2 + --oRuCUon1Vf=1 + --PciBusAddoRu0Vf0=0000:51:01.0 + --PciBusAddoRu0Vf1=0000:51:01.1 + --PciBusAddoRu0Vf2=0000:51:01.2 + --PciBusAddoRu0Vf3=0000:51:01.3 + --PciBusAddoRu1Vf0=0000:51:01.2 + --PciBusAddoRu1Vf1=0000:51:01.3 + --PciBusAddoRu1Vf2=0000:51:01.6 + --PciBusAddoRu1Vf3=0000:51:01.7 + --PciBusAddoRu2Vf0=0000:51:01.4 + --PciBusAddoRu2Vf1=0000:51:01.5 + --PciBusAddoRu2Vf2=0000:51:02.2 + --PciBusAddoRu2Vf3=0000:51:02.3 + --PciBusAddoRu3Vf0=0000:00:00.0 + --PciBusAddoRu3Vf1=0000:00:00.0 + --PciBusAddoRu3Vf2=0000:00:00.0 + --PciBusAddoRu3Vf3=0000:00:00.0 + --oRuRem0Mac0=00:11:22:33:00:01 + --oRuRem0Mac1=00:11:22:33:00:11 + --oRuRem0Mac2=00:11:22:33:00:21 + --oRuRem0Mac3=00:11:22:33:00:31 + --oRuRem1Mac0=00:11:22:33:01:01 + --oRuRem1Mac1=00:11:22:33:01:11 + --oRuRem1Mac2=00:11:22:33:01:21 + --oRuRem1Mac3=00:11:22:33:01:31 + --oRuRem2Mac0=00:11:22:33:02:01 + --oRuRem2Mac1=00:11:22:33:02:11 + --oRuRem2Mac2=00:11:22:33:02:21 + --oRuRem2Mac3=00:11:22:33:02:31 + --oRuRem3Mac0=00:11:22:33:03:01 + --oRuRem3Mac1=00:11:22:33:03:11 + --oRuRem3Mac2=00:11:22:33:03:21 + --oRuRem3Mac3=00:11:22:33:03:31 + --oRu0NumCc=1 + --oRu0Cc0PhyId=0 + --oRu0Cc1PhyId=1 + --oRu0Cc2PhyId=2 + --oRu0Cc3PhyId=3 + --oRu1NumCc=1 + --oRu1Cc0PhyId=1 + --oRu1Cc1PhyId=1 + --oRu1Cc2PhyId=2 + --oRu1Cc3PhyId=3 + --oRu2NumCc=1 + --oRu2Cc0PhyId=2 + --oRu2Cc1PhyId=1 + --oRu2Cc2PhyId=2 + --oRu2Cc3PhyId=3 + --xRANThread=22, 96, 0 + --xRANWorker=0x3800000, 96, 0 + --Category=1 + --xranPmdSleep=0 + --Tadv_cp_dl=25 + --T2a_min_cp_dl=285 + --T2a_max_cp_dl=429 + --T2a_min_cp_ul=285 + --T2a_max_cp_ul=429 + --T2a_min_up=71 + --T2a_max_up=428 + --Ta3_min=20 + --Ta3_max=32 + --MTU=9600 + --c_plane_vlan_tag=1 + --u_plane_vlan_tag=2 + --T1a_min_cp_dl=258 + --T1a_max_cp_dl=429 + --T1a_min_cp_ul=285 + --T1a_max_cp_ul=300 + --T1a_min_up=96 + --T1a_max_up=196 + --Ta4_min=0 + --Ta4_max=75 + --EnableCp=1 + --DynamicSectionEna=0 + --DynamicSectionEnaUL=0 + --xRANSFNWrap=1 + --xRANNumDLPRBs=0 + --xRANNumULPRBs=0 + --Gps_Alpha=0 + --Gps_Beta=0 + --xranCompMethod=1 + --oRu0nPrbElemDl=6 + --oRu0PrbElemDl0=0,48,0,14,1,1,1,9,1,0,0 + --oRu0PrbElemDl1=48,48,0,14,2,1,1,9,1,0,0 + --oRu0PrbElemDl2=96,48,0,14,2,1,1,9,1,0,0 + --oRu0PrbElemDl3=144,48,0,14,4,1,1,9,1,0,0 + --oRu0PrbElemDl4=192,48,0,14,5,1,1,9,1,0,0 + --oRu0PrbElemDl5=240,33,0,14,6,1,1,9,1,0,0 + --oRu0PrbElemDl6=240,33,0,14,7,1,1,9,1,0,0 + --oRu0PrbElemDl7=252,21,0,14,8,1,1,9,1,0,0 + --oRu0ExtBfwDl0=2,24,0,0,9,1 + --oRu0ExtBfwDl1=2,24,0,0,9,1 + --oRu0ExtBfwDl2=2,24,0,0,9,1 + --oRu0ExtBfwDl3=2,24,0,0,9,1 + --oRu0ExtBfwDl4=2,24,0,0,9,1 + --oRu0ExtBfwDl5=2,17,0,0,9,1 + --oRu0nPrbElemUl=6 + --oRu0PrbElemUl0=0,48,0,14,1,1,1,9,1,0,0 + --oRu0PrbElemUl1=48,48,0,14,2,1,1,9,1,0,0 + --oRu0PrbElemUl2=96,48,0,14,2,1,1,9,1,0,0 + --oRu0PrbElemUl3=144,48,0,14,4,1,1,9,1,0,0 + --oRu0PrbElemUl4=192,48,0,14,5,1,1,9,1,0,0 + --oRu0PrbElemUl5=240,33,0,14,6,1,1,9,1,0,0 + --oRu0PrbElemUl6=240,33,0,14,7,1,1,9,1,0,0 + --oRu0PrbElemUl7=252,21,0,14,8,1,1,9,1,0,0 + --oRu0ExtBfwUl0=2,24,0,0,9,1 + --oRu0ExtBfwUl1=2,24,0,0,9,1 + --oRu0ExtBfwUl2=2,24,0,0,9,1 + --oRu0ExtBfwUl3=2,24,0,0,9,1 + --oRu0ExtBfwUl4=2,24,0,0,9,1 + --oRu0ExtBfwUl5=2,17,0,0,9,1 + --oRu0nPrbElemSrs=1 + --oRu0PrbElemSrs0=0,273,0,14,1,1,1,9,1,0,0 + --oRu1nPrbElemDl=2 + --oRu1PrbElemDl0=0,48,0,14,0,1,1,9,1,0,0 + --oRu1PrbElemDl1=48,48,0,14,2,1,1,9,1,0,0 + --oRu1PrbElemDl2=96,48,0,14,3,1,1,9,1,0,0 + --oRu1PrbElemDl3=144,48,0,14,4,1,1,9,1,0,0 + --oRu1PrbElemDl4=144,36,0,14,5,1,1,9,1,0,0 + --oRu1PrbElemDl5=180,36,0,14,6,1,1,9,1,0,0 + --oRu1PrbElemDl6=216,36,0,14,7,1,1,9,1,0,0 + --oRu1PrbElemDl7=252,21,0,14,8,1,1,9,1,0,0 + --oRu1ExtBfwDl0=2,24,0,0,9,1 + --oRu1ExtBfwDl1=2,24,0,0,9,1 + --oRu1nPrbElemUl=2 + --oRu1PrbElemUl0=0,48,0,14,1,1,1,9,1,0,0 + --oRu1PrbElemUl1=48,48,0,14,2,1,1,9,1,0,0 + --oRu1PrbElemUl2=72,36,0,14,3,1,1,9,1,0,0 + --oRu1PrbElemUl3=108,36,0,14,4,1,1,9,1,0,0 + --oRu1PrbElemUl4=144,36,0,14,5,1,1,9,1,0,0 + --oRu1PrbElemUl5=180,36,0,14,6,1,1,9,1,0,0 + --oRu1PrbElemUl6=216,36,0,14,7,1,1,9,1,0,0 + --oRu1PrbElemUl7=252,21,0,14,8,1,1,9,1,0,0 + --oRu1ExtBfwUl0=2,24,0,0,9,1 + --oRu1ExtBfwUl1=2,24,0,0,9,1 + --oRu1nPrbElemSrs=1 + --oRu1PrbElemSrs0=0,273,0,14,1,1,1,9,1,0,0 + --oRu2nPrbElemDl=2 + --oRu2PrbElemDl0=0,48,0,14,1,1,1,9,1,0,0 + --oRu2PrbElemDl1=48,48,0,14,2,1,1,9,1,0,0 + --oRu2PrbElemDl2=96,48,0,14,3,1,1,9,1,0,0 + --oRu2PrbElemDl3=144,48,0,14,4,1,1,9,1,0,0 + --oRu2PrbElemDl4=144,36,0,14,5,1,1,9,1,0,0 + --oRu2PrbElemDl5=180,36,0,14,6,1,1,9,1,0,0 + --oRu2PrbElemDl6=216,36,0,14,7,1,1,9,1,0,0 + --oRu2PrbElemDl7=252,21,0,14,8,1,1,9,1,0,0 + --oRu2ExtBfwDl0=2,24,0,0,9,1 + --oRu2ExtBfwDl1=2,24,0,0,9,1 + --oRu2nPrbElemUl=2 + --oRu2PrbElemUl0=0,48,0,14,1,1,1,9,1,0,0 + --oRu2PrbElemUl1=48,48,0,14,2,1,1,9,1,0,0 + --oRu2PrbElemUl2=72,36,0,14,3,1,1,9,1,0,0 + --oRu2PrbElemUl3=108,36,0,14,4,1,1,9,1,0,0 + --oRu2PrbElemUl4=144,36,0,14,5,1,1,9,1,0,0 + --oRu2PrbElemUl5=180,36,0,14,6,1,1,9,1,0,0 + --oRu2PrbElemUl6=216,36,0,14,7,1,1,9,1,0,0 + --oRu2PrbElemUl7=252,21,0,14,8,1,1,9,1,0,0 + --oRu2ExtBfwUl0=2,24,0,0,9,1 + --oRu2ExtBfwUl1=2,24,0,0,9,1 + --oRu2nPrbElemSrs=1 + --oRu2PrbElemSrs0=0,273,0,14,1,1,1,9,1,0,0 + + + timer_set_tsc_freq_from_clock: System clock (rdtsc) resolution 1496526035 [Hz] + Ticks per usec 1496 + MLogOpen: filename(l1mlog.bin) mlogSubframes (128), mlogCores(40), mlogSize(10000) mlog_mask (-1) + mlogSubframes (128), mlogCores(40), mlogSize(10000) + localMLogTimerInit + System clock (rdtsc) resolution 1496525824 [Hz] + Ticks per us 1496 + MLog Storage: 0x7f7403835100 -> 0x7f740690b830 [ 51210032 bytes ] + localMLogFreqReg: 1496. Storing: 1496 + Mlog Open successful + + gnb_io_xran_init + num_o_ru 3 EthLinesNumber 2 where VFs 1 per EthLine + VF[0] 0000:51:01.0 [C+U Plane] + VF[1] 0000:51:01.1 [C+U Plane] + VF[2] 0000:51:01.2 [C+U Plane] + VF[3] 0000:51:01.3 [C+U Plane] + VF[4] 0000:51:01.4 [C+U Plane] + VF[5] 0000:51:01.5 [C+U Plane] + oRu0nPrbElemDl0: oRu0: nRBStart 0,nRBSize 48,nStartSymb 0,numSymb 14,nBeamIndex 1, bf_weight_update 1 compMethod 1, iqWidth 9 BeamFormingType 1 scaler 0 remask 0x0 + (2,24,0,0,9,1):0 numBundPrb 2, numSetBFW 24, RAD 0, disableBFW 0, bfwIqWidth 9, bfwCompMeth 1 + oRu0nPrbElemDl1: oRu0: nRBStart 48,nRBSize 48,nStartSymb 0,numSymb 14,nBeamIndex 2, bf_weight_update 1 compMethod 1, iqWidth 9 BeamFormingType 1 scaler 0 remask 0x0 + (2,24,0,0,9,1):1 numBundPrb 2, numSetBFW 24, RAD 0, disableBFW 0, bfwIqWidth 9, bfwCompMeth 1 + oRu0nPrbElemDl2: oRu0: nRBStart 96,nRBSize 48,nStartSymb 0,numSymb 14,nBeamIndex 2, bf_weight_update 1 compMethod 1, iqWidth 9 BeamFormingType 1 scaler 0 remask 0x0 + (2,24,0,0,9,1):2 numBundPrb 2, numSetBFW 24, RAD 0, disableBFW 0, bfwIqWidth 9, bfwCompMeth 1 + oRu0nPrbElemDl3: oRu0: nRBStart 144,nRBSize 48,nStartSymb 0,numSymb 14,nBeamIndex 4, bf_weight_update 1 compMethod 1, iqWidth 9 BeamFormingType 1 scaler 0 remask 0x0 + (2,24,0,0,9,1):3 numBundPrb 2, numSetBFW 24, RAD 0, disableBFW 0, bfwIqWidth 9, bfwCompMeth 1 + oRu0nPrbElemDl4: oRu0: nRBStart 192,nRBSize 48,nStartSymb 0,numSymb 14,nBeamIndex 5, bf_weight_update 1 compMethod 1, iqWidth 9 BeamFormingType 1 scaler 0 remask 0x0 + (2,24,0,0,9,1):4 numBundPrb 2, numSetBFW 24, RAD 0, disableBFW 0, bfwIqWidth 9, bfwCompMeth 1 + oRu0nPrbElemDl5: oRu0: nRBStart 240,nRBSize 33,nStartSymb 0,numSymb 14,nBeamIndex 6, bf_weight_update 1 compMethod 1, iqWidth 9 BeamFormingType 1 scaler 0 remask 0x0 + (2,17,0,0,9,1):5 numBundPrb 2, numSetBFW 17, RAD 0, disableBFW 0, bfwIqWidth 9, bfwCompMeth 1 + oRu0nPrbElemUl0: oRu0: nRBStart 0,nRBSize 48,nStartSymb 0,numSymb 14,nBeamIndex 1, bf_weight_update 1 compMethod 1, iqWidth 9 BeamFormingType 1 scaler 0 remask 0x0 + (2,24,0,0,9,1):0 numBundPrb 2, numSetBFW 24, RAD 0, disableBFW 0, bfwIqWidth 9, bfwCompMeth 1 + oRu0nPrbElemUl1: oRu0: nRBStart 48,nRBSize 48,nStartSymb 0,numSymb 14,nBeamIndex 2, bf_weight_update 1 compMethod 1, iqWidth 9 BeamFormingType 1 scaler 0 remask 0x0 + (2,24,0,0,9,1):1 numBundPrb 2, numSetBFW 24, RAD 0, disableBFW 0, bfwIqWidth 9, bfwCompMeth 1 + oRu0nPrbElemUl2: oRu0: nRBStart 96,nRBSize 48,nStartSymb 0,numSymb 14,nBeamIndex 2, bf_weight_update 1 compMethod 1, iqWidth 9 BeamFormingType 1 scaler 0 remask 0x0 + (2,24,0,0,9,1):2 numBundPrb 2, numSetBFW 24, RAD 0, disableBFW 0, bfwIqWidth 9, bfwCompMeth 1 + oRu0nPrbElemUl3: oRu0: nRBStart 144,nRBSize 48,nStartSymb 0,numSymb 14,nBeamIndex 4, bf_weight_update 1 compMethod 1, iqWidth 9 BeamFormingType 1 scaler 0 remask 0x0 + (2,24,0,0,9,1):3 numBundPrb 2, numSetBFW 24, RAD 0, disableBFW 0, bfwIqWidth 9, bfwCompMeth 1 + oRu0nPrbElemUl4: oRu0: nRBStart 192,nRBSize 48,nStartSymb 0,numSymb 14,nBeamIndex 5, bf_weight_update 1 compMethod 1, iqWidth 9 BeamFormingType 1 scaler 0 remask 0x0 + (2,24,0,0,9,1):4 numBundPrb 2, numSetBFW 24, RAD 0, disableBFW 0, bfwIqWidth 9, bfwCompMeth 1 + oRu0nPrbElemUl5: oRu0: nRBStart 240,nRBSize 33,nStartSymb 0,numSymb 14,nBeamIndex 6, bf_weight_update 1 compMethod 1, iqWidth 9 BeamFormingType 1 scaler 0 remask 0x0 + (2,17,0,0,9,1):5 numBundPrb 2, numSetBFW 17, RAD 0, disableBFW 0, bfwIqWidth 9, bfwCompMeth 1 + oRu0nPrbElemSrs0: oRu0: nRBStart 0,nRBSize 273,nStartSymb 0,numSymb 14,nBeamIndex 1, bf_weight_update 1 compMethod 1, iqWidth 9 BeamFormingType 1 scaler 0 remask 0x0 + oRu1nPrbElemDl0: oRu1: nRBStart 0,nRBSize 48,nStartSymb 0,numSymb 14,nBeamIndex 0, bf_weight_update 1 compMethod 1, iqWidth 9 BeamFormingType 1 scaler 0 remask 0x0 + (2,24,0,0,9,1):0 numBundPrb 2, numSetBFW 24, RAD 0, disableBFW 0, bfwIqWidth 9, bfwCompMeth 1 + oRu1nPrbElemDl1: oRu1: nRBStart 48,nRBSize 48,nStartSymb 0,numSymb 14,nBeamIndex 2, bf_weight_update 1 compMethod 1, iqWidth 9 BeamFormingType 1 scaler 0 remask 0x0 + (2,24,0,0,9,1):1 numBundPrb 2, numSetBFW 24, RAD 0, disableBFW 0, bfwIqWidth 9, bfwCompMeth 1 + oRu1nPrbElemUl0: oRu1: nRBStart 0,nRBSize 48,nStartSymb 0,numSymb 14,nBeamIndex 1, bf_weight_update 1 compMethod 1, iqWidth 9 BeamFormingType 1 scaler 0 remask 0x0 + (2,24,0,0,9,1):0 numBundPrb 2, numSetBFW 24, RAD 0, disableBFW 0, bfwIqWidth 9, bfwCompMeth 1 + oRu1nPrbElemUl1: oRu1: nRBStart 48,nRBSize 48,nStartSymb 0,numSymb 14,nBeamIndex 2, bf_weight_update 1 compMethod 1, iqWidth 9 BeamFormingType 1 scaler 0 remask 0x0 + (2,24,0,0,9,1):1 numBundPrb 2, numSetBFW 24, RAD 0, disableBFW 0, bfwIqWidth 9, bfwCompMeth 1 + oRu1nPrbElemSrs0: oRu1: nRBStart 0,nRBSize 273,nStartSymb 0,numSymb 14,nBeamIndex 1, bf_weight_update 1 compMethod 1, iqWidth 9 BeamFormingType 1 scaler 0 remask 0x0 + oRu2nPrbElemDl0: oRu2: nRBStart 0,nRBSize 48,nStartSymb 0,numSymb 14,nBeamIndex 1, bf_weight_update 1 compMethod 1, iqWidth 9 BeamFormingType 1 scaler 0 remask 0x0 + (2,24,0,0,9,1):0 numBundPrb 2, numSetBFW 24, RAD 0, disableBFW 0, bfwIqWidth 9, bfwCompMeth 1 + oRu2nPrbElemDl1: oRu2: nRBStart 48,nRBSize 48,nStartSymb 0,numSymb 14,nBeamIndex 2, bf_weight_update 1 compMethod 1, iqWidth 9 BeamFormingType 1 scaler 0 remask 0x0 + (2,24,0,0,9,1):1 numBundPrb 2, numSetBFW 24, RAD 0, disableBFW 0, bfwIqWidth 9, bfwCompMeth 1 + oRu2nPrbElemUl0: oRu2: nRBStart 0,nRBSize 48,nStartSymb 0,numSymb 14,nBeamIndex 1, bf_weight_update 1 compMethod 1, iqWidth 9 BeamFormingType 1 scaler 0 remask 0x0 + (2,24,0,0,9,1):0 numBundPrb 2, numSetBFW 24, RAD 0, disableBFW 0, bfwIqWidth 9, bfwCompMeth 1 + oRu2nPrbElemUl1: oRu2: nRBStart 48,nRBSize 48,nStartSymb 0,numSymb 14,nBeamIndex 2, bf_weight_update 1 compMethod 1, iqWidth 9 BeamFormingType 1 scaler 0 remask 0x0 + (2,24,0,0,9,1):1 numBundPrb 2, numSetBFW 24, RAD 0, disableBFW 0, bfwIqWidth 9, bfwCompMeth 1 + oRu2nPrbElemSrs0: oRu2: nRBStart 0,nRBSize 273,nStartSymb 0,numSymb 14,nBeamIndex 1, bf_weight_update 1 compMethod 1, iqWidth 9 BeamFormingType 1 scaler 0 remask 0x0 + gnb_io_xran_cfg_setup successful + xran_init: MTU 9600 + xran_init: MTU 9600 + xran_init: MTU 9600 + PF Eth line speed 25G + PF Eth lines per O-xU port 2 + BBDEV_FEC_ACCL_NR5G + hw-accelerated bbdev 0000:92:00.0 + total cores 48 c_mask 0x3c00004 core 22 [id] system_core 2 [id] pkt_proc_core 0x3800000 [mask] pkt_aux_core 0 [id] timing_core 22 [id] + xran_ethdi_init_dpdk_io: Calling rte_eal_init:wls0 -c 0x3c00004 -n2 --iova-mode=pa --socket-mem=18432 --socket-limit=18432 --proc-type=auto --file-prefix wls0 -w 0000:00:00.0 -w 0000:92:00.0 + EAL: Detected 48 lcore(s) + EAL: Detected 1 NUMA nodes + EAL: Auto-detected process type: PRIMARY + EAL: Multi-process socket /var/run/dpdk/wls0/mp_socket + EAL: Selected IOVA mode 'PA' + EAL: No available hugepages reported in hugepages-2048kB + EAL: Probing VFIO support... + EAL: PCI device 0000:92:00.0 on NUMA socket 0 + EAL: probe driver: 8086:d8f intel_fpga_5gnr_fec_pf + xran_init_mbuf_pool: socket 0 + EAL: PCI device 0000:51:01.0 on NUMA socket 0 + EAL: probe driver: 8086:1889 net_iavf + initializing port 0 for TX, drv=net_iavf + Port 0 MAC: 00 11 22 33 00 00 + Port 0: nb_rxd 4096 nb_txd 4096 + [0] mempool_rx__0 + [0] mempool_small__0 + iavf_init_rss(): RSS is enabled by PF by default + + Checking link status portid [0] ... done + Port 0 Link Up - speed 100000 Mbps - full-duplex + EAL: PCI device 0000:51:01.1 on NUMA socket 0 + EAL: probe driver: 8086:1889 net_iavf + initializing port 1 for TX, drv=net_iavf + Port 1 MAC: 00 11 22 33 00 10 + Port 1: nb_rxd 4096 nb_txd 4096 + [1] mempool_rx__1 + [1] mempool_small__1 + iavf_init_rss(): RSS is enabled by PF by default + + Checking link status portid [1] ... done + Port 1 Link Up - speed 100000 Mbps - full-duplex + EAL: PCI device 0000:51:01.2 on NUMA socket 0 + EAL: probe driver: 8086:1889 net_iavf + initializing port 2 for TX, drv=net_iavf + Port 2 MAC: 00 11 22 33 01 00 + Port 2: nb_rxd 4096 nb_txd 4096 + [2] mempool_rx__2 + [2] mempool_small__2 + iavf_init_rss(): RSS is enabled by PF by default + + Checking link status portid [2] ... done + Port 2 Link Up - speed 100000 Mbps - full-duplex + EAL: PCI device 0000:51:01.3 on NUMA socket 0 + EAL: probe driver: 8086:1889 net_iavf + initializing port 3 for TX, drv=net_iavf + Port 3 MAC: 00 11 22 33 01 10 + Port 3: nb_rxd 4096 nb_txd 4096 + [3] mempool_rx__3 + [3] mempool_small__3 + iavf_init_rss(): RSS is enabled by PF by default + + Checking link status portid [3] ... done + Port 3 Link Up - speed 100000 Mbps - full-duplex + EAL: PCI device 0000:51:01.4 on NUMA socket 0 + EAL: probe driver: 8086:1889 net_iavf + initializing port 4 for TX, drv=net_iavf + Port 4 MAC: 00 11 22 33 02 00 + Port 4: nb_rxd 4096 nb_txd 4096 + [4] mempool_rx__4 + [4] mempool_small__4 + iavf_init_rss(): RSS is enabled by PF by default + + Checking link status portid [4] ... done + Port 4 Link Up - speed 100000 Mbps - full-duplex + EAL: PCI device 0000:51:01.5 on NUMA socket 0 + EAL: probe driver: 8086:1889 net_iavf + initializing port 5 for TX, drv=net_iavf + Port 5 MAC: 00 11 22 33 02 10 + Port 5: nb_rxd 4096 nb_txd 4096 + [5] mempool_rx__5 + [5] mempool_small__5 + iavf_init_rss(): RSS is enabled by PF by default + + Checking link status portid [5] ... done + Port 5 Link Up - speed 100000 Mbps - full-duplex + [ 0] vf 0 local SRC MAC: 00 11 22 33 00 00 + [ 0] vf 0 remote DST MAC: 00 11 22 33 00 01 + [ 0] vf 1 local SRC MAC: 00 11 22 33 00 10 + [ 0] vf 1 remote DST MAC: 00 11 22 33 00 11 + [ 1] vf 2 local SRC MAC: 00 11 22 33 01 00 + [ 1] vf 2 remote DST MAC: 00 11 22 33 01 01 + [ 1] vf 3 local SRC MAC: 00 11 22 33 01 10 + [ 1] vf 3 remote DST MAC: 00 11 22 33 01 11 + [ 2] vf 4 local SRC MAC: 00 11 22 33 02 00 + [ 2] vf 4 remote DST MAC: 00 11 22 33 02 01 + [ 2] vf 5 local SRC MAC: 00 11 22 33 02 10 + [ 2] vf 5 remote DST MAC: 00 11 22 33 02 11 + created dl_gen_ring_up_0 + created dl_gen_ring_up_1 + created dl_gen_ring_up_2 + xran_init successful, pHandle = 0x7f7393b23040 + + + bbdev_init: + Socket ID: 0 + FEC is accelerated through BBDEV: 0000:92:00.0 + wls_layer_init[wls0] nWlsMemorySize[1063256064] + wls_lib: Open wls0 (DPDK memzone) + wls_lib: WLS_Open 0x43f600000 + wls_lib: link: 0 <-> 1 + wls_lib: Mode 0 + wls_lib: WLS shared management memzone: wls0 + wls_lib: hugePageSize on the system is 1073741824 + wls_lib: WLS_Alloc [1063256064] bytes + + + =========================================================================================================== + PHY VERSION + =========================================================================================================== + Version: #DIRTY# + IMG-date: Aug 5 2020 + IMG-time: 18:31:18 + =========================================================================================================== + DEPENDENCIES VERSIONS + =========================================================================================================== + FlexRAN BBU pooling version #DIRTY# + FlexRAN SDK bblib_layerdemapping_5gnr version #DIRTY# + FlexRAN SDK bblib_layermapping_5gnr version #DIRTY# + FlexRAN SDK bblib_cestimate_5gnr_version #DIRTY# + FlexRAN SDK bblib_pucch_cestimate_5gnr version #DIRTY# + FlexRAN SDK bblib_llr_demapping version #DIRTY# + FlexRAN SDK bblib_pdcch_remapping_5gnr_version version #DIRTY# + FlexRAN SDK bblib_reed_muller version #DIRTY# + FlexRAN SDK bblib_lte_modulation version #DIRTY# + FlexRAN SDK bblib_polar_decoder_5gnr version #DIRTY# + FlexRAN SDK bblib_polar_rate_dematching_5gnr version #DIRTY# + FlexRAN SDK bblib_PhaseNoise_5G version #DIRTY# + FlexRAN SDK bblib_mimo_mmse_detection_5gnr version #DIRTY# + FlexRAN SDK bblib_fd_correlation version #DIRTY# + FlexRAN SDK bblib_scramble_5gnr version #DIRTY# + FlexRAN SDK bblib_pucch_equ_5gnr version #DIRTY# + FlexRAN SDK bblib_ta_compensation_version_5gnr #DIRTY# + FlexRAN SDK bblib_polar_encoder_5gnr version #DIRTY# + FlexRAN SDK bblib_prach_5gnr version #DIRTY# + FlexRAN SDK bblib_fft_ifft version #DIRTY# + FlexRAN SDK bblib_pucch_5gnr version #DIRTY# + FlexRAN SDK bblib_lte_crc version #DIRTY# + FlexRAN SDK bblib_common version #DIRTY# + =========================================================================================================== + + =========================================================================================================== + Non BBU threads in application + =========================================================================================================== + nr5g_gnb_phy2mac_api_proc_stats_thread: [PID: 29438] binding on [CPU 2] [PRIO: 0] [POLICY: 1] + wls_rx_handler (non-rt): [PID: 29445] binding on [CPU 2] + =========================================================================================================== + + PHY>welcome to application console + + + PHY> + PHY> + PHY>Received MSG_TYPE_PHY_ADD_REMOVE_CORE + Processing MSG_TYPE_PHY_ADD_REMOVE_CORE + phy_bbupool_set_core[0] (add): 137170526192 [0x0000001ff0001ff0] Current: 0 [0x0000000000000000] + nr5g_gnb_mac2phy_api_set_options: PDSCH_SPLIT[4] nCellMask[0x00000001] + nr5g_gnb_mac2phy_api_set_options: PDSCH_DL_WEIGHT_SPLIT[4] nCellMask[0x00000001] + nr5g_gnb_mac2phy_api_set_options: PUSCH_CHANEST_SPLIT[2] nCellMask[0x00000001] + nr5g_gnb_mac2phy_api_set_options: PUSCH_MMSE_SPLIT[4] nCellMask[0x00000001] + nr5g_gnb_mac2phy_api_set_options: PUSCH_LLR_RX_SPLIT[2] nCellMask[0x00000001] + nr5g_gnb_mac2phy_api_set_options: PUSCH_UL_WEIGHT_SPLIT[2] nCellMask[0x00000001] + nr5g_gnb_mac2phy_api_set_options: FEC_DEC_NUM_ITER[3] nCellMask[0x00ffffff] + Received MSG_TYPE_PHY_UL_IQ_SAMPLES + Received MSG_TYPE_PHY_UL_IQ_SAMPLES + Received MSG_TYPE_PHY_UL_IQ_SAMPLES + Processing MSG_TYPE_PHY_UL_IQ_SAMPLES: 0 + phydi_read_write_iq_samples: direction[1] nNumerologyMult[2] fftSize[4096, 45864, SRS: 3276] numSubframe[20] numAntenna[64] numPorts[8] nIsRadioMode[1] carrNum[0] TimerModeFreqDomain[1] PhaseCompensationEnable[0] filename_in_ul_iq[/home/vzakharc/master/../master_aux/flexran_l1_5g_test/fd/mu1_100mhz/376/uliq00_tst376.bin] filename_in_prach_iq[] + Processing MSG_TYPE_PHY_UL_IQ_SAMPLES: 1 + phydi_read_write_iq_samples: direction[1] nNumerologyMult[2] fftSize[4096, 45864, SRS: 3276] numSubframe[20] numAntenna[64] numPorts[8] nIsRadioMode[1] carrNum[1] TimerModeFreqDomain[1] PhaseCompensationEnable[0] filename_in_ul_iq[/home/vzakharc/master/../master_aux/flexran_l1_5g_test/fd/mu1_100mhz/377/uliq00_tst377.bin] filename_in_prach_iq[] + Processing MSG_TYPE_PHY_UL_IQ_SAMPLES: 2 + phydi_read_write_iq_samples: direction[1] nNumerologyMult[2] fftSize[4096, 45864, SRS: 3276] numSubframe[20] numAntenna[64] numPorts[8] nIsRadioMode[1] carrNum[2] TimerModeFreqDomain[1] PhaseCompensationEnable[0] filename_in_ul_iq[/home/vzakharc/master/../master_aux/flexran_l1_5g_test/fd/mu1_100mhz/377/uliq00_tst377.bin] filename_in_prach_iq[] + Received MSG_TYPE_PHY_CONFIG_REQ: 0 + Received MSG_TYPE_PHY_CONFIG_REQ: 1 + Received MSG_TYPE_PHY_CONFIG_REQ: 2 + Processing MSG_TYPE_PHY_CONFIG_REQ: 0 + phy_bbupool_init: Changing Core Mask0 [0xf0] to [0x1ff0001ff0] + phy_bbupool_set_config: Using cores: 0x0000001ff0001ff0 for BBU Pool nBbuPoolSleepEnable: 1 + BBU Pooling: queueId = 0, the according nCoreNum = 18, the according cpuSetMask = 0x1ff0001ff0 + BBU Pooling: gCoreIdxMap[0] = 4 is available! + BBU Pooling: gCoreIdxMap[1] = 5 is available! + BBU Pooling: gCoreIdxMap[2] = 6 is available! + BBU Pooling: gCoreIdxMap[3] = 7 is available! + BBU Pooling: gCoreIdxMap[4] = 8 is available! + BBU Pooling: gCoreIdxMap[5] = 9 is available! + BBU Pooling: gCoreIdxMap[6] = 10 is available! + BBU Pooling: gCoreIdxMap[7] = 11 is available! + BBU Pooling: gCoreIdxMap[8] = 12 is available! + BBU Pooling: gCoreIdxMap[9] = 28 is available! + BBU Pooling: gCoreIdxMap[10] = 29 is available! + BBU Pooling: gCoreIdxMap[11] = 30 is available! + BBU Pooling: gCoreIdxMap[12] = 31 is available! + BBU Pooling: gCoreIdxMap[13] = 32 is available! + BBU Pooling: gCoreIdxMap[14] = 33 is available! + BBU Pooling: gCoreIdxMap[15] = 34 is available! + BBU Pooling: gCoreIdxMap[16] = 35 is available! + BBU Pooling: gCoreIdxMap[17] = 36 is available! + phy_bbupool_init: Changing SrsCore Mask0 [(nil)] to [0x10000010] + phy_bbupool_init: Changing DlbeamCore Mask0 [(nil)] to [0x7e0] + Massive Mimo Config: nCarrierAggregationLevel[3], nMassiveMimoSrsCoresMask[0x10000010] nTotalSrsCores[2] + Setting aside core[4] for SRS + Setting aside core[28] for SRS + Massive Mimo Config: nCarrierAggregationLevel[3], nMassiveMimoDlbeamCoresMask[0x7e0] nTotalDlbeamCores[6] + Setting aside core[5] for DL beam + Setting aside core[6] for DL beam + Setting aside core[7] for DL beam + Setting aside core[8] for DL beam + Setting aside core[9] for DL beam + Setting aside core[10] for DL beam + BBU Pooling: taskId = 0 taskName = DL_L1_CONFIG is registered + BBU Pooling: taskId = 1 taskName = DL_L1_PDSCH_TB is registered + BBU Pooling: taskId = 2 taskName = DL_L1_PDSCH_SCRAMBLER is registered + BBU Pooling: taskId = 3 taskName = DL_L1_PDSCH_SYMBOL_TX is registered + BBU Pooling: taskId = 4 taskName = DL_L1_PDSCH_RS_GEN is registered + BBU Pooling: taskId = 5 taskName = DL_L1_CONTROL_CHANNELS is registered + BBU Pooling: taskId = 6 taskName = UL_L1_CONFIG is registered + BBU Pooling: taskId = 7 taskName = UL_L1_PUSCH_CE0 is registered + BBU Pooling: taskId = 8 taskName = UL_L1_PUSCH_CE7 is registered + BBU Pooling: taskId = 9 taskName = UL_L1_PUSCH_MMSE0_PRE is registered + BBU Pooling: taskId = 10 taskName = UL_L1_PUSCH_MMSE7_PRE is registered + BBU Pooling: taskId = 11 taskName = UL_L1_PUSCH_MMSE0 is registered + BBU Pooling: taskId = 12 taskName = UL_L1_PUSCH_MMSE7 is registered + BBU Pooling: taskId = 13 taskName = UL_L1_PUSCH_LLR is registered + BBU Pooling: taskId = 14 taskName = UL_L1_PUSCH_DECODE is registered + BBU Pooling: taskId = 15 taskName = UL_L1_PUSCH_TB is registered + BBU Pooling: taskId = 16 taskName = UL_L1_PUCCH is registered + BBU Pooling: taskId = 17 taskName = UL_L1_PRACH is registered + BBU Pooling: taskId = 18 taskName = UL_L1_SRS is registered + BBU Pooling: taskId = 19 taskName = DL_L1_POST is registered + BBU Pooling: taskId = 20 taskName = UL_L1_POST is registered + BBU Pooling: taskId = 21 taskName = DL_L1_BEAM_WEIGHT_GEN is registered + BBU Pooling: taskId = 22 taskName = DL_L1_BEAM_WEIGHT_TX is registered + BBU Pooling: taskId = 23 taskName = UL_L1_BEAM_WEIGHT_GEN is registered + BBU Pooling: taskId = 24 taskName = UL_L1_BEAM_WEIGHT_TX is registered + BBU Pooling: taskId = 25 taskName = UL_L1_SRS_CE is registered + BBU Pooling: taskId = 26 taskName = UL_L1_SRS_REPORT is registered + BBU Pooling: taskId = 27 taskName = UL_L1_PUSCH_CE0_PRE is registered + BBU Pooling: taskId = 28 taskName = UL_L1_PUSCH_CE7_PRE is registered + BBU Pooling: next taskList of DL_L1_CONFIG: DL_L1_PDSCH_TB DL_L1_PDSCH_RS_GEN DL_L1_CONTROL_CHANNELS + BBU Pooling: next taskList of DL_L1_PDSCH_TB: N/A + + BBU Pooling: next taskList of DL_L1_PDSCH_SCRAMBLER: DL_L1_PDSCH_SYMBOL_TX + BBU Pooling: next taskList of DL_L1_PDSCH_SYMBOL_TX: DL_L1_POST + BBU Pooling: next taskList of DL_L1_PDSCH_RS_GEN: DL_L1_PDSCH_SYMBOL_TX + BBU Pooling: next taskList of DL_L1_CONTROL_CHANNELS: DL_L1_POST + BBU Pooling: next taskList of UL_L1_CONFIG: UL_L1_POST UL_L1_BEAM_WEIGHT_GEN + BBU Pooling: next taskList of UL_L1_PUSCH_CE0: UL_L1_PUSCH_MMSE0 UL_L1_PUSCH_MMSE7 + BBU Pooling: next taskList of UL_L1_PUSCH_CE7: UL_L1_PUSCH_MMSE7 + BBU Pooling: next taskList of UL_L1_PUSCH_MMSE0_PRE: UL_L1_PUSCH_MMSE0 UL_L1_PUSCH_MMSE7 + BBU Pooling: next taskList of UL_L1_PUSCH_MMSE7_PRE: UL_L1_PUSCH_MMSE7 + BBU Pooling: next taskList of UL_L1_PUSCH_MMSE0: UL_L1_PUSCH_LLR + BBU Pooling: next taskList of UL_L1_PUSCH_MMSE7: UL_L1_PUSCH_LLR + BBU Pooling: next taskList of UL_L1_PUSCH_LLR: UL_L1_PUSCH_DECODE + BBU Pooling: next taskList of UL_L1_PUSCH_DECODE: N/A + + BBU Pooling: next taskList of UL_L1_PUSCH_TB: UL_L1_POST + BBU Pooling: next taskList of UL_L1_PUCCH: UL_L1_POST + BBU Pooling: next taskList of UL_L1_PRACH: UL_L1_POST + BBU Pooling: next taskList of UL_L1_SRS: UL_L1_SRS_CE + BBU Pooling: next taskList of DL_L1_POST: N/A + + BBU Pooling: next taskList of UL_L1_POST: N/A + + BBU Pooling: next taskList of DL_L1_BEAM_WEIGHT_GEN: DL_L1_BEAM_WEIGHT_TX + BBU Pooling: next taskList of DL_L1_BEAM_WEIGHT_TX: DL_L1_POST + BBU Pooling: next taskList of UL_L1_BEAM_WEIGHT_GEN: UL_L1_BEAM_WEIGHT_TX + BBU Pooling: next taskList of UL_L1_BEAM_WEIGHT_TX: UL_L1_POST + BBU Pooling: next taskList of UL_L1_SRS_CE: UL_L1_SRS_REPORT + BBU Pooling: next taskList of UL_L1_SRS_REPORT: N/A + + BBU Pooling: next taskList of UL_L1_PUSCH_CE0_PRE: UL_L1_PUSCH_CE0 UL_L1_PUSCH_CE7 + BBU Pooling: next taskList of UL_L1_PUSCH_CE7_PRE: UL_L1_PUSCH_CE7 + enter RtThread Launch + Allocated gpThreadWorker[coreIdx: 0][CoreNum: 4]: [0x7f738c000b70] + Allocated gpThreadWorker[coreIdx: 1][CoreNum: 5]: [0x7f738c000e20] + Allocated gpThreadWorker[coreIdx: 2][CoreNum: 6]: [0x7f738c0010d0] + Allocated gpThreadWorker[coreIdx: 3][CoreNum: 7]: [0x7f738c001380] + Allocated gpThreadWorker[coreIdx: 4][CoreNum: 8]: [0x7f738c001630] + Allocated gpThreadWorker[coreIdx: 5][CoreNum: 9]: [0x7f738c0018e0] + launching Thread 1 Queue 0 uCoreIdx 1 CoreId 5 Priority 94 Policy 1 nRtCoreSleep 1 nFriendCnt 0 nCurrentSfIdx -1 + + launching Thread 0 Queue 0 uCoreIdx 0 CoreId 4 Priority 94 Policy 1 nRtCoreSleep 1 nFriendCnt 0 nCurrentSfIdx -1 + + launching Thread 2 Queue 0 uCoreIdx 2 CoreId 6 Priority 94 Policy 1 nRtCoreSleep 1 nFriendCnt 0 nCurrentSfIdx -1 + + launching Thread 3 Queue 0 uCoreIdx 3 CoreId 7 Priority 94 Policy 1 nRtCoreSleep 1 nFriendCnt 0 nCurrentSfIdx -1 + + Allocated gpThreadWorker[coreIdx: 6][CoreNum: 10]: [0x7f738c001b90] + launching Thread 4 Queue 0 uCoreIdx 4 CoreId 8 Priority 94 Policy 1 nRtCoreSleep 1 nFriendCnt 0 nCurrentSfIdx -1 + + launching Thread 5 Queue 0 uCoreIdx 5 CoreId 9 Priority 94 Policy 1 nRtCoreSleep 1 nFriendCnt 0 nCurrentSfIdx -1 + + Allocated gpThreadWorker[coreIdx: 7][CoreNum: 11]: [0x7f738c001e40] + Allocated gpThreadWorker[coreIdx: 8][CoreNum: 12]: [0x7f738c0020f0] + bbupool_core_main: the server's coreNum = 48, the nCore = 18,nRtCoreMask = 0x1ff0001ff0, the nFeIfCore = 0,nFeIfCoreMask = 0x0 + bbupool_core_main pthread_setaffinity_np succeed: coreId = 2, result = 0 + Allocated gpThreadWorker[coreIdx: 9][CoreNum: 28]: [0x7f738c0023a0] + launching Thread 6 Queue 0 uCoreIdx 6 CoreId 10 Priority 94 Policy 1 nRtCoreSleep 1 nFriendCnt 0 nCurrentSfIdx -1 + + Allocated gpThreadWorker[coreIdx: 10][CoreNum: 29]: [0x7f738c002650] + launching Thread 7 Queue 0 uCoreIdx 7 CoreId 11 Priority 94 Policy 1 nRtCoreSleep 1 nFriendCnt 0 nCurrentSfIdx -1 + + Allocated gpThreadWorker[coreIdx: 11][CoreNum: 30]: [0x7f738c002900] + launching Thread 8 Queue 0 uCoreIdx 8 CoreId 12 Priority 94 Policy 1 nRtCoreSleep 1 nFriendCnt 0 nCurrentSfIdx -1 + + launching Thread 9 Queue 0 uCoreIdx 9 CoreId 28 Priority 94 Policy 1 nRtCoreSleep 1 nFriendCnt 0 nCurrentSfIdx -1 + + Allocated gpThreadWorker[coreIdx: 12][CoreNum: 31]: [0x7f738c002bb0] + Allocated gpThreadWorker[coreIdx: 13][CoreNum: 32]: [0x7f738c002e60] + launching Thread 10 Queue 0 uCoreIdx 10 CoreId 29 Priority 94 Policy 1 nRtCoreSleep 1 nFriendCnt 0 nCurrentSfIdx -1 + + launching Thread 11 Queue 0 uCoreIdx 11 CoreId 30 Priority 94 Policy 1 nRtCoreSleep 1 nFriendCnt 0 nCurrentSfIdx -1 + + Allocated gpThreadWorker[coreIdx: 14][CoreNum: 33]: [0x7f738c003110] + Allocated gpThreadWorker[coreIdx: 15][CoreNum: 34]: [0x7f738c0033c0] + launching Thread 12 Queue 0 uCoreIdx 12 CoreId 31 Priority 94 Policy 1 nRtCoreSleep 1 nFriendCnt 0 nCurrentSfIdx -1 + + Allocated gpThreadWorker[coreIdx: 16][CoreNum: 35]: [0x7f738c003670] + launching Thread 13 Queue 0 uCoreIdx 13 CoreId 32 Priority 94 Policy 1 nRtCoreSleep 1 nFriendCnt 0 nCurrentSfIdx -1 + + Allocated gpThreadWorker[coreIdx: 17][CoreNum: 36]: [0x7f738c003920] + 18 thread associated with queue 0:coreIdx 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 + Leave RtThread Launch + launching Thread 14 Queue 0 uCoreIdx 14 CoreId 33 Priority 94 Policy 1 nRtCoreSleep 1 nFriendCnt 0 nCurrentSfIdx -1 + + launching Thread 15 Queue 0 uCoreIdx 15 CoreId 34 Priority 94 Policy 1 nRtCoreSleep 1 nFriendCnt 0 nCurrentSfIdx -1 + + launching Thread 16 Queue 0 uCoreIdx 16 CoreId 35 Priority 94 Policy 1 nRtCoreSleep 1 nFriendCnt 0 nCurrentSfIdx -1 + + launching Thread 17 Queue 0 uCoreIdx 17 CoreId 36 Priority 94 Policy 1 nRtCoreSleep 1 nFriendCnt 0 nCurrentSfIdx -1 + + nr5g_gnb_mac2phy_api_proc_print_phy_init [0]: + nCarrierIdx: 0 + nDMRSTypeAPos: 2 + nPhyCellId: 50 + nDLAbsFrePointA: 3500000 + nULAbsFrePointA: 3500000 + nDLBandwidth: 100 + nULBandwidth: 100 + nDLFftSize: 4096 + nULFftSize: 4096 + nSSBPwr: 0 + nSSBAbsFre: 0 + nSSBPeriod: 4 + nSSBSubcSpacing: 1 + nSSBSubcOffset: 0 + nSSBPrbOffset: 0 + nMIB[0]: 255 + nMIB[1]: 255 + nMIB[2]: 255 + nDLK0: 0 + nULK0: 0 + nSSBMask[0]: 0 + nSSBMask[1]: 0 + nNrOfTxAnt: 64 + nNrOfRxAnt: 64 + nNrOfDLPorts: 16 + nNrOfULPorts: 8 + nCarrierAggregationLevel: 2 + nFrameDuplexType: 1 + nSubcCommon: 1 + nTddPeriod: 10 (TDD) + SlotConfig: + Slot Sym 0 Sym 1 Sym 2 Sym 3 Sym 4 Sym 5 Sym 6 Sym 7 Sym 8 Sym 9 Sym10 Sym11 Sym12 Sym13 + 0 DL DL DL DL DL DL DL DL DL DL DL DL DL DL + 1 DL DL DL DL DL DL DL DL DL DL DL DL DL DL + 2 DL DL DL DL DL DL DL DL DL DL DL DL DL DL + 3 DL DL DL DL DL DL DL DL DL DL GD GD UL UL + 4 UL UL UL UL UL UL UL UL UL UL UL UL UL UL + 5 DL DL DL DL DL DL DL DL DL DL DL DL DL DL + 6 DL DL DL DL DL DL DL DL DL DL DL DL DL DL + 7 DL DL DL DL DL DL DL DL DL DL DL DL DL DL + 8 DL DL DL DL DL DL DL DL DL DL GD GD UL UL + 9 UL UL UL UL UL UL UL UL UL UL UL UL UL UL + + nPrachConfIdx: 100 + nPrachSubcSpacing: 1 + nPrachZeroCorrConf: 1 + nPrachRestrictSet: 0 + nPrachRootSeqIdx: 0 + nPrachFreqStart: 100 + nPrachFdm: 1 + nPrachSsbRach: 0 + nPrachNrofRxRU: 4 + nCyclicPrefix: 0 + nGroupHopFlag: 0 + nSequenceHopFlag: 0 + nHoppingId: 0 + nUrllcCapable: 0 + nUrllcMiniSlotMask: 1 (0x00000001) + read_table: File table/common/pss_table.bin of size 381 read_size: 381 + read_table: File table/common/sss_table.bin of size 128016 read_size: 128016 + read_table: File table/common/srs_zc_36_plus.bin of size 905916 read_size: 905916 + read_table: File table/common/pucch_zc_36_plus.bin of size 383040 read_size: 383040 + read_table: File table/common/srs_wiener_sinc_comb2.bin of size 81216 read_size: 81216 + read_table: File table/common/srs_wiener_sinc_comb4.bin of size 81216 read_size: 81216 + BBU Pooling Info: maximum period length was configured, preMaxSF = 20480, postMasSF = 20480 + set_slot_type SlotPattern: + Slot: 0 1 2 3 4 5 6 7 8 9 + 0 DL DL DL SP UL DL DL DL SP UL + + PHYDI-INIT[from 2] PhyInstance: 0 + Processing MSG_TYPE_PHY_CONFIG_REQ: 1 + nr5g_gnb_mac2phy_api_proc_print_phy_init [1]: + nCarrierIdx: 1 + nDMRSTypeAPos: 2 + nPhyCellId: 50 + nDLAbsFrePointA: 3500000 + nULAbsFrePointA: 3500000 + nDLBandwidth: 100 + nULBandwidth: 100 + nDLFftSize: 4096 + nULFftSize: 4096 + nSSBPwr: 0 + nSSBAbsFre: 0 + nSSBPeriod: 4 + nSSBSubcSpacing: 1 + nSSBSubcOffset: 0 + nSSBPrbOffset: 0 + nMIB[0]: 255 + nMIB[1]: 255 + nMIB[2]: 255 + nDLK0: 0 + nULK0: 0 + nSSBMask[0]: 0 + nSSBMask[1]: 0 + nNrOfTxAnt: 64 + nNrOfRxAnt: 64 + nNrOfDLPorts: 16 + nNrOfULPorts: 8 + nCarrierAggregationLevel: 2 + nFrameDuplexType: 1 + nSubcCommon: 1 + nTddPeriod: 10 (TDD) + SlotConfig: + Slot Sym 0 Sym 1 Sym 2 Sym 3 Sym 4 Sym 5 Sym 6 Sym 7 Sym 8 Sym 9 Sym10 Sym11 Sym12 Sym13 + 0 DL DL DL DL DL DL DL DL DL DL DL DL DL DL + 1 DL DL DL DL DL DL DL DL DL DL DL DL DL DL + 2 DL DL DL DL DL DL DL DL DL DL DL DL DL DL + 3 DL DL DL DL DL DL DL DL DL DL GD GD UL UL + 4 UL UL UL UL UL UL UL UL UL UL UL UL UL UL + 5 DL DL DL DL DL DL DL DL DL DL DL DL DL DL + 6 DL DL DL DL DL DL DL DL DL DL DL DL DL DL + 7 DL DL DL DL DL DL DL DL DL DL DL DL DL DL + 8 DL DL DL DL DL DL DL DL DL DL GD GD UL UL + 9 UL UL UL UL UL UL UL UL UL UL UL UL UL UL + + nPrachConfIdx: 100 + nPrachSubcSpacing: 1 + nPrachZeroCorrConf: 1 + nPrachRestrictSet: 0 + nPrachRootSeqIdx: 0 + nPrachFreqStart: 100 + nPrachFdm: 1 + nPrachSsbRach: 0 + nPrachNrofRxRU: 4 + nCyclicPrefix: 0 + nGroupHopFlag: 0 + nSequenceHopFlag: 0 + nHoppingId: 0 + nUrllcCapable: 0 + nUrllcMiniSlotMask: 1 (0x00000001) + BBU Pooling Info: maximum period length was configured, preMaxSF = 20480, postMasSF = 20480 + set_slot_type SlotPattern: + Slot: 0 1 2 3 4 5 6 7 8 9 + 0 DL DL DL SP UL DL DL DL SP UL + + PHYDI-INIT[from 2] PhyInstance: 1 + Processing MSG_TYPE_PHY_CONFIG_REQ: 2 + nr5g_gnb_mac2phy_api_proc_print_phy_init [2]: + nCarrierIdx: 2 + nDMRSTypeAPos: 2 + nPhyCellId: 50 + nDLAbsFrePointA: 3500000 + nULAbsFrePointA: 3500000 + nDLBandwidth: 100 + nULBandwidth: 100 + nDLFftSize: 4096 + nULFftSize: 4096 + nSSBPwr: 0 + nSSBAbsFre: 0 + nSSBPeriod: 4 + nSSBSubcSpacing: 1 + nSSBSubcOffset: 0 + nSSBPrbOffset: 0 + nMIB[0]: 255 + nMIB[1]: 255 + nMIB[2]: 255 + nDLK0: 0 + nULK0: 0 + nSSBMask[0]: 0 + nSSBMask[1]: 0 + nNrOfTxAnt: 64 + nNrOfRxAnt: 64 + nNrOfDLPorts: 16 + nNrOfULPorts: 8 + nCarrierAggregationLevel: 2 + nFrameDuplexType: 1 + nSubcCommon: 1 + nTddPeriod: 10 (TDD) + SlotConfig: + Slot Sym 0 Sym 1 Sym 2 Sym 3 Sym 4 Sym 5 Sym 6 Sym 7 Sym 8 Sym 9 Sym10 Sym11 Sym12 Sym13 + 0 DL DL DL DL DL DL DL DL DL DL DL DL DL DL + 1 DL DL DL DL DL DL DL DL DL DL DL DL DL DL + 2 DL DL DL DL DL DL DL DL DL DL DL DL DL DL + 3 DL DL DL DL DL DL DL DL DL DL GD GD UL UL + 4 UL UL UL UL UL UL UL UL UL UL UL UL UL UL + 5 DL DL DL DL DL DL DL DL DL DL DL DL DL DL + 6 DL DL DL DL DL DL DL DL DL DL DL DL DL DL + 7 DL DL DL DL DL DL DL DL DL DL DL DL DL DL + 8 DL DL DL DL DL DL DL DL DL DL GD GD UL UL + 9 UL UL UL UL UL UL UL UL UL UL UL UL UL UL + + nPrachConfIdx: 100 + nPrachSubcSpacing: 1 + nPrachZeroCorrConf: 1 + nPrachRestrictSet: 0 + nPrachRootSeqIdx: 0 + nPrachFreqStart: 100 + nPrachFdm: 1 + nPrachSsbRach: 0 + nPrachNrofRxRU: 4 + nCyclicPrefix: 0 + nGroupHopFlag: 0 + nSequenceHopFlag: 0 + nHoppingId: 0 + nUrllcCapable: 0 + nUrllcMiniSlotMask: 1 (0x00000001) + BBU Pooling Info: maximum period length was configured, preMaxSF = 20480, postMasSF = 20480 + set_slot_type SlotPattern: + Slot: 0 1 2 3 4 5 6 7 8 9 + 0 DL DL DL SP UL DL DL DL SP UL + + PHYDI-INIT[from 2] PhyInstance: 2 + + --------------------------------------------------------- + Global Variables: + --------------------------------------------------------- + gCarrierAggLevel: 3 + gCarrierAggLevelInit: 3 + gSupportedAVX2 1 + --------------------------------------------------------- + + Received MSG_TYPE_PHY_START_REQ: 0 + Received MSG_TYPE_PHY_START_REQ: 1 + Received MSG_TYPE_PHY_START_REQ: 2 + Processing MSG_TYPE_PHY_START_REQ: 0 + di_open port 0 + + xran_init_vfs_mapping: p 0 vf 0 + xran_init_vfs_mapping: p 0 vf 1 + XRAN_UP_VF: 0x0000 + xran_timing_source_thread [CPU 22] [PID: 29437] + xran_open [CPU 2] [PID: 29437] + Waithing on Timing thread... + TTI interval 500 [us] + Start C-plane DL 71 us after TTI [trigger on sym 2] + Start C-plane UL 200 us after TTI [trigger on sym 6] + Start U-plane DL 196 us before OTA [offset in sym -5] + Start U-plane UL 75 us OTA [offset in sym 3] + C-plane to U-plane delay 125 us after TTI + Start Sym timer 35714 ns + di_open port 1 + + xran_init_vfs_mapping: p 1 vf 2 + xran_init_vfs_mapping: p 1 vf 3 + Start C-plane DL 71 us after TTI [trigger on sym 2] + Start C-plane UL 200 us after TTI [trigger on sym 6] + Start U-plane DL 196 us before OTA [offset in sym -5] + Start U-plane UL 75 us OTA [offset in sym 3] + C-plane to U-plane delay 125 us after TTI + Start Sym timer 35714 ns + xran_open [CPU 2] [PID: 29437] + Waithing on Timing thread... + di_open port 2 + + xran_init_vfs_mapping: p 2 vf 4 + xran_init_vfs_mapping: p 2 vf 5 + Start C-plane DL 71 us after TTI [trigger on sym 2] + Start C-plane UL 200 us after TTI [trigger on sym 6] + Start U-plane DL 196 us before OTA [offset in sym -5] + Start U-plane UL 75 us OTA [offset in sym 3] + C-plane to U-plane delay 125 us after TTI + Start Sym timer 35714 ns + O-XU 0 + HW 1 + Num cores 4 + Num ports 3 + O-RU Cat 1 + O-RU CC 3 + O-RU eAxC 16 + p:0 XRAN_JOB_TYPE_CP_DL worker id 1 + p:0 XRAN_JOB_TYPE_CP_UL worker id 1 + p:1 XRAN_JOB_TYPE_CP_DL worker id 1 + p:1 XRAN_JOB_TYPE_CP_UL worker id 1 + p:2 XRAN_JOB_TYPE_CP_DL worker id 1 + p:2 XRAN_JOB_TYPE_CP_UL worker id 1 + p:1 XRAN_JOB_TYPE_CP_DL worker id 2 + p:1 XRAN_JOB_TYPE_CP_UL worker id 2 + p:2 XRAN_JOB_TYPE_CP_DL worker id 2 + p:2 XRAN_JOB_TYPE_CP_UL worker id 2 + xran_generic_worker_thread [CPU 23] [PID: 29437] + spawn worker 0 core 23 + xran_generic_worker_thread [CPU 24] [PID: 29437] + spawn worker 1 core 24 + xran_generic_worker_thread [CPU 25] [PID: 29437] + spawn worker 2 core 25 + xran_open [CPU 2] [PID: 29437] + Waithing on Timing thread... + ---------------------------------------------------------------------------- + mem_mgr_display_size: + Num Memory Alloc: 38,294 + Total Memory Size: 20,049,968,118 + ---------------------------------------------------------------------------- + + + PHYDI-START[from 2] PhyInstance: 0, Mode: 4, Count: 100207, Period: 0, NumSlotPerSfn: 20 + PHYDI-START[from 2] PhyInstance: 1, Mode: 4, Count: 100207, Period: 0, NumSlotPerSfn: 20 + PHYDI-START[from 2] PhyInstance: 2, Mode: 4, Count: 100207, Period: 0, NumSlotPerSfn: 20 + Setting nMultiCellModeDelay: 40000 + nr5g_gnb_urllc_register_call_backs: nTimerMode[0] nUrllcMiniSlotMask[0] + port [0] gnb_io_xran_start: gGnbIoXranStarted[0] CC 3 Ant 16 AntElm 64 [Cell: nNrOfDLPorts 16 nNrOfULPorts 8] + port 0 has 1 CCs + port 0 cc_id 0 is phy id 0 + XRAN front haul xran_mm_init + xran_sector_get_instances [0]: CC 0 handle 0x7f6fe7383280 + Handle: 0xee1c8e0 Instance: 0x7f6fe7383280 + gnb_io_xran_start [0]: CC 0 handle 0x7f6fe7383280 + Sucess xran_mm_init Instance 0x7f6fe7383280 + nSectorNum 1 + ru_0_cc_0_idx_0: [ handle 0x7f6fe7383280 0 0 ] [nPoolIndex 0] nNumberOfBuffers 8960 nBufferSize 14432 + CC:[ handle 0x7f6fe7383280 ru 0 cc_idx 0 ] [nPoolIndex 0] mb pool 0x44c493480 + ru_0_cc_0_idx_1: [ handle 0x7f6fe7383280 0 0 ] [nPoolIndex 1] nNumberOfBuffers 286720 nBufferSize 32 + CC:[ handle 0x7f6fe7383280 ru 0 cc_idx 0 ] [nPoolIndex 1] mb pool 0x444381640 + ru_0_cc_0_idx_2: [ handle 0x7f6fe7383280 0 0 ] [nPoolIndex 2] nNumberOfBuffers 8960 nBufferSize 12560 + CC:[ handle 0x7f6fe7383280 ru 0 cc_idx 0 ] [nPoolIndex 2] mb pool 0x443dff2c0 + ru_0_cc_0_idx_3: [ handle 0x7f6fe7383280 0 0 ] [nPoolIndex 3] nNumberOfBuffers 8960 nBufferSize 14432 + CC:[ handle 0x7f6fe7383280 ru 0 cc_idx 0 ] [nPoolIndex 3] mb pool 0x443c5cf40 + ru_0_cc_0_idx_4: [ handle 0x7f6fe7383280 0 0 ] [nPoolIndex 4] nNumberOfBuffers 286720 nBufferSize 32 + CC:[ handle 0x7f6fe7383280 ru 0 cc_idx 0 ] [nPoolIndex 4] mb pool 0x443ababc0 + ru_0_cc_0_idx_5: [ handle 0x7f6fe7383280 0 0 ] [nPoolIndex 5] nNumberOfBuffers 8960 nBufferSize 12560 + CC:[ handle 0x7f6fe7383280 ru 0 cc_idx 0 ] [nPoolIndex 5] mb pool 0x443538840 + ru_0_cc_0_idx_6: [ handle 0x7f6fe7383280 0 0 ] [nPoolIndex 6] nNumberOfBuffers 8960 nBufferSize 8192 + CC:[ handle 0x7f6fe7383280 ru 0 cc_idx 0 ] [nPoolIndex 6] mb pool 0x4433964c0 + ru_0_cc_0_idx_7: [ handle 0x7f6fe7383280 0 0 ] [nPoolIndex 7] nNumberOfBuffers 35840 nBufferSize 14432 + CC:[ handle 0x7f6fe7383280 ru 0 cc_idx 0 ] [nPoolIndex 7] mb pool 0x4431f4140 + ru_0_cc_0_idx_8: [ handle 0x7f6fe7383280 0 0 ] [nPoolIndex 8] nNumberOfBuffers 1146880 nBufferSize 32 + CC:[ handle 0x7f6fe7383280 ru 0 cc_idx 0 ] [nPoolIndex 8] mb pool 0x442ff1dc0 + ru_0_cc_0_idx_9: [ handle 0x7f6fe7383280 0 0 ] [nPoolIndex 9] nNumberOfBuffers 35840 nBufferSize 12560 + CC:[ handle 0x7f6fe7383280 ru 0 cc_idx 0 ] [nPoolIndex 9] mb pool 0x441e6fa40 + port [0] gnb_io_xran_init_cp + port [0] init xran successfully + port [1] gnb_io_xran_start: gGnbIoXranStarted[0] CC 3 Ant 16 AntElm 64 [Cell: nNrOfDLPorts 16 nNrOfULPorts 8] + port 1 has 1 CCs + port 1 cc_id 0 is phy id 1 + XRAN front haul xran_mm_init + xran_sector_get_instances [1]: CC 0 handle 0x7f6fe7383380 + Handle: 0xee1c940 Instance: 0x7f6fe7383380 + gnb_io_xran_start [1]: CC 0 handle 0x7f6fe7383380 + Sucess xran_mm_init Instance 0x7f6fe7383280 + nSectorNum 1 + ru_1_cc_0_idx_0: [ handle 0x7f6fe7383380 1 0 ] [nPoolIndex 0] nNumberOfBuffers 8960 nBufferSize 14432 + CC:[ handle 0x7f6fe7383380 ru 1 cc_idx 0 ] [nPoolIndex 0] mb pool 0x2a1525740 + ru_1_cc_0_idx_1: [ handle 0x7f6fe7383380 1 0 ] [nPoolIndex 1] nNumberOfBuffers 286720 nBufferSize 32 + CC:[ handle 0x7f6fe7383380 ru 1 cc_idx 0 ] [nPoolIndex 1] mb pool 0x299413900 + ru_1_cc_0_idx_2: [ handle 0x7f6fe7383380 1 0 ] [nPoolIndex 2] nNumberOfBuffers 8960 nBufferSize 12560 + CC:[ handle 0x7f6fe7383380 ru 1 cc_idx 0 ] [nPoolIndex 2] mb pool 0x28f1112c0 + ru_1_cc_0_idx_3: [ handle 0x7f6fe7383380 1 0 ] [nPoolIndex 3] nNumberOfBuffers 8960 nBufferSize 14432 + CC:[ handle 0x7f6fe7383380 ru 1 cc_idx 0 ] [nPoolIndex 3] mb pool 0x287f4fb80 + ru_1_cc_0_idx_4: [ handle 0x7f6fe7383380 1 0 ] [nPoolIndex 4] nNumberOfBuffers 286720 nBufferSize 32 + CC:[ handle 0x7f6fe7383380 ru 1 cc_idx 0 ] [nPoolIndex 4] mb pool 0x27fe3dd40 + ru_1_cc_0_idx_5: [ handle 0x7f6fe7383380 1 0 ] [nPoolIndex 5] nNumberOfBuffers 8960 nBufferSize 12560 + CC:[ handle 0x7f6fe7383380 ru 1 cc_idx 0 ] [nPoolIndex 5] mb pool 0x275b3b700 + ru_1_cc_0_idx_6: [ handle 0x7f6fe7383380 1 0 ] [nPoolIndex 6] nNumberOfBuffers 8960 nBufferSize 8192 + CC:[ handle 0x7f6fe7383380 ru 1 cc_idx 0 ] [nPoolIndex 6] mb pool 0x26e979fc0 + ru_1_cc_0_idx_7: [ handle 0x7f6fe7383380 1 0 ] [nPoolIndex 7] nNumberOfBuffers 35840 nBufferSize 14432 + CC:[ handle 0x7f6fe7383380 ru 1 cc_idx 0 ] [nPoolIndex 7] mb pool 0x269ce9980 + ru_1_cc_0_idx_8: [ handle 0x7f6fe7383380 1 0 ] [nPoolIndex 8] nNumberOfBuffers 1146880 nBufferSize 32 + O-DU: thread_run start time: 08/11/20 23:05:24.000000001 UTC [500] + CC:[ handle 0x7f6fe7383380 ru 1 cc_idx 0 ] [nPoolIndex 8] mb pool 0x249d33b40 + ru_1_cc_0_idx_9: [ handle 0x7f6fe7383380 1 0 ] [nPoolIndex 9] nNumberOfBuffers 35840 nBufferSize 12560 + CC:[ handle 0x7f6fe7383380 ru 1 cc_idx 0 ] [nPoolIndex 9] mb pool 0x2215b1500 + port [1] gnb_io_xran_init_cp + port [1] init xran successfully + port [2] gnb_io_xran_start: gGnbIoXranStarted[0] CC 3 Ant 16 AntElm 64 [Cell: nNrOfDLPorts 16 nNrOfULPorts 8] + port 2 has 1 CCs + port 2 cc_id 0 is phy id 2 + XRAN front haul xran_mm_init + xran_sector_get_instances [2]: CC 0 handle 0x7f6fe7383440 + Handle: 0xee1c9a0 Instance: 0x7f6fe7383440 + gnb_io_xran_start [2]: CC 0 handle 0x7f6fe7383440 + Sucess xran_mm_init Instance 0x7f6fe7383280 + nSectorNum 1 + ru_2_cc_0_idx_0: [ handle 0x7f6fe7383440 2 0 ] [nPoolIndex 0] nNumberOfBuffers 8960 nBufferSize 14432 + CC:[ handle 0x7f6fe7383440 ru 2 cc_idx 0 ] [nPoolIndex 0] mb pool 0x203b7bdc0 + ru_2_cc_0_idx_1: [ handle 0x7f6fe7383440 2 0 ] [nPoolIndex 1] nNumberOfBuffers 286720 nBufferSize 32 + CC:[ handle 0x7f6fe7383440 ru 2 cc_idx 0 ] [nPoolIndex 1] mb pool 0x1fba69f80 + ru_2_cc_0_idx_2: [ handle 0x7f6fe7383440 2 0 ] [nPoolIndex 2] nNumberOfBuffers 8960 nBufferSize 12560 + CC:[ handle 0x7f6fe7383440 ru 2 cc_idx 0 ] [nPoolIndex 2] mb pool 0x1f1767940 + ru_2_cc_0_idx_3: [ handle 0x7f6fe7383440 2 0 ] [nPoolIndex 3] nNumberOfBuffers 8960 nBufferSize 14432 + CC:[ handle 0x7f6fe7383440 ru 2 cc_idx 0 ] [nPoolIndex 3] mb pool 0x1ea5a6200 + ru_2_cc_0_idx_4: [ handle 0x7f6fe7383440 2 0 ] [nPoolIndex 4] nNumberOfBuffers 286720 nBufferSize 32 + CC:[ handle 0x7f6fe7383440 ru 2 cc_idx 0 ] [nPoolIndex 4] mb pool 0x1e24943c0 + ru_2_cc_0_idx_5: [ handle 0x7f6fe7383440 2 0 ] [nPoolIndex 5] nNumberOfBuffers 8960 nBufferSize 12560 + CC:[ handle 0x7f6fe7383440 ru 2 cc_idx 0 ] [nPoolIndex 5] mb pool 0x1d8191d80 + ru_2_cc_0_idx_6: [ handle 0x7f6fe7383440 2 0 ] [nPoolIndex 6] nNumberOfBuffers 8960 nBufferSize 8192 + CC:[ handle 0x7f6fe7383440 ru 2 cc_idx 0 ] [nPoolIndex 6] mb pool 0x1d0fd0640 + ru_2_cc_0_idx_7: [ handle 0x7f6fe7383440 2 0 ] [nPoolIndex 7] nNumberOfBuffers 35840 nBufferSize 14432 + CC:[ handle 0x7f6fe7383440 ru 2 cc_idx 0 ] [nPoolIndex 7] mb pool 0x1cc340000 + ru_2_cc_0_idx_8: [ handle 0x7f6fe7383440 2 0 ] [nPoolIndex 8] nNumberOfBuffers 1146880 nBufferSize 32 + CC:[ handle 0x7f6fe7383440 ru 2 cc_idx 0 ] [nPoolIndex 8] mb pool 0x1ac38a1c0 + ru_2_cc_0_idx_9: [ handle 0x7f6fe7383440 2 0 ] [nPoolIndex 9] nNumberOfBuffers 35840 nBufferSize 12560 + CC:[ handle 0x7f6fe7383440 ru 2 cc_idx 0 ] [nPoolIndex 9] mb pool 0x183c07b80 + port [2] gnb_io_xran_init_cp + port [2] init xran successfully + O-DU: XRAN start time: 08/11/20 23:05:24.384220762 UTC [500] + BBU Pooling: enter multicell Activate! + BBU Pooling Info: bbupool rt thread start on CoreIdx 14 coreId 33 at 118352443946329 at sf=0 with queue 0 successfully + BBU Pooling Info: bbupool rt thread start on CoreIdx 1 coreId 5 at 118352443939667 at sf=0 with queue 0 successfully + BBU Pooling Info: bbupool rt thread start on CoreIdx 11 coreId 30 at 118352443942535 at sf=0 with queue 0 successfully + BBU Pooling Info: bbupool rt thread start on CoreIdx 8 coreId 12 at 118352443944575 at sf=0 with queue 0 successfully + BBU Pooling: active result: Q_id = 0,currenSf = 0, curCellNum = 0, activesfn = 4, CellNumInActSfn = 3 + BBU Pooling Info: bbupool rt thread start on CoreIdx 2 coreId 6 at 118352443929961 at sf=0 with queue 0 successfully + BBU Pooling Info: bbupool rt thread start on CoreIdx 15 coreId 34 at 118352443933301 at sf=0 with queue 0 successfully + BBU Pooling: multiCell Activate sucessfully! + BBU Pooling Info: bbupool rt thread start on CoreIdx 13 coreId 32 at 118352443935245 at sf=0 with queue 0 successfully + BBU Pooling Info: bbupool rt thread start on CoreIdx 4 coreId 8 at 118352443936745 at sf=0 with queue 0 successfully + BBU Pooling Info: bbupool rt thread start on CoreIdx 6 coreId 10 at 118352443936883 at sf=0 with queue 0 successfully + BBU Pooling Info: bbupool rt thread start on CoreIdx 3 coreId 7 at 118352443936747 at sf=0 with queue 0 successfully + BBU Pooling Info: bbupool rt thread start on CoreIdx 12 coreId 31 at 118352443938019 at sf=0 with queue 0 successfully + BBU Pooling Info: bbupool rt thread start on CoreIdx 5 coreId 9 at 118352443939937 at sf=0 with queue 0 successfully + BBU Pooling Info: bbupool rt thread start on CoreIdx 9 coreId 28 at 118352443941217 at sf=0 with queue 0 successfully + BBU Pooling Info: bbupool rt thread start on CoreIdx 16 coreId 35 at 118352443944465 at sf=0 with queue 0 successfully + BBU Pooling Info: bbupool rt thread start on CoreIdx 17 coreId 36 at 118352443937701 at sf=0 with queue 0 successfully + BBU Pooling Info: bbupool rt thread start on CoreIdx 0 coreId 4 at 118352443926969 at sf=0 with queue 0 successfully + BBU Pooling Info: bbupool rt thread start on CoreIdx 10 coreId 29 at 118352443928691 at sf=0 with queue 0 successfully + BBU Pooling Info: bbupool rt thread start on CoreIdx 7 coreId 11 at 118352443931713 at sf=0 with queue 0 successfully + phy_bbupool_rx_handler: PhyId[0] nSfIdx[4] frame,slot[0,5] gNumSlotPerSfn[20] + ==== l1app Time: 5002 ms NumCarrier: 3 NumBbuCores: 18. Tti2Tti Time: [ 0.00.. 0.00.. 0.00] usces + ==== [o-du0][rx 3807776 pps 761555 kbps 4744396][tx 10937607 pps 2187521 kbps 26031486] [on_time 3807776 early 0 late 0 corrupt 0 pkt_dupl 144 Total 3807776] + Pusch[ 439372 439372 439372 439372 439372 439372 439372 439372] SRS[ 292800] + ==== [o-du1][rx 1469469 pps 293893 kbps 2684928][tx 3649817 pps 729963 kbps 9156812] [on_time 1469469 early 0 late 0 corrupt 0 pkt_dupl 144 Total 1469469] + Pusch[ 146964 146956 146964 146956 146964 146956 146964 146956] SRS[ 293788] + ==== [o-du2][rx 1469463 pps 293892 kbps 2684960][tx 3648883 pps 729776 kbps 9152795] [on_time 1469463 early 0 late 0 corrupt 0 pkt_dupl 144 Total 1469463] + Pusch[ 146956 146956 146956 146956 146956 146956 146956 146956] SRS[ 293815] + ------------------------------------------------------------------------------------------------------------------------------------------------------- + Cell DL Tput UL Tput UL BLER + 0 (Kbps) 0 0 / 0 0.00% + 1 (Kbps) 0 0 / 0 0.00% + 2 (Kbps) 0 0 / 0 0.00% + ------------------------------------------------------------------------------------------------------------------------------------------------------- + Core Utilization [18 BBU core(s)]: + Core Id: 4 5 6 7 8 9 10 11 12 28 29 30 31 32 33 34 35 36 Avg + Util %: 0 4 2 4 4 2 3 13 17 0 13 15 14 16 14 17 15 14 9.28 + Xran Id: 22 23 24 25 Master Core Util: 85 % + ------------------------------------------------------------------------------------------------------------------------------------------------------- + ==== l1app Time: 10002 ms NumCarrier: 3 NumBbuCores: 18. Tti2Tti Time: [ 0.00.. 0.00.. 0.00] usces + ==== [o-du0][rx 5472406 pps 332926 kbps 4744396][tx 21871698 pps 2186818 kbps 26038405] [on_time 5472406 early 0 late 0 corrupt 0 pkt_dupl 144 Total 5472406] + Pusch[ 192084 192078 192078 192078 192078 192078 192078 192078] SRS[ 128000] + ==== [o-du1][rx 2109680 pps 128042 kbps 2684917][tx 7297930 pps 729622 kbps 9156922] [on_time 2109680 early 0 late 0 corrupt 0 pkt_dupl 144 Total 2109680] + Pusch[ 64026 64026 64026 64026 64026 64026 64026 64026] SRS[ 128004] + ==== [o-du2][rx 2109682 pps 128043 kbps 2684993][tx 7296833 pps 729590 kbps 9156258] [on_time 2109682 early 0 late 0 corrupt 0 pkt_dupl 144 Total 2109682] + Pusch[ 64026 64026 64026 64026 64026 64026 64026 64026] SRS[ 128011] + ------------------------------------------------------------------------------------------------------------------------------------------------------- + Cell DL Tput UL Tput UL BLER + 0 (Kbps) 6,894,368 576,420 / 576,492 0.00% + 1 (Kbps) 0 0 / 0 0.00% + 2 (Kbps) 0 0 / 0 0.00% + ------------------------------------------------------------------------------------------------------------------------------------------------------- + Core Utilization [18 BBU core(s)]: + Core Id: 4 5 6 7 8 9 10 11 12 28 29 30 31 32 33 34 35 36 Avg + Util %: 15 30 34 29 26 28 26 46 50 0 40 40 43 42 44 42 48 50 35.17 + Xran Id: 22 23 24 25 Master Core Util: 95 % + ------------------------------------------------------------------------------------------------------------------------------------------------------- + ==== l1app Time: 15003 ms NumCarrier: 3 NumBbuCores: 18. Tti2Tti Time: [ 0.00.. 0.00.. 0.00] usces + ==== [o-du0][rx 7136544 pps 332827 kbps 4744396][tx 32806663 pps 2186993 kbps 26042173] [on_time 7136544 early 0 late 0 corrupt 0 pkt_dupl 144 Total 7136544] + Pusch[ 192012 192018 192018 192018 192018 192018 192018 192018] SRS[ 128000] + ==== [o-du1][rx 2749728 pps 128009 kbps 2684895][tx 10945622 pps 729538 kbps 9155645] [on_time 2749728 early 0 late 0 corrupt 0 pkt_dupl 144 Total 2749728] + Pusch[ 64006 64006 64006 64006 64006 64006 64006 64006] SRS[ 128000] + ==== [o-du2][rx 2749730 pps 128009 kbps 2684840][tx 10944272 pps 729487 kbps 9154660] [on_time 2749730 early 0 late 0 corrupt 0 pkt_dupl 144 Total 2749730] + Pusch[ 64006 64006 64006 64006 64006 64006 64006 64006] SRS[ 128000] + ------------------------------------------------------------------------------------------------------------------------------------------------------- + Cell DL Tput UL Tput UL BLER + 0 (Kbps) 6,896,256 576,780 / 576,780 0.00% + 1 (Kbps) 539,740 65,260 / 65,260 0.00% + 2 (Kbps) 0 0 / 0 0.00% + ------------------------------------------------------------------------------------------------------------------------------------------------------- + Core Utilization [18 BBU core(s)]: + Core Id: 4 5 6 7 8 9 10 11 12 28 29 30 31 32 33 34 35 36 Avg + Util %: 27 33 40 38 38 35 34 56 56 26 50 47 48 47 51 48 57 57 43.78 + Xran Id: 22 23 24 25 Master Core Util: 95 % + ------------------------------------------------------------------------------------------------------------------------------------------------------- + Setting MLogMask because nMLogDelay == 0 + ==== l1app Time: 20002 ms NumCarrier: 3 NumBbuCores: 18. Tti2Tti Time: [480.00..500.23..516.00] usces + ==== [o-du0][rx 8799776 pps 332646 kbps 4744396][tx 43740623 pps 2186792 kbps 26042944] [on_time 8799776 early 0 late 0 corrupt 0 pkt_dupl 144 Total 8799776] + Pusch[ 191904 191904 191904 191904 191904 191904 191904 191904] SRS[ 128000] + ==== [o-du1][rx 3389472 pps 127948 kbps 2684982][tx 14591619 pps 729199 kbps 9154093] [on_time 3389472 early 0 late 0 corrupt 0 pkt_dupl 144 Total 3389472] + Pusch[ 63968 63968 63968 63968 63968 63968 63968 63968] SRS[ 128000] + ==== [o-du2][rx 3389474 pps 127948 kbps 2684873][tx 14589997 pps 729145 kbps 9152608] [on_time 3389474 early 0 late 0 corrupt 0 pkt_dupl 144 Total 3389474] + Pusch[ 63968 63968 63968 63968 63968 63968 63968 63968] SRS[ 128000] + ------------------------------------------------------------------------------------------------------------------------------------------------------- + Cell DL Tput UL Tput UL BLER + 0 (Kbps) 6,896,256 576,780 / 576,780 0.00% + 1 (Kbps) 539,814 65,260 / 65,260 0.00% + 2 (Kbps) 539,814 65,260 / 65,260 0.00% + ------------------------------------------------------------------------------------------------------------------------------------------------------- + Core Utilization [18 BBU core(s)]: + Core Id: 4 5 6 7 8 9 10 11 12 28 29 30 31 32 33 34 35 36 Avg + Util %: 43 47 46 43 42 43 41 61 60 27 57 56 58 57 55 56 64 62 51.00 + Xran Id: 22 23 24 25 Master Core Util: 96 % + ------------------------------------------------------------------------------------------------------------------------------------------------------- + ==== l1app Time: 25002 ms NumCarrier: 3 NumBbuCores: 18. Tti2Tti Time: [442.00..500.12..562.00] usces + ==== [o-du0][rx 10463824 pps 332809 kbps 4744396][tx 54675513 pps 2186978 kbps 26044150] [on_time 10463824 early 0 late 0 corrupt 0 pkt_dupl 144 Total 10463824] + Pusch[ 192006 192006 192006 192006 192006 192006 192006 192006] SRS[ 128000] + ==== [o-du1][rx 4029487 pps 128003 kbps 2684928][tx 18237287 pps 729133 kbps 9150163] [on_time 4029487 early 0 late 0 corrupt 0 pkt_dupl 144 Total 4029487] + Pusch[ 64002 64002 64002 64002 64002 64002 64002 64001] SRS[ 128000] + ==== [o-du2][rx 4029474 pps 128000 kbps 2684873][tx 18235338 pps 729068 kbps 9148513] [on_time 4029474 early 0 late 0 corrupt 0 pkt_dupl 144 Total 4029474] + Pusch[ 64000 64000 64000 64000 64000 64000 64000 64000] SRS[ 128000] + ------------------------------------------------------------------------------------------------------------------------------------------------------- + Cell DL Tput UL Tput UL BLER + 0 (Kbps) 6,896,256 576,492 / 576,492 0.00% + 1 (Kbps) 539,814 65,260 / 65,260 0.00% + 2 (Kbps) 539,814 65,260 / 65,260 0.00% + ------------------------------------------------------------------------------------------------------------------------------------------------------- + Core Utilization [18 BBU core(s)]: + Core Id: 4 5 6 7 8 9 10 11 12 28 29 30 31 32 33 34 35 36 Avg + Util %: 44 48 46 46 44 41 43 62 61 27 58 59 55 56 56 58 61 62 51.50 + Xran Id: 22 23 24 25 Master Core Util: 95 % + ------------------------------------------------------------------------------------------------------------------------------------------------------- + ==== l1app Time: 30002 ms NumCarrier: 3 NumBbuCores: 18. Tti2Tti Time: [435.00..500.12..562.00] usces + ==== [o-du0][rx 12127888 pps 332812 kbps 4744396][tx 65610457 pps 2186988 kbps 26044065] [on_time 12127888 early 0 late 0 corrupt 0 pkt_dupl 144 Total 12127888] + Pusch[ 192012 192006 192012 192006 192010 192006 192006 192006] SRS[ 128000] + ==== [o-du1][rx 4669504 pps 128003 kbps 2685058][tx 21883550 pps 729252 kbps 9152750] [on_time 4669504 early 0 late 0 corrupt 0 pkt_dupl 144 Total 4669504] + Pusch[ 64002 64002 64002 64002 64002 64002 64002 64003] SRS[ 128000] + ==== [o-du2][rx 4669498 pps 128004 kbps 2684993][tx 21881293 pps 729191 kbps 9151846] [on_time 4669498 early 0 late 0 corrupt 0 pkt_dupl 144 Total 4669498] + Pusch[ 64004 64004 64004 64004 64002 64002 64002 64002] SRS[ 128000] + ------------------------------------------------------------------------------------------------------------------------------------------------------- + Cell DL Tput UL Tput UL BLER + 0 (Kbps) 6,896,256 577,069 / 577,069 0.00% + 1 (Kbps) 539,814 65,260 / 65,260 0.00% + 2 (Kbps) 539,814 65,260 / 65,260 0.00% + ------------------------------------------------------------------------------------------------------------------------------------------------------- + Core Utilization [18 BBU core(s)]: + Core Id: 4 5 6 7 8 9 10 11 12 28 29 30 31 32 33 34 35 36 Avg + Util %: 44 47 45 47 43 43 42 63 63 27 56 56 56 55 58 55 65 62 51.50 + Xran Id: 22 23 24 25 Master Core Util: 95 % + ------------------------------------------------------------------------------------------------------------------------------------------------------- + ==== l1app Time: 35002 ms NumCarrier: 3 NumBbuCores: 18. Tti2Tti Time: [434.00..500.12..554.00] usces + ==== [o-du0][rx 13792256 pps 332873 kbps 4744892][tx 76545521 pps 2187012 kbps 26042901] [on_time 13792256 early 0 late 0 corrupt 0 pkt_dupl 144 Total 13792256] + Pusch[ 192042 192048 192042 192048 192044 192048 192048 192048] SRS[ 128000] + ==== [o-du1][rx 5309632 pps 128025 kbps 2685102][tx 25528867 pps 729063 kbps 9151639] [on_time 5309632 early 0 late 0 corrupt 0 pkt_dupl 144 Total 5309632] + Pusch[ 64016 64016 64016 64016 64016 64016 64016 64016] SRS[ 128000] + ==== [o-du2][rx 5309632 pps 128026 kbps 2685102][tx 25526238 pps 728989 kbps 9150147] [on_time 5309632 early 0 late 0 corrupt 0 pkt_dupl 144 Total 5309632] + Pusch[ 64016 64016 64016 64016 64018 64018 64017 64017] SRS[ 128000] + ------------------------------------------------------------------------------------------------------------------------------------------------------- + Cell DL Tput UL Tput UL BLER + 0 (Kbps) 6,896,256 576,780 / 576,780 0.00% + 1 (Kbps) 539,814 65,260 / 65,260 0.00% + 2 (Kbps) 539,814 65,260 / 65,260 0.00% + ------------------------------------------------------------------------------------------------------------------------------------------------------- + Core Utilization [18 BBU core(s)]: + Core Id: 4 5 6 7 8 9 10 11 12 28 29 30 31 32 33 34 35 36 Avg + Util %: 43 48 45 47 43 41 42 66 61 27 57 57 55 56 57 56 64 62 51.50 + Xran Id: 22 23 24 25 Master Core Util: 95 % + ------------------------------------------------------------------------------------------------------------------------------------------------------- + ==== l1app Time: 40002 ms NumCarrier: 3 NumBbuCores: 18. Tti2Tti Time: [440.00..500.12..553.00] usces + ==== [o-du0][rx 15455740 pps 332696 kbps 4744396][tx 87479892 pps 2186874 kbps 26042995] [on_time 15455740 early 0 late 0 corrupt 0 pkt_dupl 144 Total 15455740] + Pusch[ 191940 191940 191940 191940 191940 191940 191940 191940] SRS[ 127964] + ==== [o-du1][rx 5949408 pps 127955 kbps 2684764][tx 29174424 pps 729111 kbps 9150009] [on_time 5949408 early 0 late 0 corrupt 0 pkt_dupl 144 Total 5949408] + Pusch[ 63980 63980 63980 63980 63980 63980 63980 63980] SRS[ 127936] + ==== [o-du2][rx 5949410 pps 127955 kbps 2684840][tx 29171380 pps 729028 kbps 9148386] [on_time 5949410 early 0 late 0 corrupt 0 pkt_dupl 144 Total 5949410] + Pusch[ 63980 63980 63980 63980 63980 63980 63981 63981] SRS[ 127936] + ------------------------------------------------------------------------------------------------------------------------------------------------------- + Cell DL Tput UL Tput UL BLER + 0 (Kbps) 6,896,256 576,780 / 576,780 0.00% + 1 (Kbps) 539,814 65,260 / 65,260 0.00% + 2 (Kbps) 539,814 65,260 / 65,260 0.00% + ------------------------------------------------------------------------------------------------------------------------------------------------------- + Core Utilization [18 BBU core(s)]: + Core Id: 4 5 6 7 8 9 10 11 12 28 29 30 31 32 33 34 35 36 Avg + Util %: 44 48 44 45 42 42 43 63 63 27 57 56 55 58 56 56 64 62 51.39 + Xran Id: 22 23 24 25 Master Core Util: 95 % + ------------------------------------------------------------------------------------------------------------------------------------------------------- + ==== l1app Time: 45002 ms NumCarrier: 3 NumBbuCores: 18. Tti2Tti Time: [436.00..500.12..556.00] usces + ==== [o-du0][rx 17119776 pps 332807 kbps 4743900][tx 98415119 pps 2187045 kbps 26043843] [on_time 17119776 early 0 late 0 corrupt 0 pkt_dupl 144 Total 17119776] + Pusch[ 192000 192000 192000 192000 192000 192000 192000 192000] SRS[ 128036] + ==== [o-du1][rx 6589472 pps 128012 kbps 2684753][tx 32820214 pps 729158 kbps 9154170] [on_time 6589472 early 0 late 0 corrupt 0 pkt_dupl 144 Total 6589472] + Pusch[ 64000 64000 64000 64000 64000 64000 64000 64000] SRS[ 128064] + ==== [o-du2][rx 6589474 pps 128012 kbps 2684753][tx 32816780 pps 729080 kbps 9152613] [on_time 6589474 early 0 late 0 corrupt 0 pkt_dupl 144 Total 6589474] + Pusch[ 64000 64000 64000 64000 64000 64000 64000 64000] SRS[ 128064] + ------------------------------------------------------------------------------------------------------------------------------------------------------- + Cell DL Tput UL Tput UL BLER + 0 (Kbps) 6,896,256 576,780 / 576,780 0.00% + 1 (Kbps) 539,814 65,260 / 65,260 0.00% + 2 (Kbps) 539,814 65,260 / 65,260 0.00% + ------------------------------------------------------------------------------------------------------------------------------------------------------- + Core Utilization [18 BBU core(s)]: + Core Id: 4 5 6 7 8 9 10 11 12 28 29 30 31 32 33 34 35 36 Avg + Util %: 44 47 46 47 43 42 42 61 63 27 56 58 56 56 58 57 63 65 51.72 + Xran Id: 22 23 24 25 Master Core Util: 95 % + ------------------------------------------------------------------------------------------------------------------------------------------------------- + ==== l1app Time: 50002 ms NumCarrier: 3 NumBbuCores: 18. Tti2Tti Time: [436.00..500.12..551.00] usces + ==== [o-du0][rx 18783776 pps 332800 kbps 4744396][tx 109350065 pps 2186989 kbps 26043142] [on_time 18783776 early 0 late 0 corrupt 0 pkt_dupl 144 Total 18783776] + Pusch[ 192000 192000 192000 192000 192000 192000 192000 192000] SRS[ 128000] + ==== [o-du1][rx 7229472 pps 128000 kbps 2684928][tx 36466505 pps 729258 kbps 18302595] [on_time 7229472 early 0 late 0 corrupt 0 pkt_dupl 144 Total 7229472] + Pusch[ 64000 64000 64000 64000 64000 64000 64000 64000] SRS[ 128000] + ==== [o-du2][rx 7229474 pps 128000 kbps 2684895][tx 36462749 pps 729193 kbps 9148265] [on_time 7229474 early 0 late 0 corrupt 0 pkt_dupl 144 Total 7229474] + Pusch[ 64000 64000 64000 64000 64000 64000 64000 64000] SRS[ 128000] + ------------------------------------------------------------------------------------------------------------------------------------------------------- + Cell DL Tput UL Tput UL BLER + 0 (Kbps) 6,896,256 576,492 / 576,492 0.00% + 1 (Kbps) 539,814 65,260 / 65,260 0.00% + 2 (Kbps) 539,814 65,260 / 65,260 0.00% + ------------------------------------------------------------------------------------------------------------------------------------------------------- + Core Utilization [18 BBU core(s)]: + Core Id: 4 5 6 7 8 9 10 11 12 28 29 30 31 32 33 34 35 36 Avg + Util %: 43 47 45 47 43 41 41 62 63 27 57 55 57 56 55 57 62 66 51.33 + Xran Id: 22 23 24 25 Master Core Util: 95 % + ------------------------------------------------------------------------------------------------------------------------------------------------------- + +7. To execute testmac with O-DU functionality according to O-RAN Fronthaul specification, enter:: + + [root@xran flexran] cd ./bin/nr5g/gnb/testmac + +8. To execute test case type:: + + ./l2.sh --testfile=./cascade_lake-sp/csxsp_mu1_100mhz_mmimo_hton_xran.cfg + +where output corresponding to Test MAC:: + + root@icelake-scs1-1 testmac]# ./l2.sh --testfile=./icelake-sp/icxsp_mu1_100mhz_mmimo_64x64_hton_xran.cfg + kernel.sched_rt_runtime_us = -1 + kernel.shmmax = 2147483648 + kernel.shmall = 2147483648 + Note: Forwarding request to 'systemctl disable irqbalance.service'. + start 5GNR Test MAC + ========================= + 5GNR Testmac Application + ========================= + testmac_cfg_set_cfg_filename: Coult not find string 'cfgfile' in command line. Using default File: testmac_cfg.xml + + + --------------------------- + TestMacCfg.xml Version: 20.08 + --------------------------- + + --version=20.08 + --wls_dev_name=wls0 + --wlsMemorySize=0x3F600000 + --dpdkIovaMode=0 + --PhyStartMode=1 + --PhyStartPeriod=40 + --PhyStartCount=0 + --MlogSubframes=128 + --MlogCores=3 + --MlogSize=2048 + --latencyTest=0 + --wlsRxThread=1, 90, 0 + --systemThread=0, 0, 0 + --runThread=0, 89, 0 + --urllcThread=16, 90, 0 + + wls_dev_filename: wls0 + sys_reg_signal_handler:[err] signal handler in NULL + sys_reg_signal_handler:[err] signal handler in NULL + timer_set_tsc_freq_from_clock: System clock (rdtsc) resolution 1496523032 [Hz] + Ticks per usec 1496 + MLogOpen: filename(testmac-mlog.bin) mlogSubframes (128), mlogCores(3), mlogSize(2048) mlog_mask (-1) + mlogSubframes (128), mlogCores(3), mlogSize(2048) + localMLogTimerInit + System clock (rdtsc) resolution 1496526140 [Hz] + Ticks per us 1496 + MLog Storage: 0x7f821905d100 -> 0x7f821911d920 [ 788512 bytes ] + localMLogFreqReg: 1496. Storing: 1496 + Mlog Open successful + + Calling rte_eal_init: testmac -c1 --proc-type=auto --file-prefix wls0 --iova-mode=pa + EAL: Detected 48 lcore(s) + EAL: Detected 1 NUMA nodes + EAL: Auto-detected process type: SECONDARY + EAL: Multi-process socket /var/run/dpdk/wls0/mp_socket_29473_6b9e031eaf8b + EAL: Selected IOVA mode 'PA' + EAL: Probing VFIO support... + EAL: PCI device 0000:01:00.0 on NUMA socket 0 + EAL: probe driver: 8086:1533 net_e1000_igb + EAL: PCI device 0000:18:00.0 on NUMA socket 0 + EAL: probe driver: 8086:1563 net_ixgbe + EAL: PCI device 0000:18:00.1 on NUMA socket 0 + EAL: probe driver: 8086:1563 net_ixgbe + EAL: PCI device 0000:8c:00.0 on NUMA socket 0 + EAL: probe driver: 8086:d58 net_i40e + EAL: PCI device 0000:8c:00.1 on NUMA socket 0 + EAL: probe driver: 8086:d58 net_i40e + EAL: PCI device 0000:90:00.0 on NUMA socket 0 + EAL: probe driver: 8086:d58 net_i40e + EAL: PCI device 0000:90:00.1 on NUMA socket 0 + EAL: probe driver: 8086:d58 net_i40e + wls_lib: Open wls0 (DPDK memzone) + wls_lib: WLS_Open 0x43f600000 + wls_lib: link: 1 <-> 0 + wls_lib: Mode 1 + wls_lib: WLS shared management memzone: wls0 + wls_lib: hugePageSize on the system is 1073741824 + wls_lib: WLS_Alloc [1063256064] bytes + wls_lib: Connecting to remote peer ... + wls_lib: Connected to remote peer + wls_mac_create_mem_array: pMemArray[0xf354350] pMemArrayMemory[0x400000000] totalSize[1063256064] nBlockSize[262144] numBlocks[4056] + WLS_EnqueueBlock [1] + WLS inited ok [383] + + + =========================================================================================================== + TESTMAC VERSION + =========================================================================================================== + + $Version: #DIRTY# $ (x86) + IMG-date: Aug 5 2020 + IMG-time: 18:32:53 + =========================================================================================================== + + + =========================================================================================================== + Testmac threads in application + =========================================================================================================== + testmac_run_thread: [PID: 29477] binding on [CPU 0] [PRIO: 89] [POLICY: 1] + wls_mac_rx_task: [PID: 29476] binding on [CPU 1] [PRIO: 90] [POLICY: 1] + =========================================================================================================== + + testmac_set_phy_start: mode[1], period[40], count[0] + + testmac_run_load_files: + Loading DL Config Files: + testmac_run_parse_file Parsing config file: /home/vzakharc/master/../master_aux/flexran_l1_5g_test/dl/testmac_dl_mu0_5mhz.cfg + testmac_run_parse_file Parsing config file: /home/vzakharc/master/../master_aux/flexran_l1_5g_test/dl/testmac_dl_mu0_10mhz.cfg + testmac_run_parse_file Parsing config file: /home/vzakharc/master/../master_aux/flexran_l1_5g_test/dl/testmac_dl_mu0_20mhz.cfg + testmac_run_parse_file Parsing config file: /home/vzakharc/master/../master_aux/flexran_l1_5g_test/dl/testmac_dl_mu1_100mhz.cfg + testmac_run_parse_file Parsing config file: /home/vzakharc/master/../master_aux/flexran_l1_5g_test/dl/testmac_dl_mu3_100mhz.cfg + Loading UL Config Files: + testmac_run_parse_file Parsing config file: /home/vzakharc/master/../master_aux/flexran_l1_5g_test/ul/testmac_ul_mu0_5mhz.cfg + testmac_run_parse_file Parsing config file: /home/vzakharc/master/../master_aux/flexran_l1_5g_test/ul/testmac_ul_mu0_10mhz.cfg + testmac_run_parse_file Parsing config file: /home/vzakharc/master/../master_aux/flexran_l1_5g_test/ul/testmac_ul_mu0_20mhz.cfg + testmac_run_parse_file Parsing config file: /home/vzakharc/master/../master_aux/flexran_l1_5g_test/ul/testmac_ul_mu1_10mhz.cfg + testmac_run_parse_file Parsing config file: /home/vzakharc/master/../master_aux/flexran_l1_5g_test/ul/testmac_ul_mu1_20mhz.cfg + testmac_run_parse_file Parsing config file: /home/vzakharc/master/../master_aux/flexran_l1_5g_test/ul/testmac_ul_mu1_40mhz.cfg + testmac_run_parse_file Parsing config file: /home/vzakharc/master/../master_aux/flexran_l1_5g_test/ul/testmac_ul_mu1_100mhz.cfg + testmac_run_parse_file Parsing config file: /home/vzakharc/master/../master_aux/flexran_l1_5g_test/ul/testmac_ul_mu3_100mhz.cfg + Loading FD Config Files: + testmac_run_parse_file Parsing config file: /home/vzakharc/master/../master_aux/flexran_l1_5g_test/fd/testmac_fd_mu0_5mhz.cfg + testmac_run_parse_file Parsing config file: /home/vzakharc/master/../master_aux/flexran_l1_5g_test/fd/testmac_fd_mu0_10mhz.cfg + testmac_run_parse_file Parsing config file: /home/vzakharc/master/../master_aux/flexran_l1_5g_test/fd/testmac_fd_mu0_20mhz.cfg + testmac_run_parse_file Parsing config file: /home/vzakharc/master/../master_aux/flexran_l1_5g_test/fd/testmac_fd_mu1_40mhz.cfg + testmac_run_parse_file Parsing config file: /home/vzakharc/master/../master_aux/flexran_l1_5g_test/fd/testmac_fd_mu1_100mhz.cfg + testmac_run_parse_file Parsing config file: /home/vzakharc/master/../master_aux/flexran_l1_5g_test/fd/testmac_fd_mu3_100mhz.cfg + + TESTMAC DL TESTS: + Numerology[0] Bandwidth[5] + 1001 1002 1003 1004 1005 1006 1007 1008 + Numerology[0] Bandwidth[10] + 1001 1002 1003 1004 1005 1006 1007 1008 + Numerology[0] Bandwidth[20] + 1001 1002 1003 1004 1005 1006 1007 1008 + Numerology[1] Bandwidth[100] + 1200 1201 1202 1203 1204 1205 1206 1207 1210 1211 + 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 + 1222 1223 1224 1225 1226 1227 1228 1229 1230 1241 + 1242 1243 1244 1245 1250 1251 1252 1260 1261 1262 + 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 + 1300 1301 1302 1303 1304 1305 1402 1404 1408 1416 + 1500 1501 1502 1503 1504 1505 1506 2213 2214 2215 + 2217 2218 2219 2223 2224 2225 2227 2228 2229 2500 + 2501 2502 2503 2504 3213 3214 3215 3217 3218 3219 + 3223 3224 3225 3227 3228 3229 + Numerology[3] Bandwidth[100] + 1001 1002 1003 1005 1006 1007 1008 1009 1010 1011 + 1012 1013 1014 1015 1016 1017 1018 1019 1030 1031 + 1032 1033 2001 2002 2003 2030 2033 3001 3002 3003 + 3030 + + TESTMAC UL TESTS: + Numerology[0] Bandwidth[5] + 1001 1002 1003 1069 1070 1071 1072 1073 1074 1075 + 1076 1077 + Numerology[0] Bandwidth[10] + 1001 1002 1069 1070 1071 1072 1073 1074 1075 1076 + 1077 + Numerology[0] Bandwidth[20] + 1001 1002 1003 1004 1005 1006 1007 1008 1069 1070 + 1071 1072 1073 1074 1075 1076 1077 + Numerology[1] Bandwidth[10] + 1069 1070 1071 1072 1073 1074 1075 1076 1077 + Numerology[1] Bandwidth[20] + 1069 1070 1071 1072 1073 1074 1075 1076 1077 + Numerology[1] Bandwidth[40] + 1069 1070 1071 1072 1073 1074 1075 1076 1077 + Numerology[1] Bandwidth[100] + 1010 1030 1031 1032 1033 1034 1035 1036 1037 1038 + 1039 1040 1041 1042 1043 1070 1071 1072 1073 1074 + 1080 1081 1082 1083 1084 1085 1086 1087 1091 1092 + 1093 1094 1095 1096 1100 1101 1102 1103 1104 1105 + 1106 1107 1108 1110 1111 1113 1114 1115 1116 1117 + 1118 1119 1120 1121 1122 1123 1124 1130 1131 1132 + 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 + 1143 1150 1152 1153 1154 1155 1156 1157 1159 1160 + 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 + 1171 1172 1173 1200 1201 1202 1203 1204 1205 1206 + 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 + 1217 1218 1219 1220 1221 1222 1230 1231 1232 1233 + 1234 1235 1236 1237 1402 1404 1408 1416 1420 1421 + 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 + 1432 1433 1434 1435 1436 1437 1438 1500 1503 1504 + 1505 1506 1507 1508 1512 1513 1514 1515 1516 1540 + 1541 1542 1563 1564 1565 1566 1567 1568 1569 1570 + 1571 1572 1573 1574 1575 1576 1577 1600 1601 1602 + 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 + 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 + 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 + 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 + 1700 1701 1702 1969 1970 1971 1972 1973 1974 1975 + 1976 1977 2236 2237 3236 3237 + Numerology[3] Bandwidth[100] + 1001 1002 1003 1004 1005 1006 1007 1010 1011 1012 + 1013 1014 1015 1020 1021 1022 1023 1024 1025 1026 + 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 + 1037 1040 1041 1042 1043 1044 1045 1046 1050 1051 + 1052 1053 1054 1059 1060 1061 1062 1063 1064 1065 + 1066 1067 1070 1071 1073 1074 1081 1082 1083 1084 + 1085 1086 2001 2002 2003 3001 3002 3003 + + TESTMAC FD TESTS: + Numerology[0] Bandwidth[5] + 1001 6001 8001 10001 12001 + Numerology[0] Bandwidth[10] + 1001 2001 4001 6001 8001 10001 12001 1002 2002 4002 + 6002 8002 10002 12002 1003 + Numerology[0] Bandwidth[20] + 1002 1004 1012 1014 1015 1016 1017 1018 1020 1021 + 1022 1023 1024 1025 1030 1031 1032 1033 1200 1201 + 1202 1206 1207 1208 1209 1210 1211 1212 1220 1221 + 1222 1223 1224 1225 1226 1227 1228 + Numerology[1] Bandwidth[40] + 1001 1002 1003 + Numerology[1] Bandwidth[100] + 1001 1002 1200 1201 1202 1203 1204 1205 1206 1207 + 1208 1209 1210 1300 1301 1302 1303 1304 1305 1306 + 1307 1308 1350 1351 1352 1353 1354 1355 1356 1357 + 1358 1359 1370 1371 1372 1373 1374 1375 1376 1377 + 1378 1401 1402 1403 1404 1405 1406 1411 1412 1490 + 1494 1500 1501 1502 1503 1504 1510 1511 1512 1513 + 1514 1515 1520 1521 1522 1523 1524 1525 1526 1527 + 1528 1529 1530 1531 1532 1540 1541 1700 1701 1702 + 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 + 2530 2531 2532 3524 3525 3526 3527 3528 3529 3530 + 3531 3532 4524 4525 4526 4527 4528 4529 4530 4531 + 4532 + Numerology[3] Bandwidth[100] + 1001 1002 1004 1005 1006 1007 1008 1009 1010 1011 + 1012 1013 1014 1015 1061 1062 1063 1064 1065 1080 + 1081 1082 2001 3001 + testmac_run_parse_file Parsing config file: ./icelake-sp/icxsp_mu1_100mhz_mmimo_64x64_hton_xran.cfg + testmac_set_phy_start: mode[4], period[0], count[100200] + Adding setoption pdsch_split [numTests: 0] [nCellMask: 0x00000001] [nOption: 4] [pMacOptions: 260 / 0x00000104] + Adding setoption pdsch_dl_weight_split [numTests: 0] [nCellMask: 0x00000001] [nOption: 4] [pMacOptions: 260 / 0x00000104] + Adding setoption pusch_chan_est_split [numTests: 0] [nCellMask: 0x00000001] [nOption: 2] [pMacOptions: 258 / 0x00000102] + Adding setoption pusch_mmse_split [numTests: 0] [nCellMask: 0x00000001] [nOption: 4] [pMacOptions: 260 / 0x00000104] + Adding setoption pusch_llr_rx_split [numTests: 0] [nCellMask: 0x00000001] [nOption: 2] [pMacOptions: 258 / 0x00000102] + Adding setoption pusch_ul_weight_split [numTests: 0] [nCellMask: 0x00000001] [nOption: 2] [pMacOptions: 258 / 0x00000102] + Adding setoption timer_multi_cell [numTests: 0] [nCellMask: 0xffffffff] [nOption: 10000] [pMacOptions: 10000 / 0x00002710] + Adding setoption fec_dec_num_iter [numTests: 0] [nCellMask: 0xffffffff] [nOption: 3] [pMacOptions: -253 / 0xffffff03] + Adding SetCoreMask[numTests: 0][setCoreCnt: 0]. CoreMask[137170526192 / 0x0000001ff0001ff0] + Adding SetDlbeamCoreMask[numTests: 0][setCoreCnt: 0]. CoreMask[2016 / 0x00000000000007e0] + Adding SetSrsCoreMask[numTests: 0][setCoreCnt: 0]. CoreMask[268435472 / 0x0000000010000010] + Setting Testmac System Core: 2 + Setting Testmac Run Core: 2 + Setting Testmac Wls Core: 3 + Adding Test[3370]. NumCarr[3], Current Directory: /home/vzakharc/master/../master_aux/flexran_l1_5g_test/ + Carrier[0]: ConfigFile: fd/mu1_100mhz/376/fd_testconfig_tst376.cfg + Carrier[1]: ConfigFile: fd/mu1_100mhz/377/fd_testconfig_tst377.cfg + Carrier[2]: ConfigFile: fd/mu1_100mhz/377/fd_testconfig_tst377.cfg + + testmac_set_multi_cell_timer: 10000 + + + + + ---------------------------------------------------------------------------------------- + Running Test[3370]. NumCarr[3], Current Directory: /home/vzakharc/master/../master_aux/flexran_l1_5g_test/ + Carrier[0]: ConfigFile: fd/mu1_100mhz/376/fd_testconfig_tst376.cfg + Carrier[1]: ConfigFile: fd/mu1_100mhz/377/fd_testconfig_tst377.cfg + Carrier[2]: ConfigFile: fd/mu1_100mhz/377/fd_testconfig_tst377.cfg + TESTMAC>welcome to application console + + MLogRestart + MLogOpen: filename(testmac-mlog.bin) mlogSubframes (128), mlogCores(3), mlogSize(2048) mlog_mask (-1) + mlogSubframes (128), mlogCores(3), mlogSize(2048) + localMLogTimerInit + System clock (rdtsc) resolution 1496525908 [Hz] + Ticks per us 1496 + MLog Storage: 0x7f8208000900 -> 0x7f82080c1120 [ 788512 bytes ] + localMLogFreqReg: 1496. Storing: 1496 + Mlog Open successful + + testmac_mac2phy_set_num_cells: Setting Max Cells: 3 + testmac_config_parse: test_num[3370] test_type[2] numcarrier[3] + Queueing MSG_TYPE_PHY_UL_IQ_SAMPLES(0) + Queueing MSG_TYPE_PHY_UL_IQ_SAMPLES(1) + Queueing MSG_TYPE_PHY_UL_IQ_SAMPLES(2) + Received MSG_TYPE_PHY_UL_IQ_SAMPLES(0) + Queueing MSG_TYPE_PHY_CONFIG_REQ(0) + Received MSG_TYPE_PHY_UL_IQ_SAMPLES(1) + Queueing MSG_TYPE_PHY_CONFIG_REQ(1) + Received MSG_TYPE_PHY_UL_IQ_SAMPLES(2) + Queueing MSG_TYPE_PHY_CONFIG_REQ(2) and sending list + Received MSG_TYPE_PHY_CONFIG_RESP(0) + Queueing MSG_TYPE_PHY_START_REQ(0) + Received MSG_TYPE_PHY_CONFIG_RESP(1) + Queueing MSG_TYPE_PHY_START_REQ(1) + Received MSG_TYPE_PHY_CONFIG_RESP(2) + Queueing MSG_TYPE_PHY_START_REQ(2) and sending list + Received MSG_TYPE_PHY_START_RESP(0) + Received MSG_TYPE_PHY_START_RESP(1) + Received MSG_TYPE_PHY_START_RESP(2) + ==== testmac Time: 5000 ms NumCarrier: 3 Total Proc Time: [ 0.00.. 6.30.. 19.00] usces==== + Core Utilization [Core: 3] [Util %: 0.42%] + ==== testmac Time: 10000 ms NumCarrier: 3 Total Proc Time: [ 6.00..116.80..206.00] usces==== + Core Utilization [Core: 3] [Util %: 27.86%] + ==== testmac Time: 20000 ms NumCarrier: 3 Total Proc Time: [ 10.00..156.33..260.00] usces==== + Core Utilization [Core: 3] [Util %: 32.31%] + ==== testmac Time: 25000 ms NumCarrier: 3 Total Proc Time: [ 11.00..156.33..260.00] usces==== + Core Utilization [Core: 3] [Util %: 32.30%] + ==== testmac Time: 30000 ms NumCarrier: 3 Total Proc Time: [ 11.00..156.44..256.00] usces==== + Core Utilization [Core: 3] [Util %: 32.32%] + ==== testmac Time: 35000 ms NumCarrier: 3 Total Proc Time: [ 11.00..156.42..258.00] usces==== + Core Utilization [Core: 3] [Util %: 32.32%] + ==== testmac Time: 40000 ms NumCarrier: 3 Total Proc Time: [ 11.00..156.45..258.00] usces==== + Core Utilization [Core: 3] [Util %: 32.33%] + ==== testmac Time: 45000 ms NumCarrier: 3 Total Proc Time: [ 11.00..156.40..282.00] usces==== + Core Utilization [Core: 3] [Util %: 32.32%] + + TESTMAC>==== testmac Time: 50000 ms NumCarrier: 3 Total Proc Time: [ 11.00..156.39..260.00] usces==== + Core Utilization [Core: 3] [Util %: 32.31%] + Received MSG_TYPE_PHY_STOP_RESP(0) + Queueing MSG_TYPE_PHY_SHUTDOWN_REQ(0) + Received MSG_TYPE_PHY_STOP_RESP(1) + Queueing MSG_TYPE_PHY_SHUTDOWN_REQ(1) + Received MSG_TYPE_PHY_STOP_RESP(2) + Queueing MSG_TYPE_PHY_SHUTDOWN_REQ(2) and sending list + Received MSG_TYPE_PHY_SHUTDOWN_RESP(2) + Received MSG_TYPE_PHY_SHUTDOWN_RESP(0) + Received MSG_TYPE_PHY_SHUTDOWN_RESP(1) + MLogPrint: ext_filename((null).bin) + Opening MLog File: testmac-mlog-c0.bin + MLog file testmac-mlog-c0.bin closed + Mlog Print successful + Test[FD_mu1_100mhz_3370] Completed + wls_mac_free_list_all: + nTotalBlocks[4056] nAllocBlocks[1010] nFreeBlocks[3046] + nTotalAllocCnt[4538427] nTotalFreeCnt[4537417] Diff[1010] + nDlBufAllocCnt[3609068] nDlBufFreeCnt[3609068] Diff[0] + nUlBufAllocCnt[929359] nUlBufFreeCnt[928349] Diff[1010] + + All Tests Completed, Total run 1 Tests, PASS 1 Tests, and FAIL 0 Tests diff --git a/docs/Transport-Layer-and-ORAN-Fronthaul-Protocol-Implementation_fh.rst b/docs/Transport-Layer-and-ORAN-Fronthaul-Protocol-Implementation_fh.rst index 1a64844..ebbe262 100644 --- a/docs/Transport-Layer-and-ORAN-Fronthaul-Protocol-Implementation_fh.rst +++ b/docs/Transport-Layer-and-ORAN-Fronthaul-Protocol-Implementation_fh.rst @@ -1,1456 +1,1599 @@ -.. 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. - -.. |br| raw:: html - -
- -Transport Layer and ORAN Fronthaul Protocol Implementation -========================================================== - -.. contents:: - :depth: 3 - :local: - -This chapter describes how the transport layer and ORAN Fronthaul -protocol are implemented. - -.. _introduction-2: - -Introduction ------------- - -Figure 8 presents an overview of the ORAN Fronthaul process. - -.. image:: images/ORAN-Fronthaul-Process.jpg - :width: 600 - :alt: Figure 8. ORAN Fronthaul Process - -Figure 8. ORAN Fronthaul Process - -The XRAN library provides support for transporting In-band and -Quadrature (IQ) samples between the O-DU and O-RU within the xRAN -architecture based on functional split 7.2x. The library defines the -xRAN packet formats to be used to transport radio samples within Front -Haul according to the ORAN Fronthaul specification. It provides -functionality for generating xRAN packets, appending IQ samples in the -packet payload, and extracting IQ samples from xRAN packets. - -Note: The Bronze release version of the library supports U-plane and C-plane only. It is ready to be used in the PTP synchronized environment. - -Note: Regarding the clock model and synchronization topology, configurations -C1 and C3 of the connection between O-DU and O-RU are the only -configurations supported in this release of the xRAN implementation. - -Note: Quality of PTP synchronization with respect to S-plane of ORAN -Fronthaul requirements as defined for O-RU is out of the scope of this -document. PTP primary and PTP secondary configuration are expected to satisfy -only the O-DU side of requirements and provide the “best-effort” PTP primary for -O-RU. This may or may not be sufficient for achieving the end to end -system requirements of S-plane. Specialized dedicated NIC card with -additional HW functionality might be required to achieve PTP primary -functionality to satisfy O-RU precision requirements for RAN deployments -scenarios. - -.. image:: images/Configuration-C1.jpg - :width: 600 - :alt: Figure 9. Configuration C1 - -Figure 9. Configuration C1 - - -.. image:: images/Configuration-C3.jpg - :width: 600 - :alt: Figure 10. Configuration C3 - -Figure 10. Configuration C3 - -Supported Feature Set ---------------------- - -The ORAN Fronthaul specification defines a list of mandatory -functionality. Not all features defined as Mandatory for O-DU are -currently supported to fully extended. The following tables contain -information on what is available and the level of validation performed -for this release. - -Note. Cells with a red background are listed as mandatory in the -specification but not supported in this implementation of xRAN. - -Table 7. ORAN Mandatory and Optional Feature Support - -+-----------------+-----------------+-----------+----------------+ -| Category | Feature | O-DU | Support | -| | | Support | | -+=================+=================+===========+================+ -| RU Category | Support for | Mandatory | Y | -| | CAT-A RU (up to | | | -| | 8 spatial | | | -| | streams) | | | -+-----------------+-----------------+-----------+----------------+ -| | Support for |   | Y | -| | CAT-A RU (> 8 | | | -| | spatial | | | -| | streams) | | | -+-----------------+-----------------+-----------+----------------+ -| | Support for | Mandatory | Y | -| | CAT-B RU | | | -| | (precoding in | | | -| | RU) | | | -+-----------------+-----------------+-----------+----------------+ -| Beamforming | Beam Index | Mandatory | Y | -| | based | | | -+-----------------+-----------------+-----------+----------------+ -| | Real-time BF | Mandatory | Y | -| | Weights | | | -+-----------------+-----------------+-----------+----------------+ -| | Real-Time |   | N | -| | Beamforming | | | -| | Attributes | | | -+-----------------+-----------------+-----------+----------------+ -| | UE Channel Info |   | N | -+-----------------+-----------------+-----------+----------------+ -| Bandwidth | Programmable | Mandatory | Y | -| Saving | static-bit-width| | | -| | Fixed Point IQ | | | -+-----------------+-----------------+-----------+----------------+ -| | Real-time | | Y | -| | variable-bit | | | -| | -width | | | -+-----------------+-----------------+-----------+----------------+ -| | Compressed IQ |   | Y | -+-----------------+-----------------+-----------+----------------+ -| | Block floating |   | Y | -| | point | | | -| | compression | | | -+-----------------+-----------------+-----------+----------------+ -| | Block scaling |   | N | -| | compression | | | -+-----------------+-----------------+-----------+----------------+ -| | u-law |   | N | -| | compression | | | -+-----------------+-----------------+-----------+----------------+ -| | modulation |   | N | -| | compression | | | -+-----------------+-----------------+-----------+----------------+ -| | beamspace |   | N | -| | compression | | | -+-----------------+-----------------+-----------+----------------+ -| | Variable Bit |   | Y | -| | Width per | | | -| | Channel (per | | | -| | data section) | | | -+-----------------+-----------------+-----------+----------------+ -| | Static |   | N | -| | configuration | | | -| | of U-Plane IQ | | | -| | format and | | | -| | compression | | | -| | header | | | -+-----------------+-----------------+-----------+----------------+ -| | Use of “symInc” |   | N | -| | flag to allow | | | -| | multiple | | | -| | symbols in a | | | -| | C-Plane section | | | -+-----------------+-----------------+-----------+----------------+ -| Energy Saving | Transmission |   | N | -| | blanking | | | -+-----------------+-----------------+-----------+----------------+ -| O-DU - RU | Pre-configured | Mandatory | Y | -| Timing | Transport Delay | | | -| | Method | | | -+-----------------+-----------------+-----------+----------------+ -| | Measured |   | N | -| | Transport | | | -| | Method (eCPRI | | | -| | Msg 5) | | | -+-----------------+-----------------+-----------+----------------+ -| Synchronization | G.8275.1 | Mandatory | Y (C3 only)| -| | | | | -+-----------------+-----------------+-----------+----------------+ -| | G.8275.2 |   | N | -+-----------------+-----------------+-----------+----------------+ -| | GNSS based sync |   | N | -+-----------------+-----------------+-----------+----------------+ -| | SyncE |   | N | -+-----------------+-----------------+-----------+----------------+ -| Transport | L2 : Ethernet | Mandatory | Y | -| Features | | | | -+-----------------+-----------------+-----------+----------------+ -| | L3 : IPv4, IPv6 |   | N | -| | (CUS Plane) | | | -+-----------------+-----------------+-----------+----------------+ -| | QoS over | Mandatory | N | -| | Fronthaul | | | -+-----------------+-----------------+-----------+----------------+ -| | Prioritization |   | N | -| | of different | | | -| | U-plane traffic | | | -| | types | | | -+-----------------+-----------------+-----------+----------------+ -| | Support of |   | N | -| | Jumbo Ethernet | | | -| | frames | | | -+-----------------+-----------------+-----------+----------------+ -| | eCPRI | Mandatory | Y | -+-----------------+-----------------+-----------+----------------+ -| | support of |   | N | -| | eCPRI | | | -| | concatenation | | | -+-----------------+-----------------+-----------+----------------+ -| | IEEE 1914.3 |   | N | -+-----------------+-----------------+-----------+----------------+ -| | Application | Mandatory | Y | -| | fragmentation | | | -+-----------------+-----------------+-----------+----------------+ -| | Transport |   | N | -| | fragmentation | | | -+-----------------+-----------------+-----------+----------------+ -| Other | LAA LBT O-DU |   | N | -| | Congestion | | | -| | Window mgmt | | | -+-----------------+-----------------+-----------+----------------+ -| | LAA LBT RU |   | N | -| | Congestion | | | -| | Window mgmt | | | -+-----------------+-----------------+-----------+----------------+ - -Details on the subset of xRAN functionality implemented are shown in -Table 8. - -Level of Validation Specified as: - - -- C: Completed code implementation for xRAN Library - -- I: Integrated into Intel FlexRAN PHY - -- T: Tested end to end with O-RU - -Table 8. Levels of Validation - -+------------+------------+------------+------------+-----+-----+---+ -| Category | Item | Q4 (20.04) | | | | | -+============+============+============+============+=====+=====+===+ -| | | Status | C | I | T | | -+------------+------------+------------+------------+-----+-----+---+ -| General | Radio | NR | N/A | N/A | N/A | | -| | access | | | | | | -| | technology | | | | | | -| | (LTE / NR) | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | Nominal | 15 | Y | Y | N | | -| | s\ | /30/120KHz | | | | | -| | ub-carrier | | | | | | -| | spacing | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | FFT size | 512/1024 | Y | Y | N | | -| | | /2048/4096 | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | Channel | 5/10 | Y | Y | N | | -| | bandwidth | /20/100Mhz | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | Number of | 12 | Y | Y | N | | -| | the | | | | | | -| | channel | | | | | | -| | (Component | | | | | | -| | Carrier) | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | RU | A | Y | Y | N | | -| | category | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | TDD Config | Supporte\ | Y | Y | N | | -| | | d/Flexible | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | FDD | Supported | Y | Y | N | | -| | Support | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | Tx/Rx | Supported | Y | Y | N | | -| | switching | | | | | | -| | based on | | | | | | -| | 'data | | | | | | -| | Direction' | | | | | | -| | field of | | | | | | -| | C-plane | | | | | | -| | message | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | IP version | N/A | N/A | N/A | N/A | | -| | for | | | | | | -| | Management | | | | | | -| | traffic at | | | | | | -| | fronthaul | | | | | | -| | network | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| PRACH | One Type 3 | Supported | Y | Y | N | | -| | message | | | | | | -| | for all | | | | | | -| | repeated | | | | | | -| | PRACH | | | | | | -| | preambles | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | Type 3 | 1 | Y | Y | N | | -| | message | | | | | | -| | per | | | | | | -| | repeated | | | | | | -| | PRACH | | | | | | -| | preambles | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | timeOffset | Supported | Y | Y | N | | -| | including | | | | | | -| | cpLength | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | Supported | Supported | Y | Y | N | | -+------------+------------+------------+------------+-----+-----+---+ -| | PRACH | Supported | Y | Y | N | | -| | preamble | | | | | | -| | format / | | | | | | -| | index | | | | | | -| | number | | | | | | -| | (number of | | | | | | -| | the | | | | | | -| | occasion) | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| Delay | Network | Supported | Y | Y | N | | -| management | delay | | | | | | -| | det\ | | | | | | -| | ermination | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | lls-CU | Supported | Y | Y | N | | -| | timing | | | | | | -| | advance | | | | | | -| | type | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | Non-delay | Not | N | N | N | | -| | managed | supported | | | | | -| | U-plane | | | | | | -| | traffic | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| C/U-plane | Transport | Ethernet | Y | Y | N | | -| Transport | enc\ | | | | | | -| | apsulation | | | | | | -| | (Ethernet | | | | | | -| | / IP) | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | Jumbo | Supported | Y | Y | N | | -| | frames | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | Transport | eCPRI | Y | Y | N | | -| | header | | | | | | -| | (eCPRI / | | | | | | -| | RoE) | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | IP version | N/A | N/A | N/A | N/A | | -| | when | | | | | | -| | Transport | | | | | | -| | header is | | | | | | -| | IP/UDP | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | eCPRI | Not | N | N | N | | -| | Con\ | supported | | | | | -| | catenation | | | | | | -| | when | | | | | | -| | Transport | | | | | | -| | header is | | | | | | -| | eCPRI | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | eAxC ID | 4 \* | Y | Y | N | | -| | CU_Port_ID | | | | | | -| | bitwidth | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | eAxC ID | 4 \* | Y | Y | N | | -| | Ban\ | | | | | | -| | dSector_ID | | | | | | -| | bitwidth | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | eAxC ID | 4 \* | Y | Y | N | | -| | CC_ID | | | | | | -| | bitwidth | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | eAxC ID | 4 \* | Y | Y | N | | -| | RU_Port_ID | | | | | | -| | bitwidth | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | Fra\ | Supported | Y | Y | N | | -| | gmentation | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | Transport | N/A | N | N | N | | -| | prio\ | | | | | | -| | ritization | | | | | | -| | within | | | | | | -| | U-plane | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | Separation | Supported | Y | Y | N | | -| | of | | | | | | -| | C/U-plane | | | | | | -| | and | | | | | | -| | M-plane | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | Separation | VLAN ID | Y | Y | N | | -| | of C-plane | | | | | | -| | and | | | | | | -| | U-plane | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | Max Number | 16 | Y | Y | N | | -| | of VLAN | | | | | | -| | per | | | | | | -| | physical | | | | | | -| | port | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| Reception | Rx_on_time | Supported | Y | Y | N | | -| Window | | | | | | | -| Monitoring | | | | | | | -| (Counters) | | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | Rx_early | Supported | N | N | N | | -+------------+------------+------------+------------+-----+-----+---+ -| | Rx_late | Supported | N | N | N | | -+------------+------------+------------+------------+-----+-----+---+ -| | Rx_corrupt | Supported | N | N | N | | -+------------+------------+------------+------------+-----+-----+---+ -| | R\ | Supported | N | N | N | | -| | x_pkt_dupl | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | Total | Supported | Y | N | N | | -| | _msgs_rcvd | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| B\ | RU | Index and | Y | Y | N | | -| eamforming | b\ | weights | | | | | -| | eamforming | | | | | | -| | type | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | B\ | C-plane | Y | N | N | | -| | eamforming | | | | | | -| | control | | | | | | -| | method | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | Number of | No-re | Y | Y | N | | -| | beams | strictions | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| IQ | U-plane | Supported | Y | Y | Y | | -| c\ | data | | | | | | -| ompression | c\ | | | | | | -| | ompression | | | | | | -| | method | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | U-plane | BFP: | Y | Y | Y | | -| | data IQ | 8,9,12,14 | | | | | -| | bitwidth | bits | | | | | -| | (Before / | | | | | | -| | After | | | | | | -| | co | | | | | | -| | mpression) | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | Static | Supported | N | N | N | | -| | con\ | | | | | | -| | figuration | | | | | | -| | of U-plane | | | | | | -| | IQ format | | | | | | -| | and | | | | | | -| | c\ | | | | | | -| | ompression | | | | | | -| | header | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| eCPRI | ec\ | 001b | Y | Y | Y | | -| Header | priVersion | | | | | | -| Format | | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | ecp\ | Supported | Y | Y | Y | | -| | riReserved | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | ecpriCon\ | Not | N | N | N | | -| | catenation | supported | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | ec\ | U-plane | Supported | Y | Y | Y | -| | priMessage | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | C-plane | Supported | Y | Y | Y | -+------------+------------+------------+------------+-----+-----+---+ -| | | Delay | Not | N | N | N | -| | | m\ | supported | | | | -| | | easurement | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | ec\ | Supported | Y | Y | Y | | -| | priPayload | | | | | | -| | (payload | | | | | | -| | size in | | | | | | -| | bytes) | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | ecpriRtcid | Supported | Y | Y | Y | | -| | /ecpriPcid | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | e\ | Supported | Y | Y | Y | | -| | cpriSeqid: | | | | | | -| | Sequence | | | | | | -| | ID | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | e\ | Supported | Y | Y | Y | | -| | cpriSeqid: | | | | | | -| | E bit | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | e\ | Not | N | N | N | | -| | cpriSeqid: | supported | | | | | -| | S\ | | | | | | -| | ubsequence | | | | | | -| | ID | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| C-plane | Section | Not | N | N | N | | -| Type | Type 0 | supported | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | Section | Supported | Y | Y | Y | | -| | Type 1 | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | Section | Supported | Y | Y | Y | | -| | Type 3 | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | Section | Not | N | N | N | | -| | Type 5 | supported | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | Section | Not | N | N | N | | -| | Type 6 | supported | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | Section | Not | N | N | N | | -| | Type 7 | supported | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| C-plane | *Coding of | dat\ | Supported | Y | Y | N | -| Packet | I\ | aDirection | | | | | -| Format | nformation | (data | | | | | -| | Elements – | direction | | | | | -| | A\ | (gNB | | | | | -| | pplication | Tx/Rx)) | | | | | -| | Layer, | | | | | | -| | Common* | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | payl\ | 001b | Y | Y | N | -| | | oadVersion | | | | | -| | | (payload | | | | | -| | | version) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | f\ | Supported | Y | Y | N | -| | | ilterIndex | | | | | -| | | (filter | | | | | -| | | index) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | frameId | Supported | Y | Y | N | -| | | (frame | | | | | -| | | i\ | | | | | -| | | dentifier) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | subframeId | Supported | Y | Y | N | -| | | (subframe | | | | | -| | | i\ | | | | | -| | | dentifier) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | slotId | Supported | Y | Y | N | -| | | (slot | | | | | -| | | i\ | | | | | -| | | dentifier) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | sta\ | Supported | Y | Y | N | -| | | rtSymbolid | | | | | -| | | (start | | | | | -| | | symbol | | | | | -| | | i\ | | | | | -| | | dentifier) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | number | up to the | Y | Y | N | -| | | Ofsections | maximum | | | | -| | | (number of | number of | | | | -| | | sections) | PRBs | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | s\ | 1 and 3 | Y | Y | N | -| | | ectionType | | | | | -| | | (section | | | | | -| | | type) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | udCompHdr | Supported | Y | Y | N | -| | | (user data | | | | | -| | | c\ | | | | | -| | | ompression | | | | | -| | | header) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | n\ | Not | N | N | N | -| | | umberOfUEs | supported | | | | -| | | (number Of | | | | | -| | | UEs) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | timeOffset | Supported | Y | Y | N | -| | | (time | | | | | -| | | offset) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | fram\ | mu=0,1,3 | Y | Y | N | -| | | eStructure | | | | | -| | | (frame | | | | | -| | | structure) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | cpLength | Supported | Y | Y | N | -| | | (cyclic | | | | | -| | | prefix | | | | | -| | | length) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | *Coding of | sectionId | Supported | Y | Y | N | -| | I\ | (section | | | | | -| | nformation | i\ | | | | | -| | Elements – | dentifier) | | | | | -| | A\ | | | | | | -| | pplication | | | | | | -| | Layer, | | | | | | -| | Sections* | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | rb | 0 | Y | Y | N | -| | | (resource | | | | | -| | | block | | | | | -| | | indicator) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | symInc | 0 or 1 | Y | Y | N | -| | | (symbol | | | | | -| | | number | | | | | -| | | increment | | | | | -| | | command) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | startPrbc | Supported | Y | Y | N | -| | | (starting | | | | | -| | | PRB of | | | | | -| | | control | | | | | -| | | section) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | reMask | Supported | Y | Y | N | -| | | (resource | | | | | -| | | element | | | | | -| | | mask) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | numPrbc | Supported | Y | Y | N | -| | | (number of | | | | | -| | | contiguous | | | | | -| | | PRBs per | | | | | -| | | control | | | | | -| | | section) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | numSymbol | Supported | Y | Y | N | -| | | (number of | | | | | -| | | symbols) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | ef | Supported | Y | Y | N | -| | | (extension | | | | | -| | | flag) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | beamId | Support | Y | Y | N | -| | | (beam | | | | | -| | | i\ | | | | | -| | | dentifier) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | ueId (UE | Not | N | N | N | -| | | i\ | supported | | | | -| | | dentifier) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | freqOffset | Supported | Y | Y | N | -| | | (frequency | | | | | -| | | offset) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | regulariza\| Not | N | N | N | -| | | tionFactor | supported | | | | -| | | (regu\ | | | | | -| | | larization | | | | | -| | | Factor) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | ciIsample, | Not | N | N | N | -| | | ciQsample | supported | | | | -| | | (channel | | | | | -| | | i\ | | | | | -| | | nformation | | | | | -| | | I and Q | | | | | -| | | values) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | laaMsgType | Not | N | N | N | -| | | (LAA | supported | | | | -| | | message | | | | | -| | | type) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | laaMsgLen | Not | N | N | N | -| | | (LAA | supported | | | | -| | | message | | | | | -| | | length) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | lbtHandle | Not | N | N | N | -| | | | supported | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | lbtD\ | Not | N | N | N | -| | | eferFactor | supported | | | | -| | | (listen-b | | | | | -| | | efore-talk | | | | | -| | | defer | | | | | -| | | factor) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | lbtBack | Not | N | N | N | -| | | offCounter | supported | | | | -| | | (listen-b\ | | | | | -| | | efore-talk | | | | | -| | | backoff | | | | | -| | | counter) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | lbtOffset | Not | N | N | N | -| | | (listen-b\ | supported | | | | -| | | efore-talk | | | | | -| | | offset) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | MCOT | Not | N | N | N | -| | | (maximum | supported | | | | -| | | channel | | | | | -| | | occupancy | | | | | -| | | time) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | lbtMode | Not | N | N | N | -| | | (LBT Mode) | supported | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | l\ | Not | N | N | N | -| | | btPdschRes | supported | | | | -| | | (LBT PDSCH | | | | | -| | | Result) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | sfStatus | Not | N | N | N | -| | | (subframe | supported | | | | -| | | status) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | lbtDrsRes | Not | N | N | N | -| | | (LBT DRS | supported | | | | -| | | Result) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | initia\ | Not | N | N | N | -| | | lPartialSF | supported | | | | -| | | (Initial | | | | | -| | | partial | | | | | -| | | SF) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | lbtBufErr | Not | N | N | N | -| | | (LBT | supported | | | | -| | | Buffer | | | | | -| | | Error) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | sfnSf | Not | N | N | N | -| | | (SFN/SF | supported | | | | -| | | End) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | lbt | Not | N | N | N | -| | | CWConfig_H | supported | | | | -| | | (HARQ | | | | | -| | | Parameters | | | | | -| | | for | | | | | -| | | Congestion | | | | | -| | | Window | | | | | -| | | m | | | | | -| | | anagement) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | lbt | Not | N | N | N | -| | | CWConfig_T | supported | | | | -| | | (TB | | | | | -| | | Parameters | | | | | -| | | for | | | | | -| | | Congestion | | | | | -| | | Window | | | | | -| | | m | | | | | -| | | anagement) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | lbtTr\ | Not | N | N | N | -| | | afficClass | supported | | | | -| | | (Traffic | | | | | -| | | class | | | | | -| | | priority | | | | | -| | | for | | | | | -| | | Congestion | | | | | -| | | Window | | | | | -| | | m | | | | | -| | | anagement) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | lbtCWR_Rst | Not | N | N | N | -| | | (No | supported | | | | -| | | tification | | | | | -| | | about | | | | | -| | | packet | | | | | -| | | reception | | | | | -| | | successful | | | | | -| | | or not) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | reserved | 0 | N | N | N | -| | | (reserved | | | | | -| | | for future | | | | | -| | | use) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | *Section |   |   |   |   | -| | | Extension | | | | | -| | | Commands* | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | extType | Supported | Y | Y | N | -| | | (extension | | | | | -| | | type) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | ef | Supported | Y | Y | N | -| | | (extension | | | | | -| | | flag) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | extLen | Supported | Y | Y | N | -| | | (extension | | | | | -| | | length) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | Coding of |   |   |   |   | | -| | I\ | | | | | | -| | nformation | | | | | | -| | Elements – | | | | | | -| | A\ | | | | | | -| | pplication | | | | | | -| | Layer, | | | | | | -| | Section | | | | | | -| | E\ | | | | | | -| | xtensions | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | *ExtType=1:| bfwCompHdr | Supported | Y | Y | N | -| | B\ | (beam\ | | | | | -| | eamforming | forming | | | | | -| | Weights | weight | | | | | -| | Extension | c\ | | | | | -| | Type* | ompression | | | | | -| | | header) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | bf | Supported | Y | Y | N | -| | | wCompParam | | | | | -| | | (b\ | | | | | -| | | eamforming | | | | | -| | | weight | | | | | -| | | c\ | | | | | -| | | ompression | | | | | -| | | parameter) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | bfwl | Supported | Y | Y | N | -| | | (b\ | | | | | -| | | eamforming | | | | | -| | | weight | | | | | -| | | in-phase | | | | | -| | | value) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | bfwQ | Supported | Y | Y | N | -| | | (b\ | | | | | -| | | eamforming | | | | | -| | | weight | | | | | -| | | quadrature | | | | | -| | | value) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | bfaCompHdr | Not | Y | N | N | -| | *ExtType=2:| (b\ | supported | | | | -| | B\ | eamforming | | | | | -| | eamforming | attributes | | | | | -| | Attributes | c\ | | | | | -| | Extension | ompression | | | | | -| | Type* | header) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | bfAzPt | Not | Y | N | N | -| | | (b\ | supported | | | | -| | | eamforming | | | | | -| | | azimuth | | | | | -| | | pointing | | | | | -| | | parameter) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | bfZePt | Not | Y | N | N | -| | | (b\ | supported | | | | -| | | eamforming | | | | | -| | | zenith | | | | | -| | | pointing | | | | | -| | | parameter) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | bfAz3dd | Not | Y | N | N | -| | | (b | supported | | | | -| | | eamforming | | | | | -| | | azimuth | | | | | -| | | beamwidth | | | | | -| | | parameter) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | bfZe3dd | Not | Y | N | N | -| | | (b\ | supported | | | | -| | | eamforming | | | | | -| | | zenith | | | | | -| | | beamwidth | | | | | -| | | parameter) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | bfAzSl | Not | Y | N | N | -| | | (b\ | supported | | | | -| | | eamforming | | | | | -| | | azimuth | | | | | -| | | sidelobe | | | | | -| | | parameter) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | bfZeSl | Not | Y | N | N | -| | | (b\ | supported | | | | -| | | eamforming | | | | | -| | | zenith | | | | | -| | | sidelobe | | | | | -| | | parameter) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | ze\ | Not | Y | N | N | -| | | ro-padding | supported | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | cod | Not | N | N | N | -| | *ExtType=3:| ebookIndex | supported | | | | -| | DL | (precoder | | | | | -| | Precoding | codebook | | | | | -| | Extension | used for | | | | | -| | Type* | tra | | | | | -| | | nsmission) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | layerID | Not | N | N | N | -| | | (Layer ID | supported | | | | -| | | for DL | | | | | -| | | tra\ | | | | | -| | | nsmission) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | txScheme | Not | N | N | N | -| | | (tr | supported | | | | -| | | ansmission | | | | | -| | | scheme) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | numLayers | Not | N | N | N | -| | | (number of | supported | | | | -| | | layers | | | | | -| | | used for | | | | | -| | | DL | | | | | -| | | tra\ | | | | | -| | | nsmission) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | crsReMask | Not | N | N | N | -| | | (CRS | supported | | | | -| | | resource | | | | | -| | | element | | | | | -| | | mask) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | c | Not | N | N | N | -| | | rsSyumINum | supported | | | | -| | | (CRS | | | | | -| | | symbol | | | | | -| | | number | | | | | -| | | i\ | | | | | -| | | ndication) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | crsShift | Not | N | N | N | -| | | (crsShift | supported | | | | -| | | used for | | | | | -| | | DL | | | | | -| | | tra\ | | | | | -| | | nsmission) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | beamIdAP1 | Not | N | N | N | -| | | (beam id | supported | | | | -| | | to be used | | | | | -| | | for | | | | | -| | | antenna | | | | | -| | | port 1) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | beamIdAP2 | Not | N | N | N | -| | | (beam id | supported | | | | -| | | to be used | | | | | -| | | for | | | | | -| | | antenna | | | | | -| | | port 2) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | beamIdAP3 | Not | N | N | N | -| | | (beam id | supported | | | | -| | | to be used | | | | | -| | | for | | | | | -| | | antenna | | | | | -| | | port 3) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | csf | Not | Y | N | N | -| | *ExtType=4:| (con\ | supported | | | | -| | Modulation | stellation | | | | | -| | C\ | shift | | | | | -| | ompression | flag) | | | | | -| | Parameters | | | | | | -| | Extension | | | | | | -| | Type* | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | mod | Not | Y | N | N | -| | | CompScaler | supported | | | | -| | | ( | | | | | -| | | modulation | | | | | -| | | c\ | | | | | -| | | ompression | | | | | -| | | scaler | | | | | -| | | value) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | mcS\ | Not | Y | N | N | -| | *ExtType=5:| caleReMask | supported | | | | -| | Modulation | ( | | | | | -| | C\ | modulation | | | | | -| | ompression | c\ | | | | | -| | Additional | ompression | | | | | -| | Parameters | power | | | | | -| | Extension | scale RE | | | | | -| | Type* | mask) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | csf | Not | Y | N | N | -| | | (con\ | supported | | | | -| | | stellation | | | | | -| | | shift | | | | | -| | | flag) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | | mcS | Not | Y | N | N | -| | | caleOffset | supported | | | | -| | | (scaling | | | | | -| | | value for | | | | | -| | | modulation | | | | | -| | | co\ | | | | | -| | | mpression) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| U-plane | dat | Supported | Y | Y | Y | | -| Packet | aDirection | | | | | | -| Format | (data | | | | | | -| | direction | | | | | | -| | (gNB | | | | | | -| | Tx/Rx)) | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | payl\ | 001b | Y | Y | Y | | -| | oadVersion | | | | | | -| | (payload | | | | | | -| | version) | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | f\ | Supported | Y | Y | Y | | -| | ilterIndex | | | | | | -| | (filter | | | | | | -| | index) | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | frameId | Supported | Y | Y | Y | | -| | (frame | | | | | | -| | i\ | | | | | | -| | dentifier) | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | subframeId | Supported | Y | Y | Y | | -| | (subframe | | | | | | -| | i\ | | | | | | -| | dentifier) | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | slotId | Supported | Y | Y | Y | | -| | (slot | | | | | | -| | i | | | | | | -| | dentifier) | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | symbolId | Supported | Y | Y | Y | | -| | (symbol | | | | | | -| | i\ | | | | | | -| | dentifier) | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | sectionId | Supported | Y | Y | Y | | -| | (section | | | | | | -| | i\ | | | | | | -| | dentifier) | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | rb | 0 | Y | Y | Y | | -| | (resource | | | | | | -| | block | | | | | | -| | indicator) | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | symInc | 0 | Y | Y | Y | | -| | (symbol | | | | | | -| | number | | | | | | -| | increment | | | | | | -| | command) | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | startPrbu | Supported | Y | Y | Y | | -| | (s\ | | | | | | -| | tartingPRB | | | | | | -| | of user | | | | | | -| | plane | | | | | | -| | section) | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | numPrbu | Supported | Y | Y | Y | | -| | (number of | | | | | | -| | PRBs per | | | | | | -| | user plane | | | | | | -| | section) | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | udCompHdr | Supported | Y | Y | N | | -| | (user data | | | | | | -| | c\ | | | | | | -| | ompression | | | | | | -| | header) | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | reserved | 0 | Y | Y | Y | | -| | (reserved | | | | | | -| | for future | | | | | | -| | use) | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | u\ | Supported | Y | Y | N | | -| | dCompParam | | | | | | -| | (user data | | | | | | -| | c\ | | | | | | -| | ompression | | | | | | -| | parameter) | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | iSample | 16 | Y | Y | Y | | -| | (in-phase | | | | | | -| | sample) | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | qSample | 16 | Y | Y | Y | | -| | ( | | | | | | -| | quadrature | | | | | | -| | sample) | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| S-plane | Topology | Supported | N | N | N | | -| | conf\ | | | | | | -| | iguration: | | | | | | -| | C1 | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | Topology | Supported | N | N | N | | -| | conf\ | | | | | | -| | iguration: | | | | | | -| | C2 | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | Topology | Supported | Y | Y | Y | | -| | conf\ | | | | | | -| | iguration: | | | | | | -| | C3 | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | Topology | Supported | N | N | N | | -| | conf\ | | | | | | -| | iguration: | | | | | | -| | C4 | | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| | PTP | Full | Supported | Y | Y | N | -| | | Timing | | | | | -| | | Support | | | | | -| | | (G.8275.1) | | | | | -+------------+------------+------------+------------+-----+-----+---+ -| M-plane |   |   | Not | N | N | N | -| | | | supported | | | | -+------------+------------+------------+------------+-----+-----+---+ - -\* The bit width of each component in eAxC ID can be configurable. - -Transport Layer ---------------- - -ORAN Fronthaul data can be transported over Ethernet or IPv4/IPv6. In -the current implementation, the xRAN library supports only Ethernet with -VLAN. - -.. image:: images/Native-Ethernet-Frame-with-VLAN.jpg - :width: 600 - :alt: Figure 11. Native Ethernet Frame with VLAN - -Figure 11. Native Ethernet Frame with VLAN - - -Standard DPDK routines are used to perform Transport Layer -functionality. - -VLAN tag functionality is offloaded to NIC as per the configuration of -VF (refer to Appendix Appendix 1). - -The transport header is defined in the ORAN Fronthaul specification -based on the eCPRI specification. - -.. image:: images/eCPRI-Header-Field-Definitions.jpg - :width: 600 - :alt: Figure 12. eCPRI Header Field Definitions - -Figure 12. eCPRI Header Field Definitions - -Only ECPRI_IQ_DATA = 0x00 and ECPRI_RT_CONTROL_DATA= 0x02 message types -are supported. - -Handling of ecpriRtcid/ecpriPcid Bit field size is configurable and can -be defined on the initialization stage of the xRAN library. - -.. image:: images/Bit-Allocations-of-ecpriRtcid-ecpriPcid.jpg - :width: 600 - :alt: Figure 13. Bit Allocations of ecpriRtcid/ecpriPcid - -Figure 13. Bit Allocations of ecpriRtcid/ecpriPcid - -For ecpriSeqid only, the support for a sequence number is implemented. -The subsequent number is not supported. - -U-plane -------- - -The following diagrams show xRAN packet protocols’ headers and data -arrangement with and without compression support. - -XRAN packet meant for traffic with compression enabled has the -Compression Header added after each Application Header. According to -ORAN Fronthaul's specification, the Compression Header is part of a -repeated Section Application Header. In the xRAN library implementation, -the header is implemented as a separate structure, following the -Application Section Header. As a result, the Compression Header is not -included in the xRAN packet, if compression is not used. - -Figure 14 shows the components of an xRAN packet. - -.. image:: images/xRAN-Packet-Components.jpg - :width: 600 - :alt: Figure 14. xRAN Packet Components - -Figure 14. xRAN Packet Components - -Radio Application Header -~~~~~~~~~~~~~~~~~~~~~~~~ - -The next header is a common header used for time reference. - -.. image:: images/Radio-Application-Header.jpg - :width: 600 - :alt: Figure 15. Radio Application Header - -Figure 15. Radio Application Header - -The radio application header specific field values are implemented as -follows: - -- filterIndex = 0 - -- frameId = [0:99] - -- subframeId = [0:9] - -- slotId = [0:7] - -- symbolId = [0:13] - -Data Section Application Data Header -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The Common Radio Application Header is followed by the Application -Header that is repeated for each Data Section within the eCPRI message. -The relevant section of xRAN packet is shown in color. - -.. image:: images/Data-Section-Application-Data-Header.jpg - :width: 600 - :alt: Figure 16. Data Section Application Data Header - -Figure 16. Data Section Application Data Header - - -A single section is used per one Ethernet packet with IQ samples -startPrbu is equal to 0 and numPrbu is wqual to the number of RBs used: - -- rb field is not used (value 0). - -- symInc is not used (value 0) - -Data Payload -~~~~~~~~~~~~ - -An xRAN packet data payload contains a number of PRBs. Each PRB is built -of 12 IQ samples. Flexible IQ bit width is supported. If compression is enabled udCompParam is included in the data payload. The data section is shown in colour. - -.. image:: images/Data-Payload.jpg - :width: 600 - :alt: Figure 17. Data Payload - -Figure 17. Data Payload - -C-plane -------- - -C-Plane messages are encapsulated using a two-layered header approach. -The first layer consists of an eCPRI standard header, including -corresponding fields used to indicate the message type, while the second -layer is an application layer including necessary fields for control and -synchronization. Within the application layer, a “section” defines the characteristics of U-plane data to be transferred or received from a -beam with one pattern id. In general, the transport header,application -header, and sections are all intended to be aligned on 4-byte boundaries -and are transmitted in “network byte order” meaning the most significant -byte of a multi-byte parameter is transmitted first. - -Table 9 is a list of sections currently supported. - -Table 9. Section Types - -+--------------+--------------------------+--------------------------+ -| Section Type | Target Scenario | Remarks | -+--------------+--------------------------+--------------------------+ -| 0 | Unused Resource Blocks | Not supported | -| | or symbols in Downlink | | -| | or Uplink | | -+--------------+--------------------------+--------------------------+ -| 1 | Most DL/UL radio | Supported | -| | channels | | -+--------------+--------------------------+--------------------------+ -| 2 | reserved for future use | N/A | -+--------------+--------------------------+--------------------------+ -| 3 | PRACH and | Only PRACH is supported. | -| | mixed-numerology | Mixed numerology is not | -| | channels | supported. | -+--------------+--------------------------+--------------------------+ -| 4 | Reserved for future use | Not supported | -+--------------+--------------------------+--------------------------+ -| 5 | UE scheduling | Not supported | -| | information (UE-ID | | -| | assignment to section) | | -+--------------+--------------------------+--------------------------+ -| 6 | Channel information | Not supported | -+--------------+--------------------------+--------------------------+ -| 7 | LAA | Not supported | -+--------------+--------------------------+--------------------------+ -| 8-255 | Reserved for future use | N/A | -+--------------+--------------------------+--------------------------+ - -Section extensions are not supported in this release. - -The definition of the C-Plane packet can be found lib/api/xran_pkt_cp.h -and the fields are appropriately re-ordered in order to apply the -conversion of network byte order after setting values. -The comments in source code of xRAN lib can be used to see more information on -implementation specifics of handling sections as well as particular fields. -Additional changes may be needed on C-plane to perform IOT with O-RU depending on the scenario. - -Ethernet Header -~~~~~~~~~~~~~~~ - -Refer to Figure 11. - -eCPRI Header -~~~~~~~~~~~~ - -Refer to Figure 12. - -This header is defined as the structure of xran_ecpri_hdr in -lib/api/xran_pkt.h. - -Radio Application Common Header -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The Radio Application Common Header is used for time reference. Its -structure is shown in Figure 18. - -.. image:: images/Radio-Application-Common-Header.jpg - :width: 600 - :alt: Figure 18. Radio Application Common Header - -Figure 18. Radio Application Common Header - -This header is defined as the structure of -xran_cp_radioapp_common_header in lib/api/xran_pkt_cp.h. - -Please note that the payload version in this header is fixed to -XRAN_PAYLOAD_VER (defined as 1) in this release. - -Section Type 0 Structure -~~~~~~~~~~~~~~~~~~~~~~~~ - -Figure 19 describes the structure of Section Type 0. - -.. image:: images/Section-Type-0-Structure.jpg - :width: 600 - :alt: Figure 19. Section Type 0 Structure - -Figure 19. Section Type 0 Structure - -In Figure 18 through Figure 22, the color yellow means it is a transport -header; the color pink is the radio application header; others are -repeated sections. - -Section Type 1 Structure -~~~~~~~~~~~~~~~~~~~~~~~~ - -Figure 20 describes the structure of Section Type 1. - -.. image:: images/Section-Type-1-Structure.jpg - :width: 600 - :alt: Figure 20. Section Type 1 Structure - -Figure 20. Section Type 1 Structure - -Section Type 1 message has two additional parameters in addition to -radio application common header: - -- udCompHdr : defined as the structure of xran_radioapp_udComp_header - -- reserved : fixed by zero - -Section type 1 is defined as the structure of xran_cp_radioapp_section1, -and this part can be repeated to have multiple sections. - -Whole section type 1 message can be described in this summary: - -+----------------------------------+ -| xran_cp_radioapp_common_header | -+==================================+ -| xran_cp_radioapp_section1_header | -+----------------------------------+ -| xran_cp_radioapp_section1 | -+----------------------------------+ -| …… | -+----------------------------------+ -| xran_cp_radioapp_section1 | -+----------------------------------+ - -Section Type 3 Structure -~~~~~~~~~~~~~~~~~~~~~~~~ - -Figure 21 describes the structure of Section Type 3. - -.. image:: images/Section-Type-3-Structure.jpg - :width: 600 - :alt: Figure 21. Section Type 3 Structure - -Figure 21. Section Type 3 Structure - -Section Type 3 message has below four additional parameters in addition -to radio application common header. - -- timeOffset - -- frameStructure: defined as the structure of - xran_cp_radioapp_frameStructure - -- cpLength - -- udCompHdr: defined as the structure of xran_radioapp_udComp_header - -Section Type 3 is defined as the structure of xran_cp_radioapp_section3 -and this part can be repeated to have multiple sections. - -Whole section type 3 message can be described in this summary: - -+----------------------------------+ -| xran_cp_radioapp_common_header | -+==================================+ -| xran_cp_radioapp_section3_header | -+----------------------------------+ -| xran_cp_radioapp_section3 | -+----------------------------------+ -| …… | -+----------------------------------+ -| xran_cp_radioapp_section3 | -+----------------------------------+ - -Section Type 5 Structure -~~~~~~~~~~~~~~~~~~~~~~~~ - -Figure 22 describes the structure of Section Type 5. - -.. image:: images/Section-Type-5-Structure.jpg - :width: 600 - :alt: Figure 22. Section Type 5 Structure - -Figure 22. Section Type 5 Structure - - -Section Type 6 Structure -~~~~~~~~~~~~~~~~~~~~~~~~ - -Figure 23 describes the structure of Section Type 6. - -.. image:: images/Section-Type-6-Structure.jpg - :width: 600 - :alt: Figure 23. Section Type 6 Structure - -Figure 23. Section Type 6 Structure - +.. 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. + +.. |br| raw:: html + +
+ +Transport Layer and O-RAN Fronthaul Protocol Implementation +=========================================================== + +.. contents:: + :depth: 3 + :local: + +This chapter describes how the transport layer and O-RAN Fronthaul +protocol are implemented. + +.. _introduction-2: + +Introduction +------------ + +Figure 8 presents an overview of the O-RAN Fronthaul process. + +.. image:: images/ORAN-Fronthaul-Process.jpg + :width: 600 + :alt: Figure 8. O-RAN Fronthaul Process + +Figure 8. O-RAN Fronthaul Process + +The XRAN library provides support for transporting In-band and +Quadrature (IQ) samples between the O-DU and O-RU within the xRAN +architecture based on functional split 7.2x. The library defines the +xRAN packet formats to be used to transport radio samples within Front +Haul according to the O-RAN Fronthaul specification. It provides +functionality for generating xRAN packets, appending IQ samples in the +packet payload, and extracting IQ samples from xRAN packets. + +Note: The Bronze release version of the library supports U-plane and C-plane only. It is ready to be used in the PTP synchronized environment. + +Note: Regarding the clock model and synchronization topology, configurations +C1 and C3 of the connection between O-DU and O-RU are the only +configurations supported in this release of the xRAN implementation. + +Note: Quality of PTP synchronization with respect to S-plane of O-RAN +Fronthaul requirements as defined for O-RU is out of the scope of this +document. PTP primary and PTP secondary configuration are expected to satisfy +only the O-DU side of requirements and provide the “best-effort” PTP primary for +O-RU. This may or may not be sufficient for achieving the end to end +system requirements of S-plane. Specialized dedicated NIC card with +additional HW functionality might be required to achieve PTP primary +functionality to satisfy O-RU precision requirements for RAN deployments +scenarios. + +.. image:: images/Configuration-C1.jpg + :width: 600 + :alt: Figure 9. Configuration C1 + +Figure 9. Configuration C1 + + +.. image:: images/Configuration-C3.jpg + :width: 600 + :alt: Figure 10. Configuration C3 + +Figure 10. Configuration C3 + +Supported Feature Set +--------------------- + +The O-RAN Fronthaul specification defines a list of mandatory +functionality. Not all features defined as Mandatory for O-DU are +currently supported to fully extended. The following tables contain +information on what is available and the level of validation performed +for this release. + +Note. Cells with a red background are listed as mandatory in the +specification but not supported in this implementation of xRAN. + +Table 7. ORAN Mandatory and Optional Feature Support + ++-----------------+-----------------+-----------+----------------+ +| Category | Feature | O-DU | Support | +| | | Support | | ++=================+=================+===========+================+ +| RU Category | Support for | Mandatory | Y | +| | CAT-A RU (up to | | | +| | 8 spatial | | | +| | streams) | | | +| +-----------------+-----------+----------------+ +| | Support for | | Y | +| | CAT-A RU (> 8 | | | +| | spatial | | | +| | streams) | | | +| +-----------------+-----------+----------------+ +| | Support for | Mandatory | Y | +| | CAT-B RU | | | +| | (precoding in | | | +| | RU) | | | ++-----------------+-----------------+-----------+----------------+ +| Beamforming | Beam Index | Mandatory | Y | +| | based | | | +| +-----------------+-----------+----------------+ +| | Real-time BF | Mandatory | Y | +| | Weights | | | +| +-----------------+-----------+----------------+ +| | Real-Time |   | N | +| | Beamforming | | | +| | Attributes | | | +| +-----------------+-----------+----------------+ +| | UE Channel Info |   | N | ++-----------------+-----------------+-----------+----------------+ +| Bandwidth | Programmable | Mandatory | Y | +| Saving | static-bit-width| | | +| | Fixed Point IQ | | | +| +-----------------+-----------+----------------+ +| | Real-time | | Y | +| | variable-bit | | | +| | -width | | | +| +-----------------+-----------+----------------+ +| | Compressed IQ |   | Y | +| +-----------------+-----------+----------------+ +| | Block floating |   | Y | +| | point | | | +| | compression | | | +| +-----------------+-----------+----------------+ +| | Block scaling |   | N | +| | compression | | | +| +-----------------+-----------+----------------+ +| | u-law |   | N | +| | compression | | | +| +-----------------+-----------+----------------+ +| | modulation |   | Y | +| | compression | | | +| +-----------------+-----------+----------------+ +| | beamspace |   | Y | +| | compression | | | +| +-----------------+-----------+----------------+ +| | Variable Bit |   | Y | +| | Width per | | | +| | Channel (per | | | +| | data section) | | | +| +-----------------+-----------+----------------+ +| | Static |   | N | +| | configuration | | | +| | of U-Plane IQ | | | +| | format and | | | +| | compression | | | +| | header | | | +| +-----------------+-----------+----------------+ +| | Use of “symInc” |   | N | +| | flag to allow | | | +| | multiple | | | +| | symbols in a | | | +| | C-Plane section | | | ++-----------------+-----------------+-----------+----------------+ +| Energy Saving | Transmission |   | N | +| | blanking | | | ++-----------------+-----------------+-----------+----------------+ +| O-DU - RU | Pre-configured | Mandatory | Y | +| Timing | Transport Delay | | | +| | Method | | | +| +-----------------+-----------+----------------+ +| | Measured |   | N | +| | Transport | | | +| | Method (eCPRI | | | +| | Msg 5) | | | ++-----------------+-----------------+-----------+----------------+ +| Synchronization | G.8275.1 | Mandatory | Y (C3 only)| +| | | | | +| +-----------------+-----------+----------------+ +| | G.8275.2 |   | N | +| +-----------------+-----------+----------------+ +| | GNSS based sync |   | N | +| +-----------------+-----------+----------------+ +| | SyncE |   | N | ++-----------------+-----------------+-----------+----------------+ +| Transport | L2 : Ethernet | Mandatory | Y | +| Features | | | | +| +-----------------+-----------+----------------+ +| | L3 : IPv4, IPv6 |   | N | +| | (CUS Plane) | | | +| +-----------------+-----------+----------------+ +| | QoS over | Mandatory | Y | +| | Fronthaul | | | +| +-----------------+-----------+----------------+ +| | Prioritization |   | N | +| | of different | | | +| | U-plane traffic | | | +| | types | | | +| +-----------------+-----------+----------------+ +| | Support of |   | N | +| | Jumbo Ethernet | | | +| | frames | | | +| +-----------------+-----------+----------------+ +| | eCPRI | Mandatory | Y | +| +-----------------+-----------+----------------+ +| | support of |   | N | +| | eCPRI | | | +| | concatenation | | | +| +-----------------+-----------+----------------+ +| | IEEE 1914.3 |   | N | +| +-----------------+-----------+----------------+ +| | Application | Mandatory | Y | +| | fragmentation | | | +| +-----------------+-----------+----------------+ +| | Transport |   | N | +| | fragmentation | | | ++-----------------+-----------------+-----------+----------------+ +| Other | LAA LBT O-DU |   | N | +| | Congestion | | | +| | Window mgmt | | | +| +-----------------+-----------+----------------+ +| | LAA LBT RU |   | N | +| | Congestion | | | +| | Window mgmt | | | ++-----------------+-----------------+-----------+----------------+ + +Details on the subset of O-RAN functionality implemented are shown in +Table 8. + +Level of Validation Specified as: + + +- C: Completed code implementation for xRAN Library + +- I: Integrated into Intel FlexRAN PHY + +- T: Tested end to end with O-RU + +Table 8. Levels of Validation + ++------------+------------+------------+------------+-----+-----+-----+ +| Category | Item | Status | C | I | T | ++============+============+============+============+=====+=====+=====+ +| General | Radio | NR | N/A | N/A | N/A | +| | access | | | | | +| | technology | | | | | +| | (LTE / NR) | | | | | +| +------------+------------+------------+-----+-----+-----+ +| | Nominal | 15 | Y | Y | N | +| | s\ | /30/120KHz | | | | +| | ub-carrier | | | | | +| | spacing | | | | | +| +------------+------------+------------+-----+-----+-----+ +| | FFT size | 512/1024 | Y | Y | N | +| | | /2048/4096 | | | | +| +------------+------------+------------+-----+-----+-----+ +| | Channel | 5/10 | Y | Y | N | +| | bandwidth | /20/100Mhz | | | | +| +------------+------------+------------+-----+-----+-----+ +| | Number of | 12 | Y | Y | N | +| | the | | | | | +| | channel | | | | | +| | (Component | | | | | +| | Carrier) | | | | | +| +------------+------------+------------+-----+-----+-----+ +| | RU | A | Y | Y | N | +| | category | | | | | +| +------------+------------+------------+-----+-----+-----+ +| | TDD Config | Supporte\ | Y | Y | N | +| | | d/Flexible | | | | +| +------------+------------+------------+-----+-----+-----+ +| | FDD | Supported | Y | Y | N | +| | Support | | | | | +| +------------+------------+------------+-----+-----+-----+ +| | Tx/Rx | Supported | Y | Y | N | +| | switching | | | | | +| | based on | | | | | +| | 'data | | | | | +| | Direction' | | | | | +| | field of | | | | | +| | C-plane | | | | | +| | message | | | | | +| +------------+------------+------------+-----+-----+-----+ +| | IP version | N/A | N/A | N/A | N/A | +| | for | | | | | +| | Management | | | | | +| | traffic at | | | | | +| | fronthaul | | | | | +| | network | | | | | ++------------+-------------------------+------------+-----+-----+-----+ +| PRACH | One Type 3 | Supported | Y | Y | N | +| | message | | | | | +| | for all | | | | | +| | repeated | | | | | +| | PRACH | | | | | +| | preambles | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | Type 3 | 1 | Y | Y | N | +| | message | | | | | +| | per | | | | | +| | repeated | | | | | +| | PRACH | | | | | +| | preambles | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | timeOffset | Supported | Y | Y | N | +| | including | | | | | +| | cpLength | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | Supported | Supported | Y | Y | N | +| +-------------------------+------------+-----+-----+-----+ +| | PRACH | Supported | Y | Y | N | +| | preamble | | | | | +| | format / | | | | | +| | index | | | | | +| | number | | | | | +| | (number of | | | | | +| | the | | | | | +| | occasion) | | | | | ++------------+-------------------------+------------+-----+-----+-----+ +| Delay | Network | Supported | Y | Y | N | +| management | delay | | | | | +| | det\ | | | | | +| | ermination | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | lls-CU | Supported | Y | Y | N | +| | timing | | | | | +| | advance | | | | | +| | type | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | Non-delay | Not | N | N | N | +| | managed | supported | | | | +| | U-plane | | | | | +| | traffic | | | | | ++------------+-------------------------+------------+-----+-----+-----+ +| C/U-plane | Transport | Ethernet | Y | Y | N | +| Transport | enc\ | | | | | +| | apsulation | | | | | +| | (Ethernet | | | | | +| | / IP) | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | Jumbo | Supported | Y | Y | N | +| | frames | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | Transport | eCPRI | Y | Y | N | +| | header | | | | | +| | (eCPRI / | | | | | +| | RoE) | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | IP version | N/A | N/A | N/A | N/A | +| | when | | | | | +| | Transport | | | | | +| | header is | | | | | +| | IP/UDP | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | eCPRI | Not | N | N | N | +| | Con\ | supported | | | | +| | catenation | | | | | +| | when | | | | | +| | Transport | | | | | +| | header is | | | | | +| | eCPRI | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | eAxC ID | 4 \* | Y | Y | N | +| | CU_Port_ID | | | | | +| | bitwidth | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | eAxC ID | 4 \* | Y | Y | N | +| | Ban\ | | | | | +| | dSector_ID | | | | | +| | bitwidth | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | eAxC ID | 4 \* | Y | Y | N | +| | CC_ID | | | | | +| | bitwidth | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | eAxC ID | 4 \* | Y | Y | N | +| | RU_Port_ID | | | | | +| | bitwidth | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | Fra\ | Supported | Y | Y | N | +| | gmentation | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | Transport | N/A | N | N | N | +| | prio\ | | | | | +| | ritization | | | | | +| | within | | | | | +| | U-plane | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | Separation | Supported | Y | Y | N | +| | of | | | | | +| | C/U-plane | | | | | +| | and | | | | | +| | M-plane | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | Separation | VLAN ID | Y | Y | N | +| | of C-plane | | | | | +| | and | | | | | +| | U-plane | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | Max Number | 16 | Y | Y | N | +| | of VLAN | | | | | +| | per | | | | | +| | physical | | | | | +| | port | | | | | ++------------+-------------------------+------------+-----+-----+-----+ +| Reception | Rx_on_time | Supported | Y | Y | N | +| Window | | | | | | +| Monitoring | | | | | | +| (Counters) | | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | Rx_early | Supported | N | N | N | +| +-------------------------+------------+-----+-----+-----+ +| | Rx_late | Supported | N | N | N | +| +-------------------------+------------+-----+-----+-----+ +| | Rx_corrupt | Supported | N | N | N | +| +-------------------------+------------+-----+-----+-----+ +| | R\ | Supported | N | N | N | +| | x_pkt_dupl | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | Total | Supported | Y | N | N | +| | _msgs_rcvd | | | | | ++------------+-------------------------+------------+-----+-----+-----+ +| B\ | RU | Index and | Y | Y | N | +| eamforming | b\ | weights | | | | +| | eamforming | | | | | +| | type | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | B\ | C-plane | Y | N | N | +| | eamforming | | | | | +| | control | | | | | +| | method | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | Number of | No-re | Y | Y | N | +| | beams | strictions | | | | ++------------+-------------------------+------------+-----+-----+-----+ +| IQ | U-plane | Supported | Y | Y | Y | +| c\ | data | | | | | +| ompression | c\ | | | | | +| | ompression | | | | | +| | method | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | U-plane | BFP: | Y | Y | Y | +| | data IQ | 8,9,12,14 | | | | +| | bitwidth | bits | | | | +| | (Before / | | | | | +| | After | | | | | +| | co | | | | | +| | mpression) | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | Static | Supported | N | N | N | +| | con\ | | | | | +| | figuration | | | | | +| | of U-plane | | | | | +| | IQ format | | | | | +| | and | | | | | +| | c\ | | | | | +| | ompression | | | | | +| | header | | | | | ++------------+-------------------------+------------+-----+-----+-----+ +| eCPRI | ec\ | 001b | Y | Y | Y | +| Header | priVersion | | | | | +| Format | | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | ecp\ | Supported | Y | Y | Y | +| | riReserved | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | ecpriCon\ | Not | N | N | N | +| | catenation | supported | | | | +| +------------+------------+------------+-----+-----+-----+ +| | ec\ | U-plane | Supported | Y | Y | Y | +| | priMessage | | | | | | +| | +------------+------------+-----+-----+-----+ +| | | C-plane | Supported | Y | Y | Y | +| | +------------+------------+-----+-----+-----+ +| | | Delay | Supported | Y | Y | Y | +| | | m\ | | | | | +| | | easurement | | | | | +| +------------+------------+------------+-----+-----+-----+ +| | ec\ | Supported | Y | Y | Y | +| | priPayload | | | | | +| | (payload | | | | | +| | size in | | | | | +| | bytes) | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | ecpriRtcid | Supported | Y | Y | Y | +| | /ecpriPcid | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | e\ | Supported | Y | Y | Y | +| | cpriSeqid: | | | | | +| | Sequence | | | | | +| | ID | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | e\ | Supported | Y | Y | Y | +| | cpriSeqid: | | | | | +| | E bit | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | e\ | Not | N | N | N | +| | cpriSeqid: | supported | | | | +| | S\ | | | | | +| | ubsequence | | | | | +| | ID | | | | | ++------------+------------+------------+------------+-----+-----+-----+ +| C-plane | Section | Not | N | N | N | +| Type | Type 0 | supported | | | | +| +-------------------------+------------+-----+-----+-----+ +| | Section | Supported | Y | Y | Y | +| | Type 1 | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | Section | Supported | Y | Y | Y | +| | Type 3 | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | Section | Not | N | N | N | +| | Type 5 | supported | | | | +| +-------------------------+------------+-----+-----+-----+ +| | Section | Not | N | N | N | +| | Type 6 | supported | | | | +| +-------------------------+------------+-----+-----+-----+ +| | Section | Not | N | N | N | +| | Type 7 | supported | | | | ++------------+------------+------------+------------+-----+-----+-----+ +| C-plane | *Coding of | dat\ | Supported | Y | Y | N | +| Packet | I\ | aDirection | | | | | +| Format | nformation | (data | | | | | +| | Elements – | direction | | | | | +| | A\ | (gNB | | | | | +| | pplication | Tx/Rx)) | | | | | +| | Layer, | | | | | | +| | Common* | | | | | | +| | +------------+------------+-----+-----+-----+ +| | | payl\ | 001b | Y | Y | N | +| | | oadVersion | | | | | +| | | (payload | | | | | +| | | version) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | f\ | Supported | Y | Y | N | +| | | ilterIndex | | | | | +| | | (filter | | | | | +| | | index) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | frameId | Supported | Y | Y | N | +| | | (frame | | | | | +| | | i\ | | | | | +| | | dentifier) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | subframeId | Supported | Y | Y | N | +| | | (subframe | | | | | +| | | i\ | | | | | +| | | dentifier) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | slotId | Supported | Y | Y | N | +| | | (slot | | | | | +| | | i\ | | | | | +| | | dentifier) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | sta\ | Supported | Y | Y | N | +| | | rtSymbolid | | | | | +| | | (start | | | | | +| | | symbol | | | | | +| | | i\ | | | | | +| | | dentifier) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | number | up to the | Y | Y | N | +| | | Ofsections | maximum | | | | +| | | (number of | number of | | | | +| | | sections) | PRBs | | | | +| | +------------+------------+-----+-----+-----+ +| | | s\ | 1 and 3 | Y | Y | N | +| | | ectionType | | | | | +| | | (section | | | | | +| | | type) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | udCompHdr | Supported | Y | Y | N | +| | | (user data | | | | | +| | | c\ | | | | | +| | | ompression | | | | | +| | | header) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | n\ | Not | N | N | N | +| | | umberOfUEs | supported | | | | +| | | (number Of | | | | | +| | | UEs) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | timeOffset | Supported | Y | Y | N | +| | | (time | | | | | +| | | offset) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | fram\ | mu=0,1,3 | Y | Y | N | +| | | eStructure | | | | | +| | | (frame | | | | | +| | | structure) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | cpLength | Supported | Y | Y | N | +| | | (cyclic | | | | | +| | | prefix | | | | | +| | | length) | | | | | +| +------------+------------+------------+-----+-----+-----+ +| | *Coding of | sectionId | Supported | Y | Y | N | +| | I\ | (section | | | | | +| | nformation | i\ | | | | | +| | Elements – | dentifier) | | | | | +| | A\ | | | | | | +| | pplication | | | | | | +| | Layer, | | | | | | +| | Sections* | | | | | | +| | +------------+------------+-----+-----+-----+ +| | | rb | 0 | Y | Y | N | +| | | (resource | | | | | +| | | block | | | | | +| | | indicator) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | symInc | 0 or 1 | Y | Y | N | +| | | (symbol | | | | | +| | | number | | | | | +| | | increment | | | | | +| | | command) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | startPrbc | Supported | Y | Y | N | +| | | (starting | | | | | +| | | PRB of | | | | | +| | | control | | | | | +| | | section) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | reMask | Supported | Y | Y | N | +| | | (resource | | | | | +| | | element | | | | | +| | | mask) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | numPrbc | Supported | Y | Y | N | +| | | (number of | | | | | +| | | contiguous | | | | | +| | | PRBs per | | | | | +| | | control | | | | | +| | | section) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | numSymbol | Supported | Y | Y | N | +| | | (number of | | | | | +| | | symbols) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | ef | Supported | Y | Y | N | +| | | (extension | | | | | +| | | flag) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | beamId | Support | Y | Y | N | +| | | (beam | | | | | +| | | i\ | | | | | +| | | dentifier) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | ueId (UE | Not | N | N | N | +| | | i\ | supported | | | | +| | | dentifier) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | freqOffset | Supported | Y | Y | N | +| | | (frequency | | | | | +| | | offset) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | regulariza\| Not | N | N | N | +| | | tionFactor | supported | | | | +| | | (regu\ | | | | | +| | | larization | | | | | +| | | Factor) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | ciIsample, | Not | N | N | N | +| | | ciQsample | supported | | | | +| | | (channel | | | | | +| | | i\ | | | | | +| | | nformation | | | | | +| | | I and Q | | | | | +| | | values) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | laaMsgType | Not | N | N | N | +| | | (LAA | supported | | | | +| | | message | | | | | +| | | type) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | laaMsgLen | Not | N | N | N | +| | | (LAA | supported | | | | +| | | message | | | | | +| | | length) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | lbtHandle | Not | N | N | N | +| | | | supported | | | | +| | +------------+------------+-----+-----+-----+ +| | | lbtD\ | Not | N | N | N | +| | | eferFactor | supported | | | | +| | | (listen-b | | | | | +| | | efore-talk | | | | | +| | | defer | | | | | +| | | factor) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | lbtBack | Not | N | N | N | +| | | offCounter | supported | | | | +| | | (listen-b\ | | | | | +| | | efore-talk | | | | | +| | | backoff | | | | | +| | | counter) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | lbtOffset | Not | N | N | N | +| | | (listen-b\ | supported | | | | +| | | efore-talk | | | | | +| | | offset) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | MCOT | Not | N | N | N | +| | | (maximum | supported | | | | +| | | channel | | | | | +| | | occupancy | | | | | +| | | time) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | lbtMode | Not | N | N | N | +| | | (LBT Mode) | supported | | | | +| | +------------+------------+-----+-----+-----+ +| | | l\ | Not | N | N | N | +| | | btPdschRes | supported | | | | +| | | (LBT PDSCH | | | | | +| | | Result) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | sfStatus | Not | N | N | N | +| | | (subframe | supported | | | | +| | | status) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | lbtDrsRes | Not | N | N | N | +| | | (LBT DRS | supported | | | | +| | | Result) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | initia\ | Not | N | N | N | +| | | lPartialSF | supported | | | | +| | | (Initial | | | | | +| | | partial | | | | | +| | | SF) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | lbtBufErr | Not | N | N | N | +| | | (LBT | supported | | | | +| | | Buffer | | | | | +| | | Error) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | sfnSf | Not | N | N | N | +| | | (SFN/SF | supported | | | | +| | | End) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | lbt | Not | N | N | N | +| | | CWConfig_H | supported | | | | +| | | (HARQ | | | | | +| | | Parameters | | | | | +| | | for | | | | | +| | | Congestion | | | | | +| | | Window | | | | | +| | | m | | | | | +| | | anagement) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | lbt | Not | N | N | N | +| | | CWConfig_T | supported | | | | +| | | (TB | | | | | +| | | Parameters | | | | | +| | | for | | | | | +| | | Congestion | | | | | +| | | Window | | | | | +| | | m | | | | | +| | | anagement) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | lbtTr\ | Not | N | N | N | +| | | afficClass | supported | | | | +| | | (Traffic | | | | | +| | | class | | | | | +| | | priority | | | | | +| | | for | | | | | +| | | Congestion | | | | | +| | | Window | | | | | +| | | m | | | | | +| | | anagement) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | lbtCWR_Rst | Not | N | N | N | +| | | (No | supported | | | | +| | | tification | | | | | +| | | about | | | | | +| | | packet | | | | | +| | | reception | | | | | +| | | successful | | | | | +| | | or not) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | reserved | 0 | N | N | N | +| | | (reserved | | | | | +| | | for future | | | | | +| | | use) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | *Section |   |   |   |   | +| | | Extension | | | | | +| | | Commands* | | | | | +| | +------------+------------+-----+-----+-----+ +| | | extType | Supported | Y | Y | N | +| | | (extension | | | | | +| | | type) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | ef | Supported | Y | Y | N | +| | | (extension | | | | | +| | | flag) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | extLen | Supported | Y | Y | N | +| | | (extension | | | | | +| | | length) | | | | | +| +------------+------------+------------+-----+-----+-----+ +| | Coding of |   |   |   |   | | +| | I\ | | | | | | +| | nformation | | | | | | +| | Elements – | | | | | | +| | A\ | | | | | | +| | pplication | | | | | | +| | Layer, | | | | | | +| | Section | | | | | | +| | E\ | | | | | | +| | xtensions | | | | | | +| | +------------+------------+-----+-----+-----+ +| | *ExtType=1:| bfwCompHdr | Supported | Y | Y | N | +| | B\ | (beam\ | | | | | +| | eamforming | forming | | | | | +| | Weights | weight | | | | | +| | Extension | c\ | | | | | +| | Type* | ompression | | | | | +| | | header) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | bf | Supported | Y | Y | N | +| | | wCompParam | | | | | +| | | (b\ | | | | | +| | | eamforming | | | | | +| | | weight | | | | | +| | | c\ | | | | | +| | | ompression | | | | | +| | | parameter) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | bfwl | Supported | Y | Y | N | +| | | (b\ | | | | | +| | | eamforming | | | | | +| | | weight | | | | | +| | | in-phase | | | | | +| | | value) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | bfwQ | Supported | Y | Y | N | +| | | (b\ | | | | | +| | | eamforming | | | | | +| | | weight | | | | | +| | | quadrature | | | | | +| | | value) | | | | | +| +------------+------------+------------+-----+-----+-----+ +| | | bfaCompHdr | Supported | Y | N | N | +| | *ExtType=2:| (b\ | | | | | +| | B\ | eamforming | | | | | +| | eamforming | attributes | | | | | +| | Attributes | c\ | | | | | +| | Extension | ompression | | | | | +| | Type* | header) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | bfAzPt | Supported | Y | N | N | +| | | (b\ | | | | | +| | | eamforming | | | | | +| | | azimuth | | | | | +| | | pointing | | | | | +| | | parameter) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | bfZePt | Supported | Y | N | N | +| | | (b\ | | | | | +| | | eamforming | | | | | +| | | zenith | | | | | +| | | pointing | | | | | +| | | parameter) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | bfAz3dd | Supported | Y | N | N | +| | | (b | | | | | +| | | eamforming | | | | | +| | | azimuth | | | | | +| | | beamwidth | | | | | +| | | parameter) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | bfZe3dd | Supported | Y | N | N | +| | | (b\ | | | | | +| | | eamforming | | | | | +| | | zenith | | | | | +| | | beamwidth | | | | | +| | | parameter) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | bfAzSl | Supported | Y | N | N | +| | | (b\ | | | | | +| | | eamforming | | | | | +| | | azimuth | | | | | +| | | sidelobe | | | | | +| | | parameter) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | bfZeSl | Supported | Y | N | N | +| | | (b\ | | | | | +| | | eamforming | | | | | +| | | zenith | | | | | +| | | sidelobe | | | | | +| | | parameter) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | ze\ | Supported | Y | N | N | +| | | ro-padding | | | | | +| +------------+------------+------------+-----+-----+-----+ +| | | cod | Supported | Y | N | N | +| | *ExtType=3:| ebookIndex | | | | | +| | DL | (precoder | | | | | +| | Precoding | codebook | | | | | +| | Extension | used for | | | | | +| | Type* | tra | | | | | +| | | nsmission) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | layerID | Supported | Y | N | N | +| | | (Layer ID | | | | | +| | | for DL | | | | | +| | | tra\ | | | | | +| | | nsmission) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | txScheme | Supported | Y | N | N | +| | | (tr | | | | | +| | | ansmission | | | | | +| | | scheme) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | numLayers | Supported | Y | N | N | +| | | (number of | | | | | +| | | layers | | | | | +| | | used for | | | | | +| | | DL | | | | | +| | | tra\ | | | | | +| | | nsmission) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | crsReMask | Supported | Y | N | N | +| | | (CRS | | | | | +| | | resource | | | | | +| | | element | | | | | +| | | mask) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | c | Supported | Y | N | N | +| | | rsSyumINum | | | | | +| | | (CRS | | | | | +| | | symbol | | | | | +| | | number | | | | | +| | | i\ | | | | | +| | | ndication) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | crsShift | Supported | Y | N | N | +| | | (crsShift | | | | | +| | | used for | | | | | +| | | DL | | | | | +| | | tra\ | | | | | +| | | nsmission) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | beamIdAP1 | Supported | Y | N | N | +| | | (beam id | | | | | +| | | to be used | | | | | +| | | for | | | | | +| | | antenna | | | | | +| | | port 1) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | beamIdAP2 | Supported | Y | N | N | +| | | (beam id | | | | | +| | | to be used | | | | | +| | | for | | | | | +| | | antenna | | | | | +| | | port 2) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | beamIdAP3 | Supported | Y | N | N | +| | | (beam id | | | | | +| | | to be used | | | | | +| | | for | | | | | +| | | antenna | | | | | +| | | port 3) | | | | | +| +------------+------------+------------+-----+-----+-----+ +| | | csf | Supported | Y | Y | N | +| | *ExtType=4:| (con\ | | | | | +| | Modulation | stellation | | | | | +| | C\ | shift | | | | | +| | ompression | flag) | | | | | +| | Parameters | | | | | | +| | Extension | | | | | | +| | Type* | | | | | | +| | +------------+------------+-----+-----+-----+ +| | | mod | Supported | Y | Y | N | +| | | CompScaler | | | | | +| | | ( | | | | | +| | | modulation | | | | | +| | | c\ | | | | | +| | | ompression | | | | | +| | | scaler | | | | | +| | | value) | | | | | +| +------------+------------+------------+-----+-----+-----+ +| | | mcS\ | Supported | Y | N | N | +| | *ExtType=5:| caleReMask | | | | | +| | Modulation | ( | | | | | +| | C\ | modulation | | | | | +| | ompression | c\ | | | | | +| | Additional | ompression | | | | | +| | Parameters | power | | | | | +| | Extension | scale RE | | | | | +| | Type* | mask) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | csf | Supported | Y | N | N | +| | | (con\ | | | | | +| | | stellation | | | | | +| | | shift | | | | | +| | | flag) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | mcS | Supported | Y | N | N | +| | | caleOffset | | | | | +| | | (scaling | | | | | +| | | value for | | | | | +| | | modulation | | | | | +| | | co\ | | | | | +| | | mpression) | | | | | +| +------------+------------+------------+-----+-----+-----+ +| | *E | rbgSize | Supported | Y | N | N | +| | xtType=6: | (resource | | | | | +| | Non-c | block | | | | | +| | ontiguous | group | | | | | +| | PRB | size) | | | | | +| | a | | | | | | +| | llocation | | | | | | +| | in time | | | | | | +| | and | | | | | | +| | frequency | | | | | | +| | domain* | | | | | | +| | +------------+------------+-----+-----+-----+ +| | | rbgMask | Supported | Y | N | N | +| | | (resource | | | | | +| | | block | | | | | +| | | group bit | | | | | +| | | mask) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | s | Supported | Y | N | N | +| | | ymbolMask | | | | | +| | | (symbol | | | | | +| | | bit mask) | | | | | +| +------------+------------+------------+-----+-----+-----+ +| | *Ex | beam | Supported | Y | N | N | +| | tType=10: | GroupType | | | | | +| | Section | | | | | | +| | de | | | | | | +| | scription | | | | | | +| | for group | | | | | | +| | conf | | | | | | +| | iguration | | | | | | +| | of | | | | | | +| | multiple | | | | | | +| | ports* | | | | | | +| | +------------+------------+-----+-----+-----+ +| | | numPortc | Supported | Y | N | N | +| +------------+------------+------------+-----+-----+-----+ +| | *Ex | b | Supported | Y | Y | N | +| | tType=11: | fwCompHdr | | | | | +| | Flexible | (be | | | | | +| | Be | amforming | | | | | +| | amforming | weight | | | | | +| | Weights | co | | | | | +| | Extension | mpression | | | | | +| | Type* | header) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | bfw | Supported | Y | Y | N | +| | | CompParam | | | | | +| | | for PRB | | | | | +| | | bundle x | | | | | +| | | (be | | | | | +| | | amforming | | | | | +| | | weight | | | | | +| | | co | | | | | +| | | mpression | | | | | +| | | p | | | | | +| | | arameter) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | n | Supported | Y | Y | N | +| | | umBundPrb | | | | | +| | | (Number | | | | | +| | | of | | | | | +| | | bundled | | | | | +| | | PRBs per | | | | | +| | | be | | | | | +| | | amforming | | | | | +| | | weights) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | bfwI | Supported | Y | Y | N | +| | | (be | | | | | +| | | amforming | | | | | +| | | weight | | | | | +| | | in-phase | | | | | +| | | value) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | bfwQ | Supported | Y | Y | N | +| | | (be | | | | | +| | | amforming | | | | | +| | | weight | | | | | +| | | q | | | | | +| | | uadrature | | | | | +| | | value) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | di | Supported | Y | Y | N | +| | | sableBFWs | | | | | +| | | (disable | | | | | +| | | be | | | | | +| | | amforming | | | | | +| | | weights) | | | | | +| | +------------+------------+-----+-----+-----+ +| | | RAD | Supported | Y | Y | N | +| | | (Reset | | | | | +| | | After PRB | | | | | +| | | Disco | | | | | +| | | ntinuity) | | | | | ++------------+------------+------------+------------+-----+-----+-----+ +| U-plane | dat | Supported | Y | Y | Y | +| Packet | aDirection | | | | | +| Format | (data | | | | | +| | direction | | | | | +| | (gNB | | | | | +| | Tx/Rx)) | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | payl\ | 001b | Y | Y | Y | +| | oadVersion | | | | | +| | (payload | | | | | +| | version) | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | f\ | Supported | Y | Y | Y | +| | ilterIndex | | | | | +| | (filter | | | | | +| | index) | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | frameId | Supported | Y | Y | Y | +| | (frame | | | | | +| | i\ | | | | | +| | dentifier) | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | subframeId | Supported | Y | Y | Y | +| | (subframe | | | | | +| | i\ | | | | | +| | dentifier) | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | slotId | Supported | Y | Y | Y | +| | (slot | | | | | +| | i | | | | | +| | dentifier) | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | symbolId | Supported | Y | Y | Y | +| | (symbol | | | | | +| | i\ | | | | | +| | dentifier) | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | sectionId | Supported | Y | Y | Y | +| | (section | | | | | +| | i\ | | | | | +| | dentifier) | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | rb | 0 | Y | Y | Y | +| | (resource | | | | | +| | block | | | | | +| | indicator) | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | symInc | 0 | Y | Y | Y | +| | (symbol | | | | | +| | number | | | | | +| | increment | | | | | +| | command) | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | startPrbu | Supported | Y | Y | Y | +| | (s\ | | | | | +| | tartingPRB | | | | | +| | of user | | | | | +| | plane | | | | | +| | section) | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | numPrbu | Supported | Y | Y | Y | +| | (number of | | | | | +| | PRBs per | | | | | +| | user plane | | | | | +| | section) | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | udCompHdr | Supported | Y | Y | N | +| | (user data | | | | | +| | c\ | | | | | +| | ompression | | | | | +| | header) | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | reserved | 0 | Y | Y | Y | +| | (reserved | | | | | +| | for future | | | | | +| | use) | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | u\ | Supported | Y | Y | N | +| | dCompParam | | | | | +| | (user data | | | | | +| | c\ | | | | | +| | ompression | | | | | +| | parameter) | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | iSample | 16 | Y | Y | Y | +| | (in-phase | | | | | +| | sample) | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | qSample | 16 | Y | Y | Y | +| | ( | | | | | +| | quadrature | | | | | +| | sample) | | | | | ++------------+-------------------------+------------+-----+-----+-----+ +| S-plane | Topology | Supported | N | N | N | +| | conf\ | | | | | +| | iguration: | | | | | +| | C1 | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | Topology | Supported | N | N | N | +| | conf\ | | | | | +| | iguration: | | | | | +| | C2 | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | Topology | Supported | Y | Y | Y | +| | conf\ | | | | | +| | iguration: | | | | | +| | C3 | | | | | +| +-------------------------+------------+-----+-----+-----+ +| | Topology | Supported | N | N | N | +| | conf\ | | | | | +| | iguration: | | | | | +| | C4 | | | | | ++------------+------------+------------+------------+-----+-----+-----+ +| | PTP | Full | Supported | Y | Y | N | +| | | Timing | | | | | +| | | Support | | | | | +| | | (G.8275.1) | | | | | ++------------+------------+------------+------------+-----+-----+-----+ +| M-plane |   |   | Not | N | N | N | +| | | | supported | | | | ++------------+------------+------------+------------+-----+-----+-----+ + +\* The bit width of each component in eAxC ID can be configurable. + +Transport Layer +--------------- + +O-RAN Fronthaul data can be transported over Ethernet or IPv4/IPv6. In +the current implementation, the xRAN library supports only Ethernet with +VLAN. + +.. image:: images/Native-Ethernet-Frame-with-VLAN.jpg + :width: 600 + :alt: Figure 11. Native Ethernet Frame with VLAN + +Figure 11. Native Ethernet Frame with VLAN + + +Standard DPDK routines are used to perform Transport Layer +functionality. + +VLAN tag functionality is offloaded to NIC as per the configuration of +VF (refer to Setup Configuration). + +The transport header is defined in the ORAN Fronthaul specification +based on the eCPRI specification. + +.. image:: images/eCPRI-Header-Field-Definitions.jpg + :width: 600 + :alt: Figure 12. eCPRI Header Field Definitions + +Figure 12. eCPRI Header Field Definitions + +Only ECPRI_IQ_DATA = 0x00 and ECPRI_RT_CONTROL_DATA= 0x02 message types +are supported. + +For one-way delay measurements the eCPRI Header Field Definitions are +the same as above until the ecpriPayload. The one-delay measurement +message format is shown in the next figure. + +.. image:: images/ecpri-one-way-delay-measurement-message.jpg + :width: 600 + :alt: Figure 13. ecpri one-way delay measurement message + +Figure 13. ecpri one-way delay measurement message + +In addition, for the eCPRI one-delay measurement message there is a +requirement of dummy bytes insertion so the overall ethernet frame has +at least 64 bytes. + +The measurement ID is a one-byte value used by the sender of the request +to distinguish the response received between different measurements. + +The action type is a one-byte value defined in Table 8 of the eCPRI +Specification V2.0. + +Action Type 0x00 corresponds to a Request + +Action Type 0x01 corresponds to a Request with Follow Up + +Both values are used by an eCPRI node to initiate a one-way delay +measurement in the direction of its own node to another node. + +Action Type 0x02 corresponds to a Response + +Action Type 0x03 is a Remote Request + +Action Type 0x04 is a Remote Request with Follow Up + +Values 0x03 and 0x04 are used when an eCPRI node needs to know the +one-way delay from another node to itself. + +Action Type 0x05 is the Follow_Up message. + +The timestamp uses the IEEE-1588 Timestamp format with 8 bytes for the +seconds part and 4 bytes for the nanoseconds part. The timestamp is a +positive time with respect to the epoch. + +The compensation value is used with Action Types 0x00 (Request), 0x02 +(Response) or 0x05 (Follow_up) for all others this field contains zeros. +This value is the compensation time measured in nanoseconds and +multiplied by 2\ :sup:16 and follows the format for the +correctionField in the common message header specified by the IEE +1588-2008 clause 13.3. + +Handling of ecpriRtcid/ecpriPcid Bit field size is configurable and can +be defined on the initialization stage of the xRAN library. + +.. image:: images/Bit-Allocations-of-ecpriRtcid-ecpriPcid.jpg + :width: 600 + :alt: Figure 14. Bit Allocations of ecpriRtcid/ecpriPcid + +Figure 14. Bit Allocations of ecpriRtcid/ecpriPcid + +For ecpriSeqid only, the support for a sequence number is implemented. +The subsequent number is not supported. + +U-plane +------- + +The following diagrams show O-RAN packet protocols’ headers and data +arrangement with and without compression support. + +XRAN packet meant for traffic with compression enabled has the +Compression Header added after each Application Header. According to +O-RAN Fronthaul's specification, the Compression Header is part of a +repeated Section Application Header. In the xRAN library implementation, +the header is implemented as a separate structure, following the +Application Section Header. As a result, the Compression Header is not +included in the O-RAN packet, if compression is not used. + +Figure 15 shows the components of an ORAN packet. + +.. image:: images/xRAN-Packet-Components.jpg + :width: 600 + :alt: Figure 15. O-RAN Packet Components + +Figure 15. O-RAN Packet Components + +Radio Application Header +~~~~~~~~~~~~~~~~~~~~~~~~ + +The next header is a common header used for time reference. + +.. image:: images/Radio-Application-Header.jpg + :width: 600 + :alt: Figure 16. Radio Application Header + +Figure 16. Radio Application Header + +The radio application header specific field values are implemented as +follows: + +- filterIndex = 0 + +- frameId = [0:99] + +- subframeId = [0:9] + +- slotId = [0:7] + +- symbolId = [0:13] + +Data Section Application Data Header +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The Common Radio Application Header is followed by the Application +Header that is repeated for each Data Section within the eCPRI message. +The relevant section of O-RAN packet is shown in color. + +.. image:: images/Data-Section-Application-Data-Header.jpg + :width: 600 + :alt: Figure 17. Data Section Application Data Header + +Figure 17. Data Section Application Data Header + + +A single section is used per one Ethernet packet with IQ samples +startPrbu is equal to 0 and numPrbu is wqual to the number of RBs used: + +- rb field is not used (value 0). + +- symInc is not used (value 0) + +Data Payload +~~~~~~~~~~~~ + +An O-RAN packet data payload contains a number of PRBs. Each PRB is built +of 12 IQ samples. Flexible IQ bit width is supported. If compression is enabled udCompParam is included in the data payload. The data section is shown in colour. + +.. image:: images/Data-Payload.jpg + :width: 600 + :alt: Figure 17. Data Payload + +Figure 17. Data Payload + +C-plane +------- + +C-Plane messages are encapsulated using a two-layered header approach. +The first layer consists of an eCPRI standard header, including +corresponding fields used to indicate the message type, while the second +layer is an application layer including necessary fields for control and +synchronization. Within the application layer, a “section” defines the characteristics of U-plane data to be transferred or received from a +beam with one pattern id. In general, the transport header,application +header, and sections are all intended to be aligned on 4-byte boundaries +and are transmitted in “network byte order” meaning the most significant +byte of a multi-byte parameter is transmitted first. + +Table 9 is a list of sections currently supported. + +Table 9. Section Types + ++--------------+--------------------------+--------------------------+ +| Section Type | Target Scenario | Remarks | ++--------------+--------------------------+--------------------------+ +| 0 | Unused Resource Blocks | Not supported | +| | or symbols in Downlink | | +| | or Uplink | | ++--------------+--------------------------+--------------------------+ +| 1 | Most DL/UL radio | Supported | +| | channels | | ++--------------+--------------------------+--------------------------+ +| 2 | reserved for future use | N/A | ++--------------+--------------------------+--------------------------+ +| 3 | PRACH and | Only PRACH is supported. | +| | mixed-numerology | Mixed numerology is not | +| | channels | supported. | ++--------------+--------------------------+--------------------------+ +| 4 | Reserved for future use | Not supported | ++--------------+--------------------------+--------------------------+ +| 5 | UE scheduling | Not supported | +| | information (UE-ID | | +| | assignment to section) | | ++--------------+--------------------------+--------------------------+ +| 6 | Channel information | Not supported | ++--------------+--------------------------+--------------------------+ +| 7 | LAA | Not supported | ++--------------+--------------------------+--------------------------+ +| 8-255 | Reserved for future use | N/A | ++--------------+--------------------------+--------------------------+ + +Section extensions are not supported in this release. + +The definition of the C-Plane packet can be found lib/api/xran_pkt_cp.h +and the fields are appropriately re-ordered in order to apply the +conversion of network byte order after setting values. +The comments in source code of xRAN lib can be used to see more information on +implementation specifics of handling sections as well as particular fields. +Additional changes may be needed on C-plane to perform IOT with O-RU depending on the scenario. + +Ethernet Header +~~~~~~~~~~~~~~~ + +Refer to Figure 11. + +eCPRI Header +~~~~~~~~~~~~ + +Refer to Figure 12. + +This header is defined as the structure of xran_ecpri_hdr in +lib/api/xran_pkt.h. + +Radio Application Common Header +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The Radio Application Common Header is used for time reference. Its +structure is shown in Figure 18. + +.. image:: images/Radio-Application-Common-Header.jpg + :width: 600 + :alt: Figure 19. Radio Application Common Header + +Figure 19. Radio Application Common Header + +This header is defined as the structure of +xran_cp_radioapp_common_header in lib/api/xran_pkt_cp.h. + +Please note that the payload version in this header is fixed to +XRAN_PAYLOAD_VER (defined as 1) in this release. + +Section Type 0 Structure +~~~~~~~~~~~~~~~~~~~~~~~~ + +Figure 20 describes the structure of Section Type 0. + +.. image:: images/Section-Type-0-Structure.jpg + :width: 600 + :alt: Figure 20. Section Type 0 Structure + +Figure 20. Section Type 0 Structure + +In Figure 19 through Figure 23, the color yellow means it is a transport +header; the color pink is the radio application header; others are +repeated sections. + +Section Type 1 Structure +~~~~~~~~~~~~~~~~~~~~~~~~ + +Figure 21 describes the structure of Section Type 1. + +.. image:: images/Section-Type-1-Structure.jpg + :width: 600 + :alt: Figure 21. Section Type 1 Structure + +Figure 21. Section Type 1 Structure + +Section Type 1 message has two additional parameters in addition to +radio application common header: + +- udCompHdr : defined as the structure of xran_radioapp_udComp_header + +- reserved : fixed by zero + +Section type 1 is defined as the structure of xran_cp_radioapp_section1, +and this part can be repeated to have multiple sections. + +Whole section type 1 message can be described in this summary: + ++----------------------------------+ +| xran_cp_radioapp_common_header | ++==================================+ +| xran_cp_radioapp_section1_header | ++----------------------------------+ +| xran_cp_radioapp_section1 | ++----------------------------------+ +| …… | ++----------------------------------+ +| xran_cp_radioapp_section1 | ++----------------------------------+ + +Section Type 3 Structure +~~~~~~~~~~~~~~~~~~~~~~~~ + +Figure 22 describes the structure of Section Type 3. + +.. image:: images/Section-Type-3-Structure.jpg + :width: 600 + :alt: Figure 22. Section Type 3 Structure + +Figure 22. Section Type 3 Structure + +Section Type 3 message has below four additional parameters in addition +to radio application common header. + +- timeOffset + +- frameStructure: defined as the structure of + xran_cp_radioapp_frameStructure + +- cpLength + +- udCompHdr: defined as the structure of xran_radioapp_udComp_header + +Section Type 3 is defined as the structure of xran_cp_radioapp_section3 +and this part can be repeated to have multiple sections. + +Whole section type 3 message can be described in this summary: + ++----------------------------------+ +| xran_cp_radioapp_common_header | ++==================================+ +| xran_cp_radioapp_section3_header | ++----------------------------------+ +| xran_cp_radioapp_section3 | ++----------------------------------+ +| …… | ++----------------------------------+ +| xran_cp_radioapp_section3 | ++----------------------------------+ + +Section Type 5 Structure +~~~~~~~~~~~~~~~~~~~~~~~~ + +Figure 23 describes the structure of Section Type 5. + +.. image:: images/Section-Type-5-Structure.jpg + :width: 600 + :alt: Figure 23. Section Type 5 Structure + +Figure 23. Section Type 5 Structure + + +Section Type 6 Structure +~~~~~~~~~~~~~~~~~~~~~~~~ + +Figure 24 describes the structure of Section Type 6. + +.. image:: images/Section-Type-6-Structure.jpg + :width: 600 + :alt: Figure 24. Section Type 6 Structure + +Figure 24. Section Type 6 Structure + diff --git a/docs/ecpri_ddp_profile.rst b/docs/ecpri_ddp_profile.rst new file mode 100644 index 0000000..1eebc8c --- /dev/null +++ b/docs/ecpri_ddp_profile.rst @@ -0,0 +1,875 @@ +.. 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. + + +eCPRI DDP Profile for Columbiaville (Experimental Feature) +========================================================== + +.. _introduction-3: + +Introduction +============ + +The Intel® Ethernet 800 Series is the next generation of Intel® Ethernet +Controllers and Network Adapters. The Intel® Ethernet 800 Series is +designed with an enhanced programmable pipeline, allowing deeper and +more diverse protocol header processing. This on-chip capability is +called Dynamic Device Personalization (DDP). In the Intel® Ethernet 800 +Series, a DDP profile is loaded dynamically on driver load per device. + +A general-purpose DDP package is automatically installed with all +supported Intel® Ethernet 800 Series drivers on Windows*, ESX*, +FreeBSD*, and Linux\* operating systems, including those provided by the +Data Plane Development Kit (DPDK). This general-purpose DDP package is +known as the OS-default package. + +For more information on DDP technology in the Intel® Ethernet 800 Series +products and the OS-default package, refer to the Intel® Ethernet +Controller E810 Dynamic Device Personalization (DDP) Technology Guide, +published here: https://cdrdv2.intel.com/v1/dl/getContent/617015. + +This document describes an optional DDP package targeted towards the +needs of Wireless and Edge (Wireless Edge) customers. This Wireless Edge +DDP package (v1.3.22.101) adds support for eCPRI protocols in addition +to the protocols in the OS-default package. The Wireless Edge DDP +package is supported by DPDK. + +Starting from DPDK 21.02 drivers and in the future will also be +supported by the Intel® Ethernet 800 Series ice driver. on Linux +operating systems. The Wireless DDP Package can be loaded on all Intel® +Ethernet 800 Series devices, or different packages can be selected via +serial number per device. + +Software/Firmware Requirements +============================== + +The specific DDP package requires certain firmware and DPDK versions and +Intel® Ethernet 800 Series firmware/NVM versions. Support for eCPRI DDP +profile included starting from Columbiaville (CVL)release 2.4 or later. +The required DPDK version contains the support of loading the specific +Wireless Edge DDP package. + +- Intel® Ethernet 800 Series Linux Driver (ice) — 1.4.0 (or later) + +- Wireless Edge DDP Package version (ice_wireless_edge) — 1.3.22.101 + +- Intel® Ethernet 800 Series firmware version — 1.5.4.2 (or later) + +- Intel® Ethernet 800 Series NVM version — 2.4 (or later) + +- DPDK version— 21.02 (or later) + +- For FlexRAN release 21.03, corresponding support of CVL 2.4 driver pack and DPDK 21.02 is “experimental” and subject to additional testing and potential changes. + +DDP Package Setup +================= + +The Intel® Ethernet 800 Series Comms DDP package supports only +Linux-based operating systems currently. + +Currently, the eCPRI is fully supported only by DPDK 21.02. It can be +loaded either by DPDK or the Intel® Ethernet 800 Series Linux base +driver. + +Wireless Edge DDP Package +========================= + +For details on how to set up DPDK, refer to Intel® Ethernet Controller +E810 Data Plane Development Kit (DPDK) Configuration Guide (Doc ID: +633514). + +There are two methods where DDP package can be loaded and used under +DPDK (see Section C.3.2 and +Section C.3.2 ). For both methods, the +user must obtain the ice_wireless_edge-1.3.22.101.pkg or later from +Intel (please contact your Intel representative for more information) + +Option 1: *ice* Linux Base Driver +================================= + +The first option is to have the ice Linux base driver load the package. + +The *ice* Linux base driver looks for the symbolic link +*intel/ice/ddp/ice.pkg* under the default firmware search path, checking +the following folders in order: + +- */lib/firmware/updates/* + +- */lib/firmware/* + +To install the Comms package, copy the extracted .pkg file and its +symbolic link to */lib/firmware/updates/intel/ice/ddp* as follows, and +reload the ice driver:: + + # cp /usr/tmp/ice_wireless_edge-1.3.22.101.pkg /lib/firmware/updates/intel/ice/ddp/ + # ln -sf /lib/firmware/updates/intel/ice/ddp/ice_wireless_edge-1.3.22.101.pkg /lib/firmware/updates/intel/ice/ddp/ice.pkg + # modprobe -r irdma + # modprobe -r ice + # modprobe ice + + +The kernel message log (*dmesg*) indicates status of package loading in +the system. If the driver successfully finds and loads the DDP package, +*dmesg* indicates that the DDP package successfully loaded. If not, the +driver transitions to safe mode. + +Once the driver loads the package, the user can unbind the *ice* driver +from a desired port on the device so that DPDK can utilize the port. + +The following example unbinds Port 0 and Port 1 of device on Bus 6, +Device 0. Then, the port is bound to either igb_uio or vfio-pci. :: + + # ifdown + # dpdk-devbind -u 06:00.0 + # dpdk-devbind -u 06:00.1 + # dpdk-devbind -b igb_uio 06:00.0 06:00.1 + +Option 2: DPDK Driver Only +========================== + +The second method is if the system does not have the *ice* driver +installed. In this case, the user can download the DDP package from the +Intel download center and extract the zip file to obtain the package +(*.pkg*) file. Similar to the Linux base driver, the DPDK driver looks +for the *intel/ddp/ice.pkg* symbolic link in the kernel default firmware +search path */lib/firmware/updates and /lib/firmware/*. + +Copy the extracted DDP *.pkg* file and its symbolic link to +*/lib/firmware/intel/ice/ddp*, as follows. :: + + # cp /usr/tmp/ice_wireless_edge-1.3.22.101 /lib/firmware/intel/ice/ddp/ + # cp /usr/tmp/ice.pkg /lib/firmware/intel/ice/ddp/ + +When DPDK driver loads, it looks for *ice.pkg* to load. If the file +exists, the driver downloads it into the device. If not, the driver +transitions into safe mode. + +Loading DDP Package to a Specific Intel® Ethernet 800 Series Device +=================================================================== + +On a host system running with multiple Intel® Ethernet 800 Series +devices, there is sometimes a need to load a specific DDP package on a +selected device while loading a different package on the remaining +devices. + +The Intel® Ethernet 800 Series Linux base driver and DPDK driver can +both load a specific DDP package to a selected adapter based on the +device's serial number. The driver does this by looking for a specific +symbolic link package filename containing the selected device's serial +number. + +The following example illustrates how a user can load a specific package +(e.g., *ice_wireless_edge-1.3.22.101*) on the device of Bus 6. + +1. Find device serial number. + +.. + +To view bus, device, and function of all Intel® Ethernet 800 Series +Network Adapters in the system::: + + # lspci | grep -i Ethernet | grep -i Intel + 06:00.0 Ethernet controller: Intel Corporation Ethernet Controller E810-C for QSFP (rev 01) + 06:00.1 Ethernet controller: Intel Corporation Ethernet Controller E810-C for QSFP (rev 01) + 82:00.0 Ethernet controller: Intel Corporation Ethernet Controller E810-C for SFP (rev 01) + 82:00.1 Ethernet controller: Intel Corporation Ethernet Controller E810-C for SFP (rev 01) + 82:00.2 Ethernet controller: Intel Corporation Ethernet Controller E810-C for SFP (rev 01) + 82:00.3 Ethernet controller: Intel Corporation Ethernet Controller E810-C for SFP (rev 01) + +Use the **lspci** command to obtain the selected device serial +number::: + + # lspci -vv -s 06:00.0 \| grep -i Serial + Capabilities: [150 v1] Device Serial Number 35-11-a0-ff-ff-ca-05-68 + +Or, fully parsed without punctuation::: + + # lspci -vv -s 06:00.0 \|grep Serial \|awk '{print $7}'|sed s/-//g + 3511a0ffffca0568 + +2. Rename the package file with the device serial number in the name. + +.. + +Copy the specific package over to /lib/firmware/updates/intel/ice/ddp +(or /lib/firmware/intel/ice/ ddp) and create a symbolic link with the +serial number linking to the package, as shown. The specific symbolic +link filename starts with “ice-” followed by the device serial in +lower case without dash ('-'). :: + + # ln -s + /lib/firmware/updates/intel/ice/ddp/ice_wireless_edge-1.3.22.101.pkg + /lib/firmware/updates/intel/ice/ddp/ice-3511a0ffffca0568.pkg + +3. If using Linux kernel driver (*ice*), reload the base driver (not +required if using only DPDK driver). :: + + # rmmod ice + # modprobe ice + +The driver loads the specific package to the selected device and the +OS-default package to the remaining Intel® Ethernet 800 Series +devices in the system. + +4. Verify. + +For kernel driver: +================== + +Example of output of successful load of Wireless Edge Package to all +devices::: + + # dmesg | grep -i "ddp \| safe" + [606960.921404] ice 0000:18:00.0: The DDP package was successfully loaded: ICE Wireless Edge Package version 1.3.22.101 + [606961.672999] ice 0000:18:00.1: DDP package already present on device: ICE Wireless Edge Package version 1.3.22.101 + [606962.439067] ice 0000:18:00.2: DDP package already present on device: ICE Wireless Edge Package version 1.3.22.101 + [606963.198305] ice 0000:18:00.3: DDP package already present on device: ICE Wireless Edge Package version 1.3.22.101 + [606964.252076] ice 0000:51:00.0: The DDP package was successfully loaded: ICE Wireless Edge Package version 1.3.22.101 + [606965.017082] ice 0000:51:00.1: DDP package already present on device: ICE Wireless Edge Package version 1.3.22.101 + [606965.802115] ice 0000:51:00.2: DDP package already present on device: ICE Wireless Edge Package version 1.3.22.101 + [606966.576517] ice 0000:51:00.3: DDP package already present on device: ICE Wireless Edge Package version 1.3.22.101 + + +If using only DPDK driver: +========================== + +Verify using DPDK's **testpmd** application to indicate the status +And version of the loaded DDP package. + +Example of eCPRI config with dpdk-testpmd +----------------------------------------- + +16 O-RAN eCPRI IQ streams mapped to 16 independent HW queues each.:: + + #./dpdk-testpmd -l 22-25 -n 4 -a 0000:af:01.0 -- -i --rxq=16 --txq=16 --cmdline-file=/home/flexran_xran/ddp.txt + + cat /home/flexran_xran/ddp.txt + port stop 0 + port config mtu 0 9600 + port config 0 rx_offload vlan_strip on + port start 0 + flow create 0 ingress pattern eth / ecpri common type iq_data pc_id is 0x0000 / end actions queue index 0 / mark / end + flow create 0 ingress pattern eth / ecpri common type iq_data pc_id is 0x0001 / end actions queue index 1 / mark / end + flow create 0 ingress pattern eth / ecpri common type iq_data pc_id is 0x0002 / end actions queue index 2 / mark / end + flow create 0 ingress pattern eth / ecpri common type iq_data pc_id is 0x0003 / end actions queue index 3 / mark / end + flow create 0 ingress pattern eth / ecpri common type iq_data pc_id is 0x0004 / end actions queue index 4 / mark / end + flow create 0 ingress pattern eth / ecpri common type iq_data pc_id is 0x0005 / end actions queue index 5 / mark / end + flow create 0 ingress pattern eth / ecpri common type iq_data pc_id is 0x0006 / end actions queue index 6 / mark / end + flow create 0 ingress pattern eth / ecpri common type iq_data pc_id is 0x0007 / end actions queue index 7 / mark / end + flow create 0 ingress pattern eth / ecpri common type iq_data pc_id is 0x0008 / end actions queue index 8 / mark / end + flow create 0 ingress pattern eth / ecpri common type iq_data pc_id is 0x0009 / end actions queue index 9 / mark / end + flow create 0 ingress pattern eth / ecpri common type iq_data pc_id is 0x000a / end actions queue index 10 / mark / end + flow create 0 ingress pattern eth / ecpri common type iq_data pc_id is 0x000b / end actions queue index 11 / mark / end + flow create 0 ingress pattern eth / ecpri common type iq_data pc_id is 0x000c / end actions queue index 12 / mark / end + flow create 0 ingress pattern eth / ecpri common type iq_data pc_id is 0x000d / end actions queue index 13 / mark / end + flow create 0 ingress pattern eth / ecpri common type iq_data pc_id is 0x000e / end actions queue index 14 / mark / end + flow create 0 ingress pattern eth / ecpri common type iq_data pc_id is 0x000f / end actions queue index 15 / mark / end + set fwd rxonly + start + show fwd stats all + + +O-RAN Front haul eCPRI +====================== + +Intel® Ethernet 800 Series DDP capabilities support several +functionalities important for the O-RAN FH. + +- RSS for packet steering based on ecpriMessage + +- RSS for packet steering based on ecpriRtcid/ecpriPcid + +- Queue mapping based on ecpriRtcid/ecpriPcid + +- Queue mapping based on ecpriMessage + +.. image:: images/O-RAN-FH-VNF.jpg + :width: 400 + :alt: Figure . O-RAN FH VNF + +Figure 30. O-RAN FH VNF + +Table 13. Patterns & Input Sets for Flow Director and RSS (DPDK 21.02) + +============================= ======================================== +Pattern Input Set +============================= ======================================== +ETH / VLAN / eCPRI ecpriMessage \| ecpriRtcid/ecpriPcid +ETH / VLAN /IPv4(6)/UDP/eCPRI ecpriMessage \| ecpriRtcid/ecpriPcid (*) +============================= ======================================== + +*Note:* \* IP/UDP is not used with FlexRAN + +Limitations +=========== + +DPDK 21.02 allows up to 1024 queues per VF and RSS across up to 64 +receive queues. + +RTE Flow API +============ + +The DPDK Generic flow API (rte_flow) will be used to the configure the +Intel® Ethernet 800 Series to match specific ingress traffic and forward +it to specified queues. + +For further information, please refer to section 11 of the DPDK +Programmers +guide . + +The specific ingress traffic is identified by a matching pattern which +is composed of one or more Pattern items (represented by struct +rte_flow_item). Once a match has been determined one or more associated +Actions (represented by struct rte_flow_action) will be performed. + +A number of flow rules can be combined such that one rule directs +traffic to a queue group based on *ecpriMessage/ ecpriRtcid/ecpriPcid* +etc. and a second rule distributes matching packets within that queue +group using RSS. + +The following subset of the RTE Flow API functions can be used to +validate, create and destroy RTE Flow rules. + +RTE Flow Rule Validation +======================== + +A RTE Flow rule is created via a call to the function +*rte_flow_validate*. This can be used to check the rule for correctness +and whether it would be accepted by the device given sufficient +resources.:: + + int rte_flow_validate(uint16_t port_id, + const struct rte_flow_attr *attr, + const struct rte_flow_item pattern[], + const struct rte_flow_action *actions[] + struct rte_flow_error *error); + + +port_id : port identifier of Ethernet device + +attr : flow rule attributes(ingress/egress) + +pattern : pattern specification (list terminated by the END pattern +item). + +action : associated actions (list terminated by the END action). + +error : perform verbose error reporting if not NULL. + +0 is returned upon success, negative errno otherwise. + +RTE Flow Rule Creation +====================== + +A RTE Flow rule is created via a call to the function *rte_flow_create*.:: + + struct rte_flow * rte_flow_create(uint16_t port_id, + const struct rte_flow_attr *attr, + const struct rte_flow_item pattern[], + const struct rte_flow_action *actions[] + struct rte_flow_error *error); + +port_id : port identifier of Ethernet device + +attr : flow rule attributes(ingress/egress) + +pattern : pattern specification (list terminated by the END pattern +item). + +action : associated actions (list terminated by the END action). + +error : perform verbose error reporting if not NULL. + +A valid handle is returned upon success, NULL otherwise. + +RTE Flow Rule Destruction +========================= + +A RTE Flow rule is destroyed via a call to the function +*rte_flow_destroy*.:: + + int rte_flow_destroy(uint16_t port_id, + struct rte_flow \*flow, + struct rte_flow_error \*error); + +port_id : port identifier of Ethernet device + +flow : flow rule handle to destroy. + +error : perform verbose error reporting if not NULL. + +0 is returned upon success, negative errno otherwise. + +RTE Flow Flush +============== + +All flow rule handles associated with a port can be released using +*rte_flow_flush*. They are released as with successive calls to function +*rte_flow_destroy*.:: + + int rte_flow_flush(uint16_t port_id, + struct rte_flow_error \*error); + +port_id : port identifier of Ethernet device + +error : perform verbose error reporting if not NULL. + +0 is returned upon success, negative errno otherwise. + +RTE Flow Query +============== + +A RTE Flow rule is queried via a call to the function *rte_flow_query*.:: + + int rte_flow_query(uint16_t port_id, + struct rte_flow *flow, + const struct rte_flow_action *action, + void *data, + struct rte_flow_error *error); + +port_id : port identifier of Ethernet device + +flow : flow rule handle to query + +action : action to query, this must match prototype from flow rule. + +data : pointer to storage for the associated query data type + +error : perform verbose error reporting if not NULL. + +0 is returned upon success, negative errno otherwise. + +RTE Flow Rules +============== + +A flow rule is the combination of attributes with a matching pattern and +a list of actions. Each flow rules consists of: + +- **Attributes (represented by struct rte_flow_attr):** properties of a flow rule such as its direction (ingress or egress) and priority. + +- **Pattern Items (represented by struct rte_flow_item):** is part of a matching pattern that either matches specific packet data or traffic properties. + +- **Matching pattern:** traffic properties to look for, a combination of any number of items. + +- **Actions (represented by struct rte_flow_action):** operations to perform whenever a packet is matched by a pattern. + +Attributes +========== + +Flow rule patterns apply to inbound and/or outbound traffic. For the +purposes described in later sections the rules apply to ingress only. +For further information, please refer to section 11 of the DPDK +Programmers guide .:: + + *struct*\ rte_flow_attr \ *{* + *uint32_t*\ group \ *;* + *uint32_t*\ priority \ *;* + *uint32_t*\ ingress \ *:1;* + *uint32_t*\ egress \ *:1;* + *uint32_t*\ transfer \ *:1;* + *uint32_t*\ reserved \ *:29;* + *};* + +Pattern items +============= + +For the purposes described in later sections Pattern items are primarily +for matching protocol headers and packet data, usually associated with a +specification structure. These must be stacked in the same order as the +protocol layers to match inside packets, starting from the lowest. + +Item specification structures are used to match specific values among +protocol fields (or item properties). + +Up to three structures of the same type can be set for a given item: + +- **spec:** values to match (e.g. a given IPv4 address). + +- **last:** upper bound for an inclusive range with corresponding fields in spec. + +- **mask:** bit-mask applied to both spec and last whose purpose is to distinguish the values to take into account and/or partially mask them out (e.g. in order to match an IPv4 address prefix). + +Table 14. Example RTE FLOW Item Types + ++-------------+---------------------------------------+-------------------------+ +| Item Type\* | Description | Specification Structure | ++=============+=======================================+=========================+ +| END | End marker for item lists | None | ++-------------+---------------------------------------+-------------------------+ +| VOID | Used as a placeholder for convenience | None | ++-------------+---------------------------------------+-------------------------+ +| ETH | Matches an Ethernet header | rte_flow_item_eth | ++-------------+---------------------------------------+-------------------------+ +| VLAN | Matches an 802.1Q/ad VLAN tag. | rte_flow_item_vlan | ++-------------+---------------------------------------+-------------------------+ +| IPV4 | Matches an IPv4 header | rte_flow_item_ipv4 | ++-------------+---------------------------------------+-------------------------+ +| IPV6 | Matches an IPv6 header | rte_flow_item_ipv6 | ++-------------+---------------------------------------+-------------------------+ +| ICMP | Matches an ICMP header. | rte_flow_item_icmp | ++-------------+---------------------------------------+-------------------------+ +| UDP | Matches an UDP header. | rte_flow_item_udp | ++-------------+---------------------------------------+-------------------------+ +| TCP | Matches a TCP header. | rte_flow_item_tcp | ++-------------+---------------------------------------+-------------------------+ +| SCTP | Matches a SCTP header. | rte_flow_item_sctp | ++-------------+---------------------------------------+-------------------------+ +| VXLAN | Matches a VXLAN header. | rte_flow_item_vxlan | ++-------------+---------------------------------------+-------------------------+ +| NVGRE | Matches a NVGRE header. | rte_flow_item_nvgre | ++-------------+---------------------------------------+-------------------------+ +| ECPRI | Matches ECPRI Header | rte_flow_item_ecpri | ++-------------+---------------------------------------+-------------------------+ + +:: + + RTE_FLOW_ITEM_TYPE_ETH + + struct rte_flow_item_eth { + struct rte_ether_addr dst; /**< Destination MAC. */ + struct rte_ether_addr src; /**< Source MAC. > */ + rte_be16_t type; /**< EtherType or TPID.> */ + }; + + struct rte_ether_addr { + uint8_t addr_bytes[RTE_ETHER_ADDR_LEN]; /**< Addr bytes in tx order */ + } + +:: + + RTE_FLOW_ITEM_TYPE_IPV4 + + struct rte_flow_item_ipv4 { + struct rte_ipv4_hdr hdr; /**< IPv4 header definition. */ + }; + + struct rte_ipv4_hdr { + uint8_t version_ihl; /**< version and header length */ + uint8_t type_of_service; /**< type of service */ + rte_be16_t total_length; /**< length of packet */ + rte_be16_t packet_id; /**< packet ID */ + rte_be16_t fragment_offset; /**< fragmentation offset */ + uint8_t time_to_live; /**< time to live */ + uint8_t next_proto_id; /**< protocol ID */ + rte_be16_t hdr_checksum; /**< header checksum */ + rte_be32_t src_addr; /**< source address */ + rte_be32_t dst_addr; /**< destination address */ + } + + RTE_FLOW_ITEM_TYPE_UDP + + struct rte_flow_item_udp { + struct rte_udp_hdr hdr; /**< UDP header definition. */ + }; + + struct rte_udp_hdr { + rte_be16_t src_port; /**< UDP source port. */ + rte_be16_t dst_port; /**< UDP destination port. */ + rte_be16_t dgram_len; /**< UDP datagram length */ + rte_be16_t dgram_cksum; /**< UDP datagram checksum */ + } + + RTE_FLOW_ITEM_TYPE_ECPRI + + struct rte_flow_item_ecpri { + struct rte_ecpri_combined_msg_hdr hdr; + }; + + struct rte_ecpri_combined_msg_hdr { + struct rte_ecpri_common_hdr common; + union { + struct rte_ecpri_msg_iq_data type0; + struct rte_ecpri_msg_bit_seq type1; + struct rte_ecpri_msg_rtc_ctrl type2; + struct rte_ecpri_msg_bit_seq type3; + struct rte_ecpri_msg_rm_access type4; + struct rte_ecpri_msg_delay_measure type5; + struct rte_ecpri_msg_remote_reset type6; + struct rte_ecpri_msg_event_ind type7; + rte_be32_t dummy[3]; + }; + }; + struct rte_ecpri_common_hdr { + union { + rte_be32_t u32; /**< 4B common header in BE */ + struct { + #if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN + uint32_t size:16; /**< Payload Size */ + uint32_t type:8; /**< Message Type */ + uint32_t c:1; /**< Concatenation Indicator */ + uint32_t res:3; /**< Reserved */ + uint32_t revision:4; /**< Protocol Revision */ + #elif RTE_BYTE_ORDER == RTE_BIG_ENDIAN + uint32_t revision:4; /**< Protocol Revision */ + uint32_t res:3; /**< Reserved */ + uint32_t c:1; /**< Concatenation Indicator */ + uint32_t type:8; /**< Message Type */ + uint32_t size:16; /**< Payload Size */ + #endif + }; + }; + }; + /** + * eCPRI Message Header of Type #0: IQ Data + */ + struct rte_ecpri_msg_iq_data { + rte_be16_t pc_id; /**< Physical channel ID */ + rte_be16_t seq_id; /**< Sequence ID */ + }; + + /** + * eCPRI Message Header of Type #1: Bit Sequence + */ + struct rte_ecpri_msg_bit_seq { + rte_be16_t pc_id; /**< Physical channel ID */ + rte_be16_t seq_id; /**< Sequence ID */ + }; + + /** + * eCPRI Message Header of Type #2: Real-Time Control Data + */ + struct rte_ecpri_msg_rtc_ctrl { + rte_be16_t rtc_id; /**< Real-Time Control Data ID */ + rte_be16_t seq_id; /**< Sequence ID */ + }; + + /** + * eCPRI Message Header of Type #3: Generic Data Transfer + */ + struct rte_ecpri_msg_gen_data { + rte_be32_t pc_id; /**< Physical channel ID */ + rte_be32_t seq_id; /**< Sequence ID */ + }; + + /** + * eCPRI Message Header of Type #4: Remote Memory Access + */ + RTE_STD_C11 + struct rte_ecpri_msg_rm_access { + #if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN + uint32_t ele_id:16; /**< Element ID */ + uint32_t rr:4; /**< Req/Resp */ + uint32_t rw:4; /**< Read/Write */ + uint32_t rma_id:8; /**< Remote Memory Access ID */ + #elif RTE_BYTE_ORDER == RTE_BIG_ENDIAN + uint32_t rma_id:8; /**< Remote Memory Access ID */ + uint32_t rw:4; /**< Read/Write */ + uint32_t rr:4; /**< Req/Resp */ + uint32_t ele_id:16; /**< Element ID */ + #endif + uint8_t addr[6]; /**< 48-bits address */ + rte_be16_t length; /**< number of bytes */ + }; + + /** + * eCPRI Message Header of Type #5: One-Way Delay Measurement + */ + struct rte_ecpri_msg_delay_measure { + uint8_t msr_id; /**< Measurement ID */ + uint8_t act_type; /**< Action Type */ + }; + + /** + * eCPRI Message Header of Type #6: Remote Reset + */ + struct rte_ecpri_msg_remote_reset { + rte_be16_t rst_id; /**< Reset ID */ + uint8_t rst_op; /**< Reset Code Op */ + }; + + /** + * eCPRI Message Header of Type #7: Event Indication + */ + struct rte_ecpri_msg_event_ind { + uint8_t evt_id; /**< Event ID */ + uint8_t evt_type; /**< Event Type */ + uint8_t seq; /**< Sequence Number */ + uint8_t number; /**< Number of Faults/Notif */ + }; + + +Matching Patterns +================= + +A matching pattern is formed by stacking items starting from the lowest +protocol layer to match. Patterns are terminated by END pattern item. + +Actions +------- + +Each possible action is represented by a type. An action can have an +associated configuration object. Actions are terminated by the END +action. + +Table 15. RTE FLOW Actions + ++----------+----------------------------+-------------------------+ +| Action\* | Description | Configuration Structure | ++==========+============================+=========================+ +| END | End marker for action | none | +| | lists | | ++----------+----------------------------+-------------------------+ +| VOID | Used as a placeholder for | none | +| | convenience | | ++----------+----------------------------+-------------------------+ +| PASSTHRU | Leaves traffic up for | none | +| | additional processing by | | +| | subsequent flow rules; | | +| | makes a flow rule | | +| | non-terminating. | | ++----------+----------------------------+-------------------------+ +| MARK | Attaches an integer value | rte_flow_action_mark | +| | to packets and sets | | +| | PKT_RX_FDIR and | | +| | PKT_RX_FDIR_ID mbuf flags | | ++----------+----------------------------+-------------------------+ +| QUEUE | Assigns packets to a given | rte_flow_action_queue | +| | queue index | | ++----------+----------------------------+-------------------------+ +| DROP | Drops packets | none | ++----------+----------------------------+-------------------------+ +| COUNT | Enables Counters for this | rte_flow_action_count | +| | flow rule | | ++----------+----------------------------+-------------------------+ +| RSS | Similar to QUEUE, except | rte_flow_action_rss | +| | RSS is additionally | | +| | performed on packets to | | +| | spread them among several | | +| | queues according to the | | +| | provided parameters. | | ++----------+----------------------------+-------------------------+ +| VF | Directs matching traffic | rte_flow_action_vf | +| | to a given virtual | | +| | function of the current | | +| | device | | ++----------+----------------------------+-------------------------+ + +Route to specific Queue id based on ecpriRtcid/ecpriPcid +======================================================== + +An RTE Flow Rule will be created to match an eCPRI packet with a +specific pc_id value and route it to specified queues. + +.. _pattern-items-1: + +Pattern Items +------------- + +Table 16. Pattern Items to match eCPRI packet with a Specific Physical +Channel ID (pc_id) + ++-------+----------+-----------------------+-----------------------+ +| Index | Item | Spec | Mask | ++=======+==========+=======================+=======================+ +| 0 | Ethernet | 0 | 0 | ++-------+----------+-----------------------+-----------------------+ +| 1 | eCPRI | hdr.common.type = | hdr.common.type = | +| | | RTE_EC | 0xff; | +| | | PRI_MSG_TYPE_IQ_DATA; | | +| | | | hdr.type0.pc_id = | +| | | hdr.type0.pc_id = | 0xffff; | +| | | pc_id; | | ++-------+----------+-----------------------+-----------------------+ +| 2 | END | 0 | 0 | ++-------+----------+-----------------------+-----------------------+ + +The following code sets up the *RTE_FLOW_ITEM_TYPE_ETH* and +*RTE_FLOW_ITEM_TYPE_ECPRI* Pattern Items. + +The *RTE_FLOW_ITEM_TYPE_ECPRI* Pattern is configured to match on the +pc_id value (in this case 8 converted to Big Endian byte order). + ++--------------------------------------------------------------------------+ +| uint8_t pc_id_be = 0x0800; | +| | +| #define MAX_PATTERN_NUM 3 | +| | +| struct rte_flow_item pattern[MAX_PATTERN_NUM]; | +| | +| struct rte_flow_action action[MAX_ACTION_NUM]; | +| | +| struct rte_flow_item_ecpri ecpri_spec; | +| | +| struct rte_flow_item_ecpri ecpri_mask; | +| | +| /\* Ethernet \*/ | +| | +| patterns[0].type = RTE_FLOW_ITEM_TYPE_ETH; | +| | +| patterns[0].spec = 0; | +| | +| patterns[0].mask = 0; | +| | +| /\* ECPRI \*/ | +| | +| ecpri_spec.hdr.common.type = RTE_ECPRI_MSG_TYPE_IQ_DATA; | +| | +| ecpri_spec.hdr.type0.pc_id = pc_id_be; | +| | +| ecpri_mask.hdr.common.type = 0xff; | +| | +| ecpri_mask.hdr.type0.pc_id = 0xffff; | +| | +| ecpri_spec.hdr.common.u32 = rte_cpu_to_be_32(ecpri_spec.hdr.common.u32); | +| | +| pattern[1].type = RTE_FLOW_ITEM_TYPE_ECPRI; | +| | +| pattern[1].spec = &ecpri_spec; | +| | +| pattern[1].mask = &ecpri_mask; | +| | +| /\* END the pattern array \*/ | +| | +| patterns[2].type = RTE_FLOW_ITEM_TYPE_END | ++--------------------------------------------------------------------------+ + +Action +------ + +Table 17. QUEUE action for given queue id + +===== ====== ====== ==================== ==================== +Index Action Fields Description Value +===== ====== ====== ==================== ==================== +0 QUEUE index queue indices to use Must be 0,1,2,3, etc +1 END +===== ====== ====== ==================== ==================== + +The following code sets up the action *RTE_FLOW_ACTION_TYPE_QUEUE* and +calls the *rte_flow_create* function to create the RTE Flow rule. + ++----------------------------------------------------------------------+ +| *#define MAX_ACTION_NUM 2* | +| | +| *uint16_t rx_q = 4;* | +| | +| *struct rte_flow_action_queue queue = { .index = rx_q };* | +| | +| *struct rte_flow \*handle;* | +| | +| *struct rte_flow_error err;* | +| | +| *struct rte_flow_action actions[MAX_ACTION_NUM];* | +| | +| *struct rte_flow_attr attributes = {.ingress = 1 };* | +| | +| *action[0].type = RTE_FLOW_ACTION_TYPE_QUEUE;* | +| | +| *action[0].conf = &queue;* | +| | +| *action[1].type = RTE_FLOW_ACTION_TYPE_END;* | +| | +| *handle = rte_flow_create (port_id, &attributes, patterns, actions, | +| &err);* | ++----------------------------------------------------------------------+ diff --git a/docs/images/5G-NR-L1app-Threads.jpg b/docs/images/5G-NR-L1app-Threads.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6ca6bb1baa91c654cad53d1fd9f3cba63f1501d2 GIT binary patch literal 72626 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

Wj!f`G4Jq4C!> z#(Qd2N*s?Kwhr(xI$`WUIt#T&i7|E+%p2+C8~N3Es(<(GOxvL{lNd4AGeNPT{|UX^Xky5XJM4+Jh-Q+kVsG2%@tJ5H3VUf?mbu!4A%b{+4b474T( zxrl4(@|S;X4pWv#LsV@^3S@&4YC}@P)$RnBZo#w(gd>9UGVkGQKz3+qqKx9fz;kYE zT5_L*i|y3pqv4Yj_U%KpKuPIf<6%>59u2D)8J2rY!Q}ngNTTs91E>$+b|L(cis7yz zu#Mo1e#I_diAsd)O=AA03hU?Q#J?k+{FUGT_4AT!0K~HSUO*+ZVp(;hV)~tax|sHj z_o2!31+rQ0J*VqTn+}0IC2w_71C&AF?nHA9Iu zlvv^po%}!rckyUwF9sB<+Gt^u0e5OFafzP@(oGzb0C)1g8g+CG36r;6Y|hz8-^BBN zHYqyB4R2`e@Z z7p|1}+P$?ev@5B5kh$!a(Qr>~nm=!M8pqXKC(#+5jIJ!w@4hz7CiK>Q6Yj%uA0H(GwrCPjichPsgy z;z;$j2e%*KSakK-b73nAolpjBin=7Vz{eFH|2x6?cg>{`)lX^AERdi=`|t0^{LcRI ze{?6J2zK`;`yH7hHgWGwipVYbkE-&O`B#`V5Mcmm#lCbqBO)17b(;{p!vO8kdnen% zHKi*n=no!nZwbEjlQ-lO{5(hps~7yV_VFTgj1yM{ z7N@Jt`Bnb;pEA(@f1mR3bsK!E7RUs7oO%?j7fC4z&BCGoJfzE)UD+m{6_c*gY9MIs zN8N_%N{dIby-4{-8!wzoWC{=_>Hg5z(C`4LJXd-Kzr#q!?J}eN-BOnfE@C0bdgn)2 zo6Idq9E5wfEtcfJQqljIE5!+U#R)f@3W+)#%L(!#E@-psA2t{kNC$bgHa^bIq3?-0 zg4~Jz!I}HoS2rX`A~RktG327z{9*>%w@FhXliGATQ&{@ovPetQ4_HY9%*M958QKJ9II)7$iA3=wP=N6WD=mNo7#?+yYREw4h$S+a-cs0^gE{Mw zIqI_6N4*q<32Xc7+j(KHb8kKIyxO)aO2;`q$wUk|JQ|}WMF=yFY7xO&OIqCBPm`b=ve^4MiYYGfq$~ z08=cRpkHx literal 0 HcmV?d00001 diff --git a/docs/images/O-RAN-FH-VNF.jpg b/docs/images/O-RAN-FH-VNF.jpg new file mode 100644 index 0000000000000000000000000000000000000000..662d736279e8962780b293c4beb633b419c5e807 GIT binary patch literal 182529 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

  • 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 JYue=7zX1@^R!RT> literal 0 HcmV?d00001 diff --git a/docs/images/Setup-for-xRAN-Testing-with-PHY-and-Configuration-C3-for.jpg b/docs/images/Setup-for-xRAN-Testing-with-PHY-and-Configuration-C3-for.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a5d37b0d249d02ae8ae5e56baf91858166557378 GIT binary patch literal 349572 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

    x|X7yG+!Pa7(6~L=w41bxT{b zz?)m-yk?~%hb_A?yG4hg4wD(JfXda@-HJ&1eF#Y?1Yor#W05`e0C8e?afjs+ZWNbf z3}@-bq0f+fZsKR{yoSTBaCzmP=W9}b8nZoHFiGwg4h+^b*sjHODC*LOn@Mp5Str7U zf;6m%EY?M53W9TNN^BP@q5gqxnT+HpBRw57B?Z1Gi4@gOgvtkPnYT?x3e|YGj!rAQ zn^Y6ZGl5`<&}=eNmN!|-SpF^rr6WJWq*_yaZ8OBnbL=1 z1g)g^)g{VDk%Cs^8B->=q_5v_oZK8P>~-@<>0JsON1A5ceR7pAwbC>Z;QuvOIV`zs zR73UGLJQ@3z|r)sZ0K zXy+Hw(s1f*M}@PC*Q|QNW67q;gYttNDE5}|amZF%nEIomy^gXeM4)h(8sUfWU*Uy{ z7XW>VOb=dVUyvHIKyH7MOKehucsj(~v8FBjuE11@>m%jues<~6Cvm1K8t2)<60^Ym zg5iZ`0_JP?)>0m~#ee9(Zd71b=AF_Y6P%pB;{6rR-+2<2IJBKQ|6yBssDQ=hTuui*JF)fU z2Gfq-2d`F-_iwAAKi1Q!w>sMkc)=HeEa8}%v##w#WcalP(Jb7KK7APDP_N`{=eRYy znps)?^CqgF;}d}}W3}PBWzkKL!v|E$s6A@^o@^@09S|N3R~FMe_mZq~r()nJ+}Yo5$rkxZm|T%S>j5sFI&<{et$7O2thHpMfQA7Cvka@{8GV{ym8 zJ_b8`t7O&qaF-a|SpSKnh>I|0Menc*Iquw=2eL~$O;2;?d|k(=5Rr}rV#?v~vIscw zjkN?{PHqbA+ZVWI#9X;E68=MxB)LXSbkSshJ{Becf$f&{@pOux1^%0n(O9H!YLLxJ zeW6dc2?g!xQgBU6n-fh1(i?kg@J)%c`*lvc6rmVJS%aTWb2DBwxnMuoJcR2TE{_x` zbkz}-XkXvFUBhXjBKe$evdY#nOMFU|=4hHyGM2Jc`NJzWcI-s#z$#pZZ?BSOON_0b zxKuZ;eFNtUlv!GQbF4ZV>(lMzcvs0|7Yr;4!6NGt!~@5f@7`lw?_r*%FDwNIXXHeM za_)F^(si+N=ig;Z4{=(4n0vn>U?g0BEC%;<0dto7|Lj64Mh7J&B56I&OWfnw4;l?7 zYUa}7yMwc;E$jU{2H^0CObeGCNqI@{aJrV0gVUYt*&7Ah2z=@f$JsfD4dyebS#9>{ z`75;%gB@^dA5<-DQr`X3*`b98{*MRCy;~pWEV!@LPz@_v_pBzTy7u zDoq}uTIbd#{U5IqN*v^}m%TqZ*4efG7$SQXyqlZr3-=?BBeM-_o{qmSIoAaDk+eYm zKF(Nqw~g5K^$>N$CoUZW@2gz?7?0ja? zxF`@3=dXB>)K>XMQkRd2h-onetN-$^T$HgvvSf+fa_PB;mct8cC9cwFEQFvGCmsc> zMVzMuP9`yP11>_Ud^7zyFcW!GH*b?rQTo$vKqXc22G-sv%fVu~K+faQ(1qq9f{DE< zbaI6l#Tib*tSP>nTenJPMN(vv+u-tt)#Fu(ESW=T*P_3= zmuR^k$^^A*QQCT%-?e$v6Oxx=j5*Y8*>B|`Lu2h?q=q;uX@6qr6^i6l1o>RK>@g+{ zUk;ychHpsGGs~$)h@~8QCMI#@FQ5;K08T`M+Sv(7-9TPg+iY>80ilj7ELzmcixS0{ zTnaG*+RG%zIC}w-J%6onBE;8d*Bn2gIfTHa2|3t%+0Kd&!1}sexF`G+YaTyVs2}|O z*oC)HC9Sqx=9SA>mYr1z#M7q0NKMR!6RD+R`|XT?teU1@$a22q6|&Oz-0y}%)y$fq zl5st_tlP6$8cRwIA2Z5L-nV#<$9P$lNWyxnT&48`O%=bWGC<$+x&-}WA}{>ff+wK) zAB<@$7H^Q*lSKC|ND=UIs$1PS{c<1S&NqUhRXfT5#t1Qt94q z9Q%H8b0W`L{AHKxdVfpMkX4qwqOV1RQK1-kTMS2Y{A`AU3Q!-C`l`Lj^BM0qTvVrh z*GRVhY#qq&k!s^~!JF^E?1~sW>L02FLU$WGJMmL>bUsn7vCtbXbRvW|eQIR(i46l( zi+;I7?_Z&sk}CPWcPctkAJkJ$!H# zds%fa1|{;;Dq}TOZ@d@d#vgnTe`#kbC+;=!8TT|%v=f!27pX|=Y#O5x?B1oQ(lCRj*1odtwF23iHJY%uR%P2h8;CkER-UU*vQIOVUh7GO@;Z_R_3%_d zcFbH91nZC-_LR5egWWn^qKOp9*IkR-@dhLhohpCl9erb>zGGw#>+0|7Q?~xfD>`Wj zb;3*M27r8n3{XO$^q681;eEmq;v6aMW*h!SO&gwKHR3*=J~j;4g)cs}qy(r0_05Fd zEO#KS-615;#-J0mZz7$3>ZFrRVl!+?USdYO28C=m%M!7xsy@TtjX8v$aHg^0KEkHK z_woDLqKNaq7C%g3hnW&!$&s~h9$Qt6!6F^Xh-#7oaa%O?MgN%J_5P=zk*d$XMrx5-syFCjgdD8A8r1-Q)SXi(ig(}2 zZaSJhho1x@PBT`CwhtSfA_URAQU@5^Y~*;c?u!|dOlX#d$FYZY3A4W9QOL)8MRHs* zKST^C%Cp_B$~BgGXGvO*e%qIG@)Vw}KHtYa&2s!wVzarT!6R2!quippOs07t)FUBI z(<0eMRAc=YVT<(~mW?3r(2>amr&NnICK?cL-YIS(EZ@6-laG2i5Oa#}q{gplbC8=| zBln5)?)(So;iylQd+nRv@BQCQSXfvqXRVf2dr6!08#)?m{d6?#`}yF&J#L_meDTFg zsr&2ZFTqy>QZxf!y8Xz@2sAg^^D~`o#3b$w-=RYxeu~G}(-NRW0iez}wl#2!05tiw zaw|6)Q3Z4_fXCL-b)%}B^;Ac`cb(@P8XB21Q0uOi%)FGS1yhg=_s~n64`%`F=sQ*X zy6%fTX$)H_F5Oj}C6H8Mr17Y^%egFEwYX-iZL;LpGm$fgYfag&fA!7FxhHj@4t~3O z9+T^-XeWHyi>i>FCzLycpYO|VB)1AZYJHGh$wRF5_~7NBM=T4J%nH0wmYnM`R4JZ0 z>g;a9|yvqd?ZUywh*&TaJ99C zUjhGgWkS)=#&zh0XjA)Mv(#+p%W@0D)lBKJ_qD>4o~O$!tZMlatvXT^eZK-7%25fMZ5>KJ+W{5$*K}T#e=Ky*0!`s_Lm#v%C&k&r^|oH|af^#YoaZ59p*?DS*@n(`#j`zK!k|E_<;02z7II6(GpVBz19K$&Xd zYt^v=P#jJVN~5LX7s$`v2u#?Hf>ZykH}Su>zs41j!7I?Sk-(>=CoC;cM6@j#AmrfY zF%?ct1u9k)o>eqCCj(If11RKWmp=es^j?nv`tX+UdBMTpgT0HLvG`YWm)Rc<#_|PU ziD7{T!CaU{G^;f3$FE6vcwJApziXHy z88gHqWfiJq?S8AiP++=HL}n;|%REGO8kQIuFka-MRzB{HlB`Es9^|*Fqq2KTrAIK+ zNNcMU2Uta@BunPzI8n{ZDp_XCT6*H$rg^61*GyTP<>kyDX_Jc2co)ZUHm|+Ko11xO zSDXAK+uqhFyuUcJZl2)h2VN^&{IhNKE#2$E!zU{#(KA3<4+2@XAWYL<9zbbK4ye9% zpBzYRB(*jTBII5+cy14)J%i%VvFq{Tubh>BT$T17Z{paO-|sx|gZa7bleR_^Om5qi znxiL%Pwvo|iqR=%zeoOVc0YAIP5T5)ZJrN;sA&L9iBBsPf%*+U3t3Kyqs5FdK$AKa za9$XYh!%f|-ezThp4z|dCslr)=O)zKjF3tUlB^sxc5#glo7?Mi`9qEU>!95^yz0E4 z;(xo^4IZT&n;!|yz+&-TNUtQ2?>Oio72eFf%%)&kB|wm zXK-TH7&V@2bQDX-3LhUcMMfpxLsPYk{l(zEc8KhKrBRf(>gvalxVqxwM~i`MWsk}= z{hY?L9Fk`DBkV9iNP%8ND_j?7aIHw9w;<`yWsK;SB~%&c;cqb62vSu6=R}fL7@#tx z;`%@SwbS_=&@f@HP7BIlfc{h?2|%l0CiKH@G?D!k5cqt>Q{#GukD>(`Ak@qn{dIZ_ z59KDQoMu4>_{QE@0&*OKAj`U-nzyJ!-yqBGK)MyRPaQt+S73kwF!1R__$zZKCNFAd z^bhD>Fqjj)eHB=uWz$)E)^HEJKQ%r71_R`l%uavvjEd@k?^$@li7Gwtjb3isF@z2e zrHKJLT?(wVPy(2aZRMjsL)os-fqVB~L2r9K2k=>$X+2s1-fsjH2%Hmv-`ByF^|pJ* zG#2iAC!j+|-HOLjF7iOUUIR#3T#EXkeIDovMF}uKGfepm(59&i{5nkxFdQ@70NCvB*HGJOs2PQUXV{@q!TX1O9s@Jxp8*%{M6qmRno z#`uw-bbWs|z^jD;&^I2_5sgS?fP#AA-xUDuncSt0pQ2M<0D7*1&93H(tFk)Az+5cnmjIL5u1XkA2rsQi#~s^t zAvht+#jqoKpBXo>xcA7NaG)_ttO`x<2}jY(me;llMc`j@;vw5!uYsghWMGKxO=8^a z!fD|4xq$tD?_UJdBu9OSC^|FHE_^vB6}>H43^-)X$!PW^18Uwm_>33Oa6gH>hzS3M zq#~+@>0g}q=;h7#{sHUZ-=F`pVExAC@9vW2hxlDuTu2&C!*P0pw0k7yNqfEsIhYv! zrUcn-hEQ0rfLPzbtpGUx2MX%_2MT`l{(lbzC7u7DP>`_O&Hnwxubgfa@0N}#LB6nB z=TnVye>ki^(9Ml=U`MRVN2JVd~p!05pGdrvtK~sa2>C z7y^Rp*T(~;H%?1@2JCT27FDlXPf|1kjFetl*P9!CIi?!0;E6IFPNrfqm`RjNX~krv zhPw1bUVE8j)SPzT;@Y+dUaX7GGuGe>)Hud|?=FUQL0IpOU(1mZk?n&Bw4eD^9eT3y z?K8Pt$#}JMzjCUs)(0zo<42h?Kyks*L-2$1Q;=Oc5HAi4999IPc?@K`7I{NctSgrG zWv(LXN#!Hh70WWANZE9|#Gws|u+&q%obg)!u_!A*?lw}=K=+pjnq zTM|Mw;J`Z1E67D!U1IqEE^=`vEA&Gh3#v(KfhIfTXY^g^%v16=wp2L z{QSJy>Tg^@qH3zMb$(S~1?hSY_u6r%(B|80&x9UaN2xbOrp{DnjBll&nxJQ77;acN ze=4rdsSZ6AAn*jt3Qf17RZBG}7|sl6Z690HICiXThYP>_-MFr`a1p&+1Z$#WS`qZb zbaVjzDqX+blL2}l8q5HdUk|6Q9RS^luOV@8Vu%LtlzFi3o?9Y)1oCE(7eP1#nya9I zTVC%$jf=R`Z_OfUFa6;M?;Tcv1uOPLot7BPPP;oWoW6uUmXrb(*)HH!J_tN3(2L?A z{rcBkLH|}zz1CUj6>na0O$9D!;Q-0i#o9n2hV9LjT7{vc9Pb#@ZL3E`Zi@5@xG6a2S zmWk*oREGDvDpF1|K=auTdD?LBV}W*nXuJLtV}ML~56RJ5v_Zfl-)~N%sa@T_%TD>t zPRD#?fXGjnez!w50f4CiNc=lM^{)Z1%aTKjh@+>cZ3`m0%jwtQ8+WCu&;9Fm$CJRA zCrlV1CxAGNT!=nvyCup6?+8?+y;z2jgS8=-2*I?4So9V#9PmgFiu9sKqGjM#=voN% zS-aN(9!XD__W2Fu_^*C4JLX@4Y*B$rn$RHnhZ5p&5wXl|dt#RR9#dTO2zu|*BQVhk z{!o$TW%hFNx7sF%z#dLZ+=tSP`-i8s0d>4q zya@k3ei_j1UDD!u&5IrOhE8VS_Nujj;bj0M$*g#K2TJAIr|T(-z`vX60oo6(pn`kT zj;{gcUpFqq09Be^(%J7aJBHW;{;wI}839FPc0ITd;^#l!ifJE30oGOjwQ0z92(Y9~ zr$dh+&>!^k@O~k73M-(@ipWyB93hEr%nbj|M?d(aRK36o82>li0)=e@Ob%#5jT07r z+YM9Bbi+5w5xMu_3juH<51^{?kC0G+f>`s>g3V~Bt+J>|1|%!=)(^-*Cj9;cUEGW? z2tN6HDGyv8m5Vf zv&a%(5G=`Mv;@FWU05+{ZZ+)IEa10MK~;$}7= ze9_h-0>vSe*;l^Smz~p|1E+)EhZE~;}MU>{qm%yzyKzvy#~BA zX#aS417MAp;XpL7y&kYeFJ6sX?%|=mgDYptLzXt@=$*jw7)^q{*X*OlG?-D&%>%^c zZo{Af-Jsc@!o3P6zs*93_rdo}%>m??2Vmje)l-^@WHG`&?C}5EyngWjqD!s(HJkw6 zGuH;d%^jHtKRAwpLjLx(Qvk@iwNC@%*$X}#W&>pF1`}1kpbxopG+JffQFM3wpTqY| z&(j$I>wy@J)m? zBuU#1Ap007@eHu%NA9a^7zTL9Rah7hyBg5*<+l!~VU+Bv^sYcK+1qpV4fyB>m=*(g z%7bn8pD_3&0GUqX4A4y;aros?I*%gxh@B=5{;mc|u%rS=F!sjW;o`r>l&38LrjSQ( zF$BD$AoVkle=Cvpj%r0Ohr7X#Pr=4F zaAq{Fn&}^*bkB!~J>_2b^fBF&teyjJc7<&9K)y)ToT`_4_n+I#Y$HFMpnbzbJG&{D znB*1Ae9|$Zz@nFVQLgB7x`3zQ#Vn8e0ykwor=C+i!9*3G2cWPBfn6YJj>C^7%3gHS zg<5lEBm6I}hw*V~_MN}zJ;nJ=E;XRGhdb>2o|Y(&wK3Ocfp-@M{!^w(<(*c)YcV?? z5eHJfb2y8NyEp7xVnY^E=YDv!(g`Rpqfr7(G@xHFy_AocF_Lo1tym#l9- z1Ws1xv)zCl?hi6P3+H}qm{xV%SZ=7BJZKyIkoTZ*s)?Ax)r+%F>_4y49zSP3=Od+M zo~nctZXl3^)gE61b0uSN1pfY3m=OGnUhT1AA+e(%! zY4b{p0{(rQa+ctHX}vaSt4y~gQ}wYuFQ~3X;-(5qwuWS$j+M$_a>h#UZnFFJSvKX@ zh`VVH0}W64y@RUbtBqo$=5njOUzM4vj|Q8TBwNoXZqKpDcDrr%#`3W{ayf*pl*E-; zG}t>vJA^Drw}sX{cwALlDQzR7d-B|{_KRUtFWEc&Ml$B!=IIv6#pB7vljA0j#vR_* z`&fBM4RB_9@CoQO52%=`BxigAzD?8~=C(dnX4gG{40N6+y#`nmS09?F2}3eKW;v6; z+yUns`Zv&_0LMJho=@|~qK-KUOtcggMcVD*RE5NKospvmXoABU*6jI{+|Hz5H-dXr zz!yocI(nWZQDhBSeT!F@Y?W^GR=h%T`o)=COMaH_tUo%COM63$)sZ9Z8{!d3u?3W? z)W?LNAM@*V{lU0z5yZg8rbbuMs#`{#^0ar6$|1eZ+irXEYao4k@a?;9X3J=P4YXQy z##+8C9k~XbnSorqUwfbttETedelSbRd#|3~)tbsZt9C~FNIhIM%GA!=?rk4eT%Uo6 z@CC^B@e(;wZZUa5j(l_NKuMUryZtWy2XjWy=of;vbZobEs;mU=cchhPkFW_A#uQV! zuAgT`m<%kO@-<^US0;I6OH~9XpbtDD^>8|{-0CEOUDA3X(co!q|BB5|vzx79X{sU$ z^UPwJm0dW;FDnzciE34^>XJtPbKf^Fc+uXq_VlEd__~IBe1JU}>+230en01(ojnHE z^qA_Evz;oR9uyIDI^dQ5^}aR~p_0Ns$ehwWkdS{%t8f zJnlpwl)05Zxid?xTceY;N84A<*=V$TF(B!sMqA>s*UGCh<|VOIm|z31EISQxJ~&oJ zBXWuW>DH>0em|ytop5%Opsic7K6*0>$dJb-`OA0A=Xt`by!{m#a2HfIWiJSZ*Hm5U zOzqtqI;@WTDdVeu*!wEHLu)ZCwZ`{%^yn{mazePz*;k3ce{JENp90AGq`dud;*^Q; zXJU|^`+KOPi~VNPxR`kEf8*{wqnga$yutS@-X{ zzUA{{SKeprXvEQ*b_|-qD2wEqvTPn3a~y|d8Q}%+0o)V{<%}TtnI3O1L+31y$+PHt z9vf%Q4$@nraYW|y2{fznHOQzOnze1xGgV$bWf*{GQ&NxuYY)kr;`2i!bhIh{h$qs>@sJ2X=n0j0bxv_5q9?1Ij+)-{$5m3*Ask_4JWZ zz+TyXNXi7Z0Pjl;pyZ}=$%QyEH2DH~!%q%7Pd+yCiVHd&F}R#m=CBOz)kEgD(;q50 zX%@+CbW)d&@Y@TNky9v= z!Ww#xkFbC~IWG-PJq}Xg9d4W-{!$VM#cH=s=25L-tKixxRWZQk_gTpI^$>PfM52?j z6Ruw=F-G%#eG{5vmTC}Zden9aIt)cW85PSc(!Zx0^XiB%pf@1$(FC3h8j~7xO z;VO!)N^*eF_t@A&h9sdLNb{`fW@IY&9fgx>QWV}WtWNW=Z)gx0Mq|J9IP42-2SQk{p5$l&UBY@e{W5fEf@88QPp$|`YbbBkRXf*NSlv3i% z!>-V6wi6o-79COSV(YRbyH*w3F#lhe0|98wkaDG&9?LQ=?X` z3PpW1LJh%!YRm4hLD#aC{fFj^oaSk=8yMF(s!hHu)3l2cXxT}MKo}+CtnQ}&J3?e{ zo3`5q=YvJFrDdljW>WH@XxF@3wtE7tb!D#o?Jxx&PCJQZrvs;=h0>ac4JQ%1Q!yiB z&O0$ZAVcR7+u93wN2J1<3rmz|-BhZP2a;XQWt7gN-7pg}Y%gysZu(lKvFfQrx81h) zc26@0MQ#4v+T)#D#wN7DB_wxqz^(SE1RwEq(%3MD|=jRR49b#l( z&fSJ7vfxf@nE7V319_|sw`WXsaDUtUuQty14>Ea5yHktbO67WV1k_)*hpNV5>Pe#M zCVdVN8z`EsGb8fW#x%0J#o8*gbWxm{cR=Ceb7_`QByw3vu;r=tQk(;g+)>}*&u4icX0FFe*CLKSo*?gt5 znWogn9HVylv|MZ&&HJkNJB3)JI4ruMrwa_V&@D(+4W%tE8|XEi96r#_x?l*)rX9a#m?V!qg{G6JZ~ zVTVJu<4`&>?8Ksj8++!2FV+gQQhi>Xv0&KQ;5s{V+Mr5WKmY7J)yfQ;t}YwKu0iPsvy6ru zWgW;8m$(V*v0pq+?V;gJY_p=D@*>}r++kBTi7%j#YtdQq2n(pd86}0;+-9!W25*n` zgf=H|k~U$)-~PJj-PI28^HkWH=Sz7I%F+;Q?f5E(iYGluttsk7V{?0Fo8y{=B9#Ry z@xcM>6VYMMD#rCinr?_@A4?r#?n*Y zGg36B#XkhzG^>QC*i@h#m|NvcHBo&TD5(--Ev;^VwKh6`)U{xMcW2zmD2c1IKJIIc zaRI@H-#w+_v3@x92X7Ksi6Nk|#W7xmV1uH%)>prET`u?M8{(nKTSO$!ACan)l>P5m zSbg*BpNE^7GnuC3`MflVTebJ`QGZ(TSHk%ypuN#IV|zNqM&!oc*I8Ow4vF=SHc%SY zFqYwKhe27LWohdtDe9#*9)|Y2j#DwNeaBfP`rb%POYQT5J0I4YEm6Yxr8Z*YvHF_c zv!ysAOZCTv9q6}5){|&Wu+s`QThfuKE4Rt`(r=CAAza8+grl2HG-1hfGt_@IgCfs2NiZ)( zwO>g8u^^8ZH^8g{4XO(M{tmtiA4m0N4fTrNI}BiAumjnV>i*inOI#VN(D6fHE{Us7 z)2Z4Cy@sg`hsYczrZmF#0Ju#JXm9aQiEb zQOFuN*W{8Z8r_{{i@GIVo@#qT$eXNxEvt-VGb3okus!Jx67P{uHTn#pNhgpH!rkls z!|Jyk&QsyCVI#+{?Vn3+>CjPry)gQ|QZ~}+*)@@;*Ne+-0VY>K6a@tJxUNnHk~r4V zt~W?B#evL23P-Lqr^)s?kl19D14PWyr{ZOKzYukM4baq5)pNm?O0R>VPKK!pja-!0 zqsrv7s6&fBR>M+JU%_@Yn=CDxDsAC&0WaD)_hJW3P2v+_1`A6eF74vL!1wR|T-I=$ z?}&Uag>rS#dgY>+n#97D#u1#d3w~s2YMJs2^>{@MH0gH=rTTFgiX|~W;ll6C?V7ha z0Wv1Zc}s3nuJ0AJ5e`(yxFv=U8O2SvrNtL%y>{hxb&n3;-yW>wZq{u|wb9ZoXc-c9mfZ&k=tLKsr- z|JHhenf>fzf`5?2D$O zyMO!7KXn<63~w9h{tA%aD1C1r07<$Lah2@qP3{LQ>61M_c=GA>*h>FZB48atw?0i&bWBZ;ZP!`-SHf;RxK!7Ff5x= zZ$}|<%lq=z`mHJ7^64~Q5UdDV*Klt0aG|z!BY9FRZWgl6%pbsw&%GZqN0w@7O(xUj z(tKyNiZHWdt?rn1H#6$ge4aXM{_=i(v?PzR(O{l!ndBb5Om4V}EBjmUm(|0n2%n*$ zJ3eM2?Fw!}m3sx8Z`JB>B2`@NAAYC?zWfyQdF{13{<-MnX3Q*|24n2NQJKeLji8QD z9xQ)YaAmP#QTzzCyKVdU;YLd}4zJfIwfHHkTqP^vfq^fQKXoF4W^i%5%-ZyOzq{i$ zv=(caLCRJ^8I82+himj3<*buxUZ z#qa*QeDRZT!fO$U`LTHMBUt3EmCaiS6aJH z`6`%h5z(}?%6Aq!>a$n|qfb-|=?PJI zp!-iDQ*uHyNZO^)KVAv0)7dt&|9BFEXKDFsArmaWcPg+iEsY~&zZ~A-N6}yqAeSeSmwkw>pak`Sat%LKZ_YciI z)9)n2iWghd_-Nb6_6*?h{FY=q>R&!Zhg8Gk8Z!_MKwk(>JQ zzpRg?OKUK|qT}uN(q`nXsMUOSY-a1wAgS#@Dnb2tE<`(~7XCL`a=W!ZzQLXL%Hdr% znaNcW>+vLCW5t!zG>NK()4(4v3>`MC*KW!^?dbWH8K8RO2@xYu% zwFBz@K*JSnj$N(OhEZo#5)^4etpsYH3lC6e&MHpEk_MOZ6lfdjM%U|I zk0hUHWwib#_kAo(Xs` zXroE(Sy$WhP^`35$?qLHEc>-Gy{S2}M((Z7b-r(boN-Zfa=Wvdw7_6kfTj7wfYgc0 zOu=cZT&s@@A(fBOgA|Rr&Us)@F;NyCT^E+&3~g^gCeMgFp$$$Iz{5%mn<}wnwh4&j zN}NLQ!)`?r99i&+irDw5wtaSd>3fJ2=^L@Gi_Bls(um`2Z9+PCvVC-_wS=heFIt#d znT@#z7jONL>FoGKqUs_uwJStMo=~xah+k<0#vE&b9u`Fs{&jbKZ0M5wsu@?T0G&8O z)G<|?+@Ogwlc9&A-Iq65;y^WL4e}rZtW9m1Zfx0cpzLlAR}*+0bHLiB$-D7XJk=#S ztZd4&0LWNOc7TG$%PiG32=(eE!Zci|rIy8I9Qi zf<(*>7k2*?%IgvT6v{3Ae%|0&=e%UcV@_|1NtRaStFTd$bk5>t*E0$B5y%5_6n^Z^ zyrsqC(ccOPt_FJK$z=DNUSGc}C}{8t-I^6I(>)T({Q`$sjyB%>e%#~#R$|?3)E6sn zN)`n8j{axP_XvU*E>gZo~1Q^fZr=QmqQaXq!Y z!pIrQj3y1&Pgi$SnWjZTz*aHZDm|@lvIB}OofHaLBl7Y`q$V{{TjLAgC#{Cqr_m`r z`cFTA9cvfOJ5F&)TK2BNWHA0{`0vRAgG=j>*==343FUWNks6O~JJc)|bksdr#Od@N z`+{f~VC7imK#7?FsfU|uU8>SVcHv53Mm3b-*5>hsSs+bKEYnkQgVF-W){pYGE>*8s z;}jkc_cKujIo6D;sl<+i_o6~qbd}4b1nh*6rYmY&!Np1P8?+{@IYnqq*=s=)R1XNH zj?qj0_!QTTs2si=_YM_%(fge!Vihb#PuMGmdRqD$Z5pLVGC|)ydKGq7DKaj9T-7LK@SK zvmqnUa%{VixwCJ8;rjWH_iVCZ1PJ`r8g8TJ!6Er~VvZ4OZQ*2!(B{M1MK!SDT5{2z zxOjrpG{2dC*g7R-l#Vck?G!lF&Z$`yReLKD+uMri z`%GGm9k^c$U)L73S#%#+Yr4Bi?kThT&s_Am!WOVUyqwO)x0;w_U3n{XEuK`EQ|*B) z(lY#e=(c5w>}#DGsj?3XEeaFqFoWl7K-Af6H3ThW6*TD8H`3ifF_U!|L@Loo%bEae zZ{%VP%!n%~kJnsZw+()(Nxc(!lp#Juu4Ch6tHIX}`mC$B+cDi%rHIUX(w8P|vd0f- zMOqoBMUq0Uhkh&LPtCWGbemuFlhAfEg?(69^ba(t z4`64sJ{z@o7PJuVKiff4Z_Pz{EEr8TJW@1Z(H-XgVCL+H z^7yp>?Sa+FK+X^RFd5%r^^Qd1`pc2~sU&UgO8Htq*0H5FwHuh-LW%%1il5=~bOihQyi4>Slo=K%kWBGn zCq(}YiT*K(9)qE`K|=kW-)IXtf;rgnvHPwZ|QuB zJ#2q&i}2wq=?1pcE7|qZXgw?4drn>So!fd9aL2HlE8lIbWT_znt-dvtO^xN7lpNh6 z4GY&M@D%qKlhSbNg+h+f3)3&wLITx0zWr4QbM4Heia+AX1 z_>{`0f^Z2z0#hv;m5WungPrlT(Y|EwnuWT)-HrWhY1D67)mwWuK)8E=U#==uw zS7oJIRE#Ar{p00OdeC5zWd&0TUn&7}Ep9uHeuL-tv zwBa^P#i9QD3(!ni>Wk?AxUZ-E+kJiWpW!ZoT!h5iyHo#)Pmq4zIQ)5|UzRLSO0R0K zZ3E1S)7i*+7u_B#HLEXnVNr*b8mx&3U~8fgnE-dY=6Mad--jQ`Zn#M&9KEDza7 zG$5nFm0V(NzE1Z3rlZ+Rj1?_4rsa%W4L?fz)puu4HRz^&h(^EHpOKoUk`G|H^(X-# z`Jx_HHM#WGq=Uq=8bjwKv{hV$-piT~Z&+-STmXgv3C9oU$$n2K#(~g{;E+D%M_-oN zP<}L5Z)9amJXF0+uXB|jJIdULJAc@E<6wHF1xd8r*0tb~Av4zzJEn(2k5&ikvc5IN z_+(n>)Qt#fdkUKIsYS1&0r2%<*5j-fA#JDcb>X@(sgKJSYhnz)Psh5OOPM3LjI#15 z)C^(ariS72t3`{fo1i{$lNsb?WZhTRh>&m-k;z$8z$rxPPm=BIdd+gZqcr|`$ zIPu%FCk%CnV$J!(_jvpx-|z3g>P)=L;Tn$=o{yyXjZ2=B?EJ*jF32~sqG9PXc}OkV>o5vqV20) z++msB5^cxG_SdP;L6+BQJ*cVCMA&@~D(3WJlZRV>aG82f@Ua)Hu2Ypj-8?dceq@Xj461nmE82(*!oI$xtHCpaR zIKaq+vnRcf{HT|lWO!(1Ex%GeDCVjLEfN}~E1&lY=}t1%OC-My8K;g84`Ctxyb=BQ z?q$$D@AQ{-XvRl4tiwl;|F$?1Jt8oPN;OOYD;w=?H)dwIROMrE+*fUs0{_k7SjH6~ zTL2JVGncz*FX>L)uj!qEb&=~z=Q`pA;$+lT9tdkTGU^ARzXH^;Hy1@k!DFLCuf1eKNl%4M@@I`IUMm!3zi~Z(ojs{pG!OF`L+ZX#A z+iwCk5*IEW``dL>(id0Dg;PKokjfp=>&UILK6;n=xk1VzHKtaBB#S!YEa47AOJ6~s zo_DPM-LdVDA&z}+^jQXLt@=JIYpu=dm)vv8cSB}4>-nQXgh&j3&U6X_&2TNu>Vz=%RO&qAmq zs*J^`%&c{?*LF+Z+Yp&yiG0yw&=|Krcd`7-E3=4z6x$m4IMW%lmRQ+S`Zzg*2Hps) zp`J4Zzms8RM-{s9*?*FFKF#@eJ0ti4h%tQ0#bPcM*nl5OX-nR@xEjKdbJ#vchjh^h zWM>jxyRaMYjw zuVfV%FFKESM(!qs<7wHJwvM;0*=D3J+3y(FN38CGl{O4p6|qqoj4{t1kL*Xtg6Z2gG9+H9tgBTf9uwn?SI#2P*J zLlKNGpNbf18aSdG06O7>Yz=w2m)3SSlojQTsxlzdrd>7R!d-R;hm z;^%Y{SduVjOZj=D7yd3Ii{YE)6^G1x?^2ZitnOAuYNlNQf3#@O6Sk?w+*@y-xX{pR z--0%lv5E4Tn(bvWFU!@>0aU#n z3RJepiMf-xFYYYY#-MOS=q-|I7)8^Yy_Cz`TH6jdX2vQ)`G*|+;Ef1=p)Q*MuyIpO zpKdCBF_?~tS#vZ8Amtk%ogloQV9_*(#xmm`mpjY(BAjwTS=*b~f_uK4*=*}_XMZZ?ZOiu}{{n9P|EQcx7 zRpTipby>TyiCCQLGjk@>Ds*8Td*tlmXH(+bG_hp09ihnzZ~b}0A%RL8FB*P9Z9d&T z^Fx`d8P~2_KKG?qes2%*1dMKID-cKm7meS3-yCgp{Cm6PpM#yIafo{5aEM5Ae?t48 zy;EJV2rC^d+s@;Pbp-?c{zGLjO++Ee7-0J88i_N%HA4b5v!_TKO7XDAyLh`Jl?QUg zku*~)L2oz!fMo5G^gvx{;i|q@NfKfGBTP>(Tu{M3K!_3KvpxoHkvDQHG=$6_{piiP z+d0!N`dbsqX}s4rz@^m8Z28;5Rx8qbLDPP-Q6{&l#BS|!eZ)tAGVF_HO2c_R6l-62E+ zn;vhUh#Nk(yvHxlvs(Myh|+Y}nq|@-h*QaBvEf-iARVy`>aO@gB)36^Wwe_%P|k`s z(TVg=01wH%qe)x;I4lwnHYB+#!e?qJ^4OL;s(Y&Ug*cEs*knyfp*-~Q6n6_svP@pD zd2`TDmg}5ERJ*lX5LkSSHT8qRm*%HJqOtRpDD;p_i7VT{!!np#gAgeletx;&C4TJjP#b4 zO5GCEb}{^Iw!V!2YT#sc_=w}ig@FHhx_;M+2mOegfyAI-Af;6Gaj!$WSyb0L+o)%( zy?({Ib&6)0=CNMaWD(<#dMx*D$$wGr2C5ZV|1`~x*8d08G%Mcu+*PvGJO9K;iaDfx z-U2wgt27c@FU`!7m&z{hY-dtcA7KzxMI+ zLsKPXu-b*^Mo`jo8gr*MGpHWcXnkhy>08IWYmJ_*c4>JRz@TAT_))($JN853O8ekf zk~e<8&F*a{_%NB|ZbtuY(diH(dsD|%MQd`itvO-|3+sQfOJ_r zLXBu>M3{4^0FbWYMMtdaVW$7U#>C00pQ13HJQn9OB3~hN^V<{p9%11%S2?GeA&-j} zKu@)+5qTZGK+0r{{H!XH_rBYKzRbAD(V%CAFQW|Lt~_K#m^KM0 zLT-*kMI$6xP2pvO`8`L36spm<%_04g*&#dvqa0_T~K_O%8+pX3}zh`l7w7Yt4|%9#)I_% zlsD8Yfr>zsk{8L)Pvx_Ws-JD$Pd}EpGMx^J z5&~cNf=p*2CV3X5H$VO)X2<8c zxD;9ZaRG}uQ(RMkXu7({<5;&{njC84!4zm~<0dNW_k6mf@#@?gF zFDmmhz0a}h`xrZ!*-v=Le}DDwL6^xMFRfG>y|BZtfltNPinj$S4GC#Q6YyKLO#I4PcI=rZ9qadALFRPs8SC9 znoIs;N$SEM5bgimY52j8NS`aYiuKGrB_q6(w-Q76$yhO!i&x@oK*HJvn69cJe&n2?1poZzQEV5&NpZ+k79W>`4i;#d@`1uaW5?Ye#BcnYLf? zxB2CTh2i8b#_9H)m$nvWgbaDK8-MtW>M5C%NcIaS1fj%w*8LY{XlY}7z$QJq*?0RY z!M}V|pwlZakT1KoF82zvXV!cw>6rp`hD-LPpJ_*ZkrevvkwmwxxPPo@Q;~YOqcO6~ z#`EiKYwanoSWBf2nF2v|1DJkjQi)#w@g{bL%+Z`?$iamZks_^*H)z(Uh0eI-c~%y3 zUy6+SMAEV`44OjLC*`d4)om^OU7TDZHO!~e`FfI2iP)Albmh6F`&JvbWArqzF z1_ra}Jtx$IW+u9iuO4PY9$}$H=Eo7dhE>eEKr|QRSrC~*G3Yj7d0J$hm0vV+w@bUs zTaDfQUnOQ<48H$5auz6~?C)HRRBcwVAl3?oFuR(-+;4Dv^9)d8F>7i-zo(`Fey!RS z{_m@|9V-8%zTEup>)o120@E0UV~#xWEDv9G-{Mi6qHgT36CcuK(&(y_X2^rK=r!xP zVfsL)#%imwG#(HcAtK8sGq)4bpA2_*EP6&JAsM_4TrR9IA4M6lX5W?=DR&7O!z?+!3PFY>lp zZZ)aAF}bKaF(AS)@02;9@xHJue@wKeR9y&HEH7oQUYvsRknli?skJns4v-R|lQGDL ziY&2lg1G#$QTT8Ozh|7X@R%)80$H0?nMG`-(3HCjfa#@zSq8vRPSY&G?hGf*@jP{d zFpzw&7l#NDmbS{ApA?X(J-wHIRoUbCc)3%7}Y$|9D+Ig21z} z#6vRqfFn@9i#_xnJ`T#g33^atCK6~R=pdcPdg?fldPl6s+cqD$svx~Hn8j^O`$J_v za-3>w55IOLI1mKfViYAn9Aogf_gju$(xzEbmBF1{;>JVVQLBD7rO}Rt_>jjaGbk-= z6;2x&?wnM_`*uM=w5vmJLldHfurHo3aIjDkIhr!XZQj@%iVkEE@d-5g@GII=`ebs! z&4e|0!X%<&esFXaR^M1%^SAKp3c`K!1$EOx@%>ls=>q}0874`AQH$rvi&{MBxGs|m z2H?6?2GYCkjFzfs4z3q=e-SFCei6#$8rT#tL?^E|IP0V0tKOGs4{}=c85Y5kfp4aW z($J(1rQ*bgkO-MvE_SCT^{Vm_1G}#VHnJWg9dyU!l9dWebZD|2>IFwrEyA%+ouxTw zZ&FUX92d9M=^W3z$Y$P z0&lZPm1{+-*|lqgH%T1$+iR6wku-AIQ8KBnPxM@f7m&l?my^TY|Dn~O^KV-XAx=PK zF1QQ$=Zt|f688CeHuBmKembIZLI;0Do#Xou5+SJObU>Z zQtW)oz)^9Ck29-VLE*O{n{v}7r>1K5I&-*%wv#vAnhidiUTyRqg(b%vs+B3ycbQ>X zqnL!y?3_M$Y5(gZ0S>s3{O6>A8%O9*cX;9BP8UA^G`FF3%v7NIVcLy z@(Kx47+L9-*NYX&D%vWq+(UJUtFT;PN{njPMDf^u?~UTBX^cJpur)JvpY@MgPUW+g z3p68xefEQNkb!`_!ry+Fc))w0rGj^){ zDDEVQ!={Ur&tyit2M5g%c9;Nkb+fnY~xI~>!OE;oHSX|6B7|+^*P8S1~0TM&_Bkm z^T>cI%?P`)GhLLezv)8zeu!O8X9rBDlWN@ucmpu_WUQZaM$VOarz#Pj@?O+jH84+Azn@`d5L)!`ORO&_> z5ap)+$$gElV3WHg(fhONExPWaMG5pze~j<GJ{RM*9!UPvq|alT4jaZx$HN`aEf z$7=zH&tB~~P@12tcP$FB7`l3Xc#|e=jX5O--+8}#X2`>|ROb8YF}0fM^zh+{0lX`# zY`l9s!_}xDyu`}u(%NtveDQ^>{ePmE4qy}*Nmf9r7B*Sm!O#PzJV7&QS5Hc{iBb+Q z=42MlEo_}VOk{^!db2lV7kXNBvH1B3K5%SH&t$RHS@ic5L{ypyxt&|R{xi$%+_K>B z-qOZKH;}$&hdwgtTP}CMCw#loUBqa(bUZpGO(M3YS%W8MOS4b7sK7HOko(xBn*&U& zj09MN1o*EDq!tlT{dGQ9%kQ%?#+I6yfrTE9px#(Ird zwbc~C^Jh=~6Q+a3=YLS6HZefv`Tq{@a7N|-Deh3h%q~KnFXPV$X1(=PGc&t*fmQtj zp7=Eomw?cI52%#q!!ObjSvD*%uh_?TTVP(!;<2_>f>79?c(iuoye7Egx8!8KXxGLh zO__zaJW11yCz@_S{e-G{dT(#(T5Tany@<7>tgm$tBPcz5C(dZG`Wnm=A9@?d9rSxhj`?IqIw}l z?bG%b1#Nw}!18)kluEs*_@MtPONxJBca};PF;y=<=eJ7F?DjtY-Q(@)6bMXKF!c_5 z7H_KV$*F!_kY0#u$O^Th?d^@}7_u*R)x;kHACP zdXH6kdvZ9YjTPa0(oL~a$qSZdPOTMs8qz~sp`(&M!8w?5+Pm%g_@6hJo0$Yx<2g18 zR9Q2q9CSsilXwO-zo(v#tRCV3i)GAKT^J4U<(b zZQ#aR8O7OXr!(LV;y~BZttKMxNXltenNq_rJ#|GQGz@j~3%9&6b?i;So2TvtqLW%8 zhsWH*0)(S0WwpK_B{oQ1Rtb%<_h&-&$IR|{7i9Ty4xgNcH3OC)HeF)v4@$UK5>;L! zwRfEJ*n`oUrq^c2W@oz3p7|Um=X_eg_#QhOs-Mcl1ag)t(d)W|8Wm7N+wF{TPObW| zt^Xn<^$D=R{(%jA+xb6@+$Om87lrMO8%a7he!(UA-?-OOwFY%nkCWFdOc7{YsMUP( zuh&Z|x+7s%uy}ifXTg^zNwaYwxmMG+vp>dvh@jJ@ErG8HG9b{>jQP1sR?MglO^XP- z(Z%Wq=g-V5mNcdZ7;N+bRuV<$00HfVbH2?!rP&ant);&r2$z_d<_%QKl#8&abH5c^d8*TV^S~rD@jZt3q()0n{bN|A|djuf6p8sQf5*Q&9N2-wV!7Wtqdx?ol>^Uy_3% zXrpL6LdHw9woPL z=@#jCKqNCv&ZhLON8Lo1BRHf>ZmqNQNxMJ4(7;1{;hv32UiR%YfIC~ zB}n2Oj3I)Ew6rcAh3#o&8yY}8%UHbo3LTIIazlH9eA!DKJjmo{`5h8Zqi_5-gCqS_ zb};}G?FaE4xhEK4)%=<99`Oak04#+cIjNqYxrojJZ8GH=~R9?ZTh-t`nse(&p585sTMup?lgk12OlkHeG8D^H@R*= zu1a9sPuZ>EF_O!?_x_9?Xl2y`zn8l3-@H*&(Rx~e>Ar= zar!?IdP4S?zT^pV*yx_=0m3eC&P-#a@9FGC1_ayYfJ#(k&y3Rer(aL!$|^Wjnji*? z@Nf~nc+Sf=EQE$Iw*XL`)Ry2Ow%IiYJM&xs=HmDT(RP^(%Eu);2x6- zp1+1~FSg?xC(nX%mgz>^?M6mMJHcLCZ~h}~`h@eJx?@~0H=u$4w;*E~kJ9!Yt(xVv zPLMg~pHEn9vj&nPd%0w=-<;sif$U5g$v1MVw`XTsi+V5Cl_%~+w+4jV!hzk@&^ij+)(tAkTZUv?;bF(EJ}|Gev2(o(-j=53@j1VFdzG zC7kWVF>pzyXR)?={e$l|m8bS zxy=jOL-vsL?&j&%tGOTi30t|dCF=llRqFfsn;j zS}m^+&?1l9t2-Kl(`004YAIYrg>y;#P3gvet~&jWLUAi_P8{61GOeE`)0FgFn@gKX zq3;;A9MTk(&Sl$SbDbNeg)0aSDXXmEd&!zbf9&y8xd*=dC8f|9af0}Mv;PRc=oif< zn^4A&oWeu1{3u~g>M3q)*$@%C-IhY6Gl3Wo&yM>6mlC@VWUCskwE8OE?U1Y=^-V;Z z=I%MZtkiVIr}vH~$fS7`!D&RSOoVFajotj<^p>P|dbr9e-wroV&&nMWn&5I6g+T2W z@q4+hsje9zDemiA^FdGEYgzcb5tT|B;*;*HnibvlP{}>Nd8IN|$vs+kPlx~kvc2Y& zjdr;k=MkRqC~#*G%m%o)9p%z^ZdfkYC;Q_?eq~7SUtPMNf&1gwgyh9Y5G8664w*?Q zNBwY+%Q|yW@Byk#Y~R-nBctd$c7CP9k&RlyIJm!WVnxKR6KSTg0|lh=M>~5Q6wI~2 zCJk%K)a}%IQokExKAG3v))q5N$Gh>NiSADkU#jyG^4|b%%Ypx0P{4`;4h2hPc<)Vn zsv%yOsoRSug$v!I&$i-ObaI#+s`&t&K}VE~@M;4Coge|GM?D+rJ?|BoV)>A91Ig>s zYA}S3E)&>JLK4S&blu@z^}Cr3ofrR=Aa{xS_ktXe^M4$@>-_psFUWh^z_^X%f>+!U z5`LW|btqHvN?Z%o7FA#tk?0Qb7c<8)^voVS$niOrul0T)_D#)~Y2e~_}#GTqjB++K`goCX)y-_a8e%L&qzYr7G1x}Bow{tCZG)5 zq+c0qpS)}ehmN`#SQ*5z`eyM};7#TRoD+#fnhz$sguJ_WK8#Qm)@U=-d-ZaOy-bq7 zAE}}KOCm19_(tg6s-t}gBri+1e(Wl*z@TuS9@1)6V8E=5FIii$q+CT&yEwyDYCmJ5 zxY6mv@tW^Cty9)nSt1m1lT^93ycfSAO3@O9J#{BGcxtFTXD ztZB3nx

    JUVrKo7$IUmA6ae1zUwgu+C_8bg1%uc3`(pY2E`>7jsxupV=o{dad zXnihVN&O0n_xZ})ZIAWn8O_PIFaJ3NS-E7AXR=5x&#v0luDq$IQYcrk6BEf z?Aht0ysDWNLRanaSuNN%wT1JC&w2sZ<@s`Zm36J%OS#@WQ6aRFD(a$|6&Z{TN>Zk= zoANJT3Ce2G#v{MmeV;P#lgf)KdD>AQGRvfI{X=s7l7pj1p;@6hKxXM-g_YvYWyRC1 zEGEZpwEWnp(b@=IFT4sa z2!}5N3M4}O*M9-1!NgRK9W@X3uKz?*`Tv#$&v?FisWl{%d+4TVzsQAyP~ppjU;Z9u zUq1sex!v0;j?b9aqz~}?ar?@QQ;wgsytSZ?cE2I{zqi`)_|4jn&vBt&1P?9 z9?9kCD33ww=b6UENRR7&8g=vue3|+~?}u`!EHNMV^_);!=Uu9nV;SP^tYhV>N;O?@ zpSuNHJ|bDNSXqn3lBo*fr~u^oVlPi;jMV20%N{?$znu9v{uEiV8-^A9kw>C-|eBadb`uZ_@>c5!L9ALgHzS#TNe6c zji8lKyl$xZVMU992yBD?arm&O(@ott6VYIl=c6Hc)a4i_w=1n3ynDvWBL+MfZsF0~ zX(u7Y{k4D5FYN0mp$H?*21$!1Y4_`myeRr%LbU>RXJ2=ZAqv{ZDrqhFH2w43r?@@x znM?>B_Z0Qh{JU^GHmti}><2`KV|CmTOieBxyINpHTT#bk#8|3_^JiQq{i3Xot6sJ_ z=XsLt26kwgU>de%nL8pdBDM8RM^D|!nmtvowkn|XNDJY-LbBqkxv8=$dxaJ!VoNz9 z#dHVWozUkZnZGGy5RF^hD598g+hv<3t5zn7=)_p@X)s|gf3M-n;$a!o`Anqb>7Ieked!U5{j3n zuCq)%D~F+{u7dN^q5BzMNYc2vZ?%4}R;SWuVzSj?rI;|UiT6HgoXY&rhZ47se9w+y z9Tv+RR^?mj^c^8MjEQKS6ia*h!Gxd-#G_OI4~B4-_4^SGBP>&0mqJ?B*|_OZJS_Ge z%q5+q^26qY+c^y#IY(UhX8+@SF3#N0P7|O|DJUAC@-kP-Pp{i8sOJ-5mQM<@<@%p+ zjQ%+CcQ<9%<6qDS?prQo(h_tb`#h>Q0hjciWYE}e3MZ{J03}Fxz_KrSrDd<0$hNKu zGItWT-hhpdIT&PPDl$Rd{xGG~AAI@;v*-VJS_{~5&Q&c#rdM0XuGmBcU93sLL(Vk9 zPGtqS`fOu6_mlo939Qg(RgsGTuH zUbH4Y_T8vugSJ4vqW5s657MLPJyqiY`^4obnjzK6Z(Cc^$dNI!y1{pmi}TynE<1sp zVvf~oeNITJPPk>E@F{+vbh(mc6HY%Cr;|1tcxNas;@wzK`$6WTNVmMwVBabO^4j~_ z?ZR})@Au<7mcHUS@0wxzX5PbcQhZ#^EQ@rZl%kItdrG-CIWq0Bq65c`n!rvtH=bD& zhLmU`d>z|%k3Ft?{P>LAPm*JTuo{~RLL&-T2OdpuTc;Q3ekESewr0L*Ofi63=ddOH0R@E60xR(WyZ zq4i{BX!U!OIy2)h$^35YtRKs@T*t?UFNaCH9MnvC_>kA3tLg(pr?;p9tEoSn0G#Pz zoU{-0tM^X^j-a8oF=R`&R-~tKV!;UMJOrH(CpmUU^X50!IJq?WP*EM#;ab_9jMDu? z(%HbPX-2t*rrEmZEZB<$h(#kW#6=7XxtnbB+4H;SqMY~EDIf<*GEms3#Lrq5Bo)o_ zew^9ioJX+jg7cO(C!1p~l4U!zBA}~e-0})ia1Bne8aUbTacqTi&*lSfbPqNa&@5Gr zTtJ#-)y0oE7yC&d^AF0F#@kLpOv>Z*GkeGWd|GSr+)(@5nuDcWFfl*`%GyJwT{UG1 zHxIjdCJf)-BpBgIG9Sqeg}E`6ydwqUu~G59+Co_o*;}`XtRYu222#I}2S2Fj5sSt` zwN#Cwa=DZ>FXN0d&O4vFk}s$-HFzkV4+^*{&BF~Ob4DPYfUS@Iht6^xuLy(;Z^%w7)t&Uy8l#tFV0!^qT~>Ra?_IP9|{0!pMdrXB;y_SmY*p zaE}Cz!UVF!yLGf}?-%xnM&WXLFF3e)h znr{*6FYCEFT&%CH!y(!)6GIY6dx%DS*$EV8dKs$Y92dJI+~p9M(fQ zlcFfLNOz(1M7*QCQMevjyg$?IqR`>4Yhe~u9&`D$_c({+kk{Aht!;plh8s<69wMf+ z9as|JjeAbL9s`8phH#q`$R}lk_bh65YKJjWrwrv&MNHaO_{CST}DY1rGIM-N4=gq~(KH*zY-l!KDgNfGm9SvH? zy_r3AsY_;t81imh_N2a7HfLrvCc8Oon?nSVE%ED{FSSnetCiVuI#+QrG*pnPrmR(B-*d# zrxFX`tq*-g`W{!DYSNiZGv2Y{E339j%SMGz!qsyV$w`5SA0;cQ74n@tCR9IuHf?3R z6TayG9ufb7QxB0Joj0CRJN}>P)`2uAumk*uo1`Gw{|3kg4A;L2P_>Al98qDl&BrO* z*`+uae&2xh6pz&!A4KlEaO3(%nMUQn6$|#RlbQR#eW}MqR^X^+b^Qh~p#!<7Q{#QA zSGzqL)s*$`DWV69BNz4R?t6$aGs3fVt<7wcnb8&-?OhF8Xx%+bgvk3(e7D|VB-Af) z%$u&Q8^sJ;jg%g*9X_4lFOErjjM;oih8%>9Nvpu&XmUxo&LE*|DZ!YcM z)QlJGd){;D<*V80t_#?gnDl*+WoIeIF1ygyr^>+&JOO?n``@CvYksM$)tW zKY86SzcZa8vxwLFBdj1VKB&K_DkkO1j-NN{u1s6cY_d$Of22Lj9b3!umM^Bqe=T9m6z%Gb&j^L265dekQ3VS}2UkG_p!Ai6}7oN;>tSCG{-;3sIdDbeKTe;QZb)j^9?w)LJ%Vg zpncI5ChI>L)XA%E9#$lkBw^-xVzvMRu-bGs{++?<|1lN6ILP|52l*a~Eg_I?{^j{S zfzg|E4Ql58i4P!GF%9nle1R}t`UlGVUVxMuF^Y8cpCT`f;@j>(kH7(ZZ*RK&44gK0 zC{hjJ%JAba1-u8lF7)iB{F4T|JP)92zmo1pW6F0d#Gid<0>t_k03tColKA#}g*cLH z`Jw9~TQB@tFTd&2x8;&po{BWl6`S|ICpF9XRfub9OwOhLG?rAuY#k{vnAlkR;$Xg> za`$C@kN7C}MBCKHoTN$G^pDs0yRGD(41d^CU>tl3T=oH?pIl05!yFo zQcYGmj1XrM(eN0{O7$}U77ze*C>VcHPW^=j3FNY)D4ZHlVtPIYk~BZef_}Z(qZiR< zI)R_V-wvUQgIvllleGD7K&~#jj02RZTBp0Qw(diHE0qbau*m(SdKIC;u~dcWOa8RAu9c3;EC@MXnP>D2J%w- z-8f`#+X@><&C{3shpKoCK^7mUqcOCp!e zk^1UW+ouwFtG0PtSnstun?62oo^mJ7pjpg}=eS~+Uhm!87nqrTGRRZrhoG(Nr+o`4 zK^_UV<&zmgjcz=psu&*QLm~Z$c0o~6!3Y%r*H+bdB2Yf|wSP+tmZYt3bim6`F^G0Q zQK_uY#t~i`md$8zT=mge?kK8=H6@lQftqE2@cdddTG%ld!_FGDGk?<87?*Ks1 zbhg=J^b;-Dn(|t+kocEb-=!WdA&U#WpUaQ+#?Rcr1y(kASRFxK`#h;&ikpNV66kVO z3al0DCRdmHo;bys=6DzPprHLmx{B)yw4k5%oNM;X)&W1AFu;3Lk1?H+ao7C0ZI%6ade!^@O9 z#=}RA!x&y%liwWA-4~{bG}Sqlq~NFco)G%-Qi!~H*!}&STXDu#w_5q4_gkbUvu@u7 zii6QUe{_CsmUs%GDO2LjRJAx4v3743E-Vu^V`^&0WJL(MQVwD1_B?G(98mw$c;li% z?Y`m9+eymw;!xks2;b}Q{G^F|RY^b5u~yraBB}#SAj#}{U3Zc`tVh%+jgJ_gsVLzW zfI32Bq}na$f|lR< zBZ>P)THuQdMAiAo&Et>EJ4A`%8)7C|+(n+3M{TELPpENQuovddq$i|n*P9fIjwa>| z{v&=ubcx8|rLfPRR`rlmIf|7qqITkkH6;A4Hai7eO06rkc}tF1ox5#sFKB-I!b{|E z{}mt??vbp^6@`0Xr&^^DBN&O%2~IUDd4uJG8yYzxh8u1l@Z%(eqf;wrVF*~0*o2q*Ab~F4rm?rqn3@qrcXF3{*xgI@_=@}qG^PF&a4&X;AO8&In^SZ z;Nv1$-Ej6KxA?BdCG`%m4+@uWUpRjQ+1JBvW&^9aU#Mv z&DsI4kSKhVB+?wK@MbIHgmIx(=gfE#!Xp=+d1!&8;&oBPBqZ6OEhUB^kjo=gm^1WC z2kRVU_Tn#5C&o?EzL~F&CB@(`Y^gAA xhpe4HZt0Urc_t4FvS-G-9l~SiqTc(k) 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 GC;tcgXcub$ diff --git a/docs/images/ecpri-one-way-delay-measurement-message.jpg b/docs/images/ecpri-one-way-delay-measurement-message.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4c34c797a2a792b1a1b71636730aa80b7bafd968 GIT binary patch literal 97552 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

    w!7}GE`oV86eDK!3If)FmsTLcz_FL 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 - -O-DU Low Project Introduction -================================ - -.. contents:: - :depth: 3 - :local: - -The O-DU low project focus on the baseband PHY Reference Design, which uses Xeon® series Processor with Intel Architecture. This 5GNR Reference PHY consists of a L1 binary \ -and three kinds of interfaces which are validated on a Intel® Xeon® SkyLake / CascadeLake platforms and demonstrates the capabilities of the software running different \ -5GNR L1 features. It implements the relevant functions described in [3GPP TS 38.211, 212, 213, 214 and 215]. - -The L1 has three \ -interfaces to communicate with other network functions as described below: - -* Interface between L1 and Front Haul, it adopts the WG4 specification for the CUS plane communication. - -* Interface between O-DU Low and O-DU High, it adopts the FAPI interface according to the WG8 AAL specification. - -* Interface between O-DU Low and accelerator, DPDK BBDev was adopted as original contribution, it will follow the WG6 definition after the WG6 specification is finalized. - -The following figure shows the ORAN O-CU, O-DU and O-RU blocks for a gNB implemetation. The O-DU Low projects implements the FAPI interface by a 5G FAPI TM module, the OFH-U and OFH-C -by means of the FHI Library and the functionality of the High-PHY and a test MAC are available through github in the form of a binary blob for the current release. For the details refer to the Running L1 and Testmac section of this document - - -.. image:: images/ORAN_OCU_ODU_ORU.jpg - :width: 600 - :alt: Figure1.Oran OCU ODU and ORU Block Diagram - -Scope ------ - -In this O-DU Low document, the details on how the build the modules supporting each interface, how to run the L1 and associated components, the architecture for each -interface implementation and the release notes that describe each component release details are provided. - -Intended Audience -------------------- - -The intended audience for this document are software engineers and system architects who design and develop |br| -5G systems using the O-RAN Specifications. - -Terminology -------------- - -Table 1. Terminology - -+--------+------------------------------------------------------------+ -| Term | Description | -+--------+------------------------------------------------------------+ -| 5G NR | Fifth Generation New Radio | -+--------+------------------------------------------------------------+ -| BOM | Bill of Materials | -+--------+------------------------------------------------------------+ -| CP | Cyclic Prefix | -+--------+------------------------------------------------------------+ -| DPDK | Data Plane Development Kit | -+--------+------------------------------------------------------------+ -| gNB | Next-generation NodeB also named as Base Station | -+--------+------------------------------------------------------------+ -| HARQ | Hybrid Automatic Repeat Request | -+--------+------------------------------------------------------------+ -| HW | Hardware | -+--------+------------------------------------------------------------+ -| IOT | Inter-Operability Testing | -+--------+------------------------------------------------------------+ -| IQ | In-band and Quadrature | -+--------+------------------------------------------------------------+ -| NIC | Network Interface Controller | -+--------+------------------------------------------------------------+ -| O-DU | O-RAN Distributed Unit: a logical node hosting | -| | RLC/MAC/High-PHY layers based on a lower layer functional | -| | split. | -+--------+------------------------------------------------------------+ -| O-RU | O-RAN Radio Unit: a logical node hosting Low-PHY layer and | -| | RF processing based on a lower layer functional split. | -| | This is similar to 3GPP’s “TRP” or “RRH” but more specific | -| | in including the Low-PHY layer (FFT/IFFT, PRACH | -| | extraction). | -+--------+------------------------------------------------------------+ -| PDCCH | Physical Downlink Control Channel | -+--------+------------------------------------------------------------+ -| PDSCH | Physical Downlink Shared Channel | -+--------+------------------------------------------------------------+ -| PRACH | Physical Random Access Channel | -+--------+------------------------------------------------------------+ -| PUCCH | Physical Uplink Control Channel | -+--------+------------------------------------------------------------+ -| PUSCH | Physical Uplink Shared Channel | -+--------+------------------------------------------------------------+ -| PTP | Precision Time Protocol | -+--------+------------------------------------------------------------+ -| RA | Random Access | -+--------+------------------------------------------------------------+ -| RAN | Radio Access Network | -+--------+------------------------------------------------------------+ -| RB | Resource Block | -+--------+------------------------------------------------------------+ -| RE | Resource Element | -+--------+------------------------------------------------------------+ -| RU | Radio Unit | -+--------+------------------------------------------------------------+ -| SR-IOV | Single Root Input/Output Virtualization | -+--------+------------------------------------------------------------+ -| SW | Software | -+--------+------------------------------------------------------------+ -| ToS | Top of the Second | -+--------+------------------------------------------------------------+ -| UE | User Equipment | -+--------+------------------------------------------------------------+ -| UL | Uplink | -+--------+------------------------------------------------------------+ -| VIM | Virtual Infrastructure Manager | -+--------+------------------------------------------------------------+ -| VLAN | Virtual Local Area Network | -+--------+------------------------------------------------------------+ -| xRAN | Extensible Radio Access Network | -+--------+------------------------------------------------------------+ - -Reference Documents -------------------- - -Table 2. Reference Documents - -+----------------------------------+--------------------------------------------------------------------------------+ -| Document or Reference | Document No./ | -| | Location | -+----------------------------------+--------------------------------------------------------------------------------+ -| 3GPP\* specification series | http://www.3gpp.org/DynaReport/38-series.htm | -+----------------------------------+----------------------------------+---------------------------------------------+ -| Wolf Pass Server Documentation | https://ark.intel.com/products/codename/80739/Wolf-Pass | -+----------------------------------+----------------------------------+---------------------------------------------+ -| *Intel® C++ Compiler | https://software.intel.com/en-us/system-studio/choose-download | -| system Studio XE* | | -+----------------------------------+--------------------------------------------------------------------------------+ -| DPDK documentation | http://dpdk.org/doc/guides/ | -+----------------------------------+--------------------------------------------------------------------------------+ -| O-RAN Fronthaul Working Group | https://www.o-ran.org/specifications | -| Control, User and | | -| Synchronization Plane | | -| Specification | | -| (ORAN-WG4.CUS.0-v02.00) | | -+----------------------------------+--------------------------------------------------------------------------------+ - - - +.. 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. + +.. |br| raw:: html + +
    + +O-DU Low Project Introduction +================================ + +.. contents:: + :depth: 3 + :local: + +The O-DU low project focus on the baseband PHY Reference Design, which uses Xeon® series Processor with Intel Architecture. This 5GNR Reference PHY consists of a L1 binary \ +and three kinds of interfaces which are validated on a Intel® Xeon® SkyLake / CascadeLake platforms and demonstrates the capabilities of the software running different \ +5GNR L1 features. It implements the relevant functions described in [3GPP TS 38.211, 212, 213, 214 and 215]. + +The L1 has three \ +interfaces to communicate with other network functions as described below: + +* Interface between L1 and Front Haul, it adopts the WG4 specification for the CUS plane communication. + +* Interface between O-DU Low and O-DU High, it adopts the FAPI interface according to the WG8 AAL specification. + +* Interface between O-DU Low and accelerator, DPDK BBDev was adopted as original contribution, it will follow the WG6 definition after the WG6 specification is finalized. + +The following figure shows the ORAN O-CU, O-DU and O-RU blocks for a gNB implemetation. The O-DU Low projects implements the FAPI interface by a 5G FAPI TM module, the OFH-U and OFH-C +by means of the FHI Library and the functionality of the High-PHY and a test MAC are available through github in the form of a binary blob for the current release. For the details refer to the Running L1 and Testmac section of this document + + +.. image:: images/ORAN_OCU_ODU_ORU.jpg + :width: 600 + :alt: Figure1.Oran OCU ODU and ORU Block Diagram + +Scope +----- + +In this O-DU Low document, the details on how the build the modules supporting each interface, how to run the L1 and associated components, the architecture for each +interface implementation and the release notes that describe each component release details are provided. + +Intended Audience +------------------- + +The intended audience for this document are software engineers and system architects who design and develop |br| +5G systems using the O-RAN Specifications. + +Terminology +------------- + +Table 1. Terminology + ++---------+-----------------------------------------------------------+ +| Term | Description | ++=========+===========================================================+ +| 5G NR | Fifth Generation New Radio | ++---------+-----------------------------------------------------------+ +| ACS | Access Control system | ++---------+-----------------------------------------------------------+ +| API | Application Programming Interface | ++---------+-----------------------------------------------------------+ +| BOM | Bill of Materials | ++---------+-----------------------------------------------------------+ +| CP | Cyclic Prefix | ++---------+-----------------------------------------------------------+ +| DDP | Dynamic Device Personalization | ++---------+-----------------------------------------------------------+ +| DPDK | Data Plane Development Kit | ++---------+-----------------------------------------------------------+ +| eAxC | Extended Antenna Carrier | ++---------+-----------------------------------------------------------+ +| eCPRI | Enhanced Common Public Radio Interface | ++---------+-----------------------------------------------------------+ +| eNB | Enode B | ++---------+-----------------------------------------------------------+ +| ETH | Ethernet | ++---------+-----------------------------------------------------------+ +| FCS | Frame Check Sequence | ++---------+-----------------------------------------------------------+ +| FEC | Forward Error Correction | ++---------+-----------------------------------------------------------+ +| FFT | Fast Fourier Transform | ++---------+-----------------------------------------------------------+ +| FH | Front Haul | ++---------+-----------------------------------------------------------+ +| gNB | Next-generation NodeB also named as Base Station | ++---------+-----------------------------------------------------------+ +| GNSS | Global Navigation Satellite System | ++---------+-----------------------------------------------------------+ +| GPS | Global Positioning System | ++---------+-----------------------------------------------------------+ +| HARQ | Hybrid Automatic Repeat Request | ++---------+-----------------------------------------------------------+ +| HW | Hardware | ++---------+-----------------------------------------------------------+ +| IFG | Interframe Gap | ++---------+-----------------------------------------------------------+ +| IFFT | Inverse Fast Fourier Transform | ++---------+-----------------------------------------------------------+ +| IoT | Inter-Operability Testing | ++---------+-----------------------------------------------------------+ +| IQ | In-band and Quadrature | ++---------+-----------------------------------------------------------+ +| LAA | License Assisted Access | ++---------+-----------------------------------------------------------+ +| LTE | Long Term Evolution | ++---------+-----------------------------------------------------------+ +| MAC | Media Access Control | ++---------+-----------------------------------------------------------+ +| MEC | Mobile Edge Computing | ++---------+-----------------------------------------------------------+ +| M-Plane | Management Plane | ++---------+-----------------------------------------------------------+ +| mmWave | Millimeter Wave | ++---------+-----------------------------------------------------------+ +| NIC | Network Interface Controller | ++---------+-----------------------------------------------------------+ +| O-DU | O-RAN Distributed Unit: a logical node hosting | +| | RLC/MAC/High-PHY layers based on a lower layer functional | +| | split. | ++---------+-----------------------------------------------------------+ +| O-RU | O-RAN Radio Unit: a logical node hosting Low-PHY layer | +| | and RF processing based on a lower layer functional | +| | split. This is similar to 3GPP’s “TRP” or “RRH” but more | +| | specific in including the Low-PHY layer (FFT/IFFT, PRACH | +| | extraction). | ++---------+-----------------------------------------------------------+ +| OWD | One Way Delay | ++---------+-----------------------------------------------------------+ +| PDCCH | Physical Downlink Control Channel | ++---------+-----------------------------------------------------------+ +| PDSCH | Physical Downlink Shared Channel | ++---------+-----------------------------------------------------------+ +| PHC | Physical Hardware Clock | ++---------+-----------------------------------------------------------+ +| PHP | Hypetext Preprocessor | ++---------+-----------------------------------------------------------+ +| PMD | Poll Mode Driver | ++---------+-----------------------------------------------------------+ +| POSIX | Portable Operating System Interface | ++---------+-----------------------------------------------------------+ +| PRACH | Physical Random Access Channel | ++---------+-----------------------------------------------------------+ +| PRB | Physical Resource Block | ++---------+-----------------------------------------------------------+ +| PRTC | Protected Real Time Clock | ++---------+-----------------------------------------------------------+ +| PUCCH | Physical Uplink Control Channel | ++---------+-----------------------------------------------------------+ +| PUSCH | Physical Uplink Shared Channel | ++---------+-----------------------------------------------------------+ +| PTP | Precision Time Protocol | ++---------+-----------------------------------------------------------+ +| RA | Random Access | ++---------+-----------------------------------------------------------+ +| RAN | Radio Access Network | ++---------+-----------------------------------------------------------+ +| RB | Resource Block | ++---------+-----------------------------------------------------------+ +| RE | Resource Element | ++---------+-----------------------------------------------------------+ +| RLC | Radio Link Control | ++---------+-----------------------------------------------------------+ +| RoE | Radio over Ethernet | ++---------+-----------------------------------------------------------+ +| RT | Real Time | ++---------+-----------------------------------------------------------+ +| RTE | Real Time Environment | ++---------+-----------------------------------------------------------+ +| RSS | Receive Side Scaling | ++---------+-----------------------------------------------------------+ +| RU | Radio Unit | ++---------+-----------------------------------------------------------+ +| SR-IOV | Single Root Input/Output Virtualization | ++---------+-----------------------------------------------------------+ +| SW | Software | ++---------+-----------------------------------------------------------+ +| SyncE | Synchronous Ethernet | ++---------+-----------------------------------------------------------+ +| TDD | Time Division Duplex | ++---------+-----------------------------------------------------------+ +| ToS | Top of the Second | ++---------+-----------------------------------------------------------+ +| TSC | Time Stamp Counter | ++---------+-----------------------------------------------------------+ +| TTI | Transmission Time Interval | ++---------+-----------------------------------------------------------+ +| UE | User Equipment | ++---------+-----------------------------------------------------------+ +| UL | Uplink | ++---------+-----------------------------------------------------------+ +| VF | Virtual Function | ++---------+-----------------------------------------------------------+ +| VIM | Virtual Infrastructure Manager | ++---------+-----------------------------------------------------------+ +| VLAN | Virtual Local Area Network | ++---------+-----------------------------------------------------------+ +| VM | Virtual Machine | ++---------+-----------------------------------------------------------+ +| WLS | Wireless Subsystem Interface | ++---------+-----------------------------------------------------------+ +| xRAN | Extensible Radio Access Network | ++---------+-----------------------------------------------------------+ + +Reference Documents +------------------- + +Table 2. Reference Documents + ++----------------------------------+----------------------------------+ +| Document | Document | +| | No./Location | ++==================================+==================================+ +| *FlexRAN Reference Solution | 575822 | +| Software Release Notes* | | ++----------------------------------+----------------------------------+ +| *FlexRAN Reference Solution L1 | 571741 | +| XML Configuration User Guide* | | ++----------------------------------+----------------------------------+ +| *FlexRAN Reference Solution LTE | 571742 | +| eNB L2-L1 Application | | +| Programming Interface [API] | | +| Specification* | | ++----------------------------------+----------------------------------+ +| *FlexRAN Reference Solution | 576423 | +| L2-L1 nFAPI Specification* | | ++----------------------------------+----------------------------------+ +| *FlexRAN and Mobile Edge Compute | 575891 | +| (MEC) Platform Setup Guide* | | ++----------------------------------+----------------------------------+ +| *FlexRAN 5G NR Reference | 603577 | +| Solution RefPHY (Doxygen).* | | ++----------------------------------+----------------------------------+ +| *Intel® Ethernet Controller | 617015 | +| E810* | | +| | | +| *Dynamic Device Personalization | | +| (DDP)* | | +| | | +| *Technology Guide* | | ++----------------------------------+----------------------------------+ +| *3GPP\* specification series* | https://www.3gpp.org | +| | dynareport/SpecList.htm | +| | ?release=Rel-15&tech=3&ts=1&tr=1 | ++----------------------------------+----------------------------------+ +| *Wolf Pass Server Documentation* | https://ark.intel.com/products/ | +| | codename/80739/Wolf-Pass | ++----------------------------------+----------------------------------+ +| *Intel® C++ Compiler in Intel® | https://software.intel.com/ | +| Parallel Studio XE* | en-us/c-compilers/ipsxe | ++----------------------------------+----------------------------------+ +| *DPDK documentation* | http://dpdk.org/doc/guides/ | ++----------------------------------+----------------------------------+ +| *O-RAN Fronthaul Working Group | https://www.o-ran.org/ | +| Control, User and | specifications | +| Synchronization Plane | | +| Specification | | +| (ORAN-WG4.CUS.0-v04.00)* | | ++----------------------------------+----------------------------------+ +| *ORAN Specification* | https://www.o-ran.org/ | +| | adopter-license | ++----------------------------------+----------------------------------+ +| *IEEE-1588-2008 IEEE Standard | https://standards.ieee.org/ | +| for a Precision Clock | standard/1588-2008.html | +| Synchronization Protocol for | | +| Networked Measurement and | | +| Control Systems* | | ++----------------------------------+----------------------------------+ +| *eCPRI Specification V2.0 | http://www.cpri.info/spec.html | +| Interface Specification* | | ++----------------------------------+----------------------------------+ + + + diff --git a/docs/xRAN-Library-Design_fh.rst b/docs/xRAN-Library-Design_fh.rst index 2e57169..a37f957 100644 --- a/docs/xRAN-Library-Design_fh.rst +++ b/docs/xRAN-Library-Design_fh.rst @@ -1,1784 +1,2031 @@ -.. 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. - -.. |br| raw:: html - -
    - -xRAN Library Design -=================== - -.. contents:: - :depth: 3 - :local: - -The xRAN Library consists of multiple modules where different -functionality is encapsulated. The complete list of all \*.c and \*.h -files as well as Makefile for xRAN (aka FHI Lib Bronze Release) release is: - -├── app - -│ ├── dpdk.sh - -│ ├── gen_test.m - -│ ├── Makefile - -│ ├── src - -│ │ ├── common.c - -│ │ ├── common.h - -│ │ ├── config.c - -│ │ ├── config.h - -│ │ ├── debug.h - -│ │ ├── sample-app.c - -│ │ └── xran_mlog_task_id.h - -│ └── usecase - -│ ├── cat_b - -│ ├── lte_a - -│ ├── lte_b - -│ ├── mu0_10mhz - -│ ├── mu0_20mhz - -│ ├── mu0_5mhz - -│ ├── mu1_100mhz - -│ └── mu3_100mhz - -├── banner.txt - -├── build.sh - -├── lib - -│ ├── api - -│ │ ├── xran_compression.h - -│ │ ├── xran_compression.hpp - -│ │ ├── xran_cp_api.h - -│ │ ├── xran_fh_o_du.h - -│ │ ├── xran_mlog_lnx.h - -│ │ ├── xran_pkt_cp.h - -│ │ ├── xran_pkt.h - -│ │ ├── xran_pkt_up.h - -│ │ ├── xran_sync_api.h - -│ │ ├── xran_timer.h - -│ │ ├── xran_transport.h - -│ │ └── xran_up_api.h - -│ ├── ethernet - -│ │ ├── ethdi.c - -│ │ ├── ethdi.h - -│ │ ├── ethernet.c - -│ │ └── ethernet.h - -│ ├── Makefile - -│ └── src - -│ ├── xran_app_frag.c - -│ ├── xran_app_frag.h - -│ ├── xran_bfp_cplane16.cpp - -│ ├── xran_bfp_cplane32.cpp - -│ ├── xran_bfp_cplane64.cpp - -│ ├── xran_bfp_cplane8.cpp - -│ ├── xran_bfp_ref.cpp - -│ ├── xran_bfp_utils.hpp - -│ ├── xran_common.c - -│ ├── xran_common.h - -│ ├── xran_compression.cpp - -│ ├── xran_cp_api.c - -│ ├── xran_frame_struct.c - -│ ├── xran_frame_struct.h - -│ ├── xran_lib_mlog_tasks_id.h - -│ ├── xran_main.c - -│ ├── xran_printf.h - -│ ├── xran_sync_api.c - -│ ├── xran_timer.c - -│ ├── xran_transport.c - -│ ├── xran_ul_tables.c - -│ └── xran_up_api.c - -├── Licenses.txt - -├── readme.md - -└── test - - ├── common - - │ ├── common.cpp - - │ ├── common.hpp - - │ ├── common_typedef_xran.h - - │ ├── json.hpp - - │ ├── MIT_License.txt - - │ ├── xranlib_unit_test_main.cc - - │ └── xran_lib_wrap.hpp - - ├── master.py - - ├── readme.txt - - └── test_xran - - ├── chain_tests.cc - - ├── compander_functional.cc - - ├── conf.json - - ├── c_plane_tests.cc - - ├── init_sys_functional.cc - - ├── Makefile - - ├── prach_functional.cc - - ├── prach_performance.cc - - ├── unittests.cc - - └── u_plane_functional.cc - - -General Introduction --------------------- - -The xRAN Library functionality is broken down into two main sections: - -- XRAN specific packet handling (src) - -- Ethernet and supporting functionality (Ethernet) - -External functions and structures are available via set of header files -in the API folder. - -This library depends on DPDK primitives to perform Ethernet networking -in userspace, including initialization and control of Ethernet ports. -Ethernet ports are expected to be SRIOV virtual functions (VF) but also -can be physical functions (PF) as well. - -This library is expected to be included in the project via -xran_fh_o_du.h, statically compiled and linked with the L1 application -as well as DPDK libraries. The xRAN packet processing-specific -functionality is encapsulated into this library and not exposed to the -rest of the 5G NR pipeline. - -This way, xRAN specific changes are decoupled from the 5G NR L1 -pipeline. As a result, the design and implementation of the 5G L1 -pipeline code and xRAN library can be done in parallel, provided the -defined interface is not modified. - -Ethernet consists of two modules: - -- Ethernet implements xRAN specific HW Ethernet initialization, close, - send and receive - -- ethdi provides Ethernet level software primitives to handle xRAN - packet exchange - -The xRAN layer implements the next set of functionalities: - -- Common code specific for both C-plane and U-plane as well as TX and - RX - -- Implementation of C-plane API available within the library and - externally - -- The primary function where general library initialization and - configuration performed - -- Module to provide the status of PTP synchronization - -- Timing module where system time is polled - -- eCPRI specific transport layer functions - -- APIs to handle U-plane packets - -- A set of utility modules for debugging (printf) and data tables are - included as well. - -.. image:: images/Illustration-of-xRAN-Sublayers.jpg - :width: 600 - :alt: Figure 24. Illustration of xRAN Sublayers - -Figure 24. Illustration of xRAN Sublayers - -A detailed description of functions and input/output arguments, as well -as key data structures, can be found in the Doxygen file for the FlexRAN -5G NR release. In this document supplemental information is provided -with respect to the overall design and implementation assumptions. - -Initialization and Close ------------------------- - -An example of the initialization sequence can be found in the sample -application code. It consists of the following steps: - -1.Setup structure struct xran_fh_init according to configuration. - -2.Call xran_init() to instantiate the xRAN lib memory model and -threads. The function returns a pointer to xRAN handle which is used -for consecutive configuration functions. - -3.Initialize memory buffers used for L1 and xRAN exchange of -information. - -4.Assign callback functions for (one) TTI event and for the reception -of half of the slot of symbols (7 symbols) and Full slot of symbols -14 symbols). - -5.Call xran_open() to initialize PRACH configuration, initialize DPDK, -and launch xRAN timing thread. - -6.Call xran_start() to start processing xRAN packets for DL and UL. - -After this is complete 5G L1 runs with xRAN Front haul interface. During -run time for every TTI event, the corresponding call back is called. For -packet reception on UL direction, the corresponding call back is called. -OTA time information such as frame id, subframe id and slot id can be -obtained as result synchronization of the L1 pipeline to GPS time is -performed. - -To stop and close the interface, perform this sequence of steps: - -7.Call xran_stop() to stop the processing of DL and UL. - -8.Call xran_close() to remove usage of xRAN resources. - -9.Call xran_mm_destroy() to destroy memory management subsystem. - -After this session is complete, a restart of the full L1 application is -required. The current version of the library does not support multiple -sessions without a restart of the full L1 application. - -Configuration -~~~~~~~~~~~~~ - -The xRAN library configuration is provided in the set of structures, such as struct xran_fh_init and struct xran_fh_config. -The sample application gives an example of a test configuration used for LTE and 5GNR mmWave and Sub 6. Sample application -folder /app/usecase/ contains set of examples for different Radio Access technology (LTE|5G NR), different category (A|B) -and list of numerologies (0,1,3) and list of bandwidths (5,10,20,100Mhz). - -Some configuration options are not used in the Bronze Release and are reserved -for future use. - -The following options are available: - -**Structure** struct xran_fh_init\ **:** - -- Number of CC and corresponding settings for each - -- Core allocation for xRAN - -- Ethernet port allocation - -- O-DU and RU Ethernet Mac address - -- Timing constraints of O-DU and 0-RU - -- Debug features - -**Structure** struct xran_fh_config\ **:** - -- Number of eAxC - -- TTI Callback function and parameters - -- PRACH 5G NR specific settings - -- TDD frame configuration - -- BBU specific configuration - -- RU specific configuration - -**From an implementation perspective:** - -xran_init() performs init of the xRAN library and interface according to -struct xran_fh_init information as per the start of application -configuration.: - -- Init DPDK with corresponding networking ports and core assignment - -- Init mbuf pools - -- Init DPDK timers and DPDK rings for internal packet processing - -- Instantiate ORAN FH thread doing - - - Timing processing (xran_timing_source_thread()) - - - ETH PMD (process_dpdk_io()) - - - IO XRAN-PHY exchange (ring_processing_func()) - -**xran_open()** performs additional configuration as per run scenario: - -- PRACH configuration - -- C-plane initialization - -The Function **xran_close()** performs free of resources and allows potential -restart of front haul interface with a different scenario. - -Start/Stop -~~~~~~~~~~ - -The Functions **xran_start()/xran_stop()** enable/disable packet processing for -both DL and UL. This triggers execution of callbacks into the L1 -application. - -Data Exchange -~~~~~~~~~~~~~ - -Exchange of IQ samples, as well as C-plane specific information, is -performed using a set of buffers allocated by xRAN library from DPDK -memory and shared with the l1 application. Buffers are allocated as a -standard mbuf structure and DPDK pools are used to manage the allocation -and free resources. Shared buffers are allocated at the init stage and -are expected to be reused within 80 TTIs (10 ms). - -The xRAN protocol requires U-plane IQ data to be transferred in network -byte order, and the L1 application handles IQ sample data in CPU byte -order, requiring a swap. The PHY BBU pooling tasks perform copy and byte -order swap during packet processing. - -C-plane Information Settings -~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The interface between the xRAN library and PHY is defined via struct -xran_prb_map and similar to the data plane. The same mbuf memory is used -to allocate memory map of PRBs for each TTI. - -/\* Beamforming waights for single stream for each PRBs given number of Antenna elements \*/ -struct xran_cp_bf_weight{ - - int16_t nAntElmTRx; /\*< num TRX for this allocation \*/ - int8_t* p_ext_start; /\*< pointer to start of buffer for full C-plane packet \*/ - int8_t* p_ext_section; /\*< pointer to form extType \*/ - int16_t ext_section_sz; /\*< extType section size \*/ - -/\* section descriptor for given number of PRBs used on U-plane packet creation \*/ -struct xran_section_desc { - - uint16_t section_id; /\*< section id used for this element \*/ - - int16_t iq_buffer_offset; /\*< Offset in bytes for the content of IQs with in main symb buffer \*/ - int16_t iq_buffer_len; /\*< Length in bytes for the content of IQs with in main symb buffer \*/ - - uint8_t \*pData; /\*< optional pointer to data buffer \*/ - void \*pCtrl; /\*< optional poitner to mbuf \*/ - -}; - -struct xran_prb_elm { - int16_t nRBStart; /\*< start RB of RB allocation \*/ - int16_t nRBSize; /\*< number of RBs used \*/ - int16_t nStartSymb; /\*< start symbol ID \*/ - int16_t numSymb; /\\*< number of symbols \*/ - int16_t nBeamIndex; /\*< beam index for given PRB \*/ - int16_t bf_weight_update; /\* need to update beam weights or not \*/ - int16_t compMethod; /\*< compression index for given PRB \*/ - int16_t iqWidth; /\*< compression bit width for given PRB \*/ - int16_t BeamFormingType; /\*< index based, weights based or attribute based beam forming\*/ - - struct xran_section_desc * p_sec_desc[XRAN_NUM_OF_SYMBOL_PER_SLOT]; /\*< section desctiptors to U-plane data given RBs \*/ - struct xran_cp_bf_weight bf_weight; /\*< beam forming information relevant for given RBs \*/ - - union { - struct xran_cp_bf_attribute bf_attribute; - struct xran_cp_bf_precoding bf_precoding; - - }; - -/\* PRB map structure \*/ - -struct xran_prb_map { - uint8_t dir; /\*< DL or UL direction \*/ - uint8_t xran_port; /\*< xran id of given RU [0-(XRAN_PORTS_NUM-1)] \*/ - uint16_t band_id; /\*< xran band id \*/ - uint16_t cc_id; /\*< componnent carrier id [0 - (XRAN_MAX_SECTOR_NR-1)] \*/ - uint16_t ru_port_id; /\*< RU device antenna port id [0 - (XRAN_MAX_ANTENNA_NR-1) \*/ - uint16_t tti_id; /\*< xRAN slot id [0 - (max tti-1)] \*/ - uint8_t start_sym_id; /\*< start symbol Id [0-13] \*/ - uint32_t nPrbElm; /\*< total number of PRB elements for given map [0- (XRAN_MAX_PRBS-1)] \*/ - struct xran_prb_elm prbMap[XRAN_MAX_PRBS]; - -}; - - -For the Bronze release C-plane sections are expected to be provided by L1 -pipeline. If 100% of RBs always allocated single element of RB map -is expected to be allocated across all symbols. Dynamic RB allocation is -performed base on C-plane configuration. - -The xRAN library will require that the content of the PRB map should be -sorted in increasing order of PRB first and then symbols. - -Memory Management ------------------ - -Memory used for the exchange of IQ data as well as control information, -is controlled by the xRAN library. L1 application at the init stage -performs: - -- init memory management subsystem - -- init buffer management subsystem (via DPDK pools) - -- allocate buffers (mbuf) for each CC, antenna, symbol, and direction \ - (DL, UL, PRACH) for XRAN_N_FE_BUF_LEN TTIs. - -- buffers are reused for every XRAN_N_FE_BUF_LEN TTIs - -After the session is completed, the application can free buffers and -destroy the memory management subsystem. - -From an implementation perspective, the xRAN library uses a standard -mbuf primitive and allocates a pool of buffers for each sector. This -function is performed using rte_pktmbuf_pool_create(), -rte_pktmbuf_alloc(), rte_pktmbuf_append() to allocate one buffer per -symbol for the mmWave case. More information on mbuf and DPDK pools can -be found in the DPDK documentation. - -In the current implementation, mbuf, the number of buffers shared with -the L1 application is the same number of buffers used to send to and -receive from the Ethernet port. Memory copy operations are not required -if the packet size is smaller than or equal to MTU. Future versions of -the xRAN library are required to remove the memory copy requirement for -packets where the size larger than MTU. - -External Interface Memory -~~~~~~~~~~~~~~~~~~~~~~~~~ - -The xRAN library header file defines a set of structures to simplify -access to memory buffers used for IQ data. - -struct xran_flat_buffer { - -uint32_t nElementLenInBytes; - -uint32_t nNumberOfElements; - -uint32_t nOffsetInBytes; - -uint32_t nIsPhyAddr; - -uint8_t \*pData; - -void \*pCtrl; - -}; - -struct xran_buffer_list { - -uint32_t nNumBuffers; - -struct xran_flat_buffer \*pBuffers; - -void \*pUserData; - -void \*pPrivateMetaData; - -}; - -typedef struct { - -int32_t bValid ; - -int32_t nSegToBeGen; - -int32_t nSegGenerated; - -int32_t nSegTransferred; - -struct rte_mbuf \*pData[N_MAX_BUFFER_SEGMENT]; - -struct xran_buffer_list sBufferList; - -} BbuIoBufCtrlStruct; - -There is no explicit requirement for user to organize a set of buffers -in this particular way. From a compatibility |br| -perspective it is useful to -follow the existing design of the 5G NR l1app used for Front Haul FPGA -and define structures shared between l1 and xRAN lib as shown: - -/\* io struct \*/ - -BbuIoBufCtrlStruct -sFrontHaulTxBbuIoBufCtrl[XRAN_N_FE_BUF_LEN][XRAN_MAX_SECTOR_NR]\ -[XRAN_MAX_ANTENNA_NR]; - -BbuIoBufCtrlStruct -sFrontHaulTxPrbMapBbuIoBufCtrl[XRAN_N_FE_BUF_LEN][XRAN_MAX_SECTOR_NR][XRAN_MAX_ANTENNA_NR]; - -BbuIoBufCtrlStruct -sFrontHaulRxBbuIoBufCtrl[XRAN_N_FE_BUF_LEN][XRAN_MAX_SECTOR_NR][XRAN_MAX_ANTENNA_NR]; - -BbuIoBufCtrlStruct -sFrontHaulRxPrbMapBbuIoBufCtrl[XRAN_N_FE_BUF_LEN][XRAN_MAX_SECTOR_NR][XRAN_MAX_ANTENNA_NR]; - -BbuIoBufCtrlStruct -sFHPrachRxBbuIoBufCtrl[XRAN_N_FE_BUF_LEN][XRAN_MAX_SECTOR_NR][XRAN_MAX_ANTENNA_NR]; - -/\* Cat B \*/ - -BbuIoBufCtrlStruct -sFHSrsRxBbuIoBufCtrl[XRAN_N_FE_BUF_LEN][XRAN_MAX_SECTOR_NR][XRAN_MAX_ANT_ARRAY_ELM_NR]; - -/\* buffers list \*/ - -struct xran_flat_buffer -sFrontHaulTxBuffers[XRAN_N_FE_BUF_LEN][XRAN_MAX_SECTOR_NR][XRAN_MAX_ANTENNA_NR][XRAN_NUM_OF_SYMBOL_PER_SLOT]; - -struct xran_flat_buffer -sFrontHaulTxPrbMapBuffers[XRAN_N_FE_BUF_LEN][XRAN_MAX_SECTOR_NR][XRAN_MAX_ANTENNA_NR][XRAN_NUM_OF_SYMBOL_PER_SLOT]; - -struct xran_flat_buffer -sFrontHaulRxBuffers[XRAN_N_FE_BUF_LEN][XRAN_MAX_SECTOR_NR][XRAN_MAX_ANTENNA_NR][XRAN_NUM_OF_SYMBOL_PER_SLOT]; - -struct xran_flat_buffer -sFrontHaulRxPrbMapBuffers[XRAN_N_FE_BUF_LEN][XRAN_MAX_SECTOR_NR][XRAN_MAX_ANTENNA_NR][XRAN_NUM_OF_SYMBOL_PER_SLOT]; - -struct xran_flat_buffer -sFHPrachRxBuffers[XRAN_N_FE_BUF_LEN][XRAN_MAX_SECTOR_NR][XRAN_MAX_ANTENNA_NR][XRAN_NUM_OF_SYMBOL_PER_SLOT]; - -/\* Cat B SRS buffers \*/ - -struct xran_flat_buffer -sFHSrsRxBuffers[XRAN_N_FE_BUF_LEN][XRAN_MAX_SECTOR_NR][XRAN_MAX_ANT_ARRAY_ELM_NR][XRAN_MAX_NUM_OF_SRS_SYMBOL_PER_SLOT]; - -Doxygen file and xran_fh_o_du.h provide more details on the definition -and usage of these structures. - -xRAN Specific Functionality ---------------------------- - -Front haul interface implementation in the general case is abstracted -away using the interface defined in xran_fh_o_du.h - -The L1 application is not required to access xRAN protocol primitives -(eCPRI header, application header, and others) directly. It is -recommended to use the interface to remove dependencies between -different software modules such as the l1 pipeline and xRAN library. - -External API -~~~~~~~~~~~~ - -The U-plane and C-plane APIs can be used directly from the application -if such an option is required. The set of header files can be exported -and called directly. - -xran_fh_o_du.h – xRAN main header file for O-DU scenario - -xran_cp_api.h – Control plane functions - -xran_pkt_cp.h – xRAN control plane packet definition - -xran_pkt.h – xRAN packet definition - -xran_pkt_up.h – xRAN User plane packet definition - -xran_sync_api.h – api functions to check PTP status - -xran_timer.h – API for timing - -xran_transport.h – eCPRI transport layer definition and api - -xran_up_api.h – user plane functions and definitions - -xran_compression.h – interface to compression/decompression functions - -Doxygen files provide detailed information on functions and structures -available. - -.. _c-plane-1: - -C-plane -~~~~~~~ - -Implementation of the C-plane set of functions is defined in -xran_cp_api.c and is used to prepare the content of C-plane packets -according to the given configuration. Users can enable/disable -generation of C-plane messages using enableCP field in struct -xran_fh_init structure during init of ORAN front haul. The time of -generation of C-plane message for DL and UL is done “Slot-based,” and -timing can be controlled using O-DU settings according to Table 4. - -The C-plane module contains: - -- initialization of C-plane database to keep track of allocation of - resources - -- code to prepare C-plane packet for TX (O-DU) - -- eCPRI header - -- append radio application header - -- append control section header - -- append control section - -- parser of C-plane packet for RX (O-RU emulation) - -- parses and checks Section 1 and Section 3 packet content - -Sending and receiving packets is performed using xRAN ethdi sublayer -functions. - -Creating a C-Plane Packet -^^^^^^^^^^^^^^^^^^^^^^^^^ - -API and Data Structures -''''''''''''''''''''''' - -A C-Plane message can be composed using the following API: - -int xran_prepare_ctrl_pkt(struct rte_mbuf \*mbuf, - -struct xran_cp_gen_params \*params, - -uint8_t CC_ID, uint8_t Ant_ID, uint8_t seq_id); - -mbuf is the pointer of a DPDK packet buffer, which is allocated from the -caller. - -params are the pointer of the structure which has the parameters to -create the message. - -CC_ID is the parameter to specify component carrier index, Ant_ID is the -parameters to specify the antenna port index (RU port index). - -seq_id is the sequence index for the message. - -params, the parameters to create a C-Plane message are defined as the -structure of xran_cp_gen_params with an |br| -example given below: - -struct xran_cp_gen_params { - -uint8_t dir; - -uint8_t sectionType; - -uint16_t numSections; - -struct xran_cp_header_params hdr; - -struct xran_section_gen_info \*sections; - -}; - -dir is the direction of the C-Plane message to be generated. Available -parameters are defined as XRAN_DIR_UL and XRAN_DIR_DL. - -sectionType is the section type for C-Plane message to generate, as ORAN -specification defines all sections in a C-Plane message shall have the -same section type. If different section types are required, they shall -be sent with separate C-Plane messages. Available types of sections are -defined as XRAN_CP_SECTIONTYPE_x. Please refer to the Table 5-2 Section -Types in chapter 5.4 of ORAN specification. - -numSections is the total number of sections to generate, i.e., the -number of the array in sections (struct xran_section_gen_info). - -hdr is the structure to hold the information to generate the radio -application and section header in the C-Plane message. It is defined as -the structure of xran_cp_header_params. Not all parameters in this -structure are used for the generation, and the required parameters are -slightly different by the type of section, as described in Table 10 and -Table 11. - -Table 10. struct xran_cp_header_params – Common Radio Application Header - -+------------+---------------------------------------------+---------+ -| | Description | Remarks | -+============+=============================================+=========+ -| filterIdx | Filter Index. Available values are defined | 5.4.4.3 | -| | as XRAN_FILTERINDEX_xxxxx. | | -+------------+---------------------------------------------+---------+ -| frameId | Frame Index. It is modulo 256 of frame | 5.4.4.4 | -| | number. | | -+------------+---------------------------------------------+---------+ -| subframeId | Sub-frame Index. | 5.4.4.5 | -+------------+---------------------------------------------+---------+ -| slotId | Slot Index. The maximum number is 15, as | 5.4.4.6 | -| | defined in the specification. | | -+------------+---------------------------------------------+---------+ -| startSymId | Start Symbol Index. | 5.4.4.7 | -+------------+---------------------------------------------+---------+ - -Table 11. struct xran_cp_header_params – Section Specific Parameters - -+----------+----------+----------+---------+---+---+---+---+----------+ -| | Des\ | Section | Remarks | | | | | | -| | cription | Type | | | | | | | -| | | ap\ | | | | | | | -| | | plicable | | | | | | | -+==========+==========+==========+=========+===+===+===+===+==========+ -| | | 0 | 1 | 3 | 5 | 6 | 7 | | -+----------+----------+----------+---------+---+---+---+---+----------+ -| fftSize | FFT size | X | | X | | | | 5.4.4.13 | -| | in frame | | | | | | | | -| | st\ | | | | | | | | -| | ructure. | | | | | | | | -| | A\ | | | | | | | | -| | vailable | | | | | | | | -| | values | | | | | | | | -| | are | | | | | | | | -| | defined | | | | | | | | -| | as | | | | | | | | -| | X\ | | | | | | | | -| | RAN_FFTS\| | | | | | | | -| | IZE_xxxx | | | | | | | | -+----------+----------+----------+---------+---+---+---+---+----------+ -| Scs | Su\ | X | | X | | | | 5.4.4.13 | -| | bcarrier | | | | | | | | -| | Spacing | | | | | | | | -| | in the | | | | | | | | -| | frame | | | | | | | | -| | st\ | | | | | | | | -| | ructure. | | | | | | | | -| | A\ | | | | | | | | -| | vailable | | | | | | | | -| | values | | | | | | | | -| | are | | | | | | | | -| | defined | | | | | | | | -| | as | | | | | | | | -| | XRAN_SCS\| | | | | | | | -| | _xxxx | | | | | | | | -+----------+----------+----------+---------+---+---+---+---+----------+ -| iqWidth | I/Q bit | | X | X | X | | | 5.4.4.10 | -| | width in | | | | | | | | -| | user | | | | | | | 6.3.3.13 | -| | data | | | | | | | | -| | com\ | | | | | | | | -| | pression | | | | | | | | -| | header. | | | | | | | | -| | Should | | | | | | | | -| | be set | | | | | | | | -| | by zero | | | | | | | | -| | for | | | | | | | | -| | 16bits | | | | | | | | -+----------+----------+----------+---------+---+---+---+---+----------+ -| compMeth | Com\ | | X | X | X | | | 5.4.4.10 | -| | pression | | | | | | | | -| | Method | | | | | | | 6.3.3.13 | -| | in user | | | | | | | | -| | data | | | | | | | | -| | com\ | | | | | | | | -| | pression | | | | | | | | -| | header. | | | | | | | | -| | A\ | | | | | | | | -| | vailable | | | | | | | | -| | values | | | | | | | | -| | are | | | | | | | | -| | defined | | | | | | | | -| | as | | | | | | | | -| | XRAN\ | | | | | | | | -| | _COMPMET\| | | | | | | | -| | HOD_xxxx | | | | | | | | -+----------+----------+----------+---------+---+---+---+---+----------+ -| numUEs | Number | | | | | X | | 5.4.4.11 | -| | of UEs. | | | | | | | | -| | Applies | | | | | | | | -| | to | | | | | | | | -| | section | | | | | | | | -| | type 6 | | | | | | | | -| | and not | | | | | | | | -| | s\ | | | | | | | | -| | upported | | | | | | | | -| | in this | | | | | | | | -| | release. | | | | | | | | -+----------+----------+----------+---------+---+---+---+---+----------+ -| ti\ | Time | X | | X | | | | 5.4.4.12 | -| meOffset | Offset. | | | | | | | | -| | Time | | | | | | | | -| | offset | | | | | | | | -| | from the | | | | | | | | -| | start of | | | | | | | | -| | the slot | | | | | | | | -| | to start | | | | | | | | -| | of | | | | | | | | -| | Cyclic | | | | | | | | -| | Prefix. | | | | | | | | -+----------+----------+----------+---------+---+---+---+---+----------+ -| cpLength | Cyclic | X | | X | | | | 5.4.4.14 | -| | Prefix | | | | | | | | -| | Length. | | | | | | | | -+----------+----------+----------+---------+---+---+---+---+----------+ - -**Only sections types 1 and 3 are supported in the current release.** - -Sections are the pointer to the array of structure which has the -parameters for section(s) and it is defined as below: - -struct xran_section_gen_info { - -struct xran_section_info info; - -uint32_t exDataSize; - -struct { - -uint16_t type; - -uint16_t len; - -void \*data; - -} exData[XRAN_MAX_NUM_EXTENSIONS]; - -}; - -info is the structure to hold the information to generate section and it -is defined as the structure of xran_section_info. Like -xran_cp_header_params, all parameters are not required to generate -section and Table 12 describes which |br| -parameters are required for each -section. - -Table 12. Parameters for Sections - -+-------+-------+-------+-------+-------+-------+-------+-------+ -| | D\ | Se\ | Re\ | | | | | -| | escri\| ction | marks | | | | | -| | ption | Type | | | | | | -| | | appli\| | | | | | -| | | cable | | | | | | -+=======+=======+=======+=======+=======+=======+=======+=======+ -| | | 0 | 1 | 3 | 5 | 6 | | -+-------+-------+-------+-------+-------+-------+-------+-------+ -| Id | Se\ | **X** | **X** | **X** | **X** | **X** | 5.\ | -| | ction | | | | | | 4.5.1 | -| | I\ | | | | | | | -| | denti\| | | | | | | -| | fier. | | | | | | | -+-------+-------+-------+-------+-------+-------+-------+-------+ -| Rb | Res\ | **X** | **X** | **X** | **X** | **X** | 5.\ | -| | ource | | | | | | 4.5.2 | -| | Block\| | | | | | | -| | Indic\| | | | | | | -| | ator. | | | | | | | -| | Avai\ | | | | | | | -| | lable | | | | | | | -| | v\ | | | | | | | -| | alues | | | | | | | -| | are | | | | | | | -| | de\ | | | | | | | -| | fined | | | | | | | -| | as | | | | | | | -| | XRAN\ | | | | | | | -| | _\ | | | | | | | -| | RBI\ | | | | | | | -| | ND_xx\| | | | | | | -| | xx. | | | | | | | -+-------+-------+-------+-------+-------+-------+-------+-------+ -| s\ | S\ | **X** | **X** | **X** | **X** | **X** | 5.\ | -| ymInc | ymbol | | | | | | 4.5.3 | -| | n\ | | | | | | | -| | umber | | | | | | | -| | Incr\ | | | | | | | -| | ement | | | | | | | -| | com\ | | | | | | | -| | mand. | | | | | | | -| | Avai\ | | | | | | | -| | lable | | | | | | | -| | v\ | | | | | | | -| | alues | | | | | | | -| | are | | | | | | | -| | de\ | | | | | | | -| | fined | | | | | | | -| | as | | | | | | | -| | XRA\ | | | | | | | -| | N_SYM\| | | | | | | -| | BOL\ | | | | | | | -| | NUMBE\| | | | | | | -| | R_xx\ | | | | | | | -| | xx. | | | | | | | -+-------+-------+-------+-------+-------+-------+-------+-------+ -| star\ | Sta\ | **X** | **X** | **X** | **X** | **X** | 5.\ | -| tPrbc | rting\| | | | | | 4.5.4 | -| | PRB | | | | | | | -| | of | | | | | | | -| | data | | | | | | | -| | se\ | | | | | | | -| | ction | | | | | | | -| | de\ | | | | | | | -| | scrip\| | | | | | | -| | tion. | | | | | | | -+-------+-------+-------+-------+-------+-------+-------+-------+ -| nu | The | **X** | **X** | **X** | **X** | **X** | 5.\ | -| mPrbc | n\ | | | | | | 4.5.6 | -| | umber | | | | | | | -| | of | | | | | | | -| | conti\| | | | | | | -| | guous | | | | | | | -| | PRBs | | | | | | | -| | per | | | | | | | -| | data | | | | | | | -| | se\ | | | | | | | -| | ction | | | | | | | -| | de\ | | | | | | | -| | scrip\| | | | | | | -| | tion. | | | | | | | -| | When | | | | | | | -| | nu\ | | | | | | | -| | mPrbc | | | | | | | -| | is | | | | | | | -| | gr\ | | | | | | | -| | eater | | | | | | | -| | than | | | | | | | -| | 255, | | | | | | | -| | it | | | | | | | -| | will | | | | | | | -| | be | | | | | | | -| | conv\ | | | | | | | -| | erted | | | | | | | -| | to | | | | | | | -| | zero | | | | | | | -| | by | | | | | | | -| | the | | | | | | | -| | macro | | | | | | | -| | (XR\ | | | | | | | -| | AN_CO\| | | | | | | -| | NVERT\| | | | | | | -| | _NUMP\| | | | | | | -| | RBC). | | | | | | | -+-------+-------+-------+-------+-------+-------+-------+-------+ -| r\ | Res\ | **X** | **X** | **X** | **X** | | 5.\ | -| eMask | ource\| | | | | | 4.5.5 | -| | El\ | | | | | | | -| | ement\| | | | | | | -| | Mask. | | | | | | | -+-------+-------+-------+-------+-------+-------+-------+-------+ -| numS\ | N\ | **X** | **X** | **X** | **X** | | 5.\ | -| ymbol | umber | | | | | | 4.5.7 | -| | of | | | | | | | -| | Sym\ | | | | | | | -| | bols. | | | | | | | -+-------+-------+-------+-------+-------+-------+-------+-------+ -| b\ | Beam\ | | **X** | **X** | | | 5.\ | -| eamId | I\ | | | | | | 4.5.9 | -| | denti\| | | | | | | -| | fier. | | | | | | | -+-------+-------+-------+-------+-------+-------+-------+-------+ -| freqO\| Freq\ | | | **X** | | | 5.4\ | -| ffset | uency\| | | | | | .5.11 | -| | Of\ | | | | | | | -| | fset. | | | | | | | -+-------+-------+-------+-------+-------+-------+-------+-------+ -| ueId | UE\ | | | | **X** | **X** | 5.4\ | -| | i\ | | | | | | .5.10 | -| | denti\| | | | | | | -| | fier. | | | | | | | -| | Not | | | | | | | -| | supp\ | | | | | | | -| | orted | | | | | | | -| | in | | | | | | | -| | this | | | | | | | -| | rel\ | | | | | | | -| | ease. | | | | | | | -+-------+-------+-------+-------+-------+-------+-------+-------+ -| regF\ | Regu\ | | | | | **X** | 5.4\ | -| actor | lariz\| | | | | | .5.12 | -| | ation | | | | | | | -| | Fa\ | | | | | | | -| | ctor. | | | | | | | -| | Not | | | | | | | -| | supp\ | | | | | | | -| | orted | | | | | | | -| | in | | | | | | | -| | this | | | | | | | -| | re\ | | | | | | | -| | lease | | | | | | | -+-------+-------+-------+-------+-------+-------+-------+-------+ -| Ef | Exte\ | | **X** | **X** | **X** | **X** | 5.\ | -| | nsion | | | | | | 4.5.8 | -| | Flag. | | | | | | | -| | Not | | | | | | | -| | supp\ | | | | | | | -| | orted | | | | | | | -| | in | | | | | | | -| | this | | | | | | | -| | rel\ | | | | | | | -| | ease. | | | | | | | -+-------+-------+-------+-------+-------+-------+-------+-------+ - -**Only sections types 1 and 3 are supported in the current release.** - -**The xran_section_info has more parameters – type, startSymId, iqWidth, -compMeth. These are the same parameters as those of radio application -or section header but need to be copied into this structure again for -the section data base.** - -exDataSize and exData are used to add section extensions for the -section. - -exDataSize is the number of elements in the exData array. The maximum -number of elements is defined as XRAN_MAX_NUM_EXTENSIONS and it is -defined by four in this release with the assumption that four different -types of section extensions can be added to a section (section extension -type 3 is excluded since it is not supported). exData.type is the type -of section extension and exData.len is the length of structure of -section extension parameter in exData.data. exData.data is the pointer -to the structure of section extensions and different structures are used -by the type of section extensions like below. - -struct xran_sectionext1_info { - -uint16_t rbNumber; /* number RBs to ext1 chain \*/ - -uint16_t bfwNumber; /* number of bf weights in this section \*/ - -uint8_t bfwiqWidth; - -uint8_t bfwCompMeth; - -int16_t \*p_bfwIQ; /* pointer to formed section extention \*/ - -int16_t bfwIQ_sz; /* size of buffer with section extention information -\*/ - -union { - -uint8_t exponent; - -uint8_t blockScaler; - -uint8_t compBitWidthShift; - -uint8_t activeBeamspaceCoeffMask[XRAN_MAX_BFW_N]; /\* ceil(N/8)*8, -should be multiple of 8 \*/ - -} bfwCompParam; - -}; - -For section extension type 1, the structure of xran_sectionext1_info is -used. Please note that the xRAN library will use bfwIQ (beamforming -weight) as-is, i.e., xRAN library will not perform the compression, so -the user should provide proper data to bfwIQ. - -struct xran_sectionext2_info { - -uint8_t bfAzPtWidth; - -uint8_t bfAzPt; - -uint8_t bfZePtWidth; - -uint8_t bfZePt; - -uint8_t bfAz3ddWidth; - -uint8_t bfAz3dd; - -uint8_t bfZe3ddWidth; - -uint8_t bfZe3dd; - -uint8_t bfAzSI; - -uint8_t bfZeSI; - -}; - -For section extension type 2, the structure of xran_sectionext2_info is -used. Each parameter will be packed as specified bit width. - -struct xran_sectionext4_info { - -uint8_t csf; - -uint8_t pad0; - -uint16_t modCompScaler; - -}; - -For section extension type 4, the structure of xran_sectionext4_info is -used. - -struct xran_sectionext5_info { - -uint8_t num_sets; - -struct { - -uint16_t csf; - -uint16_t mcScaleReMask; - -uint16_t mcScaleOffset; - -} mc[XRAN_MAX_MODCOMP_ADDPARMS]; - -}; - -For section extension type 5, the structure of xran_sectionext5_info is -used. Please note that current implementation supports maximum two sets -of additional parameters. - -**Section extensions type 3 is not supported since it is LTE specific.** - -Section Extensions are not fully verified in this release. - -Detail Procedures in API -'''''''''''''''''''''''' - -xran_prepare_ctrl_pkt() has several procedures to compose a C-Plane -packet. - -1. Append transport header - -- Reserve eCPRI header space in the packet buffer - -- eCPRI version is fixed by XRAN_ECPRI_VER (0x0001) - -- Concatenation and transport layer fragmentation is not supported. - - ecpri_concat=0, ecpri_seq_id.sub_seq_id=0 and ecpri_seq_id.e_bit=1 - -- The caller needs to provide a component carrier index, antenna index, - and message identifier through function arguments. - - CC_ID, Ant_ID and seq_id - -- ecpriRtcid (ecpri_xtc_id) is composed with CC_ID and Ant_ID by - xran_compose_cid. - -- DU port ID and band sector ID are fixed by zero in this release. - -- The output of xran_compose_cid is stored in network byte order. - -- The length of the payload is initialized by zero. - -2. Append radio application header: - -- xran_append_radioapp_header() checks the type of section through - params->sectionType and determines proper function to append - remaining header components. - -- Only section type 1 and 3 are supported, returns - XRAN_STATUS_INVALID_PARAM for other types. - -- Each section uses a different function to compose the remaining - header and size to calculate the total length in the transport - header. - -For section type 1, xran_prepare_section1_hdr() and sizeof(struct -xran_cp_radioapp_section1_header) - -For section type 3, xran_prepare_section3_hdr() and sizeof(struct -xran_cp_radioapp_section3_header) - -- Reserves the space of common radio application header and composes - header by xran_prepare_radioapp_common_header(). - -- The header is stored in network byte order. - -- Appends remaining header components by the selected function above - -- The header is stored in network byte order - -3. Append section header and section - -- xran_append_control_section() determines proper size and function to - append section header and contents. - -- For section type 1, xran_prepare_section1() and sizeof(struct - xran_cp_radioapp_section1) - -- For section type 3, xran_prepare_section3() and sizeof(struct - xran_cp_radioapp_section3) - -- Appends section header and section(s) by selected function above. - -- If multiple sections are configured, then those will be added. - -- Since fragmentation is not considered in this implementation, the - total length of a single C-Plane message shall not exceed MTU - size. - -- The header and section(s) are stored in network byte order. - -- Appends section extensions if it is set (ef=1) - -- xran_append_section_extensions() adds all configured extensions by - its type. - -- xran_prepare_sectionext_x() (x = 1,2,4,5) will be called by the - type from xran_append_section_extensions() and these functions - will create extension field. - -**Example Usage of API** -'''''''''''''''''''''''' - -There are two reference usages of API to generate C-Plane message in -lib/src/xran_common.c - -- generate_cpmsg_dlul() - -- generate_cpmsg_prach() - -generate_cpmsg_dlul() is to generate the C-Plane message with section -type 1 for DL or UL symbol data scheduling. - -This function has hardcoded values for some parameters such as: - -- The filter index is fixed to XRAN_FILTERINDEX_STANDARD. - -- RB indicator is fixed to XRAN_RBIND_EVERY. - -- Symbol increment is not used (XRAN_SYMBOLNUMBER_NOTINC) - -- Resource Element Mask is fixed to 0xfff - -The extension is not used. - -After C-Plane message generation, API send_cpmsg() is called. This -function also includes the implementation for these capabilities: - -- Send the generated packet to the TX ring after adding an Ethernet - header. - -- Add section information of generated C-Plane packet to section - database, to generate U-plane message by C-Plane configuration - -send_cpmsg_prach() is to generate the C-Plane message with section type -3 for PRACH scheduling. - -This functions also has some hardcoded values for the following -parameters: - -- RB indicator is fixed to XRAN_RBIND_EVERY. - -- Symbol increment is not used (XRAN_SYMBOLNUMBER_NOTINC). - -- Resource Element Mask is fixed to 0xfff. - -And similar to generate_cpmsg_dlul(), after this function generates the -message, send_cpmsg() sends the generated packet to the TX ring and adds -section information of the packet to the section database. Checking and -parsing received PRACH symbol data by section information from the -C-Plane are not implemented in this release. - -Example Configuration of C-Plane Messages -''''''''''''''''''''''''''''''''''''''''' - -C-Plane messages can be composed through API, and the sample application -shows several reference usages of the configuration for different -numerologies. - -Below are the examples of C-Plane message configuration with a sample -application for mmWave – numerology 3, 100 MHz bandwidth, TDD (DDDS) - -**C-Plane Message – downlink symbol data for a downlink slot** - -- Single CP message with the single section of section type 1 - -- Configures single CP message for all consecutive downlink symbols - -- Configures whole RBs (66) for a symbol - -- Compression and beamforming are not used - -Common Header Fields:: - -- dataDirection = XRAN_DIR_DL -- payloadVersion = XRAN_PAYLOAD_VER -- filterIndex = XRAN_FILTERINDEX_STANDARD -- frameId = [0..99] -- subframeId = [0..9] -- slotID = [0..9] -- startSymbolid = 0 -- numberOfsections = 1 -- sectionType = XRAN_CP_SECTIONTYPE_1 -- udCompHdr.idIqWidth = 0 -- udCompHdr.udCompMeth = XRAN_COMPMETHOD_NONE -- reserved = 0 - -Section Fields:: - -- sectionId = [0..4095] -- rb = XRAN_RBIND_EVERY -- symInc = XRAN_SYMBOLNUMBER_NOTINC -- startPrbc = 0 -- numPrbc = 66 -- reMask = 0xfff -- numSymbol = 14 -- ef = 0 -- beamId = 0 - - -**C-Plane Message – uplink symbol data for uplink slot** - -- Single CP message with the single section of section type 1 - -- Configures single CP message for all consecutive uplink symbols (UL - symbol starts from 3) - -- Configures whole RBs (66) for a symbol - -- Compression and beamforming are not used - -Common Header Fields:: - -- dataDirection = XRAN_DIR_UL -- payloadVersion = XRAN_PAYLOAD_VER -- filterIndex = XRAN_FILTERINDEX_STANDARD -- frameId = [0..99] -- subframeId = [0..9] -- slotID = [0..9] -- startSymbolid = 3 -- numberOfsections = 1 -- sectionType = XRAN_CP_SECTIONTYPE_1 -- udCompHdr.idIqWidth = 0 -- udCompHdr.udCompMeth = XRAN_COMPMETHOD_NONE -- reserved = 0 - -Section Fields:: - -- sectionId = [0..4095] -- rb = XRAN_RBIND_EVERY -- symInc = XRAN_SYMBOLNUMBER_NOTINC -- startPrbc = 0 -- numPrbc = 66 -- reMask = 0xfff -- numSymbol = 11 -- ef = 0 -- beamId = 0 - - -**C-Plane Message – PRACH** - -- Single CP message with the single section of section type 3 including - repetition - -- Configures PRACH format A3, config index 81, and detail parameters - are: - -- Filter Index : 3 - -- CP length : 0 - -- Time offset : 2026 - -- FFT size : 1024 - -- Subcarrier spacing : 120KHz - -- Start symbol index : 7 - -- Number of symbols : 6 - -- Number of PRBCs : 12 - -- Frequency offset : -792 - -- Compression and beamforming are not used - -Common Header Fields:: - -- dataDirection = XRAN_DIR_UL -- payloadVersion = XRAN_PAYLOAD_VER -- filterIndex = XRAN_FILTERINDEPRACH_ABC -- frameId = [0,99] -- subframeId = [0,3] -- slotID = 3 or 7 -- startSymbolid = 7 -- numberOfSections = 1 -- sectionType = XRAN_CP_SECTIONTYPE_3 -- timeOffset = 2026 -- frameStructure.FFTSize = XRAN_FFTSIZE_1024 -- frameStructure.u = XRAN_SCS_120KHZ -- cpLength = 0 -- udCompHdr.idIqWidth = 0 -- udCompHdr.udCompMeth = XRAN_COMPMETHOD_NONE - -Section Fields:: - -- sectionId = [0..4095] -- rb = XRAN_RBIND_EVERY -- symInc = XRAN_SYMBOLNUMBER_NOTINC -- startPrbc = 0 -- numPrbc = 12 -- reMask = 0xfff -- numSymbol = 6 -- ef = 0 -- beamId = 0 -- frequencyOffset = -792 -- reserved - - -Functions to Store/Retrieve Section Information -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -There are several functions to store/retrieve section information of -C-Plane messages. Since U-plane messages must be generated by the -information in the sections of a C-Plane message, it is required to -store and retrieve section information. - -**APIs and Data Structure** -''''''''''''''''''''''''''' - -APIs for initialization and release storage are: - -- int xran_cp_init_sectiondb(void \*pHandle); - -- int xran_cp_free_sectiondb(void \*pHandle); - -APIs to store and retrieve section information are: - -- int xran_cp_add_section_info(void \*pHandle, uint8_t dir, uint8_t - cc_id, uint8_t ruport_id, uint8_t ctx_id, struct xran_section_info - \*info); - -- int xran_cp_add_multisection_info(void \*pHandle, uint8_t cc_id, - uint8_t ruport_id, uint8_t ctx_id, struct xran_cp_gen_params - \*gen_info); - -- struct xran_section_info \*xran_cp_find_section_info(void \*pHandle, - uint8_t dir, uint8_t cc_id, uint8_t ruport_id, uint8_t ctx_id, - uint16_t section_id); - -- struct xran_section_info \*xran_cp_iterate_section_info(void - \*pHandle, uint8_t dir, uint8_t cc_id, uint8_t ruport_id, uint8_t - ctx_id, uint32_t \*next); - -- int xran_cp_getsize_section_info(void \*pHandle, uint8_t dir, uint8_t - cc_id, uint8_t ruport_id, uint8_t ctx_id); - -APIs to reset the storage for a new slot are: - -- int xran_cp_reset_section_info(void \*pHandle, uint8_t dir, uint8_t - cc_id, uint8_t ruport_id, uint8_t ctx_id); - -The structure of xran_section_info is used to store/retrieve -information. This is the same structure used to generate a C-Plane -message. Please refer to Section 5.4.2.1.1 for more details. - -The storage for section information is declared as a multi-dimensional -array and declared as a local static variable to limit direct access. -Each item is defined as the structure of xran_sectioninfo_db, and it has -the number of stored section information items (cur_index) and the array -of the information (list), as shown below. - -/* - -\* This structure to store the section information of C-Plane - -\* in order to generate and parse corresponding U-Plane \*/ - -struct xran_sectioninfo_db { - -uint32_t cur_index; /* Current index to store for this eAXC \*/ - -struct xran_section_info list[XRAN_MAX_NUM_SECTIONS]; /* The array of -section information \*/ - -}; - -static struct xran_sectioninfo_db -sectiondb[XRAN_MAX_SECTIONDB_CTX][XRAN_DIR_MAX][XRAN_COMPONENT_CARRIERS_MAX][XRAN_MAX_ANTENNA_NR*2 -+ XRAN_MAX_ANT_ARRAY_ELM_NR]; - -The maximum size of the array can be adjusted if required by system -configuration. Since transmission and reception window of U-Plane can be -overlapped with the start of new C-Plane for next slot, functions have -context index to identify and protect the information. Currently the -maximum number of context is defined by two and it can be adjusted if -needed. - -Note. Since the context index is not managed by the library and APIs are -expecting it from the caller as a parameter, the caller shall -consider a proper method to manage it to avoid corruption. The -current reference implementation uses a slot and subframe index to -calculate the context index. - -**Example Usage of APIs** -''''''''''''''''''''''''' - -There are references to show the usage of APIs as below. - -- Initialization and release: - -- xran_cp_init_sectiondb(): xran_open() in lib/src/xran_main.c - -- xran_cp_free_sectiondb(): xran_close() in lib/src/xran_main.c - -- Store section information: - -- xran_cp_add_section_info(): send_cpmsg_dlul() and - send_cpmsg_prach()in lib/src/xran_main.c - -- Retrieve section information: - -- xran_cp_iterate_section_info(): xran_process_tx_sym() in - lib/src/xran_main.c - -- xran_cp_getsize_section_info(): xran_process_tx_sym() in - lib/src/xran_main.c - -- Reset the storage for a new slot: - -- xran_cp_reset_section_info(): tx_cp_dl_cb() and tx_cp_ul_cb() in - lib/src/xran_main.c - -**Function for RU emulation and Debug** -''''''''''''''''''''''''''''''''''''''' - -xran_parse_cp_pkt() is a function which can be utilized for RU emulation -or debug. It is defined below: - -int xran_parse_cp_pkt(struct rte_mbuf \*mbuf, - -struct xran_cp_gen_params \*result, - -struct xran_recv_packet_info \*pkt_info); - -It parses a received C-Plane packet and retrieves the information from -its headers and sections. - -The retrieved information is stored in the structures: - -struct xran_cp_gen_params: section information from received C-Plane -packet - -struct xran_recv_packet_info: transport layer header information (eCPRI -header) - -These functions can be utilized to debug or RU emulation purposes. - -.. _u-plane-1: - -U-plane -~~~~~~~ - -Single Section is the default mode of xRAN packet creation. It assumes -that there is only one section per packet, and all IQ samples are -attached to it. Compression is not supported. - -A message is built in mbuf space given as a parameter. The library -builds eCPRI header filling structure fields by taking the IQ sample -size and populating a particular packet length and sequence number. - -With compression, supported IQ bit widths are 8,9,10,12,14. - -Implementation of a U-plane set of functions is defined in xran_up_api.c -and is used to prepare U-plane packet content according to the given -configuration. - -The following list of functions is implemented for U-plane: - -- Build eCPRI header - -- Build application header - -- Build section header - -- Append IQ samples to packet - -- Prepare full symbol of xRAN data for single eAxC - -- Process RX packet per symbol. - -The time of generation of a U-plane message for DL and UL is -“symbol-based” and can be controlled using O-DU settings (O-RU), -according to Table 4. - -Supporting Code ---------------- - -The xRAN library has a set of functions used to assist in packet -processing and data exchange not directly used for xRAN packet -processing. - -Timing -~~~~~~ - -The sense of time for the xRAN protocol is obtained from system time, -where the system timer is synchronized to GPS time via PTP protocol -using the Linux PHP package. On the software side, a simple polling loop -is utilized to get time up to nanosecond precision and particular packet -processing jobs are scheduled via the DPDK timer. - -long poll_next_tick(int interval) - -{ - -struct timespec start_time; - -struct timespec cur_time; - -long target_time; - -long delta; - -clock_gettime(CLOCK_REALTIME, &start_time); - -target_time = (start_time.tv_sec \* NSEC_PER_SEC + start_time.tv_nsec + -interval \* NSEC_PER_USEC) / (interval \* NSEC_PER_USEC) \* interval; - -while(1) - -{ - -clock_gettime(CLOCK_REALTIME, &cur_time); - -delta = (cur_time.tv_sec \* NSEC_PER_SEC + cur_time.tv_nsec) - -target_time \* NSEC_PER_USEC; - -if(delta > 0 \|\| (delta < 0 && abs(delta) < THRESHOLD)) - -{ - -break; - -} - -} - -return delta; - -} - -Polling is used to achieve the required precision of symbol time. For -example, in the mmWave scenario, the symbol time is 125µs/14=~8.9µs. -Small deterministic tasks can be executed within the polling interval -provided. It’s smaller than the symbol interval time. - -DPDK Timers -~~~~~~~~~~~ - -DPDK provides sets of primitives (struct rte_rimer) and functions -(rte_timer_reset_sync() rte_timer_manage()) to |br| -schedule processing of -function as timer. The timer is based on the TSC clock and is not -synchronized to PTP time. As a |br| -result, this timer cannot be used as a -periodic timer because the TSC clock can drift substantially relative to -the system timer which in turn is synchronized to PTP (GPS) - -Only single-shot timers are used to schedule processing based on -events such as symbol time. The packet |br| -processing function -calls rte_timer_manage() in the loop, and the resulting execution of -timer function happens right |br| -after the timer was “armed”. - -xRAN Ethernet -~~~~~~~~~~~~~ - -xran_init_port() function performs initialization of DPDK ETH port. -Standard port configuration is used as per reference example from DPDK. - -Jumbo Frames are used by default. Mbufs size is extended to support 9600 -bytes packets. - -Mac address and VLAN tag are expected to be configured by Infrastructure -software. See Appendix A.4. - -From an implementation perspective, modules provide functions to handle: - -- Ethernet headers - -- VLAN tag - -- Send and Receive mbuf. - -xRAN Ethdi -~~~~~~~~~~ - -Ethdi provides functionality to work with the content of an Ethernet -packet and dispatch processing to/from the xRAN layer. Ethdi -instantiates a main PMD driver thread and dispatches packets between the -ring and RX/TX using rte_eth_rx_burst() and rte_eth_tx_burst() DPDK -functions. - -For received packets, it maintains a set of handlers for ethertype -handlers and xRAN layer register one xRAN ethtype |br| -0xAEFE, resulting in -packets with this ethertype being routed to the xRAN processing -function. This function checks the message type of the eCPRI header and -dispatches packet to either C-plane processing or U-plane processing. - -Initialization of memory pools, allocation and freeing of mbuf for -Ethernet packets occur in this layer. - - - - - +.. 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. + +.. |br| raw:: html + +
    + +xRAN Library Design +=================== + +.. contents:: + :depth: 3 + :local: + +The xRAN Library consists of multiple modules where different +functionality is encapsulated. The complete list of all \*.c and \*.h +files as well as Makefile for xRAN (aka FHI Lib Bronze Release) release is: + +├── app + +│ ├── dpdk.sh + +│ ├── gen_test.m + +│ ├── Makefile + +│ ├── src + +│ │ ├── common.c + +│ │ ├── common.h + +│ │ ├── config.c + +│ │ ├── config.h + +│ │ ├── debug.h + +│ │ ├── sample-app.c + +│ │ └── xran_mlog_task_id.h + +│ └── usecase + +│ ├── cat_b + +│ ├── lte_a + +│ ├── lte_b + +│ ├── mu0_10mhz + +│ ├── mu0_20mhz + +│ ├── mu0_5mhz + +│ ├── mu1_100mhz + +│ └── mu3_100mhz + +├── banner.txt + +├── build.sh + +├── lib + +│ ├── api + +│ │ ├── xran_compression.h + +│ │ ├── xran_compression.hpp + +│ │ ├── xran_cp_api.h + +│ │ ├── xran_fh_o_du.h + +│ │ ├── xran_mlog_lnx.h + +│ │ ├── xran_pkt_cp.h + +│ │ ├── xran_pkt.h + +│ │ ├── xran_pkt_up.h + +│ │ ├── xran_sync_api.h + +│ │ ├── xran_timer.h + +│ │ ├── xran_transport.h + +│ │ └── xran_up_api.h + +│ ├── ethernet + +│ │ ├── ethdi.c + +│ │ ├── ethdi.h + +│ │ ├── ethernet.c + +│ │ └── ethernet.h + +│ ├── Makefile + +│ └── src + +│ ├── xran_app_frag.c + +│ ├── xran_app_frag.h + +│ ├── xran_bfp_cplane16.cpp + +│ ├── xran_bfp_cplane32.cpp + +│ ├── xran_bfp_cplane64.cpp + +│ ├── xran_bfp_cplane8.cpp + +│ ├── xran_bfp_ref.cpp + +│ ├── xran_bfp_utils.hpp + +│ ├── xran_common.c + +│ ├── xran_common.h + +│ ├── xran_compression.cpp + +│ ├── xran_cp_api.c + +│ ├── xran_frame_struct.c + +│ ├── xran_frame_struct.h + +│ ├── xran_lib_mlog_tasks_id.h + +│ ├── xran_main.c + +│ ├── xran_printf.h + +│ ├── xran_sync_api.c + +│ ├── xran_timer.c + +│ ├── xran_transport.c + +│ ├── xran_ul_tables.c + +│ └── xran_up_api.c + +├── Licenses.txt + +├── readme.md + +└── test + + ├── common + + │ ├── common.cpp + + │ ├── common.hpp + + │ ├── common_typedef_xran.h + + │ ├── json.hpp + + │ ├── MIT_License.txt + + │ ├── xranlib_unit_test_main.cc + + │ └── xran_lib_wrap.hpp + + ├── master.py + + ├── readme.txt + + └── test_xran + + ├── chain_tests.cc + + ├── compander_functional.cc + + ├── conf.json + + ├── c_plane_tests.cc + + ├── init_sys_functional.cc + + ├── Makefile + + ├── prach_functional.cc + + ├── prach_performance.cc + + ├── unittests.cc + + └── u_plane_functional.cc + + +General Introduction +-------------------- + +The xRAN Library functionality is broken down into two main sections: + +- O-RAN specific packet handling (src) + +- Ethernet and supporting functionality (Ethernet) + +External functions and structures are available via set of header files +in the API folder. + +This library depends on DPDK primitives to perform Ethernet networking +in userspace, including initialization and control of Ethernet ports. +Ethernet ports are expected to be SRIOV virtual functions (VF) but also +can be physical functions (PF) as well. + +This library is expected to be included in the project via +xran_fh_o_du.h, statically compiled and linked with the L1 application +as well as DPDK libraries. The O-RAN packet processing-specific +functionality is encapsulated into this library and not exposed to the +rest of the 5G NR pipeline. + +This way, xRAN specific changes are decoupled from the 5G NR L1 +pipeline. As a result, the design and implementation of the 5G L1 +pipeline code and xRAN library can be done in parallel, provided the +defined interface is not modified. + +Ethernet consists of two modules: + +- Ethernet implements xRAN specific HW Ethernet initialization, close, + send and receive + +- ethdi provides Ethernet level software primitives to handle xRAN + packet exchange + +The xRAN layer implements the next set of functionalities: + +- Common code specific for both C-plane and U-plane as well as TX and + RX + +- Implementation of C-plane API available within the library and + externally + +- The primary function where general library initialization and + configuration performed + +- Module to provide the status of PTP synchronization + +- Timing module where system time is polled + +- eCPRI specific transport layer functions + +- APIs to handle U-plane packets + +- A set of utility modules for debugging (printf) and data tables are + included as well. + +.. image:: images/Illustration-of-xRAN-Sublayers.jpg + :width: 600 + :alt: Figure 25. Illustration of xRAN Sublayers + +Figure 25. Illustration of xRAN Sublayers + +A detailed description of functions and input/output arguments, as well +as key data structures, can be found in the Doxygen file for the FlexRAN +5G NR release. In this document supplemental information is provided +with respect to the overall design and implementation assumptions. + +Initialization and Close +------------------------ + +An example of the initialization sequence can be found in the sample +application code. It consists of the following steps: + +1.Setup structure struct xran_fh_init according to configuration. + +2.Call xran_init() to instantiate the xRAN lib memory model and +threads. The function returns a pointer to xRAN handle which is used +for consecutive configuration functions. + +3.Initialize memory buffers used for L1 and xRAN exchange of +information. + +4.Assign callback functions for (one) TTI event and for the reception +of half of the slot of symbols (7 symbols) and Full slot of symbols +14 symbols). + +5.Call xran_open() to initialize PRACH configuration, initialize DPDK, +and launch xRAN timing thread. + +6.Call xran_start() to start processing O-RAN packets for DL and UL. + +After this is complete 5G L1 runs with xRAN Front haul interface. During +run time for every TTI event, the corresponding call back is called. For +packet reception on UL direction, the corresponding call back is called. +OTA time information such as frame id, subframe id and slot id can be +obtained as result synchronization of the L1 pipeline to GPS time is +performed. + +To stop and close the interface, perform this sequence of steps: + +7.Call xran_stop() to stop the processing of DL and UL. + +8.Call xran_close() to remove usage of xRAN resources. + +9.Call xran_mm_destroy() to destroy memory management subsystem. + +After this session is complete, a restart of the full L1 application is +required. The current version of the library does not support multiple +sessions without a restart of the full L1 application. + +Configuration +~~~~~~~~~~~~~ + +The xRAN library configuration is provided in the set of structures, such as struct xran_fh_init and struct xran_fh_config. +The sample application gives an example of a test configuration used for LTE and 5GNR mmWave and Sub 6. Sample application +folder /app/usecase/ contains set of examples for different Radio Access technology (LTE|5G NR), different category (A|B) +and list of numerologies (0,1,3) and list of bandwidths (5,10,20,100Mhz). + +Some configuration options are not used in the Bronze Release and are reserved +for future use. + +The following options are available: + +**Structure** struct xran_fh_init\ **:** + +- Number of CC and corresponding settings for each + +- Core allocation for xRAN + +- Ethernet port allocation + +- O-DU and RU Ethernet Mac address + +- Timing constraints of O-DU and 0-RU + +- Debug features + +**Structure** struct xran_fh_config\ **:** + +- Number of eAxC + +- TTI Callback function and parameters + +- PRACH 5G NR specific settings + +- TDD frame configuration + +- BBU specific configuration + +- RU specific configuration + +**From an implementation perspective:** + +xran_init() performs init of the xRAN library and interface according to +struct xran_fh_init information as per the start of application +configuration.: + +- Init DPDK with corresponding networking ports and core assignment + +- Init mbuf pools + +- Init DPDK timers and DPDK rings for internal packet processing + +- Instantiate ORAN FH thread doing + + - Timing processing (xran_timing_source_thread()) + + - ETH PMD (process_dpdk_io()) + + - IO XRAN-PHY exchange (ring_processing_func()) + +**xran_open()** performs additional configuration as per run scenario: + +- PRACH configuration + +- C-plane initialization + +The Function **xran_close()** performs free of resources and allows potential +restart of front haul interface with a different scenario. + +Start/Stop +~~~~~~~~~~ + +The Functions **xran_start()/xran_stop()** enable/disable packet processing for +both DL and UL. This triggers execution of callbacks into the L1 +application. + +Data Exchange +~~~~~~~~~~~~~ + +Exchange of IQ samples, as well as C-plane specific information, is +performed using a set of buffers allocated by xRAN library from DPDK +memory and shared with the l1 application. Buffers are allocated as a +standard mbuf structure and DPDK pools are used to manage the allocation +and free resources. Shared buffers are allocated at the init stage and +are expected to be reused within 80 TTIs (10 ms). + +The xRAN protocol requires U-plane IQ data to be transferred in network +byte order, and the L1 application handles IQ sample data in CPU byte +order, requiring a swap. The PHY BBU pooling tasks perform copy and byte +order swap during packet processing. + +C-plane Information Settings +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The interface between the xRAN library and PHY is defined via struct +xran_prb_map and similar to the data plane. The same mbuf memory is used +to allocate memory map of PRBs for each TTI.:: + + /*\* Beamforming waights for single stream for each PRBs given number of + Antenna elements \*/ + struct xran_cp_bf_weight{ + + int16_t nAntElmTRx; /**< num TRX for this allocation \*/ + + int16_t ext_section_sz; /**< extType section size \*/ + + int8_t\* p_ext_start; /**< pointer to start of buffer for full C-plane + packet \*/ + + int8_t\* p_ext_section; /**< pointer to form extType \*/ + + /\* For ext 11 \*/ + + uint8_t bfwCompMeth; /\* Compression Method for BFW \*/ + + uint8_t bfwIqWidth; /\* Bitwidth of BFW \*/ + + uint8_t numSetBFWs; /\* Total number of beam forming weights set (L) \*/ + + uint8_t numBundPrb; /\* The number of bundled PRBs, 0 means to use ext1 + \*/ + + uint8_t RAD; + + uint8_t disableBFWs; + + int16_t maxExtBufSize; /\* Maximum space of external buffer \*/ + + struct xran_ext11_bfw_info bfw[XRAN_MAX_SET_BFWS] + + }; + + /*\* PRB element structure \*/ + + struct xran_prb_elm { + + int16_t nRBStart; /**< start RB of RB allocation \*/ + + int16_t nRBSize; /**< number of RBs used \*/ + + int16_t nStartSymb; /**< start symbol ID \*/ + + int16_t numSymb; /**< number of symbols \*/ + + int16_t nBeamIndex; /**< beam index for given PRB \*/ + + int16_t bf_weight_update; /*\* need to update beam weights or not \*/ + + int16_t compMethod; /**< compression index for given PRB \*/ + + int16_t iqWidth; /**< compression bit width for given PRB \*/ + + uint16_t ScaleFactor; /**< scale factor for modulation compression \*/ + + int16_t reMask; /**< 12-bit RE Mask for modulation compression \*/ + + int16_t BeamFormingType; /**< index based, weights based or attribute + based beam forming*/ + + int16_t nSecDesc[XRAN_NUM_OF_SYMBOL_PER_SLOT]; /**< number of section + descriptors per symbol \*/ + + struct xran_section_desc \* + p_sec_desc[XRAN_NUM_OF_SYMBOL_PER_SLOT][XRAN_MAX_FRAGMENT]; /**< section + desctiptors to U-plane data given RBs \*/ + + struct xran_cp_bf_weight bf_weight; /**< beam forming information + relevant for given RBs \*/ + + union { + + struct xran_cp_bf_attribute bf_attribute; + + struct xran_cp_bf_precoding bf_precoding; + + }; + + }; + + /*\* PRB map structure \*/ + + struct xran_prb_map { + + uint8_t dir; /**< DL or UL direction \*/ + + uint8_t xran_port; /**< xran id of given RU [0-(XRAN_PORTS_NUM-1)] \*/ + + uint16_t band_id; /**< xran band id \*/ + + uint16_t cc_id; /**< component carrier id [0 - (XRAN_MAX_SECTOR_NR-1)] + \*/ + + uint16_t ru_port_id; /**< RU device antenna port id [0 - + (XRAN_MAX_ANTENNA_NR-1) \*/ + + uint16_t tti_id; /**< xRAN slot id [0 - (max tti-1)] \*/ + + uint8_t start_sym_id; /**< start symbol Id [0-13] \*/ + + uint32_t nPrbElm; /**< total number of PRB elements for given map [0- + (XRAN_MAX_SECTIONS_PER_SLOT-1)] \*/ + + struct xran_prb_elm prbMap[XRAN_MAX_SECTIONS_PER_SLOT]; + + }; + + +For the Bronze release C-plane sections are expected to be provided by L1 +pipeline. If 100% of RBs always allocated single element of RB map +is expected to be allocated across all symbols. Dynamic RB allocation is +performed base on C-plane configuration. + +The xRAN library will require that the content of the PRB map should be +sorted in increasing order of PRB first and then symbols. + +Memory Management +----------------- + +Memory used for the exchange of IQ data as well as control information, +is controlled by the xRAN library. L1 application at the init stage +performs: + +- init memory management subsystem + +- init buffer management subsystem (via DPDK pools) + +- allocate buffers (mbuf) for each CC, antenna, symbol, and direction \ + (DL, UL, PRACH) for XRAN_N_FE_BUF_LEN TTIs. + +- buffers are reused for every XRAN_N_FE_BUF_LEN TTIs + +After the session is completed, the application can free buffers and +destroy the memory management subsystem. + +From an implementation perspective, the xRAN library uses a standard +mbuf primitive and allocates a pool of buffers for each sector. This +function is performed using rte_pktmbuf_pool_create(), +rte_pktmbuf_alloc(), rte_pktmbuf_append() to allocate one buffer per +symbol for the mmWave case. More information on mbuf and DPDK pools can +be found in the DPDK documentation. + +In the current implementation, mbuf, the number of buffers shared with +the L1 application is the same number of buffers used to send to and +receive from the Ethernet port. Memory copy operations are not required +if the packet size is smaller than or equal to MTU. Future versions of +the xRAN library are required to remove the memory copy requirement for +packets where the size larger than MTU. + +External Interface Memory +~~~~~~~~~~~~~~~~~~~~~~~~~ + +The xRAN library header file defines a set of structures to simplify +access to memory buffers used for IQ data.::: + + struct xran_flat_buffer { + + uint32_t nElementLenInBytes; + + uint32_t nNumberOfElements; + + uint32_t nOffsetInBytes; + + uint32_t nIsPhyAddr; + + uint8_t \*pData; + + void \*pCtrl; + + }; + + struct xran_buffer_list { + + uint32_t nNumBuffers; + + struct xran_flat_buffer \*pBuffers; + + void \*pUserData; + + void \*pPrivateMetaData; + + }; + + struct xran_io_buf_ctrl { + + /\* -1-this subframe is not used in current frame format + + 0-this subframe can be transmitted, i.e., data is ready + + 1-this subframe is waiting transmission, i.e., data is not ready + + 10 - DL transmission missing deadline. When FE needs this subframe data + but bValid is still 1, + + set bValid to 10. + + \*/ + + int32_t bValid ; // when UL rx, it is subframe index. + + int32_t nSegToBeGen; + + int32_t nSegGenerated; // how many date segment are generated by DL LTE + processing or received from FE + + // -1 means that DL packet to be transmitted is not ready in BS + + int32_t nSegTransferred; // number of data segments has been transmitted + or received + + struct rte_mbuf \*pData[N_MAX_BUFFER_SEGMENT]; // point to DPDK + allocated memory pool + + struct xran_buffer_list sBufferList; + + }; + +There is no explicit requirement for user to organize a set of buffers +in this particular way. From a compatibility |br| +perspective it is useful to +follow the existing design of the 5G NR l1app used for Front Haul FPGA +and define structures shared between l1 and xRAN lib as shown: :: + + struct bbu_xran_io_if { + + void\* nInstanceHandle[XRAN_PORTS_NUM][XRAN_MAX_SECTOR_NR]; /**< + instance per O-RAN port per CC \*/ + + uint32_t + nBufPoolIndex[XRAN_PORTS_NUM][XRAN_MAX_SECTOR_NR][MAX_SW_XRAN_INTERFACE_NUM]; + /**< unique buffer pool \*/ + + uint16_t nInstanceNum[XRAN_PORTS_NUM]; /**< instance is equivalent to CC + \*/ + + uint16_t DynamicSectionEna; + + uint32_t nPhaseCompFlag; + + int32_t num_o_ru; + + int32_t num_cc_per_port[XRAN_PORTS_NUM]; + + int32_t map_cell_id2port[XRAN_PORTS_NUM][XRAN_MAX_SECTOR_NR]; + + struct xran_io_shared_ctrl ioCtrl[XRAN_PORTS_NUM]; /**< for each O-RU + port \*/ + + struct xran_cb_tag RxCbTag[XRAN_PORTS_NUM][XRAN_MAX_SECTOR_NR]; + + struct xran_cb_tag PrachCbTag[XRAN_PORTS_NUM][XRAN_MAX_SECTOR_NR]; + + struct xran_cb_tag SrsCbTag[XRAN_PORTS_NUM][XRAN_MAX_SECTOR_NR]; + + }; + + struct xran_io_shared_ctrl { + + /\* io struct \*/ + + struct xran_io_buf_ctrl + sFrontHaulTxBbuIoBufCtrl[XRAN_N_FE_BUF_LEN][XRAN_MAX_SECTOR_NR][XRAN_MAX_ANTENNA_NR]; + + struct xran_io_buf_ctrl + sFrontHaulTxPrbMapBbuIoBufCtrl[XRAN_N_FE_BUF_LEN][XRAN_MAX_SECTOR_NR][XRAN_MAX_ANTENNA_NR]; + + struct xran_io_buf_ctrl + sFrontHaulRxBbuIoBufCtrl[XRAN_N_FE_BUF_LEN][XRAN_MAX_SECTOR_NR][XRAN_MAX_ANTENNA_NR]; + + struct xran_io_buf_ctrl + sFrontHaulRxPrbMapBbuIoBufCtrl[XRAN_N_FE_BUF_LEN][XRAN_MAX_SECTOR_NR][XRAN_MAX_ANTENNA_NR]; + + struct xran_io_buf_ctrl + sFHPrachRxBbuIoBufCtrl[XRAN_N_FE_BUF_LEN][XRAN_MAX_SECTOR_NR][XRAN_MAX_ANTENNA_NR]; + + /\* Cat B \*/ + + struct xran_io_buf_ctrl + sFHSrsRxBbuIoBufCtrl[XRAN_N_FE_BUF_LEN][XRAN_MAX_SECTOR_NR][XRAN_MAX_ANT_ARRAY_ELM_NR]; + + struct xran_io_buf_ctrl + sFHSrsRxPrbMapBbuIoBufCtrl[XRAN_N_FE_BUF_LEN][XRAN_MAX_SECTOR_NR][XRAN_MAX_ANT_ARRAY_ELM_NR]; + + /\* buffers lists \*/ + + struct xran_flat_buffer + sFrontHaulTxBuffers[XRAN_N_FE_BUF_LEN][XRAN_MAX_SECTOR_NR][XRAN_MAX_ANTENNA_NR][XRAN_NUM_OF_SYMBOL_PER_SLOT]; + + struct xran_flat_buffer + sFrontHaulTxPrbMapBuffers[XRAN_N_FE_BUF_LEN][XRAN_MAX_SECTOR_NR][XRAN_MAX_ANTENNA_NR]; + + struct xran_flat_buffer + sFrontHaulRxBuffers[XRAN_N_FE_BUF_LEN][XRAN_MAX_SECTOR_NR][XRAN_MAX_ANTENNA_NR][XRAN_NUM_OF_SYMBOL_PER_SLOT]; + + struct xran_flat_buffer + sFrontHaulRxPrbMapBuffers[XRAN_N_FE_BUF_LEN][XRAN_MAX_SECTOR_NR][XRAN_MAX_ANTENNA_NR]; + + struct xran_flat_buffer + sFHPrachRxBuffers[XRAN_N_FE_BUF_LEN][XRAN_MAX_SECTOR_NR][XRAN_MAX_ANTENNA_NR][XRAN_NUM_OF_SYMBOL_PER_SLOT]; + + /\* Cat B SRS buffers \*/ + + struct xran_flat_buffer + sFHSrsRxBuffers[XRAN_N_FE_BUF_LEN][XRAN_MAX_SECTOR_NR][XRAN_MAX_ANT_ARRAY_ELM_NR][XRAN_MAX_NUM_OF_SRS_SYMBOL_PER_SLOT]; + + struct xran_flat_buffer + sFHSrsRxPrbMapBuffers[XRAN_N_FE_BUF_LEN][XRAN_MAX_SECTOR_NR][XRAN_MAX_ANT_ARRAY_ELM_NR]; + + }; + +Doxygen file and xran_fh_o_du.h provide more details on the definition +and usage of these structures. + +xRAN Specific Functionality +--------------------------- + +Front haul interface implementation in the general case is abstracted +away using the interface defined in xran_fh_o_du.h + +The L1 application is not required to access O-RAN protocol primitives +(eCPRI header, application header, and others) directly. It is +recommended to use the interface to remove dependencies between +different software modules such as the l1 pipeline and xRAN library. + +External API +~~~~~~~~~~~~ + +The U-plane and C-plane APIs can be used directly from the application +if such an option is required. The set of header files can be exported +and called directly.:: + + xran_fh_o_du.h – xRAN main header file for O-DU scenario + + xran_cp_api.h – Control plane functions + + xran_pkt_cp.h – xRAN control plane packet definition + + xran_pkt.h – xRAN packet definition + + xran_pkt_up.h – xRAN User plane packet definition + + xran_sync_api.h – api functions to check PTP status + + xran_timer.h – API for timing + + xran_transport.h – eCPRI transport layer definition and api + + xran_up_api.h – user plane functions and definitions + + xran_compression.h – interface to compression/decompression functions + +Doxygen files provide detailed information on functions and structures +available. + +.. _c-plane-1: + +C-plane +~~~~~~~ + +Implementation of the C-plane set of functions is defined in +xran_cp_api.c and is used to prepare the content of C-plane packets +according to the given configuration. Users can enable/disable +generation of C-plane messages using enableCP field in struct +xran_fh_init structure during init of ORAN front haul. The time of +generation of C-plane message for DL and UL is done “Slot-based,” and +timing can be controlled using O-DU settings according to Table 4. + +The C-plane module contains: + +- initialization of C-plane database to keep track of allocation of + resources + +- code to prepare C-plane packet for TX (O-DU) + - eCPRI header + - append radio application header + - append control section header + - append control section + +- parser of C-plane packet for RX (O-RU emulation) + +- parses and checks Section 1 and Section 3 packet content + +Sending and receiving packets is performed using xRAN ethdi sublayer +functions. + +Creating a C-Plane Packet +^^^^^^^^^^^^^^^^^^^^^^^^^ + +API and Data Structures +''''''''''''''''''''''' + +A C-Plane message can be composed using the following API::: + + int xran_prepare_ctrl_pkt(struct rte_mbuf \*mbuf, + + struct xran_cp_gen_params \*params, + + uint8_t CC_ID, uint8_t Ant_ID, uint8_t seq_id); + +mbuf is the pointer of a DPDK packet buffer, which is allocated from the +caller. + +params are the pointer of the structure which has the parameters to +create the message. + +CC_ID is the parameter to specify component carrier index, Ant_ID is the +parameters to specify the antenna port index (RU port index). + +seq_id is the sequence index for the message. + +params, the parameters to create a C-Plane message are defined as the +structure of xran_cp_gen_params with an |br| +example given below::: + + struct xran_cp_gen_params { + + uint8_t dir; + + uint8_t sectionType; + + uint16_t numSections; + + struct xran_cp_header_params hdr; + + struct xran_section_gen_info \*sections; + + }; + +dir is the direction of the C-Plane message to be generated. Available +parameters are defined as XRAN_DIR_UL and XRAN_DIR_DL. + +sectionType is the section type for C-Plane message to generate, as O-RAN +specification defines all sections in a C-Plane message shall have the +same section type. If different section types are required, they shall +be sent with separate C-Plane messages. Available types of sections are +defined as XRAN_CP_SECTIONTYPE_x. Please refer to the Table 5-2 Section +Types in chapter 5.4 of ORAN specification. + +numSections is the total number of sections to generate, i.e., the +number of the array in sections (struct xran_section_gen_info). + +hdr is the structure to hold the information to generate the radio +application and section header in the C-Plane message. It is defined as +the structure of xran_cp_header_params. Not all parameters in this +structure are used for the generation, and the required parameters are +slightly different by the type of section, as described in Table 10. + +Table 10. struct xran_cp_header_params – Common Radio Application Header + ++------------+---------------------------------------------+---------+ +| | Description | Remarks | ++============+=============================================+=========+ +| filterIdx | Filter Index. Available values are defined | 5.4.4.3 | +| | as XRAN_FILTERINDEX_xxxxx. | | ++------------+---------------------------------------------+---------+ +| frameId | Frame Index. It is modulo 256 of frame | 5.4.4.4 | +| | number. | | ++------------+---------------------------------------------+---------+ +| subframeId | Sub-frame Index. | 5.4.4.5 | ++------------+---------------------------------------------+---------+ +| slotId | Slot Index. The maximum number is 15, as | 5.4.4.6 | +| | defined in the specification. | | ++------------+---------------------------------------------+---------+ +| startSymId | Start Symbol Index. | 5.4.4.7 | ++------------+---------------------------------------------+---------+ + +Table 11. struct xran_cp_header_params – Section Specific Parameters + ++----------+----------+----------+---------+---+---+---+---+----------+ +| | Des\ | Section | Remarks | | | | | | +| | cription | Type | | | | | | | +| | | ap\ | | | | | | | +| | | plicable | | | | | | | ++==========+==========+==========+=========+===+===+===+===+==========+ +| | | 0 | 1 | 3 | 5 | 6 | 7 | | ++----------+----------+----------+---------+---+---+---+---+----------+ +| fftSize | FFT size | X | | X | | | | 5.4.4.13 | +| | in frame | | | | | | | | +| | st\ | | | | | | | | +| | ructure. | | | | | | | | +| | A\ | | | | | | | | +| | vailable | | | | | | | | +| | values | | | | | | | | +| | are | | | | | | | | +| | defined | | | | | | | | +| | as | | | | | | | | +| | X\ | | | | | | | | +| | RAN_FFTS\| | | | | | | | +| | IZE_xxxx | | | | | | | | ++----------+----------+----------+---------+---+---+---+---+----------+ +| Scs | Su\ | X | | X | | | | 5.4.4.13 | +| | bcarrier | | | | | | | | +| | Spacing | | | | | | | | +| | in the | | | | | | | | +| | frame | | | | | | | | +| | st\ | | | | | | | | +| | ructure. | | | | | | | | +| | A\ | | | | | | | | +| | vailable | | | | | | | | +| | values | | | | | | | | +| | are | | | | | | | | +| | defined | | | | | | | | +| | as | | | | | | | | +| | XRAN_SCS\| | | | | | | | +| | _xxxx | | | | | | | | ++----------+----------+----------+---------+---+---+---+---+----------+ +| iqWidth | I/Q bit | | X | X | X | | | 5.4.4.10 | +| | width in | | | | | | | | +| | user | | | | | | | 6.3.3.13 | +| | data | | | | | | | | +| | com\ | | | | | | | | +| | pression | | | | | | | | +| | header. | | | | | | | | +| | Should | | | | | | | | +| | be set | | | | | | | | +| | by zero | | | | | | | | +| | for | | | | | | | | +| | 16bits | | | | | | | | ++----------+----------+----------+---------+---+---+---+---+----------+ +| compMeth | Com\ | | X | X | X | | | 5.4.4.10 | +| | pression | | | | | | | | +| | Method | | | | | | | 6.3.3.13 | +| | in user | | | | | | | | +| | data | | | | | | | | +| | com\ | | | | | | | | +| | pression | | | | | | | | +| | header. | | | | | | | | +| | A\ | | | | | | | | +| | vailable | | | | | | | | +| | values | | | | | | | | +| | are | | | | | | | | +| | defined | | | | | | | | +| | as | | | | | | | | +| | XRAN\ | | | | | | | | +| | _COMPMET\| | | | | | | | +| | HOD_xxxx | | | | | | | | ++----------+----------+----------+---------+---+---+---+---+----------+ +| numUEs | Number | | | | | X | | 5.4.4.11 | +| | of UEs. | | | | | | | | +| | Applies | | | | | | | | +| | to | | | | | | | | +| | section | | | | | | | | +| | type 6 | | | | | | | | +| | and not | | | | | | | | +| | s\ | | | | | | | | +| | upported | | | | | | | | +| | in this | | | | | | | | +| | release. | | | | | | | | ++----------+----------+----------+---------+---+---+---+---+----------+ +| ti\ | Time | X | | X | | | | 5.4.4.12 | +| meOffset | Offset. | | | | | | | | +| | Time | | | | | | | | +| | offset | | | | | | | | +| | from the | | | | | | | | +| | start of | | | | | | | | +| | the slot | | | | | | | | +| | to start | | | | | | | | +| | of | | | | | | | | +| | Cyclic | | | | | | | | +| | Prefix. | | | | | | | | ++----------+----------+----------+---------+---+---+---+---+----------+ +| cpLength | Cyclic | X | | X | | | | 5.4.4.14 | +| | Prefix | | | | | | | | +| | Length. | | | | | | | | ++----------+----------+----------+---------+---+---+---+---+----------+ + +**Only sections types 1 and 3 are supported in the current release.** + +Sections are the pointer to the array of structure which has the +parameters for section(s) and it is defined as below::: + + struct xran_section_gen_info { + + struct xran_section_info info; + + uint32_t exDataSize; + + struct { + + uint16_t type; + + uint16_t len; + + void \*data; + + } exData[XRAN_MAX_NUM_EXTENSIONS]; + + }; + +info is the structure to hold the information to generate section and it +is defined as the structure of xran_section_info. Like +xran_cp_header_params, all parameters are not required to generate +section and Table 12 describes which |br| +parameters are required for each +section. + +Table 12. Parameters for Sections + ++-------+-------+-------+-------+-------+-------+-------+-------+ +| | D\ | Se\ | Re\ | | | | | +| | escri\| ction | marks | | | | | +| | ption | Type | | | | | | +| | | appli\| | | | | | +| | | cable | | | | | | ++=======+=======+=======+=======+=======+=======+=======+=======+ +| | | 0 | 1 | 3 | 5 | 6 | | ++-------+-------+-------+-------+-------+-------+-------+-------+ +| Id | Se\ | **X** | **X** | **X** | **X** | **X** | 5.\ | +| | ction | | | | | | 4.5.1 | +| | I\ | | | | | | | +| | denti\| | | | | | | +| | fier. | | | | | | | ++-------+-------+-------+-------+-------+-------+-------+-------+ +| Rb | Res\ | **X** | **X** | **X** | **X** | **X** | 5.\ | +| | ource | | | | | | 4.5.2 | +| | Block\| | | | | | | +| | Indic\| | | | | | | +| | ator. | | | | | | | +| | Avai\ | | | | | | | +| | lable | | | | | | | +| | v\ | | | | | | | +| | alues | | | | | | | +| | are | | | | | | | +| | de\ | | | | | | | +| | fined | | | | | | | +| | as | | | | | | | +| | XRAN\ | | | | | | | +| | _\ | | | | | | | +| | RBI\ | | | | | | | +| | ND_xx\| | | | | | | +| | xx. | | | | | | | ++-------+-------+-------+-------+-------+-------+-------+-------+ +| s\ | S\ | **X** | **X** | **X** | **X** | **X** | 5.\ | +| ymInc | ymbol | | | | | | 4.5.3 | +| | n\ | | | | | | | +| | umber | | | | | | | +| | Incr\ | | | | | | | +| | ement | | | | | | | +| | com\ | | | | | | | +| | mand. | | | | | | | +| | Avai\ | | | | | | | +| | lable | | | | | | | +| | v\ | | | | | | | +| | alues | | | | | | | +| | are | | | | | | | +| | de\ | | | | | | | +| | fined | | | | | | | +| | as | | | | | | | +| | XRA\ | | | | | | | +| | N_SYM\| | | | | | | +| | BOL\ | | | | | | | +| | NUMBE\| | | | | | | +| | R_xx\ | | | | | | | +| | xx. | | | | | | | ++-------+-------+-------+-------+-------+-------+-------+-------+ +| star\ | Sta\ | **X** | **X** | **X** | **X** | **X** | 5.\ | +| tPrbc | rting\| | | | | | 4.5.4 | +| | PRB | | | | | | | +| | of | | | | | | | +| | data | | | | | | | +| | se\ | | | | | | | +| | ction | | | | | | | +| | de\ | | | | | | | +| | scrip\| | | | | | | +| | tion. | | | | | | | ++-------+-------+-------+-------+-------+-------+-------+-------+ +| nu | The | **X** | **X** | **X** | **X** | **X** | 5.\ | +| mPrbc | n\ | | | | | | 4.5.6 | +| | umber | | | | | | | +| | of | | | | | | | +| | conti\| | | | | | | +| | guous | | | | | | | +| | PRBs | | | | | | | +| | per | | | | | | | +| | data | | | | | | | +| | se\ | | | | | | | +| | ction | | | | | | | +| | de\ | | | | | | | +| | scrip\| | | | | | | +| | tion. | | | | | | | +| | When | | | | | | | +| | nu\ | | | | | | | +| | mPrbc | | | | | | | +| | is | | | | | | | +| | gr\ | | | | | | | +| | eater | | | | | | | +| | than | | | | | | | +| | 255, | | | | | | | +| | it | | | | | | | +| | will | | | | | | | +| | be | | | | | | | +| | conv\ | | | | | | | +| | erted | | | | | | | +| | to | | | | | | | +| | zero | | | | | | | +| | by | | | | | | | +| | the | | | | | | | +| | macro | | | | | | | +| | (XR\ | | | | | | | +| | AN_CO\| | | | | | | +| | NVERT\| | | | | | | +| | _NUMP\| | | | | | | +| | RBC). | | | | | | | ++-------+-------+-------+-------+-------+-------+-------+-------+ +| r\ | Res\ | **X** | **X** | **X** | **X** | | 5.\ | +| eMask | ource\| | | | | | 4.5.5 | +| | El\ | | | | | | | +| | ement\| | | | | | | +| | Mask. | | | | | | | ++-------+-------+-------+-------+-------+-------+-------+-------+ +| numS\ | N\ | **X** | **X** | **X** | **X** | | 5.\ | +| ymbol | umber | | | | | | 4.5.7 | +| | of | | | | | | | +| | Sym\ | | | | | | | +| | bols. | | | | | | | ++-------+-------+-------+-------+-------+-------+-------+-------+ +| b\ | Beam\ | | **X** | **X** | | | 5.\ | +| eamId | I\ | | | | | | 4.5.9 | +| | denti\| | | | | | | +| | fier. | | | | | | | ++-------+-------+-------+-------+-------+-------+-------+-------+ +| freqO\| Freq\ | | | **X** | | | 5.4\ | +| ffset | uency\| | | | | | .5.11 | +| | Of\ | | | | | | | +| | fset. | | | | | | | ++-------+-------+-------+-------+-------+-------+-------+-------+ +| ueId | UE\ | | | | **X** | **X** | 5.4\ | +| | i\ | | | | | | .5.10 | +| | denti\| | | | | | | +| | fier. | | | | | | | +| | Not | | | | | | | +| | supp\ | | | | | | | +| | orted | | | | | | | +| | in | | | | | | | +| | this | | | | | | | +| | rel\ | | | | | | | +| | ease. | | | | | | | ++-------+-------+-------+-------+-------+-------+-------+-------+ +| regF\ | Regu\ | | | | | **X** | 5.4\ | +| actor | lariz\| | | | | | .5.12 | +| | ation | | | | | | | +| | Fa\ | | | | | | | +| | ctor. | | | | | | | +| | Not | | | | | | | +| | supp\ | | | | | | | +| | orted | | | | | | | +| | in | | | | | | | +| | this | | | | | | | +| | re\ | | | | | | | +| | lease | | | | | | | ++-------+-------+-------+-------+-------+-------+-------+-------+ +| Ef | Exte\ | | **X** | **X** | **X** | **X** | 5.\ | +| | nsion | | | | | | 4.5.8 | +| | Flag. | | | | | | | +| | Not | | | | | | | +| | supp\ | | | | | | | +| | orted | | | | | | | +| | in | | | | | | | +| | this | | | | | | | +| | rel\ | | | | | | | +| | ease. | | | | | | | ++-------+-------+-------+-------+-------+-------+-------+-------+ + +**Only sections types 1 and 3 are supported in the current release.** + +**The xran_section_info has more parameters – type, startSymId, iqWidth, +compMeth. These are the same parameters as those of radio application +or section header but need to be copied into this structure again for +the section data base.** + +exDataSize and exData are used to add section extensions for the +section. + +exDataSize is the number of elements in the exData array. The maximum +number of elements is defined as XRAN_MAX_NUM_EXTENSIONS and it is +defined by four in this release with the assumption that four different +types of section extensions can be added to a section (section extension +type 3 is excluded since it is not supported). exData.type is the type +of section extension and exData.len is the length of structure of +section extension parameter in exData.data. exData.data is the pointer +to the structure of section extensions and different structures are used +by the type of section extensions like below.:: + + struct xran_sectionext1_info { + + uint16_t rbNumber; /* number RBs to ext1 chain \*/ + + uint16_t bfwNumber; /* number of bf weights in this section \*/ + + uint8_t bfwiqWidth; + + uint8_t bfwCompMeth; + + int16_t \*p_bfwIQ; /* pointer to formed section extention \*/ + + int16_t bfwIQ_sz; /* size of buffer with section extention information + \*/ + + union { + + uint8_t exponent; + + uint8_t blockScaler; + + uint8_t compBitWidthShift; + + uint8_t activeBeamspaceCoeffMask[XRAN_MAX_BFW_N]; /\* ceil(N/8)*8, + should be multiple of 8 \*/ + + } bfwCompParam; + + }; + +For section extension type 1, the structure of xran_sectionext1_info is +used. Please note that the xRAN library will use bfwIQ (beamforming +weight) as-is, i.e., xRAN library will not perform the compression, so +the user should provide proper data to bfwIQ.:: + + struct xran_sectionext2_info { + + uint8_t bfAzPtWidth; + + uint8_t bfAzPt; + + uint8_t bfZePtWidth; + + uint8_t bfZePt; + + uint8_t bfAz3ddWidth; + + uint8_t bfAz3dd; + + uint8_t bfZe3ddWidth; + + uint8_t bfZe3dd; + + uint8_t bfAzSI; + + uint8_t bfZeSI; + + }; + +For section extension type 2, the structure of xran_sectionext2_info is +used. Each parameter will be packed as specified bit width.:: + + struct xran_sectionext4_info { + + uint8_t csf; + + uint8_t pad0; + + uint16_t modCompScaler; + + }; + +For section extension type 4, the structure of xran_sectionext4_info is +used.:: + + struct xran_sectionext5_info { + + uint8_t num_sets; + + struct { + + uint16_t csf; + + uint16_t mcScaleReMask; + + uint16_t mcScaleOffset; + + } mc[XRAN_MAX_MODCOMP_ADDPARMS]; + + }; + +For section extension type 5, the structure of xran_sectionext5_info is +used. Please note that current implementation supports maximum two sets +of additional parameters.:: + + struct xran_sectionext6_info { + + uint8_t rbgSize; + + uint8_t pad; + + uint16_t symbolMask; + + uint32_t rbgMask; + + }; + + For section extension type 6, the structure of xran_sectionext6_info is + used. + + struct xran_sectionext10_info { + + uint8_t numPortc; + + uint8_t beamGrpType; + + uint16_t beamID[XRAN_MAX_NUMPORTC_EXT10]; + + }; + +For section extension type 10, the structure of xran_sectionext10_info +is used.:: + + struct xran_sectionext11_info { + + uint8_t RAD; + + uint8_t disableBFWs; + + uint8_t numBundPrb; + + uint8_t numSetBFWs; /\* Total number of beam forming weights set (L) \*/ + + uint8_t bfwCompMeth; + + uint8_t bfwIqWidth; + + int totalBfwIQLen; + + int maxExtBufSize; /\* Maximum space of external buffer \*/ + + uint8_t \*pExtBuf; /\* pointer to start of external buffer \*/ + + void \*pExtBufShinfo; /\* Pointer to rte_mbuf_ext_shared_info \*/ + + }; + +For section extension type 11, the structure of xran_sectionext11_info +is used. + +To minimize memory copy for beamforming weights, when section extension +11 is required to send beamforming weights(BFWs), external flat buffer +is being used in current release. If extension 11 is used, it will be +used instead of mbufs that pre-allocated external buffers which BFWs +have been prepared already. BFW can be prepared by +xran_cp_prepare_ext11_bfws() and the example usage can be found from +app_init_xran_iq_content() from sample-app.c. + +Detail Procedures in API +'''''''''''''''''''''''' + +xran_prepare_ctrl_pkt() has several procedures to compose a C-Plane +packet. + +1. Append transport header + +- Reserve eCPRI header space in the packet buffer + +- eCPRI version is fixed by XRAN_ECPRI_VER (0x0001) + +- Concatenation and transport layer fragmentation is not supported. + + ecpri_concat=0, ecpri_seq_id.sub_seq_id=0 and ecpri_seq_id.e_bit=1 + +- The caller needs to provide a component carrier index, antenna index, + and message identifier through function arguments. + + CC_ID, Ant_ID and seq_id + +- ecpriRtcid (ecpri_xtc_id) is composed with CC_ID and Ant_ID by + xran_compose_cid. + +- DU port ID and band sector ID are fixed by zero in this release. + +- The output of xran_compose_cid is stored in network byte order. + +- The length of the payload is initialized by zero. + +2. Append radio application header: + +- xran_append_radioapp_header() checks the type of section through + params->sectionType and determines proper function to append + remaining header components. + +- Only section type 1 and 3 are supported, returns + XRAN_STATUS_INVALID_PARAM for other types. + +- Each section uses a different function to compose the remaining + header and size to calculate the total length in the transport + header. + +For section type 1, xran_prepare_section1_hdr() and sizeof(struct +xran_cp_radioapp_section1_header) + +For section type 3, xran_prepare_section3_hdr() and sizeof(struct +xran_cp_radioapp_section3_header) + +- Reserves the space of common radio application header and composes + header by xran_prepare_radioapp_common_header(). + +- The header is stored in network byte order. + +- Appends remaining header components by the selected function above + +- The header is stored in network byte order + +3. Append section header and section + +- xran_append_control_section() determines proper size and function to + append section header and contents. + +- For section type 1, xran_prepare_section1() and sizeof(struct + xran_cp_radioapp_section1) + +- For section type 3, xran_prepare_section3() and sizeof(struct + xran_cp_radioapp_section3) + +- Appends section header and section(s) by selected function above. + +- If multiple sections are configured, then those will be added. + +- Since fragmentation is not considered in this implementation, the + total length of a single C-Plane message shall not exceed MTU + size. + +- The header and section(s) are stored in network byte order. + +- Appends section extensions if it is set (ef=1) + +- xran_append_section_extensions() adds all configured extensions by + its type. + +- xran_prepare_sectionext_x() (x = 1,2,4,5) will be called by the + type from xran_append_section_extensions() and these functions + will create extension field. + +Example Usage of API +'''''''''''''''''''' + +There are two reference usages of API to generate C-Plane messages: + +- xran_cp_create_and_send_section() in xran_main.c + +- generate_cpmsg_prach() in xran_common.c + +The xran_cp_create_and_send_section() is to generate the C-Plane message +with section type 1 for DL or UL symbol data scheduling. + +This function has hardcoded values for some parameters such as: + +- The filter index is fixed to XRAN_FILTERINDEX_STANDARD. + +- RB indicator is fixed to XRAN_RBIND_EVERY. + +- Symbol increment is not used (XRAN_SYMBOLNUMBER_NOTINC) + +- Resource Element Mask is fixed to 0xfff + +If section extensions include extension 1 or 11, direct mbuf will not be +allocated/used and pre-allocated flat buffer will be attached to +indirect mbuf. This external buffer will be used to compose C-Plane +message and should have BFWs already by xran_cp_populate_section_ext_1() +or xran_cp_prepare_ext11_bfws(). + +Since current implementation uses single section single C-Plane message, +if multi sections are present, this function will generate same amount +of C-Plane messages with the number of sections. + +After C-Plane message generation, it will send generated packet to TX +ring after adding an Ethernet header and also will add section +information of generated C-Plane packet to section database, to generate +U-plane message by C-Plane configuration. + +The generate_cpmsg_prach()is to generate the C-Plane message with +section type 3 for PRACH scheduling. + +This functions also has some hardcoded values for the following +parameters: + +- RB indicator is fixed to XRAN_RBIND_EVERY. + +- Symbol increment is not used (XRAN_SYMBOLNUMBER_NOTINC). + +- Resource Element Mask is fixed to 0xfff. + +This function does not send generated packet, send_cpmsg() should be +called after this function call. The example can be found from +tx_cp_ul_cb() in xran_main.c. Checking and parsing received PRACH symbol +data by section information from the C-Plane are not implemented in this +release. + +Example Configuration of C-Plane Messages +''''''''''''''''''''''''''''''''''''''''' + +C-Plane messages can be composed through API, and the sample application +shows several reference usages of the configuration for different +numerologies. + +Below are the examples of C-Plane message configuration with a sample +application for mmWave – numerology 3, 100 MHz bandwidth, TDD (DDDS) + +**C-Plane Message – downlink symbol data for a downlink slot** + +- Single CP message with the single section of section type 1 + +- Configures single CP message for all consecutive downlink symbols + +- Configures whole RBs (66) for a symbol + +- Compression and beamforming are not used + +Common Header Fields:: + +- dataDirection = XRAN_DIR_DL +- payloadVersion = XRAN_PAYLOAD_VER +- filterIndex = XRAN_FILTERINDEX_STANDARD +- frameId = [0..99] +- subframeId = [0..9] +- slotID = [0..9] +- startSymbolid = 0 +- numberOfsections = 1 +- sectionType = XRAN_CP_SECTIONTYPE_1 +- udCompHdr.idIqWidth = 0 +- udCompHdr.udCompMeth = XRAN_COMPMETHOD_NONE +- reserved = 0 + +Section Fields:: + +- sectionId = [0..4095] +- rb = XRAN_RBIND_EVERY +- symInc = XRAN_SYMBOLNUMBER_NOTINC +- startPrbc = 0 +- numPrbc = 66 +- reMask = 0xfff +- numSymbol = 14 +- ef = 0 +- beamId = 0 + + +**C-Plane Message – uplink symbol data for uplink slot** + +- Single CP message with the single section of section type 1 + +- Configures single CP message for all consecutive uplink symbols (UL + symbol starts from 3) + +- Configures whole RBs (66) for a symbol + +- Compression and beamforming are not used + +Common Header Fields:: + +- dataDirection = XRAN_DIR_UL +- payloadVersion = XRAN_PAYLOAD_VER +- filterIndex = XRAN_FILTERINDEX_STANDARD +- frameId = [0..99] +- subframeId = [0..9] +- slotID = [0..9] +- startSymbolid = 3 +- numberOfsections = 1 +- sectionType = XRAN_CP_SECTIONTYPE_1 +- udCompHdr.idIqWidth = 0 +- udCompHdr.udCompMeth = XRAN_COMPMETHOD_NONE +- reserved = 0 + +Section Fields:: + +- sectionId = [0..4095] +- rb = XRAN_RBIND_EVERY +- symInc = XRAN_SYMBOLNUMBER_NOTINC +- startPrbc = 0 +- numPrbc = 66 +- reMask = 0xfff +- numSymbol = 11 +- ef = 0 +- beamId = 0 + + +**C-Plane Message – PRACH** + +- Single CP message with the single section of section type 3 including + repetition + +- Configures PRACH format A3, config index 81, and detail parameters + are: + +- Filter Index : 3 + +- CP length : 0 + +- Time offset : 2026 + +- FFT size : 1024 + +- Subcarrier spacing : 120KHz + +- Start symbol index : 7 + +- Number of symbols : 6 + +- Number of PRBCs : 12 + +- Frequency offset : -792 + +- Compression and beamforming are not used + +Common Header Fields:: + +- dataDirection = XRAN_DIR_UL +- payloadVersion = XRAN_PAYLOAD_VER +- filterIndex = XRAN_FILTERINDEPRACH_ABC +- frameId = [0,99] +- subframeId = [0,3] +- slotID = 3 or 7 +- startSymbolid = 7 +- numberOfSections = 1 +- sectionType = XRAN_CP_SECTIONTYPE_3 +- timeOffset = 2026 +- frameStructure.FFTSize = XRAN_FFTSIZE_1024 +- frameStructure.u = XRAN_SCS_120KHZ +- cpLength = 0 +- udCompHdr.idIqWidth = 0 +- udCompHdr.udCompMeth = XRAN_COMPMETHOD_NONE + +Section Fields:: + +- sectionId = [0..4095] +- rb = XRAN_RBIND_EVERY +- symInc = XRAN_SYMBOLNUMBER_NOTINC +- startPrbc = 0 +- numPrbc = 12 +- reMask = 0xfff +- numSymbol = 6 +- ef = 0 +- beamId = 0 +- frequencyOffset = -792 +- reserved + + +Functions to Store/Retrieve Section Information +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +There are several functions to store/retrieve section information of +C-Plane messages. Since U-plane messages must be generated by the +information in the sections of a C-Plane message, it is required to +store and retrieve section information. + +**APIs and Data Structure** +''''''''''''''''''''''''''' + +APIs for initialization and release storage are: + +- int xran_cp_init_sectiondb(void \*pHandle); + +- int xran_cp_free_sectiondb(void \*pHandle); + +APIs to store and retrieve section information are: + +- int xran_cp_add_section_info(void \*pHandle, uint8_t dir, uint8_t + cc_id, uint8_t ruport_id, uint8_t ctx_id, struct xran_section_info + \*info); + +- int xran_cp_add_multisection_info(void \*pHandle, uint8_t cc_id, + uint8_t ruport_id, uint8_t ctx_id, struct xran_cp_gen_params + \*gen_info); + +- struct xran_section_info \*xran_cp_find_section_info(void \*pHandle, + uint8_t dir, uint8_t cc_id, uint8_t ruport_id, uint8_t ctx_id, + uint16_t section_id); + +- struct xran_section_info \*xran_cp_iterate_section_info(void + \*pHandle, uint8_t dir, uint8_t cc_id, uint8_t ruport_id, uint8_t + ctx_id, uint32_t \*next); + +- int xran_cp_getsize_section_info(void \*pHandle, uint8_t dir, uint8_t + cc_id, uint8_t ruport_id, uint8_t ctx_id); + +APIs to reset the storage for a new slot are: + +- int xran_cp_reset_section_info(void \*pHandle, uint8_t dir, uint8_t + cc_id, uint8_t ruport_id, uint8_t ctx_id); + +The structure of xran_section_info is used to store/retrieve +information. This is the same structure used to generate a C-Plane +message. Please refer to Section 5.4.2.1.1 for more details. + +The storage for section information is declared as a multi-dimensional +array and declared as a local static variable to limit direct access. +Each item is defined as the structure of xran_sectioninfo_db, and it has +the number of stored section information items (cur_index) and the array +of the information (list), as shown below. + +/* + +\* This structure to store the section information of C-Plane + +\* in order to generate and parse corresponding U-Plane \*/ + +struct xran_sectioninfo_db { + +uint32_t cur_index; /* Current index to store for this eAXC \*/ + +struct xran_section_info list[XRAN_MAX_NUM_SECTIONS]; /* The array of +section information \*/ + +}; + +static struct xran_sectioninfo_db +sectiondb[XRAN_MAX_SECTIONDB_CTX][XRAN_DIR_MAX][XRAN_COMPONENT_CARRIERS_MAX][XRAN_MAX_ANTENNA_NR*2 ++ XRAN_MAX_ANT_ARRAY_ELM_NR]; + +The maximum size of the array can be adjusted if required by system +configuration. Since transmission and reception window of U-Plane can be +overlapped with the start of new C-Plane for next slot, functions have +context index to identify and protect the information. Currently the +maximum number of context is defined by two and it can be adjusted if +needed. + +Note. Since the context index is not managed by the library and APIs are +expecting it from the caller as a parameter, the caller shall +consider a proper method to manage it to avoid corruption. The +current reference implementation uses a slot and subframe index to +calculate the context index. + +**Example Usage of APIs** +''''''''''''''''''''''''' + +There are references to show the usage of APIs as below. + +- Initialization and release: + +- xran_cp_init_sectiondb(): xran_open() in lib/src/xran_main.c + +- xran_cp_free_sectiondb(): xran_close() in lib/src/xran_main.c + +- Store section information: + +- xran_cp_add_section_info(): send_cpmsg_dlul() and + send_cpmsg_prach()in lib/src/xran_main.c + +- Retrieve section information: + +- xran_cp_iterate_section_info(): xran_process_tx_sym() in + lib/src/xran_main.c + +- xran_cp_getsize_section_info(): xran_process_tx_sym() in + lib/src/xran_main.c + +- Reset the storage for a new slot: + +- xran_cp_reset_section_info(): tx_cp_dl_cb() and tx_cp_ul_cb() in + lib/src/xran_main.c + +**Function for RU emulation and Debug** +''''''''''''''''''''''''''''''''''''''' + +xran_parse_cp_pkt() is a function which can be utilized for RU emulation +or debug. It is defined below: + +int xran_parse_cp_pkt(struct rte_mbuf \*mbuf, + +struct xran_cp_gen_params \*result, + +struct xran_recv_packet_info \*pkt_info); + +It parses a received C-Plane packet and retrieves the information from +its headers and sections. + +The retrieved information is stored in the structures: + +struct xran_cp_gen_params: section information from received C-Plane +packet + +struct xran_recv_packet_info: transport layer header information (eCPRI +header) + +These functions can be utilized to debug or RU emulation purposes. + +.. _u-plane-1: + +U-plane +~~~~~~~ + +Single Section is the default mode of xRAN packet creation. It assumes +that there is only one section per packet, and all IQ samples are +attached to it. Compression is not supported. + +A message is built in mbuf space given as a parameter. The library +builds eCPRI header filling structure fields by taking the IQ sample +size and populating a particular packet length and sequence number. + +With compression, supported IQ bit widths are 8,9,10,12,14. + +Implementation of a U-plane set of functions is defined in xran_up_api.c +and is used to prepare U-plane packet content according to the given +configuration. + +The following list of functions is implemented for U-plane: + +- Build eCPRI header + +- Build application header + +- Build section header + +- Append IQ samples to packet + +- Prepare full symbol of xRAN data for single eAxC + +- Process RX packet per symbol. + +The time of generation of a U-plane message for DL and UL is +“symbol-based” and can be controlled using O-DU settings (O-RU), +according to Table 4. + +Supporting Code +--------------- + +The xRAN library has a set of functions used to assist in packet +processing and data exchange not directly used for xRAN packet +processing. + +Timing +~~~~~~ + +The sense of time for the xRAN protocol is obtained from system time, +where the system timer is synchronized to GPS time via PTP protocol +using the Linux PHP package. On the software side, a simple polling loop +is utilized to get time up to nanosecond precision and particular packet +processing jobs are scheduled via the DPDK timer. + +long poll_next_tick(int interval) + +{ + +struct timespec start_time; + +struct timespec cur_time; + +long target_time; + +long delta; + +clock_gettime(CLOCK_REALTIME, &start_time); + +target_time = (start_time.tv_sec \* NSEC_PER_SEC + start_time.tv_nsec + +interval \* NSEC_PER_USEC) / (interval \* NSEC_PER_USEC) \* interval; + +while(1) + +{ + +clock_gettime(CLOCK_REALTIME, &cur_time); + +delta = (cur_time.tv_sec \* NSEC_PER_SEC + cur_time.tv_nsec) - +target_time \* NSEC_PER_USEC; + +if(delta > 0 \|\| (delta < 0 && abs(delta) < THRESHOLD)) + +{ + +break; + +} + +} + +return delta; + +} + +Polling is used to achieve the required precision of symbol time. For +example, in the mmWave scenario, the symbol time is 125µs/14=~8.9µs. +Small deterministic tasks can be executed within the polling interval +provided. It’s smaller than the symbol interval time. + +DPDK Timers +~~~~~~~~~~~ + +DPDK provides sets of primitives (struct rte_rimer) and functions +(rte_timer_reset_sync() rte_timer_manage()) to |br| +schedule processing of +function as timer. The timer is based on the TSC clock and is not +synchronized to PTP time. As a |br| +result, this timer cannot be used as a +periodic timer because the TSC clock can drift substantially relative to +the system timer which in turn is synchronized to PTP (GPS) + +Only single-shot timers are used to schedule processing based on +events such as symbol time. The packet |br| +processing function +calls rte_timer_manage() in the loop, and the resulting execution of +timer function happens right |br| +after the timer was “armed”. + +xRAN Ethernet +~~~~~~~~~~~~~ + +xran_init_port() function performs initialization of DPDK ETH port. +Standard port configuration is used as per reference example from DPDK. + +Jumbo Frames are used by default. Mbufs size is extended to support 9600 +bytes packets. + +Mac address and VLAN tag are expected to be configured by Infrastructure +software. See Appendix A.4. + +From an implementation perspective, modules provide functions to handle: + +- Ethernet headers + +- VLAN tag + +- Send and Receive mbuf. + +xRAN Ethdi +~~~~~~~~~~ + +Ethdi provides functionality to work with the content of an Ethernet +packet and dispatch processing to/from the xRAN layer. Ethdi +instantiates a main PMD driver thread and dispatches packets between the +ring and RX/TX using rte_eth_rx_burst() and rte_eth_tx_burst() DPDK +functions. + +For received packets, it maintains a set of handlers for ethertype +handlers and xRAN layer register one xRAN ethtype |br| +0xAEFE, resulting in +packets with this ethertype being routed to the xRAN processing +function. This function checks the message type of the eCPRI header and +dispatches packet to either C-plane processing or U-plane processing. + +Initialization of memory pools, allocation and freeing of mbuf for +Ethernet packets occur in this layer. + + +O-RAN One Way Delay Measurements +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The support for the eCPRI one- way delay measurements which are specified by +the O-RAN to be used with the Measured Transport support per Section 2.3.3.3 +of the O-RAN-WG4.CUS.0-v4.00 specification and section 3.2.4.6 of the eCPRI_v2.0 +specification is implemented in the file xran_delay_measurement.c. Structure +definitions used by the owd measurement functions are in the file xran_fh_o_du.h +for common data and port specific variables and parameters. + +The implementation of this feature has been done under the assumption that the requestor +is the O-DU and the recipient is the O-RU. All of the action_types per the eCPRI 2.0 have +been implemented. In the current version the timestamps are obtained using the linux +function clock_gettime using CLOCK_REALTIME as the clock_id argument. + +The implementation supports both the O-RU and the O-DU side in order to do the unit test +in loopback mode. + +The one-delay measurements are enabled at configuration time and run right after the +xran_start() function is executed. The total number of consecutive measurements per port +should be a power of 2 and in order to minimize the system startup it is advisable that +the number is 16 or below. + +The following functions can be found in the xran_delay_measurement.c: + +xran_ecpri_one_way_delay_measurement_transmitter() which is invoked from the +process_dpdk_io()function if the one-way delay measurements are enabled. This is +the main function for the owd transmitter. + +xran_generate_delay_meas() is a general function used by the transmitter to send the appropriate +messages based on actionType and filling up all the details for the ethernet and ecpri layers. + +Process_delay_meas() this function is invoked from the handle_ecpri_ethertype() function when +the ecpri message type is ECPRI_DELAY_MEASUREMENT. This is the main owd receiver function. + +From the Process_delay_meas() and depending on the message received we can execute one +of the following functions + +xran_process_delmeas_request() If we received a request message. + +xran_process_delmeas_request_w_fup() If we received a request with follow up message. + +xran_process_delmeas_response() If we received a response message. + +xran_process_delmeas_rem_request() If we received a remote request message + + +xran_delmeas_rem_request_w_fup() If we received a remote request with follow up message. + +All of the receiver functions also can generate the appropriate send message by using +the DPDK function rte_eth_tx_burst() to minimize the response delay. + +Additional utility functions used by the owd implementation for managing of timestamps +and time measurements are: + +xran_ptp_ts_to_ns() that takes a TimeStamp argument from a received owd ecpri packet and +places it in host order and returns the value in nanoseconds. + +xran_timespec_to_ns() that takes an argument in timespec format like the return value from the +linux function clock_gettime() and returns a value in nanoseconds. + +xran_ns_to_timespec() that takes an argument in nanoseconds and returns a value by +reference in timespec format. + +xran_compute_and_report_delay_estimate() This function takes an average of the computed one way +delay measurements and prints out the average value to the console expressed in nanoseconds. +Currently we exclude the first 2 measurements from the average. + +Utility functions in support of the owd ecpri packet formulation are: + +xran_build_owd_meas_ecpri_hdr() Builds the ecpri header with message type ECPRI_DELAY_MEASUREMENT +and writes the payload size in network order. + +xran_add_at_and_measId_to_header() This function is used to write the action Type and +MeasurementID to the eCPRI owd header. + +The current implementation of the one way delay measurements only supports a fixed +message size. The message is defined in the xran_pkt.h in the structure xran_ecpri_delay_meas_pl. + +The one-way delay measurements have been tested with the sample-app for the Front Haul Interface +Library and have not yet been integrated with the L1 Layer functions. \ No newline at end of file -- 2.16.6

    xfnYAaL7v3b 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%0AUQn(z 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 di{Jzss~=ahZU*=O(l+xzf8 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 vay=%|E(;|S?| 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%0AaJM)?f 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 literal 47659 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