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