First round of documentation cleanup for oran_e_maintenance_release_v1.0
[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 +---------+----+-----------------+------------------+----------------+
196 |         | 1b || UL Frequency   || UL user data    | symbol         |
197 |         |    || Domain IQ Data || (PUSCH),        |                |
198 |         |    |                 || control channel |                |
199 |         |    |                 || data (PUCCH,    |                |
200 |         |    |                 || etc.)           |                |
201 +---------+----+-----------------+------------------+----------------+
202 |         | 1c || PRACH Frequency| UL PRACH data    | slot or symbol |
203 |         |    || Domain IQ Data |                  |                |
204 +---------+----+-----------------+------------------+----------------+
205 | C-Plane | 2a || Scheduling     || Scheduling      | ~ slot         |
206 |         |    || Commands       || information,    |                |
207 |         |    |                 || FFT size, CP    |                |
208 |         |    || (Beamforming is|| length,         |                |
209 |         |    || not supported) || Subcarrier      |                |
210 |         |    |                 || spacing, UL     |                |
211 |         |    |                 || PRACH           |                |
212 |         |    |                 || scheduling      |                |
213 +---------+----+-----------------+------------------+----------------+
214 | S-Plane | S  || Timing and     || IEEE 1588 PTP   | -              |
215 |         |    || Synchronization|| packets         |                |
216 +---------+----+-----------------+------------------+----------------+
217
218 .. image:: images/Data-Flows.jpg
219   :width: 600
220   :alt: Figure 6. Data Flows
221
222 Figure 6. Data Flows
223
224
225
226
227 Information on specific features of C-Plane and U-plane provided in
228 Sample Application Section Configuration of S-plane used on
229 test setup for simulation is provided in Appendix 2.
230
231 Data flow separation is based on VLAN (applicable when layer 2 or layer
232 3 is used for the C/U-plane transport.)
233
234 *  The mechanism for assigning VLAN ID to U-Plane and C-Plane is assumed to be via the M-Plane.
235
236 *  VLAN Tag is configurable via the standard Linux IP tool, refer to Appendix A, Setup Configuration.
237
238 *  No Quality of Service (QoS) is implemented as part of O-RAN library. Standard functionality of ETH port can be used to implement QoS.
239
240 .. image:: images/C-plane-and-U-plane-Packet-Exchange.jpg
241   :width: 600
242   :alt: Figure 7. C-plane and U-plane Packet Exchange
243
244 Figure 7. C-plane and U-plane Packet Exchange
245
246
247
248
249 Timing, Latency, and Synchronization to GPS
250 -------------------------------------------
251
252 The O-RAN Fronthaul specification defines the latency model of the front
253 haul interface and interaction between O-DU and 0-RU. This
254 implementation of the O-RAN library supports only the category with fixed
255 timing advance and Defined Transport methods. It determines O-DU
256 transmit and receive windows based on pre-defined transport network
257 characteristics, and the delay characteristics of the RUs within the
258 timing domain.
259
260 Table 4 below provides default values used for the implementation of
261 O-DU – O-RU simulation with mmWave scenario. Table 5 and *Table 6* below
262 provide default values used for the implementation of O-DU – O-RU
263 simulation with numerology 0 and numerology 1 for Sub6 scenarios.
264 Configuration can be adjusted via configuration files for sample
265 application and reference PHY.
266
267 However, simulation of the different range of the settings was not
268 performed, and additional implementation changes might be required as
269 well as testing with actual O-RU. The parameters for the front haul
270 network are out of scope as a direct connection between O-DU and 0-RU
271 is used for simulation.
272
273 Table 4. Front Haul Interface Latency (numerology 3 - mmWave)
274
275 +------+------------+---------------+---------------+------------+------------+
276 |      || Model     | C-Plane                       | U-Plane                 |
277 |      || Parameters|                               |                         |
278 +      +            +---------------+---------------+------------+------------+
279 |      |            | DL            | UL            | DL         | UL         |
280 +------+------------+---------------+---------------+------------+------------+
281 | O-RU | T2amin     || T2a_min_cp_dl|| T2a_min_cp_ul|| T2a_min_up| NA         |
282 |      |            || = 50         || = 50         || = 25      |            |
283 +      +------------+---------------+---------------+------------+------------+
284 |      | T2amax     || T2a_max_cp_dl|| T2a_max_cp_ul|| T2a_max_up| NA         |
285 |      |            || = 140        || = 140        || = 140     |            |
286 +      +------------+---------------+---------------+------------+------------+
287 |      |            | Tadv_cp_dl    | NA            | NA         | NA         |
288 +      +------------+---------------+---------------+------------+------------+
289 |      | Ta3min     | NA            | NA            | NA         | Ta3_min=20 |
290 +      +------------+---------------+---------------+------------+------------+
291 |      | Ta3max     | NA            | NA            | NA         | Ta3_max=32 |
292 +------+------------+---------------+---------------+------------+------------+
293 | O-DU | T1amin     || T1a_min_cp_dl|| T1a_min_cp_ul|| T1a_min_up| NA         |
294 |      |            || = 70         || = 60         || = 35      |            |
295 +      +------------+---------------+---------------+------------+------------+
296 |      | T1amax     || T1a_max_cp_dl|| T1a_max_cp_ul|| T1a_max_up| NA         |
297 |      |            || = 100        || = 70         || = 50      |            |
298 +      +------------+---------------+---------------+------------+------------+
299 |      | Ta4min     | NA            | NA            | NA         | Ta4_min=0  |
300 +      +------------+---------------+---------------+------------+------------+
301 |      | Ta4max     | NA            | NA            | NA         | Ta4_max=45 |
302 +------+------------+---------------+---------------+------------+------------+
303
304 Table 5. Front Haul Interface Latency (numerology 0 - Sub6)
305
306 +------+----------+----------+----------+----------+----------+
307 |      || Model   | C-Plane  |          | U-Plane  |          |
308 |      || Pa\     |          |          |          |          |
309 |      | rameters |          |          |          |          |
310 +      +          +----------+----------+----------+----------+
311 |      |          | DL       | UL       | DL       | UL       |
312 +------+----------+----------+----------+----------+----------+
313 | O-RU | T2amin   || T2a_min\|| T2a_min\|| T2a_min\| NA       |
314 |      |          | _cp_dl   | _cp_ul   | _up      |          |
315 |      |          || = 400   || = 400   || = 200   |          |
316 +      +----------+----------+----------+----------+----------+
317 |      | T2amax   || T2a_max\|| T2a_max\|| T2a_max\| NA       |
318 |      |          | _cp_dl   | _cp_ul   | _up      |          |
319 |      |          || = 1120  || = 1120  || = 1120  |          |
320 +      +----------+----------+----------+----------+----------+
321 |      |          | Ta\      | NA       | NA       | NA       |
322 |      |          | dv_cp_dl |          |          |          |
323 +      +----------+----------+----------+----------+----------+
324 |      | Ta3min   | NA       | NA       | NA       || Ta3_min |
325 |      |          |          |          |          || = 160   |
326 +      +----------+----------+----------+----------+----------+
327 |      | Ta3max   | NA       | NA       | NA       || Ta3_max |
328 |      |          |          |          |          || = 256   |
329 +------+----------+----------+----------+----------+----------+
330 | O-DU | T1amin   || T1a_min\|| T1a_min\|| T1a_min\| NA       |
331 |      |          | _cp_dl   | _cp_ul   | _up      |          |
332 |      |          || = 560   || = 480   || = 280   |          |
333 +      +----------+----------+----------+----------+----------+
334 |      | T1amax   || T1a_max\|| T1a_max\|| T1a_max\| NA       |
335 |      |          | _cp_dl   | _cp_ul   | _up      |          |
336 |      |          || = 800   || = 560   || = 400   |          |
337 +      +----------+----------+----------+----------+----------+
338 |      | Ta4min   | NA       | NA       | NA       | T        |
339 |      |          |          |          |          | a4_min=0 |
340 +      +----------+----------+----------+----------+----------+
341 |      | Ta4max   | NA       | NA       | NA       | Ta4      |
342 |      |          |          |          |          | _max=360 |
343 +------+----------+----------+----------+----------+----------+
344
345
346
347
348
349 Table 6. Front Haul Interface Latency (numerology 1 - Sub6)
350
351 +------+------------+---------------+---------------+------------+------------+
352 |      | Model      | C-Plane       | U-Plane       |            |            |
353 |      | Parameters |               |               |            |            |
354 +      +            +---------------+---------------+------------+------------+
355 |      |            | DL            | UL            | DL         | UL         |
356 +------+------------+---------------+---------------+------------+------------+
357 | O-RU | T2amin     || T2a_min_cp_dl|| T2a_min_cp_ul|| T2a_min_up| NA         |
358 |      |            || = 285        || = 285        || = 71      |            |
359 +      +------------+---------------+---------------+------------+------------+
360 |      | T2amax     || T2a_max_cp_dl|| T2a_max_cp_ul|| T2a_max_up| NA         |
361 |      |            || = 429        || = 429        || = 428     |            |
362 +      +------------+---------------+---------------+------------+------------+
363 |      |            | Tadv_cp_dl    | NA            | NA         | NA         |
364 +      +------------+---------------+---------------+------------+------------+
365 |      | Ta3min     | NA            | NA            | NA         || Ta3_min   |
366 |      |            |               |               |            || = 20      |
367 +      +------------+---------------+---------------+------------+------------+
368 |      | Ta3max     | NA            | NA            | NA         || Ta3_max   |
369 |      |            |               |               |            || = 32      |
370 +------+------------+---------------+---------------+------------+------------+
371 | O-DU | T1amin     || T1a_min_cp_dl|| T1a_min_cp_ul|| T1a_min_up| NA         |
372 |      |            || = 285        || = 285        || = 96      |            |
373 +      +------------+---------------+---------------+------------+------------+
374 |      | T1amax     || T1a_max_cp_dl|| T1a_max_cp_ul|| T1a_max_up| NA         |
375 |      |            || = 429        || = 300        || = 196     |            |
376 +      +------------+---------------+---------------+------------+------------+
377 |      | Ta4min     | NA            | NA            | NA         || Ta4_min   |
378 |      |            |               |               |            || = 0       |
379 +      +------------+---------------+---------------+------------+------------+
380 |      | Ta4max     | NA            | NA            | NA         || Ta4_max   |
381 |      |            |               |               |            || = 75      |
382 +------+------------+---------------+---------------+------------+------------+
383
384
385
386
387
388 IEEE 1588 protocol and PTP for Linux\* implementations are used to
389 synchronize local time to GPS time. Details of the configuration used
390 are provided in Appendix B, PTP Configuration. Local time is used to get
391 Top of the Second (ToS) as a 1 PPS event for SW implementation. Timing
392 event is obtained by performing polling of local time using
393 clock_gettime(CLOCK_REALTIME,..)
394
395 All-time intervals are specified concerning the GPS time, which
396 corresponds to OTA time.
397
398 Virtualization and Container-Based Usage
399 ----------------------------------------
400
401 O-RAN implementation is deployment agnostic and does not require special
402 changes to be used in virtualized or container-based deployment options.
403 The only requirement is to provide one SRIOV base virtual port for
404 C-plane and one port for U-plane traffic per O-DU instance. This can be
405 achieved with the default Virtual Infrastructure Manager (VIM) as well
406 as using standard container networking.
407
408
409
410 To configure the networking ports, refer to the FlexRAN and Mobile Edge
411 Compute (MEC) Platform Setup Guide (*Table 2*) and readme.md in O-RAN
412 library or Appendix A.