TESTING_GNB_W_COTS_UE.md 13.3 KB
Newer Older
Remi Hardy's avatar
Remi Hardy committed
1
STATUS 2020/06/26 : information is up to date, but under continuous improvement
Remi Hardy's avatar
Remi Hardy committed
2

Remi Hardy's avatar
Remi Hardy committed
3 4 5 6 7 8 9 10 11 12 13 14 15
## Table of Contents ##

1.   [Configuration Overview](#configuration-overview)
2.   [SW Repository / Branch](#repository)
3.   [Architecture Setup](#architecture-setup)
4.   [Build / Install](#build-and-install)
5.   [Run / Test](#run-and-test)
6.   [Test case](#test-case)
7.   [Log file monitoring](#log-file-monitoring)
6.   [Required tools for debug](#required-tools-for-debug)
7.   [Status of interoperability](#status-of-interoperability) 

## Configuration Overview
Remi Hardy's avatar
Remi Hardy committed
16 17 18 19 20 21

* Non Standalone (NSA) configuration  : initial Control Plane established between UE and RAN eNB, then User Plane established between UE and gNB, Core network is 4G based supporting rel 15

* Commercial UE: Oppo Reno 5G
* OAI Software Defined gNB and eNB
* eNB RF front end: USRP (ETTUS) B200 Mini or B210
Remi Hardy's avatar
Remi Hardy committed
22
* gNB RF front end: USRP (ETTUS) B200 Mini or B210 (N310 will be needed for MIMO and wider BW's)
Remi Hardy's avatar
Remi Hardy committed
23 24 25 26 27
* 5G TDD duplexing mode
* 5G FR1 Band n78 (3.5 GHz)
* BW: 40MHz
* Antenna scheme: SISO

Remi Hardy's avatar
Remi Hardy committed
28
## Repository
Remi Hardy's avatar
Remi Hardy committed
29 30 31 32 33

https://gitlab.eurecom.fr/oai/openairinterface5g/tree/develop

## Architecture Setup

Remi Hardy's avatar
Remi Hardy committed
34
The scheme below depicts our typical setup:
Remi Hardy's avatar
Remi Hardy committed
35

Remi Hardy's avatar
Remi Hardy committed
36
![image info](./testing_gnb_w_cots_ue_resources/oai_fr1_setup.jpg)
Remi Hardy's avatar
Remi Hardy committed
37

Remi Hardy's avatar
Remi Hardy committed
38 39 40
The photo depicts the FR1 setup part of the scheme above:  


Remi Hardy's avatar
Remi Hardy committed
41
![image info](./testing_gnb_w_cots_ue_resources/oai_fr1_lab.jpg)
Remi Hardy's avatar
Remi Hardy committed
42

Remi Hardy's avatar
Remi Hardy committed
43
## Build and Install
Remi Hardy's avatar
Remi Hardy committed
44

Remi Hardy's avatar
Remi Hardy committed
45
General guidelines to build eNB and gNB :
Remi Hardy's avatar
Remi Hardy committed
46 47 48
See https://gitlab.eurecom.fr/oai/openairinterface5g/blob/develop/doc/BUILD.md#building-ues-enodeb-and-gnodeb-executables


Remi Hardy's avatar
Remi Hardy committed
49
- **eNB**
Remi Hardy's avatar
Remi Hardy committed
50 51

```
Remi Hardy's avatar
Remi Hardy committed
52 53 54 55 56
cd <your oai installation directory>/openairinterface5g/
source oaienv
cd cmake_targets/
./build_oai -I -w USRP --eNB

Remi Hardy's avatar
Remi Hardy committed
57 58
```

Remi Hardy's avatar
Remi Hardy committed
59
- **gNB**
Remi Hardy's avatar
Remi Hardy committed
60 61

```
Remi Hardy's avatar
Remi Hardy committed
62 63 64 65
cd <your oai installation directory>/openairinterface5g/
source oaienv
cd cmake_targets/
./build_oai -I -w USRP --gNB
Remi Hardy's avatar
Remi Hardy committed
66 67
```

Remi Hardy's avatar
Remi Hardy committed
68 69 70 71 72 73 74 75

- **EPC**

for reference:
https://github.com/OPENAIRINTERFACE/openair-epc-fed/blob/master-documentation/docs/DEPLOY_HOME.md



Remi Hardy's avatar
Remi Hardy committed
76
## Configuration Files
Remi Hardy's avatar
Remi Hardy committed
77

Remi Hardy's avatar
Remi Hardy committed
78 79
Each component (EPC, eNB, gNB) has its own configuration file.  
These config files are passed as arguments of the run command line, using the option -O \<conf file\>
Remi Hardy's avatar
Remi Hardy committed
80

Remi Hardy's avatar
Remi Hardy committed
81 82
Some config examples can be found in the following folder:  
https://gitlab.eurecom.fr/oai/openairinterface5g/-/tree/develop/targets/PROJECTS/GENERIC-LTE-EPC/CONF
Remi Hardy's avatar
Remi Hardy committed
83

Remi Hardy's avatar
Remi Hardy committed
84 85 86 87
Also base config files can be found here:  
[enb conf file](https://gitlab.eurecom.fr/oai/openairinterface5g/-/blob/rh_doc_update_3/doc/testing_gnb_w_cots_ue_resources/enb.conf)  
[gnb conf file](https://gitlab.eurecom.fr/oai/openairinterface5g/-/blob/rh_doc_update_3/doc/testing_gnb_w_cots_ue_resources/gnb.conf)

Remi Hardy's avatar
Remi Hardy committed
88 89
TO DO : attach base confif files

Remi Hardy's avatar
Remi Hardy committed
90
These files have to be updated manually to set the IP addresses and frequency.  
Remi Hardy's avatar
Remi Hardy committed
91

Remi Hardy's avatar
Remi Hardy committed
92 93 94 95 96 97 98 99 100 101
1- In the **eNB configuration file** :
- look for MME IP address, and update the **ipv4 field** with the IP address of the **EPC** server
```
    ////////// MME parameters:
    mme_ip_address      = ( { ipv4       = "**YOUR_EPC_IP_ADDR**";
                              ipv6       = "192:168:30::17";
                              active     = "yes";
                              preference = "ipv4";
                            }
                          );
Remi Hardy's avatar
Remi Hardy committed
102 103

```
Remi Hardy's avatar
Remi Hardy committed
104 105

- look for S1 IP address, and update the **3 fields below** with the IP address of the **eNB** server  
Remi Hardy's avatar
Remi Hardy committed
106
```
Remi Hardy's avatar
Remi Hardy committed
107 108 109 110 111 112 113 114 115 116
    NETWORK_INTERFACES :
    {
        ENB_INTERFACE_NAME_FOR_S1_MME            = "eth0";
        ENB_IPV4_ADDRESS_FOR_S1_MME              = "**YOUR_ENB_IP_ADDR**";
        ENB_INTERFACE_NAME_FOR_S1U               = "eth0";
        ENB_IPV4_ADDRESS_FOR_S1U                 = "**YOUR_ENB_IP_ADDR**";
        ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
        ENB_IPV4_ADDRESS_FOR_X2C                 = "**YOUR_ENB_IP_ADDR**";
        ENB_PORT_FOR_X2C                         = 36422; # Spec 36422
    };
Remi Hardy's avatar
Remi Hardy committed
117

Remi Hardy's avatar
Remi Hardy committed
118
```
Remi Hardy's avatar
Remi Hardy committed
119

Remi Hardy's avatar
Remi Hardy committed
120 121 122 123 124 125 126 127 128 129 130 131
2- In the **gNB configuration file** :
- look for MME IP address, and update the **ipv4 field** with the IP address of the **EPC** server
```
    ////////// MME parameters:
    mme_ip_address      = ( { ipv4       = "**YOUR_EPC_IP_ADDR**";
                              ipv6       = "192:168:30::17";
                              active     = "yes";
                              preference = "ipv4";
                            }
                          );
```
- look for X2 IP address, and update the **4 fields** with the IP address of the **eNB** server (notice : even if -in principle- S1 MME is not required for gNB setting)
Remi Hardy's avatar
Remi Hardy committed
132
```
Remi Hardy's avatar
Remi Hardy committed
133

Remi Hardy's avatar
Remi Hardy committed
134 135 136 137 138 139 140 141 142 143 144 145 146 147 148
    ///X2
    enable_x2 = "yes";
    t_reloc_prep      = 1000;      /* unit: millisecond */
    tx2_reloc_overall = 2000;      /* unit: millisecond */
    target_enb_x2_ip_address      = (
                                     { ipv4       = "**YOUR_ENB_IP_ADDR**";
                                       ipv6       = "192:168:30::17";
                                       preference = "ipv4";
                                     }
                                    );

    NETWORK_INTERFACES :
    {

        GNB_INTERFACE_NAME_FOR_S1_MME            = "eth0";
149
        GNB_IPV4_ADDRESS_FOR_S1_MME              = "**YOUR_GNB_IP_ADDR**";
Remi Hardy's avatar
Remi Hardy committed
150
        GNB_INTERFACE_NAME_FOR_S1U               = "eth0";
151
        GNB_IPV4_ADDRESS_FOR_S1U                 = "**YOUR_GNB_IP_ADDR**";
Remi Hardy's avatar
Remi Hardy committed
152
        GNB_PORT_FOR_S1U                         = 2152; # Spec 2152
153
        GNB_IPV4_ADDRESS_FOR_X2C                 = "**YOUR_GNB_IP_ADDR**";
Remi Hardy's avatar
Remi Hardy committed
154 155 156 157
        GNB_PORT_FOR_X2C                         = 36422; # Spec 36422
    };

    
Remi Hardy's avatar
Remi Hardy committed
158 159 160 161
```



Remi Hardy's avatar
Remi Hardy committed
162
3- The frequency setting requires a manual update in the .C and in the gNB conf file:
Remi Hardy's avatar
Remi Hardy committed
163 164


Remi Hardy's avatar
Remi Hardy committed
165 166 167 168 169 170 171
In the C file **openair2/RRC/LTE/rrc_eNB.c:3217**  
set the nrarfcn to the same value as absoluteFrequencySSB in the **gNB config file**, that is **641272** in the example below 

C file :
```
MeasObj2->measObject.choice.measObjectNR_r15.carrierFreq_r15 =641272;
```
Remi Hardy's avatar
Remi Hardy committed
172

Remi Hardy's avatar
Remi Hardy committed
173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189
gNB config file :

```
    # absoluteFrequencySSB is the central frequency of SSB 
    absoluteFrequencySSB                                          = 641272; 
    dl_frequencyBand                                                 = 78;
    # the carrier frequency is assumed to be in the middle of the carrier, i.e. dl_absoluteFrequencyPointA_kHz + dl_carrierBandwidth*12*SCS_kHz/2
    dl_absoluteFrequencyPointA                                       = 640000;
    #scs-SpecificCarrierList
    dl_offstToCarrier                                              = 0;
    # subcarrierSpacing
    # 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120  
    dl_subcarrierSpacing                                           = 1;
    dl_carrierBandwidth                                            = 106;
```


Remi Hardy's avatar
Remi Hardy committed
190
## Run and Test
Remi Hardy's avatar
Remi Hardy committed
191

Remi Hardy's avatar
Remi Hardy committed
192 193 194 195 196 197 198 199 200 201
The order to run the different components is important:  
1- first, CN  
2- then, eNB  
3- then, gNB  
4- finally, switch UE from airplane mode OFF to ON  

It is recommended to redirect the run commands to the same log file (fur further analysis and debug), using ```| tee **YOUR_LOG_FILE**``` especially for eNB and gNB.  
It is not very useful for the CN.  

The test takes typically a few seconds, max 10-15 seconds. If it takes more than 30 seconds, there is a problem. 
Remi Hardy's avatar
Remi Hardy committed
202 203 204 205 206 207 208 209 210 211

- **EPC** (on EPC host):

for reference:
https://github.com/OPENAIRINTERFACE/openair-epc-fed/blob/master-documentation/docs/DEPLOY_HOME.md



- **eNB** (on the eNB host):

Remi Hardy's avatar
Remi Hardy committed
212 213 214 215 216 217
Execute: 
```
~/openairinterface5g/cmake_targets/ran_build/build$ sudo ./lte-softmodem -O **YOUR_ENB_CONF_FILE** | tee **YOUR_LOG_FILE**

```

Remi Hardy's avatar
Remi Hardy committed
218
For example:
Remi Hardy's avatar
Remi Hardy committed
219
```
Remi Hardy's avatar
Remi Hardy committed
220
~/openairinterface5g/cmake_targets/ran_build/build$ sudo ./lte-softmodem -O ../../../targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpb210.conf | tee mylogfile.log
Remi Hardy's avatar
Remi Hardy committed
221
```
Remi Hardy's avatar
Remi Hardy committed
222 223


Remi Hardy's avatar
Remi Hardy committed
224

Remi Hardy's avatar
Remi Hardy committed
225
- **gNB** (on the gNB host)
Remi Hardy's avatar
Remi Hardy committed
226

Remi Hardy's avatar
Remi Hardy committed
227 228 229 230 231 232 233

Execute: 
```
~/openairinterface5g/cmake_targets/ran_build/build$ sudo ./nr-softmodem -O **YOUR_GNB_CONF_FILE** | tee **YOUR_LOG_FILE**

```

Remi Hardy's avatar
Remi Hardy committed
234
For example:
Remi Hardy's avatar
Remi Hardy committed
235
```
Remi Hardy's avatar
Remi Hardy committed
236
~/openairinterface5g/cmake_targets/ran_build/build$ sudo ./nr-softmodem -O ../../../targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.usrpn300.conf | tee mylogfile.log
Remi Hardy's avatar
Remi Hardy committed
237
```
Remi Hardy's avatar
Remi Hardy committed
238 239


Remi Hardy's avatar
Remi Hardy committed
240 241
## Test Case

Remi Hardy's avatar
Remi Hardy committed
242 243 244 245 246 247 248 249 250 251
The test case corresponds to the UE attachement, that is the UE connection and its initial access in 5G, as depicted below:

**Source** : https://www.sharetechnote.com/html/5G/5G_LTE_Interworking.html  

![image info](./testing_gnb_w_cots_ue_resources/attach_signaling_scheme.jpg)

The test reaches step **12. E-RAB modifcation confirmation** , eventhough not all the messages will appear in the log file. 

## Log file monitoring

Remi Hardy's avatar
Remi Hardy committed
252 253 254 255
From the log file that is generated, we can monitor several important steps, to assess that the test was successful.  
Log files examples can be found here:  
[enb log file](https://gitlab.eurecom.fr/oai/openairinterface5g/-/blob/rh_doc_update_3/doc/testing_gnb_w_cots_ue_resources/oai_enb.log)  
[gnb log file](https://gitlab.eurecom.fr/oai/openairinterface5g/-/blob/rh_doc_update_3/doc/testing_gnb_w_cots_ue_resources/oai_gnb.log)
Remi Hardy's avatar
Remi Hardy committed
256 257


Remi Hardy's avatar
Remi Hardy committed
258
- eNB receives UE capabilities information, including its NR capabilites, and triggers sGNB Addition Request message:
Remi Hardy's avatar
Remi Hardy committed
259

Remi Hardy's avatar
Remi Hardy committed
260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355
***eNBlog.1315 :***
```
[RRC]   [FRAME 00000][eNB][MOD 00][RNTI 43eb] received ueCapabilityInformation on UL-DCCH 1 from UE
...
[RRC]   [eNB 0] frame 0 subframe 0: UE rnti 43eb switching to NSA mode
...
<X2AP-PDU>
     <initiatingMessage>
         <procedureCode>27</procedureCode>
         <criticality><reject/></criticality>
         <value>
             <SgNBAdditionRequest>
                 <protocolIEs>
                     <SgNBAdditionRequest-IEs>
                         <id>111</id>
<criticality><reject/></criticality>
                         <value>
                             <UE-X2AP-ID>0</UE-X2AP-ID>
                         </value>
                     </SgNBAdditionRequest-IEs>
```

- gNB receives sGNB Addition request, processes UE capabilities for the corresponding UE and triggers sGNB Addition Request ACK, carrying NR RRC Reconfiguration message:


***gNBlog.2291 :***
```
<X2AP-PDU>
     <successfulOutcome>
         <procedureCode>27</procedureCode>
         <criticality><reject/></criticality>
         <value>
             <SgNBAdditionRequestAcknowledge>
                 <protocolIEs>
                     <SgNBAdditionRequestAcknowledge-IEs>
                         <id>111</id>
<criticality><reject/></criticality>
                         <value>
                             <UE-X2AP-ID>0</UE-X2AP-ID>
                         </value>
                     </SgNBAdditionRequestAcknowledge-IEs>
```


- Upon reception of the sGNB Addition Request ACK, the eNB sends a new RRCConnectionReconfiguration message containing the NR Reconfiguration. 
The UE replies with a Reconfiguration Complete message:

***eNBlog.1686 :***
```
[RRC]   [FRAME 00000][eNB][MOD 00][RNTI 43eb] UE State = RRC_RECONFIGURED (default DRB, xid 1)
```

- The Random Access procedure of the UE to the gNB takes place:

***gNBlog.2382 :***
```
[PHY]   [gNB 0][RAPROC] Frame 751, slot 19 Initiating RA procedure with 
preamble 63, energy 35.7 dB, delay 6
 [0m [0m[MAC]   [gNB 0][RAPROC] CC_id 0 Frame 751, Slot 19 Initiating RA 
procedure for preamble index 63
 [0m [0m[MAC]   [gNB 0][RAPROC] CC_id 0 Frame 751 Activating Msg2 
generation in frame 752, slot 7 using RA rnti 10b
 [0m [0m[MAC]   [gNB 0] [RAPROC] CC_id 0 Frame 752, slotP 7: Generating 
RAR DCI, state 1
 [0m [0m[MAC]   [RAPROC] DCI type 1 payload: freq_alloc 120 (0,6,24), 
time_alloc 3, vrb to prb 0, mcs 0 tb_scaling 0
 [0m [0m[MAC]   Frame 752: Subframe 7 : Adding common DL DCI for RA_RNTI 10b
 [0m [0m[MAC]   Frame 752, Subframe 7: Setting Msg3 reception for Frame 
752 Subframe 17
 [0m [0m[PHY]   ULSCH received ok
```

- The eNB triggers the path switch procedure towards the MME, so that 
the traffic can be routed now from the SGW towards the gNB on the S1-U 
plane.

***eNBlog.1691 :***
```
<S1AP-PDU>
     <initiatingMessage>
         <procedureCode>50</procedureCode>
         <criticality><reject/></criticality>
         <value>
             <E-RABModificationIndication>
                 <protocolIEs>
                     <E-RABModificationIndicationIEs>
                         <id>0</id>
<criticality><reject/></criticality>
                         <value>
<MME-UE-S1AP-ID>553648130</MME-UE-S1AP-ID>
                         </value>
                     </E-RABModificationIndicationIEs>
```


Eventually, step **12. E-RAB Modification Confirmation** is successfully reached
Remi Hardy's avatar
Remi Hardy committed
356

Remi Hardy's avatar
Remi Hardy committed
357 358


Remi Hardy's avatar
Remi Hardy committed
359
## Required tools for debug
Remi Hardy's avatar
Remi Hardy committed
360

Remi Hardy's avatar
Remi Hardy committed
361 362 363
- **Wireshark** to trace X2AP and S1AP protocols  
- **Ttracer** for 5G messages  
- **GDB debugger** to check function calls  
Remi Hardy's avatar
Remi Hardy committed
364 365


Remi Hardy's avatar
Remi Hardy committed
366
## Status of interoperability
Remi Hardy's avatar
Remi Hardy committed
367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392

The following parts have been validated with FR1 COTS UE:

- Phone accepts the configurtion provided by OAI eNB:  
    this validates RRC and X2AP  

- Successful Random Access Procedure:  
    PRACH is correctly decoded at gNB  
    Phone correctly receives and decodes msg2 (NR PDCCH Format 1_0 and NR PDSCH)  
    msg3  is transmitted to gNB according to the configuration sent in msg2, and received correctly at gNB    

- Successful path switch of user plane traffic from 4G to 5G cell (E-RAB modification message):  
   this validates S1AP  

- Downlink traffic:  
    PDCCH DCI format 1_1 and correponding PDSCH are decoded correctlyby the phone  
    ACK/NACK (PUCCH format 0) are successfully received at gNB  

- On going:  
    validation of HARQ procedures  
    Integration with higher layers to replace dummy data with real traffic  
    
- Known limitations as of May 2020:  
    only dummy DL traffic  
    no UL traffic  
    no end-to-end traffic possible  
Remi Hardy's avatar
Remi Hardy committed
393 394