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