O-RAN E Maintenance Release contribution for ODULOW
[o-du/phy.git] / docs / Architecture-Overview_fh.rst
1 ..    Copyright (c) 2019 Intel
2 ..
3 ..  Licensed under the Apache License, Version 2.0 (the "License");
4 ..  you may not use this file except in compliance with the License.
5 ..  You may obtain a copy of the License at
6 ..
7 ..      http://www.apache.org/licenses/LICENSE-2.0
8 ..
9 ..  Unless required by applicable law or agreed to in writing, software
10 ..  distributed under the License is distributed on an "AS IS" BASIS,
11 ..  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 ..  See the License for the specific language governing permissions and
13 ..  limitations under the License.
14
15
16 Architecture Overview
17 =====================
18
19 .. contents::
20     :depth: 3
21     :local:
22
23 This section provides an overview of the O-RAN architecture.
24
25 .. _introduction-1:
26
27 Introduction
28 ------------
29
30 The front haul interface, according to the O-RAN Fronthaul
31 specification, is part of the 5G NR L1 reference implementation provided
32 with the FlexRAN software package. It performs communication between
33 O-RAN Distributed Unit (O-DU) and O-RAN Radio Unit (O-RU) and consists
34 of multiple HW and SW components.
35
36 The logical representation of HW and SW components is shown in *Figure
37 1*.
38
39 The same architecture design is applicable for LTE; however, the FH
40 library is not integrated with the PHY pipeline for FlexRAN LTE.
41
42 .. image:: images/Architecture-Block-Diagram.jpg
43   :width: 600
44   :alt: Figure 1. Architecture Block Diagram
45
46 Figure 1. Architecture Block Diagram
47
48
49
50
51 From the hardware perspective, two networking ports are used to
52 communicate to the Front Haul and Back (Mid) Haul network as well as to
53 receive PTP synchronization. The system timer is used to provide a
54 “sense” of time to the gNB application.
55
56 From the software perspective, the following components are used:
57
58 *   Linux\* PTP provides synchronization of system timer to GPS time:
59     -  ptp4l is used to synchronize oscillator on Network Interface Controller (NIC) to PTP GM.
60     -  phc2sys is used to synchronize system timer to oscillator on NIC.
61
62 *  The DPDK to provide the interface to the Ethernet port.
63
64 *  O-RAN library is built on top of DPDK to perform U-plane and C-plane functionality according to the O-RAN Fronthaul specification.
65
66 *  5GNR reference PHY uses the O-RAN library to access interface to O-RU. The interface between the library and PHY is defined to communicate TTI event, symbol time, C-plane information as well as IQ sample data.
67
68 *  5G NR PHY communicates with the L2 application using the set of MAC/PHY APIs and the shared memory interface defined as WLS.
69
70 *  L2, in turn, can use Back (Mid) Haul networking port to connect to the CU unit in the context of 3GPP specification.
71
72 In this document, we focus on details of the design and implementation
73 of the O-RAN library for providing Front Haul functionality for both
74 mmWave and Sub-6 scenarios as well as LTE.
75
76 The O-RAN M-plane is not implemented and is outside of the scope of this
77 description. Configuration files are used to specify selected M-plane
78 level parameters.
79
80 5G NR L1 Application Threads
81 ----------------------------
82
83 The specifics of the L1 application design and configuration for the
84 given scenario can be found in document 603577, *FlexRAN 5G NR Reference
85 Solution RefPHY* (Doxygen) (refer to *Table 2*) Only information
86 relevant to front haul is presented in this section.
87
88 Configuration of l1app with O-RAN interface for Front Haul is illustrated
89 acting as an O-DU in *Figure 2*.
90
91 .. image:: images/5G-NR-L1app-Threads.jpg
92   :width: 600
93   :alt: Figure 2. 5G NR L1app Threads
94
95 Figure 2. 5G NR L1app Threads
96
97 In this configuration of L1app, the base architecture of 5G NR L1 is not
98 changed. The original Front Haul FPGA interface was updated with the
99 O-RAN fronthaul interface abstracted via the O-RAN library.
100
101 O-RAN FH Thread Performs:
102
103 -  Symbol base “time event” to the rest of the system based on System Clock synchronized to GPS time via PTP
104
105 -  Baseline polling mode driver performing TX and RX of Ethernet packets
106
107 -  Most of the packet processing such as Transport header, Application header, Data section header, and interactions with the rest of the PHY processing pipeline.
108
109 -  Polling of BBDev for FEC on PAC N3000 acceleration card
110
111 The other threads are standard for the L1app and created the independent
112 usage of O-RAN as an interface to the Radio.
113
114 Communication between L1 and O-RAN layer is performed using a set of
115 callback functions where L1 assigned callback and O-RAN layer executes
116 those functions at a particular event or time moment. Detailed
117 information on callback function options and setting, as well as design,
118 can be found in the sections below.
119
120 Design and installation of the l1app do not depend on the Host, VM, or
121 container environment and the same for all cases.
122
123 Sample Application Thread Model
124 -------------------------------
125
126 Configuration of a sample application for both the O-DU and O-RU follows
127 the model of 5G NR l1app application in *Figure 2*, but no BBU or FEC
128 related threads are needed as minimal O-RAN FH functionality is used
129 only.
130
131 .. image:: images/Sample-Application-Threads.jpg
132   :width: 600
133   :alt: Figure 3. Sample Application Threads
134
135 Figure 3. Sample Application Threads
136
137 In this scenario, the main thread is used only for initializing and
138 closing the application. No execution happens on core 0 during run time.
139
140 Functional Split
141 ----------------
142
143 Figure 1 corresponds to the O-RU part of the O-RAN split.
144 Implementation of the RU side of the O-RAN protocol is not covered in
145 this document.
146
147 .. image:: images/eNB-gNB-Architecture-with-O-DU-and-RU.jpg
148   :width: 600
149   :alt: Figure 4. eNB/gNB Architecture with O-DU and RU
150
151 Figure 4. eNB/gNB Architecture with O-DU and RU
152
153
154
155
156 More than one RU can be supported with the same implementation of the
157 O-RAN library and depends on the configuration of gNB in general. In this
158 document, we address details of implementation for a single O-DU – O-RU
159 connection.
160
161 The O-RAN Fronthaul specification provides two categories of the split
162 of Layer 1 functionality between O-DU and O-RU: Category A and Category
163 B.
164
165 .. image:: images/Functional-Split.jpg
166   :width: 600
167   :alt: Figure 5. Functional Split
168
169 Figure 5. Functional Split
170
171
172
173 Data Flow
174 ---------
175
176
177
178 Table 3 lists the data flows supported for a single RU with a single
179 Component Carrier.
180
181
182
183
184 Table 3. Supported Data Flow
185
186 +---------+----+-----------------+-----------------+----------------+
187 | Plane   | ID | Name            | Contents        | Periodicity    |
188 +=========+====+=================+=================+================+
189 | U-Plane | 1a | DL Frequency    | DL user data    | symbol         |
190 |         |    | Domain IQ Data  | (PDSCH),        |                |
191 |         |    |                 | control channel |                |
192 |         |    |                 | data (PDCCH,    |                |
193 |         |    |                 | etc.)           |                |
194 +---------+----+-----------------+-----------------+----------------+
195 |         | 1b | UL Frequency    | UL user data    | symbol         |
196 |         |    | Domain IQ Data  | (PUSCH),        |                |
197 |         |    |                 | control channel |                |
198 |         |    |                 | data (PUCCH,    |                |
199 |         |    |                 | etc.)           |                |
200 +---------+----+-----------------+-----------------+----------------+
201 |         | 1c | PRACH Frequency | UL PRACH data   | slot or symbol |
202 |         |    | Domain IQ Data  |                 |                |
203 +---------+----+-----------------+-----------------+----------------+
204 | C-Plane | 2a | Scheduling      | Scheduling      | ~ slot         |
205 |         |    | Commands        | information,    |                |
206 |         |    |                 | FFT size, CP    |                |
207 |         |    | (Beamforming is | length,         |                |
208 |         |    | not supported)  | Subcarrier      |                |
209 |         |    |                 | spacing, UL     |                |
210 |         |    |                 | PRACH           |                |
211 |         |    |                 | scheduling      |                |
212 +---------+----+-----------------+-----------------+----------------+
213 | S-Plane | S  | Timing and      | IEEE 1588 PTP   | -              |
214 |         |    | Synchronization | packets         |                |
215 +---------+----+-----------------+-----------------+----------------+
216
217 .. image:: images/Data-Flows.jpg
218   :width: 600
219   :alt: Figure 6. Data Flows
220
221 Figure 6. Data Flows
222
223
224
225
226 Information on specific features of C-Plane and U-plane provided in
227 Sample Application Section Configuration of S-plane used on
228 test setup for simulation is provided in Appendix 2.
229
230 Data flow separation is based on VLAN (applicable when layer 2 or layer
231 3 is used for the C/U-plane transport.)
232
233 *  The mechanism for assigning VLAN ID to U-Plane and C-Plane is assumed to be via the M-Plane.
234
235 *  VLAN Tag is configurable via the standard Linux IP tool, refer to Appendix A, Setup Configuration.
236
237 *  No Quality of Service (QoS) is implemented as part of O-RAN library. Standard functionality of ETH port can be used to implement QoS.
238
239 .. image:: images/C-plane-and-U-plane-Packet-Exchange.jpg
240   :width: 600
241   :alt: Figure 7. C-plane and U-plane Packet Exchange
242
243 Figure 7. C-plane and U-plane Packet Exchange
244
245
246
247
248 Timing, Latency, and Synchronization to GPS
249 -------------------------------------------
250
251 The O-RAN Fronthaul specification defines the latency model of the front
252 haul interface and interaction between O-DU and 0-RU. This
253 implementation of the O-RAN library supports only the category with fixed
254 timing advance and Defined Transport methods. It determines O-DU
255 transmit and receive windows based on pre-defined transport network
256 characteristics, and the delay characteristics of the RUs within the
257 timing domain.
258
259 Table 4 below provides default values used for the implementation of
260 O-DU – O-RU simulation with mmWave scenario. Table 5 and *Table 6* below
261 provide default values used for the implementation of O-DU – O-RU
262 simulation with numerology 0 and numerology 1 for Sub6 scenarios.
263 Configuration can be adjusted via configuration files for sample
264 application and reference PHY.
265
266 However, simulation of the different range of the settings was not
267 performed, and additional implementation changes might be required as
268 well as testing with actual O-RU. The parameters for the front haul
269 network are out of scope as a direct connection between O-DU and 0-RU
270 is used for simulation.
271
272 Table 4. Front Haul Interface Latency (numerology 3 - mmWave)
273
274 +------+------------+-------------------+-------------------+----------------+------------+
275 |      | Model      | C-Plane                               | U-Plane                     |
276 |      | Parameters |                                       |                             |
277 +      +            +-------------------+-------------------+----------------+------------+
278 |      |            | DL                | UL                | DL             | UL         |
279 +------+------------+-------------------+-------------------+----------------+------------+
280 | O-RU | T2amin     | T2a_min_cp_dl=50  | T2a_min_cp_ul=50  | T2a_min_up=25  | NA         |
281 +      +------------+-------------------+-------------------+----------------+------------+
282 |      | T2amax     | T2a_max_cp_dl=140 | T2a_max_cp_ul=140 | T2a_max_up=140 | NA         |
283 +      +------------+-------------------+-------------------+----------------+------------+
284 |      |            | Tadv_cp_dl        | NA                | NA             | NA         |
285 +      +------------+-------------------+-------------------+----------------+------------+
286 |      | Ta3min     | NA                | NA                | NA             | Ta3_min=20 |
287 +      +------------+-------------------+-------------------+----------------+------------+
288 |      | Ta3max     | NA                | NA                | NA             | Ta3_max=32 |
289 +------+------------+-------------------+-------------------+----------------+------------+
290 | O-DU | T1amin     | T1a_min_cp_dl=70  | T1a_min_cp_ul=60  | T1a_min_up=35  | NA         |
291 +      +------------+-------------------+-------------------+----------------+------------+
292 |      | T1amax     | T1a_max_cp_dl=100 | T1a_max_cp_ul=70  | T1a_max_up=50  | NA         |
293 +      +------------+-------------------+-------------------+----------------+------------+
294 |      | Ta4min     | NA                | NA                | NA             | Ta4_min=0  |
295 +      +------------+-------------------+-------------------+----------------+------------+
296 |      | Ta4max     | NA                | NA                | NA             | Ta4_max=45 |
297 +------+------------+-------------------+-------------------+----------------+------------+
298
299 Table 5. Front Haul Interface Latency (numerology 0 - Sub6)
300
301 +------+----------+----------+----------+----------+----------+
302 |      | Model    | C-Plane  |          | U-Plane  |          |
303 |      | Pa       |          |          |          |          |
304 |      | rameters |          |          |          |          |
305 +      +          +----------+----------+----------+----------+
306 |      |          | DL       | UL       | DL       | UL       |
307 +------+----------+----------+----------+----------+----------+
308 | O-RU | T2amin   | T        | T        | T2a_mi   | NA       |
309 |      |          | 2a_min_c | 2a_min_c | n_up=200 |          |
310 |      |          | p_dl=400 | p_ul=400 |          |          |
311 +      +----------+----------+----------+----------+----------+
312 |      | T2amax   | T2       | T2       | T2a_max  | NA       |
313 |      |          | a_max_cp | a_max_cp | _up=1120 |          |
314 |      |          | _dl=1120 | _ul=1120 |          |          |
315 +      +----------+----------+----------+----------+----------+
316 |      |          | Ta       | NA       | NA       | NA       |
317 |      |          | dv_cp_dl |          |          |          |
318 +      +----------+----------+----------+----------+----------+
319 |      | Ta3min   | NA       | NA       | NA       | Ta3      |
320 |      |          |          |          |          | _min=160 |
321 +      +----------+----------+----------+----------+----------+
322 |      | Ta3max   | NA       | NA       | NA       | Ta3      |
323 |      |          |          |          |          | _max=256 |
324 +------+----------+----------+----------+----------+----------+
325 | O-DU | T1amin   | T        | T        | T1a_mi   | NA       |
326 |      |          | 1a_min_c | 1a_min_c | n_up=280 |          |
327 |      |          | p_dl=560 | p_ul=480 |          |          |
328 +      +----------+----------+----------+----------+----------+
329 |      | T1amax   | T        | T        | T1a_ma   | NA       |
330 |      |          | 1a_max_c | 1a_max_c | x_up=400 |          |
331 |      |          | p_dl=800 | p_ul=560 |          |          |
332 +      +----------+----------+----------+----------+----------+
333 |      | Ta4min   | NA       | NA       | NA       | T        |
334 |      |          |          |          |          | a4_min=0 |
335 +      +----------+----------+----------+----------+----------+
336 |      | Ta4max   | NA       | NA       | NA       | Ta4      |
337 |      |          |          |          |          | _max=360 |
338 +------+----------+----------+----------+----------+----------+
339
340
341
342
343
344 Table 6. Front Haul Interface Latency (numerology 1 - Sub6)
345
346 +------+------------+-------------------+-------------------+----------------+------------+
347 |      | Model      | C-Plane           | U-Plane           |                |            |
348 |      | Parameters |                   |                   |                |            |
349 +      +            +-------------------+-------------------+----------------+------------+
350 |      |            | DL                | UL                | DL             | UL         |
351 +------+------------+-------------------+-------------------+----------------+------------+
352 | O-RU | T2amin     | T2a_min_cp_dl=285 | T2a_min_cp_ul=285 | T2a_min_up=71  | NA         |
353 +      +------------+-------------------+-------------------+----------------+------------+
354 |      | T2amax     | T2a_max_cp_dl=429 | T2a_max_cp_ul=429 | T2a_max_up=428 | NA         |
355 +      +------------+-------------------+-------------------+----------------+------------+
356 |      |            | Tadv_cp_dl        | NA                | NA             | NA         |
357 +      +------------+-------------------+-------------------+----------------+------------+
358 |      | Ta3min     | NA                | NA                | NA             | Ta3_min=20 |
359 +      +------------+-------------------+-------------------+----------------+------------+
360 |      | Ta3max     | NA                | NA                | NA             | Ta3_max=32 |
361 +------+------------+-------------------+-------------------+----------------+------------+
362 | O-DU | T1amin     | T1a_min_cp_dl=285 | T1a_min_cp_ul=285 | T1a_min_up=96  | NA         |
363 +      +------------+-------------------+-------------------+----------------+------------+
364 |      | T1amax     | T1a_max_cp_dl=429 | T1a_max_cp_ul=300 | T1a_max_up=196 | NA         |
365 +      +------------+-------------------+-------------------+----------------+------------+
366 |      | Ta4min     | NA                | NA                | NA             | Ta4_min=0  |
367 +      +------------+-------------------+-------------------+----------------+------------+
368 |      | Ta4max     | NA                | NA                | NA             | Ta4_max=75 |
369 +------+------------+-------------------+-------------------+----------------+------------+
370
371
372
373
374
375 IEEE 1588 protocol and PTP for Linux\* implementations are used to
376 synchronize local time to GPS time. Details of the configuration used
377 are provided in Appendix B, PTP Configuration. Local time is used to get
378 Top of the Second (ToS) as a 1 PPS event for SW implementation. Timing
379 event is obtained by performing polling of local time using
380 clock_gettime(CLOCK_REALTIME,..)
381
382 All-time intervals are specified concerning the GPS time, which
383 corresponds to OTA time.
384
385 Virtualization and Container-Based Usage
386 ----------------------------------------
387
388 O-RAN implementation is deployment agnostic and does not require special
389 changes to be used in virtualized or container-based deployment options.
390 The only requirement is to provide one SRIOV base virtual port for
391 C-plane and one port for U-plane traffic per O-DU instance. This can be
392 achieved with the default Virtual Infrastructure Manager (VIM) as well
393 as using standard container networking.
394
395
396
397 To configure the networking ports, refer to the FlexRAN and Mobile Edge
398 Compute (MEC) Platform Setup Guide (*Table 2*) and readme.md in O-RAN
399 library or Appendix A.